[104051] Cache components rather than component name in j2ee export dm's
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/datamodel/properties/IJ2EEComponentExportDataModelProperties.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/datamodel/properties/IJ2EEComponentExportDataModelProperties.java index 1b55237..d9d5940 100644 --- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/datamodel/properties/IJ2EEComponentExportDataModelProperties.java +++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/datamodel/properties/IJ2EEComponentExportDataModelProperties.java
@@ -59,4 +59,6 @@ * and archived. However, if <code>Boolean.FALSE</code> the component is archived as is. */ public static final String RUN_BUILD = "IJ2EEComponentExportDataModelProperties.RUN_BUILD"; //$NON-NLS-1$} + + public static final String COMPONENT = "IJ2EEComponentExportDataModelProperties.COMPONENT"; //$NON-NLS-1$ }
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/J2EEArtifactExportOperation.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/J2EEArtifactExportOperation.java index 24621e6..2027269 100644 --- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/J2EEArtifactExportOperation.java +++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/J2EEArtifactExportOperation.java
@@ -32,13 +32,10 @@ import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.core.runtime.jobs.MultiRule; import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jem.util.emf.workbench.ProjectUtilities; import org.eclipse.jst.j2ee.commonarchivecore.internal.ModuleFile; import org.eclipse.jst.j2ee.commonarchivecore.internal.exception.SaveFailureException; import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentExportDataModelProperties; import org.eclipse.jst.j2ee.internal.plugin.LibCopyBuilder; -import org.eclipse.wst.common.componentcore.ComponentCore; -import org.eclipse.wst.common.componentcore.resources.IFlexibleProject; import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; import org.eclipse.wst.common.componentcore.resources.IVirtualReference; import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation; @@ -61,13 +58,13 @@ } public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { - + setComponent((IVirtualComponent)model.getProperty(IJ2EEComponentExportDataModelProperties.COMPONENT)); setDestinationPath(new Path(model.getStringProperty(IJ2EEComponentExportDataModelProperties.ARCHIVE_DESTINATION))); setExportSource(model.getBooleanProperty(IJ2EEComponentExportDataModelProperties.EXPORT_SOURCE_FILES)); try { setProgressMonitor(monitor); // defect 240999 - getComponent().getProject().refreshLocal(IResource.DEPTH_INFINITE, null); + component.getProject().refreshLocal(IResource.DEPTH_INFINITE, null); if (model.getBooleanProperty(IJ2EEComponentExportDataModelProperties.RUN_BUILD)) { runNecessaryBuilders(component, monitor); } @@ -95,17 +92,9 @@ } protected IVirtualComponent getComponent() { - if (component == null) { - component = getComponent(model.getStringProperty(IJ2EEComponentExportDataModelProperties.COMPONENT_NAME),model.getStringProperty(IJ2EEComponentExportDataModelProperties.PROJECT_NAME)); - } - return component; - } - - private IVirtualComponent getComponent(String compName, String projName) { - IProject proj = ProjectUtilities.getProject(projName); - IFlexibleProject flexProj = ComponentCore.createFlexibleProject(proj); - IVirtualComponent comp = flexProj.getComponent(compName); - return comp; + if (component == null) + component = (IVirtualComponent) model.getProperty(IJ2EEComponentExportDataModelProperties.COMPONENT); + return component; } protected IPath getDestinationPath() {
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/operations/NewJavaClassOperation.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/operations/NewJavaClassOperation.java index 93c5ead..2966c37 100644 --- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/operations/NewJavaClassOperation.java +++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/operations/NewJavaClassOperation.java
@@ -448,11 +448,13 @@ if (model.getBooleanProperty(NewJavaClassDataModel.CONSTRUCTOR)) { // Implement constructors from superclass try { - IMethod[] methods = superClassType.getMethods(); - for (int j = 0; j < methods.length; j++) { - if (methods[j].isConstructor() && !Flags.isPrivate(methods[j].getFlags())) { - String methodStub = getMethodStub(methods[j], superclassName, className); - sb.append(methodStub); + if (superClassType != null) { + IMethod[] methods = superClassType.getMethods(); + for (int j = 0; j < methods.length; j++) { + if (methods[j].isConstructor() && !Flags.isPrivate(methods[j].getFlags())) { + String methodStub = getMethodStub(methods[j], superclassName, className); + sb.append(methodStub); + } } } } catch (JavaModelException e) {
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactExportDataModelProvider.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactExportDataModelProvider.java index 82d6d17..26bd067 100644 --- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactExportDataModelProvider.java +++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactExportDataModelProvider.java
@@ -11,6 +11,7 @@ package org.eclipse.jst.j2ee.application.internal.operations; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import org.eclipse.core.resources.IResource; @@ -28,13 +29,15 @@ import org.eclipse.wst.common.frameworks.internal.plugin.WTPCommonPlugin; public abstract class J2EEArtifactExportDataModelProvider extends AbstractDataModelProvider implements IJ2EEComponentExportDataModelProperties { + + public HashMap componentMap; public J2EEArtifactExportDataModelProvider() { super(); } public String[] getPropertyNames() { - return new String[] { COMPONENT_NAME, PROJECT_NAME, ARCHIVE_DESTINATION, EXPORT_SOURCE_FILES, OVERWRITE_EXISTING, RUN_BUILD }; + return new String[] { COMPONENT_NAME, PROJECT_NAME, ARCHIVE_DESTINATION, EXPORT_SOURCE_FILES, OVERWRITE_EXISTING, RUN_BUILD, COMPONENT }; } protected abstract String getComponentID(); @@ -58,20 +61,32 @@ public boolean propertySet(String propertyName, Object propertyValue) { boolean set = super.propertySet(propertyName, propertyValue); if (propertyName.equals(COMPONENT_NAME)) { - IVirtualComponent[] comps = ComponentUtilities.getAllWorkbenchComponents(); - for (int i = 0; i < comps.length; i++) { - IVirtualComponent component = comps[i]; + if(getComponentMap().isEmpty()) + intializeComponentMap(); + IVirtualComponent component = (IVirtualComponent)getComponentMap().get(propertyValue); if (component.getName().equals(propertyValue)) { + setProperty(COMPONENT,component); setProperty(PROJECT_NAME,component.getProject().getName()); - break; } } - } return set; } + + public HashMap getComponentMap() { + if(componentMap == null) + componentMap = new HashMap(); + return componentMap; + } + + public void intializeComponentMap() { + IVirtualComponent[] comps = ComponentUtilities.getAllWorkbenchComponents(); + for(int i = 0; i < comps.length; i++) { + getComponentMap().put(comps[i].getName(),comps[i]); + } + } /** - * Populate the resource name combo with connector projects that are not encrypted. + * Populate the resource name combo with projects that are not encrypted. */ public DataModelPropertyDescriptor[] getValidPropertyDescriptors(String propertyName) { //TODO: populate valid components @@ -81,8 +96,10 @@ List relevantComponents = new ArrayList(); for (int i = 0; i < wbComps.length; i++) { - if (wbComps[i].getComponentTypeId().equals(getComponentID())) + if (wbComps[i].getComponentTypeId().equals(getComponentID())) { relevantComponents.add(wbComps[i]); + getComponentMap().put(wbComps[i].getName(),wbComps[i]); + } } if (relevantComponents == null || relevantComponents.size() == 0) @@ -110,11 +127,11 @@ String componentName = (String) model.getProperty(COMPONENT_NAME); if (componentName == null || componentName.equals("")) return WTPCommonPlugin.createErrorStatus(WTPCommonPlugin.getResourceString(WTPCommonMessages.MODULE_EXISTS_ERROR)); - IVirtualComponent[] component = ComponentUtilities.getComponent(componentName); - if (component.length == 0 || component[0] == null) { + IVirtualComponent component = (IVirtualComponent)componentMap.get(componentName); + if (component == null) { return WTPCommonPlugin.createErrorStatus(WTPCommonPlugin.getResourceString(WTPCommonMessages.MODULE_EXISTS_ERROR)); } - if (!component[0].getComponentTypeId().equals(getComponentID())) { + if (!component.getComponentTypeId().equals(getComponentID())) { return WTPCommonPlugin.createErrorStatus(getWrongComponentTypeString(componentName)); } }