| /******************************************************************************* |
| * Copyright (c) 2003, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jst.jee.ui.internal.deployables; |
| |
| import java.util.Arrays; |
| import java.util.Iterator; |
| |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.jdt.core.ICompilationUnit; |
| import org.eclipse.jdt.core.IJavaProject; |
| import org.eclipse.jdt.core.JavaModelException; |
| import org.eclipse.jem.util.logger.proxy.Logger; |
| import org.eclipse.jst.j2ee.internal.J2EEConstants; |
| import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities; |
| import org.eclipse.wst.common.componentcore.ComponentCore; |
| import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; |
| import org.eclipse.wst.common.componentcore.resources.IVirtualResource; |
| import org.eclipse.wst.server.core.IModule; |
| import org.eclipse.wst.server.core.IModuleArtifact; |
| import org.eclipse.wst.server.core.ServerUtil; |
| import org.eclipse.wst.server.core.util.NullModuleArtifact; |
| |
| /** |
| * @version 1.0 |
| * @author |
| */ |
| public class EJBDeployableArtifactAdapterUtil { |
| /** |
| * Constructor for EJBDeployableObjectAdapter. |
| */ |
| public EJBDeployableArtifactAdapterUtil() { |
| super(); |
| } |
| |
| public static IModuleArtifact getModuleObject(Object obj) { |
| if (obj == null) |
| return null; |
| // else if (obj instanceof EJBJar) |
| // return getModuleObject((EJBJar) obj); |
| // else if (obj instanceof EnterpriseBean) |
| // return getModuleObject((EnterpriseBean) obj); |
| else if (obj instanceof IProject) |
| return getModuleObject((IProject) obj); |
| else if (obj instanceof IJavaProject) |
| return getModuleObject(((IJavaProject) obj).getProject()); |
| else if (obj instanceof IFile) |
| return getModuleObject((IFile) obj); |
| else if (obj instanceof ICompilationUnit) |
| return getModuleObject((ICompilationUnit) obj); |
| return null; |
| } |
| |
| protected static boolean hasInterestedComponents(IProject project) { |
| return J2EEProjectUtilities.isEJBProject(project); |
| } |
| |
| protected static IModuleArtifact getModuleObject(ICompilationUnit cu) { |
| |
| try { |
| IFile file = (IFile) cu.getCorrespondingResource(); |
| IProject project = file.getProject(); |
| if (hasInterestedComponents(project)) { |
| return getModuleJavaObject(file); |
| } |
| |
| } catch (JavaModelException e) { |
| Logger.getLogger().log(e); |
| } |
| return null; |
| } |
| |
| // protected static IModuleArtifact getModuleObject(EJBJar ejbJar) { |
| // IModule dep = getModule(ejbJar); |
| // return createModuleObject(dep, null, false, false); |
| // } |
| // |
| // protected static IModuleArtifact getModuleObject(EnterpriseBean ejb) { |
| // |
| // IModule dep = getModule(ejb); |
| // return createModuleObject(dep, ejb.getName(), ejb.hasRemoteClient(), ejb.hasLocalClient()); |
| // } |
| |
| protected static IModuleArtifact getModuleObject(IProject project) { |
| if (hasInterestedComponents(project)) { |
| IModule dep = getModule(project, null); |
| return createModuleObject(dep, null, false, false); |
| } |
| return null; |
| } |
| |
| protected static IModuleArtifact getModuleObject(IFile file) { |
| IVirtualResource[] resources = ComponentCore.createResources(file); |
| IVirtualComponent component = null; |
| if (resources[0] != null || resources.length <= 0) |
| component = resources[0].getComponent(); |
| if (hasInterestedComponents(file.getProject())) { |
| String ext = file.getFileExtension(); |
| if ("java".equals(ext) || "class".equals(ext)) //$NON-NLS-1$ //$NON-NLS-2$ |
| return getModuleJavaObject(file); |
| if (file.getProjectRelativePath().toString().endsWith(J2EEConstants.EJBJAR_DD_URI)) |
| return createModuleObject(getModule(file.getProject(), component), null, false, false); |
| } |
| return null; |
| } |
| |
| // protected static IModule getModule(EObject refObject) { |
| // IProject proj = ProjectUtilities.getProject(refObject); |
| // Resource refResource = refObject.eResource(); |
| // IVirtualResource[] resources = null; |
| // IVirtualComponent component = null; |
| // try { |
| // IResource eclipeServResoruce = WorkbenchResourceHelper.getFile(refResource); |
| // resources = ComponentCore.createResources(eclipeServResoruce); |
| // if (resources[0] != null) |
| // component = resources[0].getComponent(); |
| // } catch (Exception e) { |
| // e.printStackTrace(); |
| // } |
| // return getModule(proj, component); |
| // } |
| |
| protected static IModule getModule(IProject project, IVirtualComponent component) { |
| IModule deployable = null; |
| Iterator iterator = Arrays.asList(ServerUtil.getModules(J2EEProjectUtilities.EJB)).iterator(); |
| String componentName = null; |
| if (component != null) |
| componentName = component.getName(); |
| else |
| return getModuleProject(project, iterator); |
| while (iterator.hasNext()) { |
| Object next = iterator.next(); |
| if (next instanceof IModule) { |
| deployable = (IModule) next; |
| if (deployable.getName().equals(componentName)) { |
| return deployable; |
| } |
| } |
| } |
| return null; |
| } |
| |
| protected static IModule getModuleProject(IProject project, Iterator iterator) { |
| IModule deployable = null; |
| while (iterator.hasNext()) { |
| Object next = iterator.next(); |
| if (next instanceof IModule) { |
| deployable = (IModule) next; |
| if (deployable.getProject().equals(project)) |
| return deployable; |
| } |
| } |
| return null; |
| } |
| |
| |
| protected static IModuleArtifact getModuleJavaObject(IFile file) { |
| |
| IVirtualComponent comp = (IVirtualComponent)file.getAdapter(IVirtualComponent.class); |
| if (comp != null) { |
| // JavaClass javaClass = JemProjectUtilities.getJavaClass(file); |
| // if (javaClass != null) { |
| // EJBArtifactEdit edit = null; |
| // try { |
| // edit = EJBArtifactEdit.getEJBArtifactEditForRead(comp); |
| // EJBJar jar = edit.getEJBJar(); |
| // if (jar != null) { |
| // EnterpriseBean ejb = jar.getEnterpriseBeanWithReference(javaClass); |
| // return createModuleObject(getModule(comp.getProject(), comp), ejb.getName(), isRemote(ejb, javaClass), isLocal(ejb, javaClass)); |
| // } |
| // } finally { |
| // if (edit != null) |
| // edit.dispose(); |
| // } |
| // } |
| } |
| return null; |
| } |
| |
| // protected static boolean isRemote(EnterpriseBean ejb, JavaClass javaClass) { |
| // if (javaClass.equals(ejb.getHomeInterface()) || javaClass.equals(ejb.getRemoteInterface())) |
| // return true; |
| // return false; |
| // } |
| // |
| // protected static boolean isLocal(EnterpriseBean ejb, JavaClass javaClass) { |
| // if (javaClass.equals(ejb.getLocalHomeInterfaceName()) || javaClass.equals(ejb.getLocalInterface())) |
| // return true; |
| // return false; |
| // } |
| |
| protected static IModuleArtifact createModuleObject(IModule module, String ejbName, boolean remote, boolean local) { |
| if (module != null) { |
| String jndiName = null; |
| if (ejbName != null) { |
| // module.loadAdapter(ModuleDelegate.class, new NullProgressMonitor()); |
| // JEEFlexProjDeployable moduleDelegate = (JEEFlexProjDeployable)module.getAdapter(ModuleDelegate.class); |
| // jndiName = moduleDelegate.getJNDIName(ejbName); |
| // return new EJBBean(module, jndiName, remote, local); |
| } |
| return new NullModuleArtifact(module); |
| } |
| return null; |
| } |
| |
| |
| |
| } |