org.eclipse.jst.j2ee.internal.servertarget.ServerTargetHelper.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.jst.j2ee.internal.servertarget.ServerTargetHelper.java

Source

/*******************************************************************************
 * 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
 *******************************************************************************/
/*
 * Created on Aug 15, 2003
 * 
 * To change the template for this generated file go to Window>Preferences>Java>Code
 * Generation>Code and Comments
 */
package org.eclipse.jst.j2ee.internal.servertarget;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jem.workbench.utility.JemProjectUtilities;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.wst.server.core.ServerCore;
import org.eclipse.wst.server.core.ServerUtil;

//import com.ibm.etools.j2ee.internal.project.EAREditModel;
//import com.ibm.etools.j2ee.internal.project.EARNatureRuntime;

/**
 * @author vijayb
 * @deprecated - Use server core api to set Runtime Targets. Use artifact edit api to
 * get to any j2ee related methods in the class.
 * To change the template for this generated type comment go to Window>Preferences>Java>Code
 * Generation>Code and Comments
 */
public class ServerTargetHelper {
    public static final String JAVA_NATURE_ID = "org.eclipse.jdt.core.javanature"; //$NON-NLS-1$

    public static final String SERVER_CONTAINER = "org.eclipse.jst.server.core.container"; //$NON-NLS-1$

    /**
     *  
     */
    public ServerTargetHelper() {
        super();
    }

    public static void cleanUpNonServerTargetClasspath(IProject project) {
        List existingClasspathEntries = ServerTargetHelper.getExistingNonServerTargetClasspath(project);
        if (!existingClasspathEntries.isEmpty())
            ServerTargetHelper.removeNonSeverTargetClasspathEntries(project, existingClasspathEntries);
    }

    /**
     * @param existingClasspathEntries
     */
    public static void removeNonSeverTargetClasspathEntries(IProject project, List existingClasspathEntries) {
        try {
            JemProjectUtilities.removeFromJavaClassPath(project, existingClasspathEntries);
        } catch (JavaModelException jme) {
            J2EEPlugin.logError(jme);
        }
    }

