[nobug] Various fixes
diff --git a/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/jdt/internal/integration/JavaArtifactEditModel.java b/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/jdt/internal/integration/JavaArtifactEditModel.java
index b3135da..b72bb74 100644
--- a/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/jdt/internal/integration/JavaArtifactEditModel.java
+++ b/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/jdt/internal/integration/JavaArtifactEditModel.java
@@ -2,12 +2,16 @@
import java.util.Set;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.wst.common.componentcore.internal.ArtifactEditModel;
+import org.eclipse.wst.common.frameworks.internal.SaveFailedException;
import org.eclipse.wst.common.internal.emf.resource.CompatibilityXMIResource;
import org.eclipse.wst.common.internal.emf.resource.ReferencedResource;
import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
@@ -117,6 +121,13 @@
if (monitor == null || !monitor.isCanceled())
super.primSave(monitor);
}
+ protected void runSaveOperation(IWorkspaceRunnable runnable, IProgressMonitor monitor) throws SaveFailedException {
+ try {
+ ResourcesPlugin.getWorkspace().run(runnable, null,IWorkspace.AVOID_UPDATE,monitor);
+ } catch (CoreException e) {
+ throw new SaveFailedException(e);
+ }
+ }
/**
* Insert the method's description here. Creation date: (4/11/2001 4:14:26 PM)
diff --git a/plugins/org.eclipse.jst.j2ee/build.properties b/plugins/org.eclipse.jst.j2ee/build.properties
index 29f13da..9290f8d 100644
--- a/plugins/org.eclipse.jst.j2ee/build.properties
+++ b/plugins/org.eclipse.jst.j2ee/build.properties
@@ -14,7 +14,7 @@
plugin.properties,\
prepareAllPII.xml,\
plugin.xml,\
- runtime/j2eeplugin.jar,\
+ .,\
META-INF/,\
about.html
source.. = j2eeplugin/,\
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddComponentToEnterpriseApplicationOp.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddComponentToEnterpriseApplicationOp.java
index df706e6..1498d91 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddComponentToEnterpriseApplicationOp.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddComponentToEnterpriseApplicationOp.java
@@ -17,6 +17,9 @@
import org.eclipse.jst.j2ee.internal.J2EEConstants;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties;
+import org.eclipse.wst.common.componentcore.internal.ReferencedComponent;
+import org.eclipse.wst.common.componentcore.internal.StructureEdit;
+import org.eclipse.wst.common.componentcore.internal.WorkbenchComponent;
import org.eclipse.wst.common.componentcore.internal.operation.CreateReferenceComponentsOp;
import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
import org.eclipse.wst.common.componentcore.resources.ComponentHandle;
@@ -40,26 +43,42 @@
protected void updateEARDD(IProgressMonitor monitor) {
EARArtifactEdit earEdit = null;
+ StructureEdit se = null;
try {
ComponentHandle handle = (ComponentHandle) model.getProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT_HANDLE);
earEdit = EARArtifactEdit.getEARArtifactEditForWrite(handle);
+ se = StructureEdit.getStructureEditForWrite(handle.getProject());
if (earEdit != null) {
Application application = earEdit.getApplication();
List list = (List) model.getProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_HANDLE_LIST);
if (list != null && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
+ StructureEdit compse = null;
ComponentHandle comphandle = (ComponentHandle) list.get(i);
IVirtualComponent wc = ComponentCore.createComponent(comphandle.getProject(), comphandle.getName());
- addModule(application, wc);
+ WorkbenchComponent earwc = se.findComponentByName(handle.getName());
+ try {
+ compse = StructureEdit.getStructureEditForRead(comphandle.getProject());
+ WorkbenchComponent refwc = compse.findComponentByName(comphandle.getName());
+ ReferencedComponent ref = se.findReferencedComponent(earwc,refwc);
+ Module mod = addModule(application, wc);
+ ref.setDependentObject(mod);
+ } finally {
+ if (compse != null)
+ compse.dispose();
+ }
}
}
}
+ se.saveIfNecessary(monitor);
earEdit.saveIfNecessary(monitor);
} catch (Exception e) {
Logger.getLogger().logError(e);
} finally {
if (earEdit != null)
earEdit.dispose();
+ if (se != null)
+ se.dispose();
}
}
@@ -78,7 +97,7 @@
return null;
}
- protected void addModule(Application application, IVirtualComponent wc) {
+ protected Module addModule(Application application, IVirtualComponent wc) {
Application dd = application;
String name = wc.getName();
@@ -96,22 +115,23 @@
Module existingModule = dd.getFirstModule(name);
if (existingModule == null) {
- Module m = createNewModule(wc);
- if (m != null) {
+ existingModule = createNewModule(wc);
+ if (existingModule != null) {
- m.setUri(name);
- if (m instanceof WebModule) {
+ existingModule.setUri(name);
+ if (existingModule instanceof WebModule) {
Properties props = wc.getMetaProperties();
String contextroot = ""; //$NON-NLS-1$
if ((props != null) && (props.containsKey(J2EEConstants.CONTEXTROOT)))
contextroot = props.getProperty(J2EEConstants.CONTEXTROOT);
- ((WebModule) m).setContextRoot(contextroot);
+ ((WebModule) existingModule).setContextRoot(contextroot);
}
- dd.getModules().add(m);
+ dd.getModules().add(existingModule);
}
}
+ return existingModule;
}
public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.java
index f4111b0..80aa7e5 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.java
@@ -468,6 +468,21 @@
public IVirtualReference[] getComponentReferences() {
return getComponentReferences(Collections.EMPTY_LIST);
}
+ /**
+ * This method will return the IVirtualReference to the component of the given name
+ *
+ * @return - IVirtualReference or null if not found
+ */
+ public IVirtualReference getComponentReference(String componentName) {
+ IVirtualReference[] refs = getComponentReferences(Collections.EMPTY_LIST);
+ for (int i = 0; i < refs.length; i++) {
+ IVirtualReference reference = refs[i];
+ if (reference.getReferencedComponent().getName().equals(componentName))
+ return reference;
+
+ }
+ return null;
+ }
private IVirtualReference[] getComponentReferences(List componentTypes) {
List components = new ArrayList();