This commit was manufactured by cvs2svn to create tag 'R2_0_1'.
diff --git a/features/org.eclipse.wst.common_core.feature.patch/.project b/features/org.eclipse.wst.common_core.feature.patch/.project
deleted file mode 100644
index eb1e1ea..0000000
--- a/features/org.eclipse.wst.common_core.feature.patch/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.wst.common_core.feature.patch</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.FeatureBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.FeatureNature</nature>
- </natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.common_core.feature.patch/description.txt b/features/org.eclipse.wst.common_core.feature.patch/description.txt
deleted file mode 100644
index a1fc6d0..0000000
--- a/features/org.eclipse.wst.common_core.feature.patch/description.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-The HEAD branch of this patch feature is intentionally empty,
-to attempt to try and avoid confusion.
-
-Please load the correct version from the branch of the related patch.
diff --git a/features/org.eclipse.wst.common_core.feature/feature.xml b/features/org.eclipse.wst.common_core.feature/feature.xml
index bb82902..08fcc85 100644
--- a/features/org.eclipse.wst.common_core.feature/feature.xml
+++ b/features/org.eclipse.wst.common_core.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.wst.common_core.feature"
label="%featureName"
- version="2.0.0.qualifier"
+ version="2.0.1.qualifier"
provider-name="%providerName">
<description>
diff --git a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.xml b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.xml
index 3b2bb00..b26057f 100644
--- a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.xml
+++ b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.wst.common_core.feature.source"
label="%featureName"
- version="2.0.0.qualifier"
+ version="2.0.1.qualifier"
provider-name="%providerName">
<description>
diff --git a/features/org.eclipse.wst.common_sdk.feature/feature.xml b/features/org.eclipse.wst.common_sdk.feature/feature.xml
index 60f1b87..b4623d3 100644
--- a/features/org.eclipse.wst.common_sdk.feature/feature.xml
+++ b/features/org.eclipse.wst.common_sdk.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.wst.common_sdk.feature"
label="%featureName"
- version="2.0.0.qualifier"
+ version="2.0.1.qualifier"
provider-name="%providerName">
<description>
@@ -24,7 +24,7 @@
<includes
id="org.eclipse.wst.common_ui.feature"
version="0.0.0"/>
-
+
<includes
id="org.eclipse.wst.common_ui.feature.source"
version="0.0.0"/>
diff --git a/features/org.eclipse.wst.common_ui.feature/feature.xml b/features/org.eclipse.wst.common_ui.feature/feature.xml
index 035bcc8..74111e4 100644
--- a/features/org.eclipse.wst.common_ui.feature/feature.xml
+++ b/features/org.eclipse.wst.common_ui.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.wst.common_ui.feature"
label="%featureName"
- version="2.0.0.qualifier"
+ version="2.0.1.qualifier"
provider-name="%providerName">
<description>
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.xml b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.xml
index 8778f4c..9801d5b 100644
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.xml
+++ b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.wst.common_ui.feature.source"
label="%featureName"
- version="2.0.0.qualifier"
+ version="2.0.1.qualifier"
provider-name="%providerName">
<description>
diff --git a/plugins/org.eclipse.jem.util/.classpath b/plugins/org.eclipse.jem.util/.classpath
index 25434f7..a988941 100644
--- a/plugins/org.eclipse.jem.util/.classpath
+++ b/plugins/org.eclipse.jem.util/.classpath
@@ -3,7 +3,7 @@
<classpathentry kind="src" path="jemutil"/>
<classpathentry kind="src" path="property_files"/>
<classpathentry kind="src" path="jemutil-nonworkbnech"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/plugins/org.eclipse.jem.util/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.jem.util/.settings/org.eclipse.jdt.core.prefs
index d223546..cb579cc 100644
--- a/plugins/org.eclipse.jem.util/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.jem.util/.settings/org.eclipse.jdt.core.prefs
@@ -1,15 +1,15 @@
-#Sat Mar 31 22:57:30 EDT 2007
+#Tue Jul 31 20:39:48 EDT 2007
eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.deprecation=warning
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
@@ -45,7 +45,7 @@
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.compiler.source=1.5
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
diff --git a/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF b/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
index 61e0bf5..7585a3c 100644
--- a/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.jem.util; singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.0.1.qualifier
Bundle-Activator: org.eclipse.jem.util.plugin.JEMUtilPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -23,4 +23,4 @@
org.eclipse.perfmsr.core;bundle-version="1.0.0";resolution:=optional,
com.ibm.icu;bundle-version="[3.4.4.1,4.0.0)"
Eclipse-LazyStart: true
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
index 36c8f4d..1b3967a 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
@@ -10,19 +10,23 @@
*******************************************************************************/
/*
* $$RCSfile: ProjectResourceSetImpl.java,v $$
- * $$Revision: 1.8 $$ $$Date: 2005/03/18 18:52:06 $$
+ * $$Revision: 1.11 $$ $$Date: 2007/08/30 02:37:05 $$
*/
package org.eclipse.jem.internal.util.emf.workbench;
import java.io.IOException;
import java.util.*;
-import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.content.IContentDescription;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.NotificationImpl;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.URIConverter;
+import org.eclipse.emf.ecore.resource.Resource.Factory;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.resource.impl.URIConverterImpl;
import org.eclipse.emf.ecore.xmi.XMLResource;
@@ -32,7 +36,14 @@
import org.eclipse.jem.util.logger.proxy.Logger;
import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-public class ProjectResourceSetImpl extends ResourceSetImpl implements ProjectResourceSet {
+public class ProjectResourceSetImpl extends ResourceSetImpl implements FlexibleProjectResourceSet {
+ public static interface ModuleURI {
+ public static final int SUB_PROTOCOL_INDX = 0;
+ public static final int PROJECT_NAME_INDX = 1;
+ public static final int MODULE_NAME_INDX = 2;
+ public static final int CONTENT_TYPE_INDX = 3;
+ }
+
private boolean isReleasing = false;
private IProject project;
protected List resourceHandlers = new ArrayList();
@@ -65,17 +76,66 @@
if (isReleasing) return null;
//Check the map first when creating the resource and do not
//normalize if a value is found.
- boolean isMapped = !(((URIConverterImpl.URIMap)getURIConverter().getURIMap()).getURI(uri).equals(uri));
+ URIConverter theURIConverter = getURIConverter();
+ URI normURI = theURIConverter.normalize(uri);
+ boolean isMapped = !(((URIConverterImpl.URIMap)getURIConverter().getURIMap()).getURI(uri).equals(normURI));
URI converted = uri;
if (!isMapped)
converted = getURIConverter().normalize(uri);
Resource result = createResourceFromHandlers(converted);
- if (result == null)
- result = super.createResource(converted);
+ if (result == null) {
+ Resource.Factory resourceFactory = getResourceFactoryRegistry().getFactory(uri);
+ if (resourceFactory != null)
+ {//We got the right factory, now use the right URI
+ result = resourceFactory.createResource(converted);
+ getResources().add(result);
+ }
+ }
+
return result;
}
/**
+ * Return the IFile for the <code>uri</code> within the Workspace. This URI is assumed to be
+ * absolute in the following format: platform:/resource/....
+ */
+ private IFile getPlatformFile(URI uri) {
+ if (WorkbenchResourceHelperBase.isPlatformResourceURI(uri)) {
+ String fileString = URI.decode(uri.path());
+ fileString = fileString.substring(JEMUtilPlugin.PLATFORM_RESOURCE.length() + 1);
+ return ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(fileString));
+ }
+ return null;
+ }
+ public Resource createResource(URI uri, Resource.Factory resourceFactory) {
+ if (isReleasing) return null;
+ //Check the map first when creating the resource and do not
+ //normalize if a value is found.
+ URIConverter theURIConverter = getURIConverter();
+ URI normURI = theURIConverter.normalize(uri);
+ boolean isMapped = !(((URIConverterImpl.URIMap)getURIConverter().getURIMap()).getURI(uri).equals(normURI));
+ URI converted = uri;
+ if (!isMapped)
+ converted = getURIConverter().normalize(uri);
+ Resource result = createResourceFromHandlers(converted);
+ if (result == null) {
+
+ if (resourceFactory != null)
+ {
+ result = resourceFactory.createResource(converted);
+ getResources().add(result);
+ getURIResourceMap().put(uri, result);
+ return result;
+ }
+ else
+ {
+ return null;
+ }
+
+ }
+ return result;
+ }
+ /**
* @see org.eclipse.emf.ecore.resource.impl.ResourceSetImpl#demandLoad(Resource)
*/
protected void demandLoad(Resource resource) throws IOException {
@@ -259,7 +319,206 @@
*/
public Resource getResource(URI uri, boolean loadOnDemand) {
if (isReleasing) return null;
- return super.getResource(uri, loadOnDemand);
+
+ Map<URI, Resource> map = getURIResourceMap();
+ if (map != null)
+ {
+ Resource resource = map.get(uri);
+ if (resource != null)
+ {
+ if (loadOnDemand && !resource.isLoaded())
+ {
+ demandLoadHelper(resource);
+ }
+ return resource;
+ }
+ }
+
+ URIConverter theURIConverter = getURIConverter();
+ URI normalizedURI = theURIConverter.normalize(uri);
+ for (Resource resource : getResources())
+ {
+ if (theURIConverter.normalize(resource.getURI()).equals(normalizedURI)) {
+
+ if (getContentTypeName(uri) == null) { // loading from legacy archive api or non-typed resource
+ if (loadOnDemand && !resource.isLoaded())
+ {
+ demandLoadHelper(resource);
+ }
+
+ if (map != null)
+ {
+ map.put(uri, resource);
+ }
+ return resource;
+ } else {// content type is known
+ if((!map.containsValue(resource) || ((map.get(uri) != null) && map.get(uri).equals(resource))) // existing resource with alternate mapping doesn't exist in map
+ || getContentTypeName(findKey(resource)) == null || ((getContentTypeName(resource) != null && getContentTypeName(resource).equals(getContentTypeName(uri))))) {
+ if (loadOnDemand && !resource.isLoaded())
+ {
+ demandLoadHelper(resource);
+ }
+
+ if (map != null && (map.get(uri) == null))
+ {
+ map.put(uri, resource);
+ }
+ return resource;
+ }
+ } //return null; // Returning null because We can't handle multiple resources based on the same DOM model
+ }
+ }
+
+ Resource delegatedResource = delegatedGetResource(uri, loadOnDemand);
+ if (delegatedResource != null)
+ {
+ if (map != null)
+ {
+ map.put(uri, delegatedResource);
+ }
+ return delegatedResource;
+ }
+
+ if (loadOnDemand)
+ {
+ Resource resource = demandCreateResource(uri);
+ if (resource == null)
+ {
+ throw new RuntimeException("Cannot create a resource for '" + uri + "'; a registered resource factory is needed");
+ }
+
+ demandLoadHelper(resource);
+
+ if (map != null)
+ {
+ map.put(uri, resource);
+ }
+ return resource;
+ }
+
+ return null;
+
+ }
+ private IFile getPlatformFile(Resource res) {
+ IFile file = null;
+ file = getPlatformFile(res.getURI());
+ if (file == null) {
+ if (res.getResourceSet() != null) {
+ URIConverter converter = res.getResourceSet().getURIConverter();
+ URI convertedUri = converter.normalize(res.getURI());
+ if (!res.getURI().equals(convertedUri))
+ file = getPlatformFile(convertedUri);
+ }
+ }
+ return file;
+ }
+
+ private String getContentTypeName(Resource resource) {
+ IFile file = getPlatformFile(resource);
+ IContentDescription desc = null;
+ try {
+ desc = file.getContentDescription();
+ } catch (CoreException e) {
+ }
+ if (desc != null && desc.getContentType() != null)
+ return desc.getContentType().getName();
+ return null;
+ }
+ private URI findKey(Resource resource) {
+ Map aMap = getURIResourceMap();
+ Set keys = aMap.keySet();
+ for (Iterator iterator = keys.iterator(); iterator.hasNext();) {
+ URI name = (URI) iterator.next();
+ if (aMap.get(name).equals(resource))
+ return name;
+ }
+ return null;
+ }
+ protected static String getContentTypeName(URI uri) {
+
+ if (WorkbenchResourceHelperBase.isPlatformResourceURI(uri) || !isValidFullyQualifiedModuleURI(uri))
+ return null;
+ String contentTypeIdentifier = (uri.segmentCount() > 3 ? uri.segment(ModuleURI.CONTENT_TYPE_INDX) : null);
+ if (contentTypeIdentifier != null && Platform.getContentTypeManager().getContentType(uri.segment(ModuleURI.CONTENT_TYPE_INDX)) != null)
+ return contentTypeIdentifier;
+ else
+ return null;
+ }
+ public static boolean isValidFullyQualifiedModuleURI(URI aModuleURI) {
+ if (aModuleURI.segmentCount() < 3) {
+ return false;
+ }
+ return true;
+ }
+ /*
+ * Javadoc copied from interface.
+ */
+ public Resource getResource(URI uri, boolean loadOnDemand, Resource.Factory resourceFactory) {
+ if (isReleasing) return null;
+
+
+ Map<URI, Resource> map = getURIResourceMap();
+ if (map != null)
+ {
+ Resource resource = map.get(uri);
+ if (resource != null)
+ {
+ if (loadOnDemand && !resource.isLoaded())
+ {
+ demandLoadHelper(resource);
+ }
+ return resource;
+ }
+ }
+
+ URIConverter theURIConverter = getURIConverter();
+ URI normalizedURI = theURIConverter.normalize(uri);
+ for (Resource resource : getResources())
+ {
+ if (theURIConverter.normalize(resource.getURI()).equals(normalizedURI))
+ {
+ if (loadOnDemand && !resource.isLoaded())
+ {
+ demandLoadHelper(resource);
+ }
+
+ if (map != null)
+ {
+ map.put(uri, resource);
+ }
+ return resource;
+ }
+ }
+
+ Resource delegatedResource = delegatedGetResource(uri, loadOnDemand);
+ if (delegatedResource != null)
+ {
+ if (map != null)
+ {
+ map.put(uri, delegatedResource);
+ }
+ return delegatedResource;
+ }
+
+ if (loadOnDemand)
+ {
+ Resource resource = demandCreateResource(uri,resourceFactory);
+ if (resource == null)
+ {
+ throw new RuntimeException("Cannot create a resource for '" + uri + "'; a registered resource factory is needed");
+ }
+
+ demandLoadHelper(resource);
+
+ if (map != null)
+ {
+ map.put(uri, resource);
+ }
+ return resource;
+ }
+
+ return null;
+
}
@@ -270,5 +529,10 @@
if (getURIResourceMap() != null)
getURIResourceMap().clear();
}
+
+ protected Resource demandCreateResource(URI uri, Factory resourceFactory) {
+ // TODO Auto-generated method stub
+ return createResource(uri,resourceFactory);
+ }
}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/FlexibleProjectResourceSet.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/FlexibleProjectResourceSet.java
new file mode 100644
index 0000000..1e231f0
--- /dev/null
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/FlexibleProjectResourceSet.java
@@ -0,0 +1,68 @@
+package org.eclipse.jem.util.emf.workbench;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.Resource.Factory;
+
+
+public interface FlexibleProjectResourceSet extends ProjectResourceSet {
+
+
+ /**
+ * Returns the resource resolved by the URI.
+ * <p>
+ * A resource set is expected to implement the following strategy
+ * in order to resolve the given URI to a resource.
+ * First it uses it's {@link #getURIConverter URI converter} to {@link URIConverter#normalize normalize} the URI
+ * and then to compare it with the normalized URI of each resource;
+ * if it finds a match,
+ * that resource becomes the result.
+ * Failing that,
+ * it {@link org.eclipse.emf.ecore.resource.impl.ResourceSetImpl#delegatedGetResource delegates}
+ * to allow the URI to be resolved elsewhere.
+ * For example,
+ * the {@link org.eclipse.emf.ecore.EPackage.Registry#INSTANCE package registry}
+ * is used to {@link org.eclipse.emf.ecore.EPackage.Registry#getEPackage resolve}
+ * the {@link org.eclipse.emf.ecore.EPackage namespace URI} of a package
+ * to the static instance of that package.
+ * So the important point is that an arbitrary implementation may resolve the URI to any resource,
+ * not necessarily to one contained by this particular resource set.
+ * If the delegation step fails to provide a result,
+ * and if <code>loadOnDemand</code> is <code>true</code>,
+ * a resource is {@link org.eclipse.emf.ecore.resource.impl.ResourceSetImpl#demandCreateResource created}
+ * and that resource becomes the result.
+ * If <code>loadOnDemand</code> is <code>true</code>
+ * and the result resource is not {@link Resource#isLoaded loaded},
+ * it will be {@link org.eclipse.emf.ecore.resource.impl.ResourceSetImpl#demandLoad loaded} before it is returned.
+ * </p>
+ * @param uri the URI to resolve.
+ * @param loadOnDemand whether to create and load the resource, if it doesn't already exists.
+ * @param registeredFactory that is used to create resource if needed
+ * @return the resource resolved by the URI, or <code>null</code> if there isn't one and it's not being demand loaded.
+ * @throws RuntimeException if a resource can't be demand created.
+ * @throws org.eclipse.emf.common.util.WrappedException if a problem occurs during demand load.
+ * @since 2.1
+ */
+
+ Resource getResource(URI uri, boolean loadOnDemand, Factory registeredFactory);
+
+ /**
+ * Creates a new resource, of the appropriate type, and returns it.
+ * <p>
+ * It delegates to the resource factory {@link #getResourceFactoryRegistry registry}
+ * to determine the {@link Resource.Factory.Registry#getFactory correct} factory,
+ * and then it uses that factory to {@link Resource.Factory#createResource create} the resource
+ * and add it to the {@link #getResources contents}.
+ * If there is no registered factory, <code>null</code> will be returned;
+ * when running within Eclipse,
+ * a default XMI factory will be registered,
+ * and this will never return <code>null</code>.
+ * </p>
+ * @param uri the URI of the resource to create.
+ * @param resourceFactory
+ * @return a new resource, or <code>null</code> if no factory is registered.
+ */
+
+ public Resource createResource(URI uri, Resource.Factory resourceFactory);
+
+}
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ProjectResourceSet.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ProjectResourceSet.java
index 68c9735..2c97699 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ProjectResourceSet.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ProjectResourceSet.java
@@ -10,7 +10,7 @@
*******************************************************************************/
/*
* $$RCSfile: ProjectResourceSet.java,v $$
- * $$Revision: 1.3 $$ $$Date: 2005/02/15 23:04:14 $$
+ * $$Revision: 1.5 $$ $$Date: 2007/08/30 02:37:05 $$
*/
package org.eclipse.jem.util.emf.workbench;
@@ -114,4 +114,6 @@
* @since 1.0.0
*/
void resetNormalizedURICache();
+
+
}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
index f6b17a3..39a9ac9 100644
--- a/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.wst.common.emf; singleton:=true
-Bundle-Version: 1.1.103.qualifier
+Bundle-Version: 1.1.104.qualifier
Bundle-Activator: org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin
Bundle-Vendor: %pluginProvider
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
index 969617e..dabe6e0 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
@@ -445,9 +445,11 @@
}
// Remove any remaining adapters.
- for (; i < mofChildren.size(); i++) {
- removeMOFValue((EObject) mofChildren.get(i), map);
- }
+ //make a copy so we remove all items - bug 192468
+ Object[] childrenArray = mofChildren.toArray();
+ for (; i < childrenArray.length; i++) {
+ removeMOFValue((EObject) childrenArray[i], map);
+ }
// The adapters cannot be updated as they created. We must wait until
// all of the adapters are created and removed before updating,
@@ -1148,6 +1150,7 @@
try {
return map.convertStringToValue(trimmedValue, emfObject);
} catch (FeatureValueConversionException ex) {
+ org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError(ex);
handleFeatureValueConversionException(ex);
return null;
}
@@ -1711,12 +1714,25 @@
map.clearList(mofObject);
// Go through the list of nodes and update the MOF collection
+ int addIndex = 0;
for (int i = 0; i < nodeChildren.size(); i++) {
Node child = (Node) nodeChildren.get(i);
Object attributeValue = extractValue(child, map, mofObject);
- if (attributeValue != null)
- map.setMOFValue(mofObject, attributeValue, i);
-
+ boolean advanceAddIndex = true;
+ if (attributeValue != null){
+ if(map.getFeature() != null && map.getFeature().isUnique() && mofObject.eGet(map.getFeature()) != null && mofObject.eGet(map.getFeature()) instanceof List && ((List) mofObject.eGet(map.getFeature())).contains(attributeValue)){
+ advanceAddIndex = false;
+ String domName = map.domNameAndPath != null ? map.domNameAndPath : "attribute"; //$NON-NLS-1$
+ org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError(new IllegalArgumentException("The 'no duplicates' constraint is violated by "+domName+" = "+attributeValue));
+ handleInvalidMultiNodes(child.getNodeName());
+ } else {
+ map.setMOFValue(mofObject, attributeValue, addIndex);
+ }
+ if(advanceAddIndex){
+ addIndex ++;
+ }
+ }
+
// Adapt the node so update will occur.
addDOMAdapter(child);
}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXWriter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXWriter.java
index c5d0807..6955734 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXWriter.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXWriter.java
@@ -175,7 +175,7 @@
* @return
*/
private boolean shouldRenderDomPath(EObject target, Translator currentChildTranslator, List mofChildren) {
- return !currentChildTranslator.isEmptyContentSignificant() || (currentChildTranslator.shouldRenderEmptyDOMPath(target) || mofChildren.size() > 0);
+ return (currentChildTranslator.shouldRenderEmptyDOMPath(target) || mofChildren.size() > 0);
}
/**
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MultiObjectTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MultiObjectTranslator.java
index abfcc83..91ed5bc 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MultiObjectTranslator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MultiObjectTranslator.java
@@ -16,6 +16,7 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
+import org.w3c.dom.Node;
/**
* @author schacher
@@ -78,6 +79,15 @@
return false;
}
-
+ public boolean shouldIndentEndTag(Node node) {
+ if (node.getNodeName().equals(getDOMPath())) {
+ return super.shouldIndentEndTag(node);
+ }
+ Translator delegate = getDelegateFor(node.getNodeName(), null);
+ if (delegate != null) {
+ return delegate.shouldIndentEndTag(node);
+ }
+ return super.shouldIndentEndTag(node);
+ }
}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
index 5682b9a..ab28074 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
@@ -28,6 +28,7 @@
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.wst.common.internal.emf.utilities.ExtendedEcoreUtil;
import org.eclipse.wst.common.internal.emf.utilities.FeatureValueConverter;
+import org.w3c.dom.Node;
public class Translator {
@@ -270,6 +271,10 @@
return (fStyle & END_TAG_NO_INDENT) == 0;
}
+ public boolean shouldIndentEndTag(Node node) {
+ return shouldIndentEndTag();
+ }
+
public boolean isEmptyContentSignificant() {
return ((fStyle & EMPTY_TAG) != 0) || ((fStyle & EMPTY_CONTENT_IS_SIGNIFICANT) != 0);
}
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
index 38bfebe..3f82f9c 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.wst.common.emfworkbench.integration; singleton:=true
-Bundle-Version: 1.1.103.qualifier
+Bundle-Version: 1.1.104.qualifier
Bundle-Activator: org.eclipse.wst.common.internal.emfworkbench.integration.EMFWorkbenchEditPlugin
Bundle-Vendor: %pluginVendor
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/edit/EditModelRegistry.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/edit/EditModelRegistry.java
index daae2f7..38d4099 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/edit/EditModelRegistry.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/edit/EditModelRegistry.java
@@ -304,7 +304,7 @@
return this.factory;
}
- private void initializeResources() {
+ private synchronized void initializeResources() {
if (editModelResources == null) {
if (configurationElement != null) {
@@ -328,6 +328,7 @@
discardConfigurationElementIfNecessary();
} else {
editModelResources = Collections.EMPTY_LIST;
+ editModelExtensions = Collections.EMPTY_LIST;
}
}
}
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF
index 5f0f6d9..dd05c9b 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.wst.common.frameworks.ui; singleton:=true
-Bundle-Version: 1.1.100.qualifier
+Bundle-Version: 1.1.101.qualifier
Bundle-Activator: org.eclipse.wst.common.frameworks.internal.ui.WTPUIPlugin
Bundle-Localization: plugin
Export-Package: org.eclipse.wst.common.frameworks.internal.datamodel.ui;x-internal:=true,
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/property_files/wtpcommonui.properties b/plugins/org.eclipse.wst.common.frameworks.ui/property_files/wtpcommonui.properties
index d304fef..dc661b8 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/property_files/wtpcommonui.properties
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/property_files/wtpcommonui.properties
@@ -27,7 +27,7 @@
ExtendableWizard_UI_0=Wizard page failed to be created in {0} {1}
WizardPageExtensionManager_UI_0=Element: {0} does not allow page insertion after.
WizardPageExtensionManager_UI_1={0} will not be created
-WizardPageExtensionManager_UI_2=Circular dependancy, element: {0} check: {1}
+WizardPageExtensionManager_UI_2=Circular dependency, element: {0} check: {1}
WizardPageExtensionManager_UI_3=Editor does not allow page insertions
WizardPageExtensionManager_UI_4=Parent Class Not Found Error: {0} \r\n for attribute: {1} in plugin {2} \r\nPage not created
Delete_UI_0=Delete
diff --git a/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
index 7a14735..622bd4c 100644
--- a/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %Bundle-Name.0
Bundle-Vendor: %provider
Bundle-SymbolicName: org.eclipse.wst.common.modulecore; singleton:=true
-Bundle-Version: 1.1.102.qualifier
+Bundle-Version: 1.1.103.qualifier
Bundle-Activator: org.eclipse.wst.common.componentcore.internal.ModulecorePlugin
Bundle-Localization: plugin
Export-Package: org.eclipse.wst.common.componentcore,
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/ArtifactEdit.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/ArtifactEdit.java
index 5a13db8..a6745fd 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/ArtifactEdit.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/ArtifactEdit.java
@@ -17,6 +17,7 @@
import java.util.logging.Logger;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@@ -31,11 +32,15 @@
import org.eclipse.wst.common.componentcore.internal.ArtifactEditModel;
import org.eclipse.wst.common.componentcore.internal.BinaryComponentHelper;
import org.eclipse.wst.common.componentcore.internal.impl.ModuleURIUtil;
+import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.frameworks.internal.operations.IOperationHandler;
import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelListener;
import org.eclipse.wst.common.internal.emfworkbench.validateedit.IValidateEditContext;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacet;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
/**
* Provides a Facade pattern for accessing Module Content Metamodels for Web Tools Platform flexible
@@ -361,9 +366,9 @@
throw new IllegalArgumentException("Invalid component handle: " + aProject);
if (!forCreate && !isValidEditableModule(component))
throw new IllegalArgumentException("Invalid component handle: " + aProject);
-
+ project = aProject;
URI componentURI = null;
- if (forCreate)
+ if (getContentTypeDescriber() != null)
componentURI = ModuleURIUtil.fullyQualifyURI(aProject,getContentTypeDescriber());
else
componentURI = ModuleURIUtil.fullyQualifyURI(aProject);
@@ -374,17 +379,35 @@
artifactEditModel = nature.getArtifactEditModelForWrite(componentURI, this, projectType, editModelParams);
isReadOnly = toAccessAsReadOnly;
isArtifactEditModelSelfManaged = true;
-
- project = aProject;
}
-
-
+
+ public boolean isProjectOfType(IProject project, String typeID) {
+ IFacetedProject facetedProject = null;
+ try {
+ facetedProject = ProjectFacetsManager.create(project);
+ } catch (CoreException e) {
+ return false;
+ }
+ if (facetedProject != null && ProjectFacetsManager.isProjectFacetDefined(typeID)) {
+ IProjectFacet projectFacet = ProjectFacetsManager.getProjectFacet(typeID);
+ return projectFacet != null && facetedProject.hasProjectFacet(projectFacet);
+ }
+ return false;
+ }
/**
* Used to optionally define an associated content type for XML file creation
* @return
*/
protected String getContentTypeDescriber() {
+ if (isProjectOfType(project, IModuleConstants.JST_EJB_MODULE))
+ return "org.eclipse.jst.j2ee.ejbDD";
+ if (isProjectOfType(project, IModuleConstants.JST_WEB_MODULE))
+ return "org.eclipse.jst.j2ee.webDD";
+ if (isProjectOfType(project, IModuleConstants.JST_EAR_MODULE))
+ return "org.eclipse.jst.j2ee.earDD";
+ if (isProjectOfType(project, IModuleConstants.JST_APPCLIENT_MODULE))
+ return "org.eclipse.jst.j2ee.appclientDD";
return null;
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleCoreValidator.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleCoreValidator.java
index 8c4c23c..7a212d0 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleCoreValidator.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleCoreValidator.java
@@ -15,14 +15,12 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.xmi.XMIResource;
import org.eclipse.wst.common.componentcore.ModuleCoreNature;
import org.eclipse.wst.common.componentcore.internal.impl.WTPModulesResource;
import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
-import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
import org.eclipse.wst.common.project.facet.core.internal.FacetedProjectNature;
import org.eclipse.wst.validation.internal.core.Message;
import org.eclipse.wst.validation.internal.core.ValidationException;
@@ -41,24 +39,23 @@
}
public Resource getPrimaryResource(IProject project) {
- // Overriden to handle loading the .component resource in new and old forms
- // First will try to load from .settings/org.eclipse.wst.common.component
- // Second will try to load from the old location(s) .settings/.component or .component
-
- URI uri = URI.createURI(StructureEdit.MODULE_META_FILE_NAME);
- WTPModulesResource res = (WTPModulesResource)WorkbenchResourceHelper.getOrCreateResource(uri, getResourceSet(project));
- if (res == null || !res.isLoaded()) {
- uri = URI.createURI(".settings/.component");
- res = (WTPModulesResource)WorkbenchResourceHelper.getOrCreateResource(uri, getResourceSet(project));
- if (res == null || !res.isLoaded()) {
- uri = URI.createURI(".wtpmodules");
- res = (WTPModulesResource)WorkbenchResourceHelper.getOrCreateResource(uri, getResourceSet(project));
- if (res == null || !res.isLoaded()) {
- res = null;
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=181334; Changing this method to call ModuleStructuralModel.getPrimaryResource() method instead.
+ // This does two things:
+ // 1. Reorders the locks to prevent deadlock between locking the resource (Bugzilla 181334),
+ // then the edit model and
+ // 2. Reuses code. (The code between this method and MSM.getPrimaryResource() is identical.
+ StructureEdit structureEdit = StructureEdit.getStructureEditForRead(project);
+ if (structureEdit != null) {
+ ModuleStructuralModel structuralModel = structureEdit.getModuleStructuralModel();
+ if (structuralModel != null) {
+ // acquiring the ModuleStructuralModel lock here first because the call to getPrimaryResource()
+ // will cause this lock to be acquired later resulting in a potential deadlock
+ synchronized (structuralModel) {
+ return structuralModel.getPrimaryResource();
}
}
}
- return res;
+ return null;
}
private ResourceSet getResourceSet(IProject proj) {
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java
index f71542f..88a9078 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java
@@ -38,7 +38,6 @@
private static HashMap managerCache = new HashMap();
private static HashSet migrated = new HashSet();
private boolean migrating;
- private HashSet moved = new HashSet();
public ModuleMigratorManager() {
super();
}
@@ -74,9 +73,8 @@
try {
if (aProj.isAccessible() && ModuleCoreNature.isFlexibleProject(aProj)) {
if (aProj.findMember(".wtpmodules") != null) {
- if (!moved.contains(aProj))
- moveOldMetaDataFile(aProj);
- } else moved.add(aProj);
+ moveOldMetaDataFile(aProj);
+ }
if (needsComponentMigration(aProj,multiComps))
migrateComponentsIfNecessary(aProj,multiComps);
}
@@ -119,13 +117,11 @@
private void moveOldMetaDataFile(IProject project) {
try {
- if (!moved.contains(project))
- moveMetaDataFile(project);
+ moveMetaDataFile(project);
IFolder depFolder = project.getFolder(".deployables");
if (depFolder.exists())
depFolder.delete(true, null);
project.refreshLocal(IResource.DEPTH_INFINITE, null);
- moved.add(project);
} catch (Exception e) {
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphManager.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphManager.java
index 95fd9d3..3d95164 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphManager.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphManager.java
@@ -266,4 +266,8 @@
private void setModStamp(long modStamp) {
this.modStamp = modStamp;
}
+
+ public boolean checkIfStillValid(long timeStamp) {
+ return (getModStamp() == timeStamp && !metadataChanged());
+ }
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ModuleURIUtil.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ModuleURIUtil.java
index 9b9d748..170c513 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ModuleURIUtil.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/ModuleURIUtil.java
@@ -95,7 +95,8 @@
public static URI trimModuleResourcePathToModuleURI(URI aModuleResourcePath) throws UnresolveableURIException {
ensureValidFullyQualifiedModuleURI(aModuleResourcePath);
- return aModuleResourcePath.trimSegments(aModuleResourcePath.segmentCount() - 3);
+ int trimIndex = (hasContentTypeName(aModuleResourcePath) ? 4 : 3);
+ return aModuleResourcePath.trimSegments(aModuleResourcePath.segmentCount() - trimIndex);
}
public static URI trimWorkspacePathToProjectRelativeURI(URI aFullyQualifiedResourceURI) throws UnresolveableURIException {
@@ -140,7 +141,7 @@
URI uri;
int trimIndex = (hasContentTypeName(aFullyQualifiedModuleResourcePath) ? 5 : 4);
if(segmentCount > trimIndex){
- uri = aFullyQualifiedModuleResourcePath.deresolve(aFullyQualifiedModuleResourcePath.trimSegments(segmentCount - trimIndex));
+ uri = aFullyQualifiedModuleResourcePath.deresolve(aFullyQualifiedModuleResourcePath.trimSegments(segmentCount - trimIndex), false,false,true);
} else {
uri = URI.createURI(aFullyQualifiedModuleResourcePath.segment(segmentCount-1));
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/PlatformURLModuleConnection.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/PlatformURLModuleConnection.java
index efd0ec8..511efc4 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/PlatformURLModuleConnection.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/impl/PlatformURLModuleConnection.java
@@ -63,6 +63,9 @@
IVirtualComponent component = ComponentCore.createComponent(componentProject);
//IVirtualFile vFile = component.getFile(runtimePath);
IVirtualFolder rootFolder = component.getRootFolder();
+ int matchingSegs = runtimePath.matchingFirstSegments(rootFolder.getProjectRelativePath());
+ if(matchingSegs > 0)
+ runtimePath = runtimePath.removeFirstSegments(matchingSegs);
IVirtualFile vFile = rootFolder.getFile(runtimePath);
return URI.createPlatformResourceURI(vFile.getWorkspaceRelativePath().toString());
} catch (UnresolveableURIException e) {
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java
index 32fa690..6c66c10 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java
@@ -20,6 +20,7 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.wst.common.componentcore.ComponentCore;
@@ -27,6 +28,7 @@
import org.eclipse.wst.common.componentcore.internal.ComponentcoreFactory;
import org.eclipse.wst.common.componentcore.internal.ComponentcorePackage;
import org.eclipse.wst.common.componentcore.internal.DependencyType;
+import org.eclipse.wst.common.componentcore.internal.ModulecorePlugin;
import org.eclipse.wst.common.componentcore.internal.Property;
import org.eclipse.wst.common.componentcore.internal.ReferencedComponent;
import org.eclipse.wst.common.componentcore.internal.StructureEdit;
@@ -105,7 +107,15 @@
List propList = component.getProperties();
if(propList != null) {
for (int i = 0; i < propList.size(); i++) {
- props.setProperty(((Property)propList.get(i)).getName(), ((Property)propList.get(i)).getValue());
+ Property property = (Property)propList.get(i);
+ String name = property.getName();
+ String value = property.getValue();
+ if(value == null){
+ value = ""; //$NON-NLS-1$
+ String message = "WARNING: The component file in "+getProject().getName()+" has no value defined for the property: "+name; //$NON-NLS-1$//$NON-NLS-2$
+ ModulecorePlugin.getDefault().logError(IStatus.ERROR, message, null);
+ }
+ props.setProperty(name, value);
}
}
return props;
@@ -312,7 +322,9 @@
referencedComponent.setArchiveName(references[i].getArchiveName());
}
//clean up any old obsolete references
- cleanUpReferences(component);
+ if (component != null){
+ cleanUpReferences(component);
+ }
} finally {
if(core != null) {
core.saveIfNecessary(null);
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ComponentUtilities.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ComponentUtilities.java
index 4ac8ca3..e9bd7ca 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ComponentUtilities.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ComponentUtilities.java
@@ -114,8 +114,12 @@
return null;
IVirtualFolder root = comp.getRootFolder();
IVirtualResource file = root.findMember(aPath);
- if (file != null)
- return (IFile) file.getUnderlyingResource();
+ if (file != null && file.getType() == IVirtualResource.FILE){
+ IResource resource = file.getUnderlyingResource();
+ if(resource.getType() == IResource.FILE){
+ return (IFile) resource;
+ }
+ }
return null;
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/HRefTranslator.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/HRefTranslator.java
index 135cb60..2bc48f6 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/HRefTranslator.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/HRefTranslator.java
@@ -20,6 +20,7 @@
import org.eclipse.wst.common.componentcore.internal.StructureEdit;
import org.eclipse.wst.common.componentcore.internal.WorkbenchComponent;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.internal.emf.resource.CompatibilityXMIResource;
import org.eclipse.wst.common.internal.emf.resource.Translator;
import org.eclipse.wst.common.internal.emf.resource.TranslatorPath;
@@ -65,13 +66,23 @@
* org.eclipse.emf.ecore.EObject)
*/
public Object convertStringToValue(String aValue, EObject anOwner) {
- WorkbenchComponent earComp = (WorkbenchComponent)anOwner.eContainer();
- IVirtualComponent virtualComp = ComponentCore.createComponent(StructureEdit.getContainingProject(earComp));
- ArtifactEdit edit = (ArtifactEdit)virtualComp.getAdapter(ArtifactEdit.class);
- if (edit == null) return null;
- if( edit.getContentModelRoot() == null ) return null;
- Resource res = edit.getContentModelRoot().eResource();
- return res.getEObject(aValue);
+ Resource res = null;
+ try {
+ WorkbenchComponent earComp = (WorkbenchComponent)anOwner.eContainer();
+ IVirtualComponent virtualComp = ComponentCore.createComponent(StructureEdit.getContainingProject(earComp));
+ ArtifactEdit edit = (ArtifactEdit)virtualComp.getAdapter(ArtifactEdit.class);
+ if (edit == null) return null;
+ if( edit.getContentModelRoot() == null ) return null;
+ res = edit.getContentModelRoot().eResource();
+ if (res != null)
+ return res.getEObject(aValue);
+ return null;
+ } finally {
+// if ((res != null) && res.getResourceSet() != null) {
+// res.getResourceSet().getResources().remove(res);
+// res.unload();
+// }
+ }
}
/*
@@ -82,8 +93,14 @@
*/
public String convertValueToString(Object aValue, EObject anOwner) {
String frag = null;
- if (((EObject)aValue).eResource() != null)
- frag = ((EObject)aValue).eResource().getURIFragment((EObject)aValue);
+ Resource theResource = ((EObject)aValue).eResource();
+ if (theResource != null)
+ {
+ if (theResource instanceof CompatibilityXMIResource)
+ frag = theResource.getURIFragment((EObject)aValue);
+ else
+ frag = null;
+ }
else
frag = EcoreUtil.getID((EObject)aValue);
return frag;
diff --git a/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF
index c831934..66d1e4c 100644
--- a/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name.0
Bundle-SymbolicName: org.eclipse.wst.validation; singleton:=true
-Bundle-Version: 1.1.101.qualifier
+Bundle-Version: 1.1.102.qualifier
Bundle-Activator: org.eclipse.wst.validation.internal.plugin.ValidationPlugin
Bundle-Vendor: %Bundle-Vendor.0
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/TaskListUtility.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/TaskListUtility.java
index 1a5bb63..05f096b 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/TaskListUtility.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/TaskListUtility.java
@@ -59,7 +59,7 @@
* This method adds a message to a resource in the task list.
*/
public static IMarker addTask(String pluginId, IResource resource, String location, String messageId, String message, int markerType, String markerName, String targetObjectName, String groupName, int offset, int length) throws CoreException {
- if ((message == null) || (resource == null)) {
+ if ((message == null) || (resource == null) || (!resource.exists())) {
return null;
}
@@ -142,7 +142,7 @@
* This method adds a message to a resource in the task list.
*/
public static IMarker addTask(String pluginId, IResource resource, String location, String messageId, String message, int markerType, String targetObjectName, String groupName, int offset, int length) throws CoreException {
- if ((message == null) || (resource == null)) {
+ if ((message == null) || (resource == null) || (!resource.exists())) {
return null;
}
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationRegistryReader.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationRegistryReader.java
index 6c80f15..971a6b1 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationRegistryReader.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationRegistryReader.java
@@ -520,7 +520,7 @@
/* package */static IValidator createValidator(IConfigurationElement element, String validatorClassName) {
IValidator validator = null;
try {
- validator = (IValidator) element.createExecutableExtension(TAG_RUN_CLASS);
+ validator = (IValidator) element.createExecutableExtension(ATT_CLASS);
} catch (Exception exc) {
Logger logger = ValidationPlugin.getPlugin().getMsgLogger();
if (logger.isLoggingLevel(Level.SEVERE)) {
@@ -1391,7 +1391,7 @@
vmd.setEnabledByDefault(getEnabledByDefault(element));
vmd.setMigrationMetaData(getMigrationMetaData(element, vmd));
vmd.setHelperClass(element, helperImplName);
- vmd.setValidatorClass(element); // associate the above attributes with the validator
+ vmd.setValidatorClass(runChildren[0]); // associate the above attributes with the validator
vmd.addDependentValidator(getDependentValidatorValue(element));
vmd.setContentTypeIds(getContentTypeBindings(element));
initializeValidatorCustomMarkers(element, pluginId, vmd);
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidatorMetaData.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidatorMetaData.java
index 4b3ed7c..bbd636c 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidatorMetaData.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidatorMetaData.java
@@ -346,7 +346,7 @@
if (getContentTypeIds() != null) {
IContentDescription description = null;
try {
- if (resource.getType() == IResource.FILE)
+ if (resource.getType() == IResource.FILE && resource.exists())
description = ((IFile) resource).getContentDescription();
} catch (CoreException e) {
//Resource exceptions