    /**
     * @param project
     */
    // public static void syncNoServerTargetForEARModules(IProject project) {
    // removeServerTargetForEARModuleProjects(project);
    // removeServerTargetForEARUtilsProject(project);
    // }
    /**
     * @param project
     */
    // public static void removeServerTargetForEAR(IProject project, boolean
    // updateModules) {
    // //We don't need to remove a server target anyomre as it need to be
    // // there
    // //ServerTargetManager.removeServerTarget(project, null);
    // if (updateModules) {
    // removeServerTargetForEARModuleProjects(project);
    // removeServerTargetForEARUtilsProject(project);
    // }
    // }
    /**
     * @param project
     */
    // private static void removeServerTargetForEARModuleProjects(IProject
    // project) {
    // List moduleProjects =
    // ServerTargetHelper.getAllEarModuleProjects(project);
    // if (!moduleProjects.isEmpty()) {
    // for (int i = 0; i < moduleProjects.size(); i++) {
    // IProject moduleProject = (IProject) moduleProjects.get(i);
    // ServerTargetType tt =
    // ServerTargetManager.getServerTargetType(moduleProject);
    // if (tt != null) {
    // J2EEJavaProjectInfo info = getNewJ2EEProjectInfo(moduleProject);
    // if (info != null) {
    // info.setProject(moduleProject);
    // try {
    // info.calculateServerClasspathEntries();
    // info.getJavaProject().setRawClasspath(info.getClasspathEntries(), null);
    // } catch (JavaModelException jme) {
    // Logger.getLogger().logTrace(jme);
    // }
    // }
    // }
    // }
    // }
    // }
    /**
     * @param project
     */
    // private static void removeServerTargetForEARUtilsProject(IProject
    // project) {
    // EARNatureRuntime nature = EARNatureRuntime.getRuntime(project);
    // EAREditModel editModel = null;
    // Object key = new ServerTargetHelper();
    // try {
    // editModel = nature.getEarEditModelForRead(key);
    // List utilProjects =
    // ServerTargetHelper.getAllEarUtilityProjects(editModel, project);
    // if (!utilProjects.isEmpty()) {
    // for (int i = 0; i < utilProjects.size(); i++) {
    // IProject moduleProject = (IProject) utilProjects.get(i);
    // //We don't need to remove a server target anyomre as it need to be there
    // //ServerTargetType existingTargetType =
    // // ServerTargetManager.getServerTargetType(moduleProject);
    // //if (existingTargetType != null) {
    // //if (!editModel.isEjbClientJarProject(moduleProject))
    // //We don't need to remove a server target anyomre as it
    // // need to be there
    // //ServerTargetManager.removeServerTarget(moduleProject,null);
    // //else
    // // removeServerTargetForEJBClientJar(moduleProject);
    // }
    // }
    // } finally {
    // editModel.releaseAccess(key);
    // }
    // }
    /**
     * @param moduleProject
     */
    // public static void removeServerTargetForEJBClientJar(IProject
    // ejbClientJarProject) {
    // EjbModuleExtension ejbExt = EarModuleManager.getEJBModuleExtension();
    // J2EEJavaProjectInfo info = ejbExt.createProjectInfo();
    // if (info != null) {
    // info.setProject(ejbClientJarProject);
    // try {
    // info.calculateServerClasspathEntries();
    // info.getJavaProject().setRawClasspath(info.getClasspathEntries(), null);
    // } catch (JavaModelException jme) {
    // Logger.getLogger().logTrace(jme);
    // }
    // }
    // }
    // public static void removeServerTargetOnProject(IProject project, String
    // projectType) {
    // setServerClassPathForJ2EEProject(project, projectType);
    // }
    /**
     * @param project
     */
    // public static void setServerClassPathForJ2EEProject(IProject project,
    // String projectType) {
    // try {
    // J2EEJavaProjectInfo info = getNewJ2EEProjectInfo(project, projectType);
    // if (info != null) {
    // info.setProject(project);
    // info.calculateServerClasspathEntries();
    // info.getJavaProject().setRawClasspath(info.getClasspathEntries(), null);
    // }
    // } catch (JavaModelException jme) {
    // J2EEPlugin.logError(jme);
    // }
    // }
    // public static J2EEJavaProjectInfo getNewJ2EEProjectInfo(IProject project,
    // String projectType)
    // {
    // if (projectType.equals(IServerTargetConstants.APP_CLIENT_TYPE))
    // return new ApplicationClientProjectInfo();
    // else if (projectType.equals(IServerTargetConstants.WEB_TYPE)) {
    // WebModuleExtension webExt = EarModuleManager.getWebModuleExtension();
    // J2EEJavaProjectInfo info = webExt.createProjectInfo();
    // String webNature = J2EENature.getRegisteredRuntimeID(project);
    // info.setJ2EEVersion(webNature.equals(J2EEVersionConstants.VERSION_1_3_TEXT)
    // ?
    // J2EEVersionConstants.J2EE_1_3_ID : J2EEVersionConstants.J2EE_1_2_ID);
    // return info;
    // } else if (projectType.equals(IServerTargetConstants.EJB_TYPE)) {
    // EjbModuleExtension ejbExt = EarModuleManager.getEJBModuleExtension();
    // return ejbExt.createProjectInfo();
    // } else if (projectType.equals(IServerTargetConstants.CONNECTOR_TYPE)) {
    // JcaModuleExtension jcaExt = EarModuleManager.getJCAModuleExtension();
    // return jcaExt.createProjectInfo();
    // }
    // return null;
    // }
    // public static J2EEJavaProjectInfo getNewJ2EEProjectInfo(IProject project)
    // {
    // if (J2EENature.hasRuntime(project, IEJBNatureConstants.EJB_NATURE_IDS)) {
    // EjbModuleExtension ejbExt = EarModuleManager.getEJBModuleExtension();
    // return ejbExt.createProjectInfo();
    // } else if (J2EENature.hasRuntime(project,
    // IWebNatureConstants.J2EE_NATURE_ID)) {
    // WebModuleExtension webExt = EarModuleManager.getWebModuleExtension();
    // return webExt.createProjectInfo();
    // } else if (ApplicationClientNatureRuntime.hasRuntime(project))
    // return new ApplicationClientProjectInfo();
    // else if (J2EENature.hasRuntime(project,
    // IConnectorNatureConstants.CONNECTOR_NATURE_ID)) {
    // JcaModuleExtension jcaExt = EarModuleManager.getJCAModuleExtension();
    // return jcaExt.createProjectInfo();
    // }
    // return null;
    // }
    //   public static void setNewServerTargetForEARModules(IRuntime newServerTarget, IProject project) {
    //      List moduleProjects = ServerTargetHelper.getAllEarModuleProjects(project);
    //      if (!moduleProjects.isEmpty()) {
    //         for (int i = 0; i < moduleProjects.size(); i++) {
    //            IProject moduleProject = (IProject) moduleProjects.get(i);
    //            String[] projectAttr = ServerTargetHelper.getProjectTypeAndJ2EELevel(moduleProject);
    //            if (projectAttr[0] != null && projectAttr[1] != null) {
    //               IRuntime existingTargetType = ServerCore.getProjectProperties(moduleProject).getRuntimeTarget();
    //               if (existingTargetType != null) {
    //                  if (!existingTargetType.getId().equals(newServerTarget.getId()))
    //                     setServerTargetForModuleProject(newServerTarget, moduleProject, projectAttr);
    //                  // TODO Move the WLP sync to this method
    //               } else
    //                  setServerTargetForModuleProject(newServerTarget, moduleProject, projectAttr);
    //            }
    //         }
    //      }
    //   }

