Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MappedXMIHelper.java')
-rw-r--r--plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MappedXMIHelper.java297
1 files changed, 0 insertions, 297 deletions
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MappedXMIHelper.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MappedXMIHelper.java
deleted file mode 100644
index f0939a2a2..000000000
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MappedXMIHelper.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.common.internal.emf.resource;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.InternalEObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.URIConverter;
-import org.eclipse.emf.ecore.resource.impl.URIConverterImpl;
-import org.eclipse.emf.ecore.xmi.XMLHelper;
-import org.eclipse.emf.ecore.xmi.XMLResource;
-import org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl;
-import org.eclipse.wst.common.internal.emf.utilities.IDUtil;
-
-public class MappedXMIHelper extends XMLHelperImpl {
-
- private static final String WORKSPACE_PROTOCOL = "workspace:/"; //$NON-NLS-1$
- private static final String PLATFORM_RESOURCE_PROTOCOL = "platform:/resource/"; //$NON-NLS-1$
- private static final EStructuralFeature NULL_FEATURE = new UnsupportedFeature();
- protected boolean usingMaps = true;
- protected Map cachedRelativeURIs;
- protected Map packageURIsToPrefixes;
-
- /**
- * Constructor for MappedXMLHelper.
- *
- * @param resource
- */
- public MappedXMIHelper(XMLResource resource, Map prefixesToURIs) {
- super(resource);
- this.prefixesToURIs.putAll(prefixesToURIs);
- pushContext(); //Needed to initialize the context to zero
- Set keys = prefixesToURIs.keySet();
- for (Iterator iter = keys.iterator(); iter.hasNext();) {
- String prefix = (String) iter.next();
- String uri = (String) prefixesToURIs.get(prefix);
- namespaceSupport.declarePrefix(prefix, uri);
- }
-
- }
-
- public URI resolve(URI relative, URI base) {
- URI resolved = null;
- boolean isMapped = false;
- ResourceSet set = getResource().getResourceSet();
- if (set != null) {
- URI localresourceURI = null;
- if (relative.hasFragment())
- localresourceURI = relative.trimFragment();
- else
- localresourceURI = relative;
- isMapped = !(((URIConverterImpl.URIMap) set.getURIConverter().getURIMap()).getURI(localresourceURI).equals(localresourceURI));
- }
- if (!isMapped) {
- if (isUsingContainerRelativePaths() && set != null)
- resolved = set.getURIConverter().normalize(relative);
- } else {
- resolved = relative;
- }
- return resolved == null ? super.resolve(relative, base) : resolved;
- }
-
- /**
- * Method isUsingContainerRelativePaths.
- *
- * @return boolean
- */
- private boolean isUsingContainerRelativePaths() {
- return ((CompatibilityXMIResource) resource).getFormat() == CompatibilityXMIResource.FORMAT_MOF5 || usingMaps;
- }
-
- public void addPrefix(String prefix, String uri) {
- /*
- * problem - the incoming key value pair is ejbbnd->ejbbnd.xmi; however, the map already has
- * a key value pair of ejbbnd->http:///ejbbnd.ecore
- */
- if (uri.endsWith(".ecore")) { //$NON-NLS-1$
- usingMaps = false;
- }
- String existing = (String) prefixesToURIs.get(prefix);
- if (existing == null) {
- prefixesToURIs.put(prefix, uri);
- namespaceSupport.declarePrefix(prefix, uri);
- } else if (!existing.equals(uri)) {
- getCompatibilityResource().addOriginalPackageURI(existing, uri);
- getCompatibilityResource().setFormat(CompatibilityXMIResource.FORMAT_MOF5);
- }
- }
-
- protected CompatibilityXMIResource getCompatibilityResource() {
- return (CompatibilityXMIResource) getResource();
- }
-
- /**
- * @see org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl#getHREF(EObject)
- */
- public String getHREF(EObject obj) {
- if (!getCompatibilityResource().usesDefaultFormat()) {
- URIConverter conv = getURIConverter();
- if (conv != null && conv instanceof CompatibilityURIConverter) {
- String href = getCompatibliltyHREF(obj, (CompatibilityURIConverter) conv);
- return useWorkspaceProtocolIfNecessary(href);
- }
- }
- return super.getHREF(obj);
- }
-
-
- /**
- * @param href
- * @return
- */
- protected String useWorkspaceProtocolIfNecessary(String href) {
- if (href != null && href.startsWith(PLATFORM_RESOURCE_PROTOCOL))
- return WORKSPACE_PROTOCOL + href.substring(19);
- return href;
- }
-
- private String getCompatibliltyHREF(EObject obj, CompatibilityURIConverter conv) {
- //Implementation copied from super.getHREF(EObject)
- InternalEObject o = (InternalEObject) obj;
-
- URI objectURI = o.eProxyURI();
- if (objectURI == null) {
- Resource otherResource = obj.eResource();
- if (otherResource == null) {
- objectURI = handleDanglingHREF(obj);
- if (objectURI == null) {
- return null;
- }
- } else
- objectURI = otherResource.getURI().appendFragment(otherResource.getURIFragment(obj));
- }
-
- //Modified to dispatch back to URI Converter
- if (!objectURI.isRelative()) {
- objectURI = makeRelative(objectURI, conv);
- }
- return objectURI.toString();
- }
-
- protected URI makeRelative(URI objectURI, CompatibilityURIConverter conv) {
- String fragment = objectURI.fragment();
- objectURI = objectURI.trimFragment();
- URI relative = (URI) getCachedRelativeURIs().get(objectURI);
- if (relative == null) {
- relative = conv.deNormalize(objectURI);
- if (relative.isRelative())
- cachedRelativeURIs.put(objectURI, relative);
- }
- return relative.appendFragment(fragment);
- }
-
- protected URIConverter getURIConverter() {
- ResourceSet set = getResource().getResourceSet();
- if (set != null)
- return set.getURIConverter();
- return null;
- }
-
- protected Map getCachedRelativeURIs() {
- if (cachedRelativeURIs == null)
- cachedRelativeURIs = new HashMap();
- return cachedRelativeURIs;
- }
-
- /**
- * @see org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl#getID(EObject)
- */
- public String getID(EObject obj) {
- if (getCompatibilityResource().usesDefaultFormat())
- return super.getID(obj);
- return IDUtil.getOrAssignID(obj, resource);
- }
-
- public String[] getNSInfo(EPackage pkg) {
- String prefix = getMappedPrefix(pkg);
- if (prefix == null)
- return new String[]{pkg.getNsPrefix(), pkg.getNsURI()};
- return new String[]{prefix, prefix + ".xmi"}; //$NON-NLS-1$
- }
-
- protected String getMappedPrefix(EPackage pkg) {
- String nsURI = pkg.getNsURI();
- if (usingMaps || !getCompatibilityResource().usesDefaultFormat())
- return (String) packageURIsToPrefixes.get(nsURI);
- return null;
- }
-
- protected String getMappedPrefixOrDefault(EPackage pkg) {
- String prefix = getMappedPrefix(pkg);
- return prefix == null ? pkg.getNsPrefix() : prefix;
- }
-
-
- /**
- * Returns the packageURIsToPrefixes.
- *
- * @return Map
- */
- public Map getPackageURIsToPrefixes() {
- return packageURIsToPrefixes;
- }
-
- /**
- * Sets the packageURIsToPrefixes.
- *
- * @param packageURIsToPrefixes
- * The packageURIsToPrefixes to set
- */
- public void setPackageURIsToPrefixes(Map packageURIsToPrefixes) {
- this.packageURIsToPrefixes = packageURIsToPrefixes;
- }
-
- public String getQName(EClass c) {
- String name = getName(c);
-
- if (xmlMap != null) {
- XMLResource.XMLInfo clsInfo = xmlMap.getInfo(c);
-
- if (clsInfo != null) {
- String targetNamespace = clsInfo.getTargetNamespace();
- return getQName(targetNamespace, name);
- }
- }
-
- EPackage p = c.getEPackage();
- packages.put(p, null);
-
- if (p.getNsPrefix().equals("")) //$NON-NLS-1$
- return name;
-
- //Modified from superclass
- //return p.getNsPrefix() + ":" + name;
- return getMappedPrefixOrDefault(p) + ":" + name; //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl#setValue(EObject, EStructuralFeature,
- * Object, int)
- */
- public void setValue(EObject object, EStructuralFeature feature, Object value, int position) {
- if (feature == NULL_FEATURE)
- return;
- if (!feature.isTransient()) {
- if (value == null && feature.getEType().getInstanceClass() != null && feature.getEType().getInstanceClass().isPrimitive())
- //For compatibility with MOF5 where types like Integer might have been set
- //and serialized as "xsi:nil"
- return;
-
- super.setValue(object, feature, value, position);
- }
- }
-
-
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.emf.ecore.xmi.XMLHelper#getFeature(org.eclipse.emf.ecore.EClass,
- * java.lang.String, java.lang.String, boolean)
- */
- public EStructuralFeature getFeature(EClass eClass, String namespaceURI, String name, boolean isElement) {
- if (UnsupportedFeature.isUnsupported(eClass, name))
- return NULL_FEATURE;
- return super.getFeature(eClass, namespaceURI, name, isElement);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.emf.ecore.xmi.XMLHelper#getFeatureKind(org.eclipse.emf.ecore.EStructuralFeature)
- */
- public int getFeatureKind(EStructuralFeature feature) {
- if (feature == NULL_FEATURE)
- return XMLHelper.DATATYPE_SINGLE;
- return super.getFeatureKind(feature);
- }
-}

Back to the top