    //   public static void setServerTargetForModuleProject(IRuntime newServerTarget, IProject moduleProject, String[] projectAttr) {
    //      ServerTargetHelper.cleanUpNonServerTargetClasspath(moduleProject);
    //      setServerTarget(moduleProject, newServerTarget, null);
    //   }

    //   public static List getWebProjectsInEAR(IProject earProject) {
    //      List moduleProjects = ServerTargetHelper.getAllEarModuleProjects(earProject);
    //      if (!moduleProjects.isEmpty()) {
    //         List webProjects = new ArrayList();
    //         for (int i = 0; i < moduleProjects.size(); i++) {
    //            IProject project = (IProject) moduleProjects.get(i);
    //            WebModuleExtension webExt = EarModuleManager.getWebModuleExtension();
    //            if (webExt.hasRuntime(project))
    //               webProjects.add(project);
    //         }
    //         return webProjects;
    //      }
    //      return Collections.EMPTY_LIST;
    //   }

    /**
     * @param newServerTarget
     * @param tt
     * @param project
     */
    //   public static void setNewServerTargetForEARUtilityJars(IRuntime newServerTarget, IProject project) {
    //      EARNatureRuntime nature = EARNatureRuntime.getRuntime(project);
    //      EAREditModel editModel = null;
    //      Object key = new ServerTargetHelper();
    //      try {
    //         editModel = nature.getEarEditModelForRead(key);
    //         List utilProjects = ServerTargetHelper.getAllEarUtilityProjects(editModel, project);
    //         if (!utilProjects.isEmpty()) {
    //            for (int i = 0; i < utilProjects.size(); i++) {
    //               IProject moduleProject = (IProject) utilProjects.get(i);
    //               IRuntime existingTargetType = ServerCore.getProjectProperties(moduleProject).getRuntimeTarget();
    //               if (existingTargetType != null) {
    //                  if (!existingTargetType.getId().equals(newServerTarget.getId())) {
    //                     setServerTargetForUtilProject(newServerTarget, moduleProject);
    //                  }
    //               } else {
    //                  setServerTargetForUtilProject(newServerTarget, moduleProject);
    //               }
    //            }
    //         }
    //      } finally {
    //         editModel.releaseAccess(key);
    //      }
    //   }

    //   public static void setServerTargetForUtilProject(IRuntime newServerTarget, IProject moduleProject) {
    //      ServerTargetHelper.cleanUpNonServerTargetClasspath(moduleProject);
    //      setServerTarget(moduleProject, newServerTarget, null);
    //   }

    //   public static void setServerTarget(IProject project, IRuntime runtime, IProgressMonitor monitor) {
    //      try {
    //         ServerCore.getProjectProperties(project).setRuntimeTarget(runtime, monitor);
    //      } catch (CoreException ce) {
    //         J2EEPlugin.logError(ce);
    //      }
    //   }

    /**
     * @param earProject
     */
    //   public static List getAllEarModuleProjects(IProject earProject) {
    //      EARNatureRuntime nature = EARNatureRuntime.getRuntime(earProject);
    //      EAREditModel editModel = null;
    //      List moduleProjects = new ArrayList();
    //      Object key = new ServerTargetHelper();
    //      try {
    //         editModel = nature.getEarEditModelForRead(key);
    //         Set allModuleProjects = editModel.getModuleMappedModuleProjects();
    //         if (!allModuleProjects.isEmpty())
    //            moduleProjects.addAll(allModuleProjects);
    //         return moduleProjects;
    //      } finally {
    //         if (editModel != null)
    //            editModel.releaseAccess(key);
    //      }
    //   }
    //
    public static String[] getProjectTypeAndJ2EELevel(IProject project) {
        String[] projectAttr = new String[2];
        //      boolean isJ2EE13 = true;
        //      if (EARNatureRuntime.hasRuntime(project)) {
        //         projectAttr[0] = IServerTargetConstants.EAR_TYPE;
        //         isJ2EE13 = EARNatureRuntime.getRuntime(project).isJ2EE1_3();
        //      } else if (J2EENature.hasRuntime(project, IEJBNatureConstants.EJB_NATURE_IDS)) {
        //         projectAttr[0] = IServerTargetConstants.EJB_TYPE;
        //         isJ2EE13 = J2EENature.getRuntime(project, IEJBNatureConstants.EJB_NATURE_IDS).isJ2EE1_3();
        //      } else if (J2EENature.hasRuntime(project, IWebNatureConstants.J2EE_NATURE_ID)) {
        //         projectAttr[0] = IServerTargetConstants.WEB_TYPE;
        //         isJ2EE13 = J2EENature.getRuntime(project, IWebNatureConstants.J2EE_NATURE_ID).isJ2EE1_3();
        //      } else if (J2EENature.hasRuntime(project,IApplicationClientNatureConstants.NATURE_ID)) {
        //         projectAttr[0] = IServerTargetConstants.APP_CLIENT_TYPE;
        //         isJ2EE13 = J2EENature.getRuntime(project,IApplicationClientNatureConstants.NATURE_ID).isJ2EE1_3();
        //      } else if (J2EENature.hasRuntime(project, IConnectorNatureConstants.NATURE_ID)) {
        //         projectAttr[0] = IServerTargetConstants.CONNECTOR_TYPE;
        //         isJ2EE13 = J2EENature.getRuntime(project, IConnectorNatureConstants.NATURE_ID).isJ2EE1_3();
        //      } else if (hasJavaNature(project))
        //         projectAttr[0] = null;
        //      if (projectAttr[0] != null && projectAttr[0].length() > 0) {
        //         if (isJ2EE13)
        //            projectAttr[1] = IServerTargetConstants.J2EE_13;
        //         else
        //            projectAttr[1] = IServerTargetConstants.J2EE_12;
        //      }
        return projectAttr;
    }

    /**
     * @param project
     * @return
     */
    public static boolean hasJavaNature(IProject project) {
        try {
            return project.hasNature(JAVA_NATURE_ID);
        } catch (CoreException ce) {
            J2EEPlugin.logError(ce);
        }
        return false;
    }

    /**
     * @param earProject
     */
    //   public static List getAllEarUtilityProjects(EAREditModel earEditModel, IProject earProject) {
    //      List utilityProjects = new ArrayList();
    //      Set utilProjects = earEditModel.getModuleMappedUtilityJarProjects();
    //      if (!utilProjects.isEmpty())
    //         utilityProjects.addAll(utilProjects);
    //      return utilityProjects;
    //   }

    public static int getExistingServerTargetIndex(List validServerTargets, IProject project) {
        if (validServerTargets != null) {
            IRuntime st = ServerCore.getProjectProperties(project).getRuntimeTarget();
            if (st != null) {
                for (int i = 0; i < validServerTargets.size(); i++) {
                    if (((IRuntime) validServerTargets.get(i)).getId() == st.getId())
                        return i;
                }
            }
        }
        return -1;
    }

    public static List getExistingNonServerTargetClasspath(IProject project) {
        IJavaProject javaProject = null;
        List list = new ArrayList();
        try {
            javaProject = (IJavaProject) project.getNature(JavaCore.NATURE_ID);
        } catch (Exception e) {
        }
        if (javaProject != null) {
            try {
                IClasspathEntry[] cp = javaProject.getRawClasspath();
                int size = cp.length;
                for (int i = 0; i < size; i++) {
                    int entryKind = cp[i].getEntryKind();
                    if (entryKind != IClasspathEntry.CPE_SOURCE && entryKind != IClasspathEntry.CPE_LIBRARY
                            && entryKind != IClasspathEntry.CPE_PROJECT
                            && (entryKind == IClasspathEntry.CPE_VARIABLE && isWASVariable(cp[i]))
                            && (entryKind != IClasspathEntry.CPE_CONTAINER
                                    || !cp[i].getPath().segment(0).equals(SERVER_CONTAINER))) {
                        list.add(cp[i]);
                    }
                }
            } catch (Exception e) {
            }
            return list;
        }
        return list;
    }

    /**
     * @param entry
     * @return
     */
    private static boolean isWASVariable(IClasspathEntry entry) {
        // TODO This is no longer valid in the base.
        // IPath path = entry.getPath();
        // if (path != null && path.segmentCount() != 0) {
        // String classpathVariable = path.segment(0);
        // return
        // classpathVariable.equals(IEJBNatureConstants.WAS_PLUGINDIR_VARIABLE)
        // ||
        // classpathVariable.equals(IEJBNatureConstants.WAS_50_PLUGINDIR_VARIABLE)
        // ||
        // classpathVariable.equals(IEJBNatureConstants.SERVERJDK_50_PLUGINDIR_VARIABLE)
        // ||
        // classpathVariable.equals(IEJBNatureConstants.SERVERJDK_PLUGINDIR_VARIABLE)
        // || classpathVariable.equals(J2EEPlugin.SOAP_PLUGINDIR_VARIABLE)
        // || classpathVariable.equals(J2EEPlugin.SOAPSEC_PLUGINDIR_VARIABLE);
        // //|| classpathVariable.equals(J2EEPlugin.XERCES_IMPL_VARIABLE)
        // //|| classpathVariable.equals(J2EEPlugin.XERCES_PLUGINDIR_VARIABLE)
        // //|| classpathVariable.equals(J2EEPlugin.WORF_PLUGINDIR_VARIABLE)
        // //|| classpathVariable.equals(J2EEPlugin.MAIL_CLASSPATH_VARIABLE)
        // //||
        // classpathVariable.equals(J2EEPlugin.ACTIVATION_CLASSPATH_VARIABLE);
        // }
        return false;
    }

    /**
     * @param earProject
     * @param st
     * @return
     */
    //   public static boolean serverTargetValidForEAR(IProject earProject, IRuntime st) {
    //      return !(J2EENature.hasRuntime(earProject, IEARNatureConstants.NATURE_ID) && st.getId().equals(IServerTargetConstants.aesV4ServerTargetId));
    //   }

    public static List getServerTargets(String type, String version) {
        List targets = Arrays.asList(ServerUtil.getRuntimes(type, version));
        return targets;
    }
    /*
     * public static ITargetType getV50TargetType(IProject project, IServerTarget v50ServerTarget) {
     * if (J2EENature.hasRuntime(project, IEARNatureConstants.NATURE_ID)) return
     * ServerTargetManager.getTargetType(v50ServerTarget, IServerTargetConstants.EAR_TYPE); if
     * (J2EENature.hasRuntime(project, IApplicationClientNatureConstants.NATURE_ID)) return
     * ServerTargetManager.getTargetType(v50ServerTarget, IServerTargetConstants.EAR_TYPE); else if
     * (J2EENature.hasRuntime(project, IEJBNatureConstants.NATURE_ID)) return
     * ServerTargetManager.getTargetType(v50ServerTarget, IServerTargetConstants.EJB_TYPE); else if
     * (J2EENature.hasRuntime(project, IWebNatureConstants.J2EE_NATURE_ID)) return
     * ServerTargetManager.getTargetType(v50ServerTarget, IServerTargetConstants.WEB_TYPE); return
     * null; }
     */
}