diff options
Diffstat (limited to 'plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse')
104 files changed, 0 insertions, 14563 deletions
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AbstractRendererImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AbstractRendererImpl.java deleted file mode 100644 index 9112aef59..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AbstractRendererImpl.java +++ /dev/null @@ -1,152 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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; - - -public abstract class AbstractRendererImpl implements Renderer { - - - protected TranslatorResource resource; - private int versionId; - private boolean validating = true; - - /** - * Constructor for AbstractRendererImpl. - */ - public AbstractRendererImpl() { - super(); - } - - /** - * @see com.ibm.etools.emf2xml.Renderer#setResource(TranslatorResource) - */ - public void setResource(TranslatorResource aResource) { - resource = aResource; - } - - /** - * @see com.ibm.etools.emf2xml.Renderer#getResource() - */ - public TranslatorResource getResource() { - return resource; - } - - public int getVersionId() { - return this.versionId; - } - - public void setVersionId(int versionId) { - this.versionId = versionId; - } - - /** - * @return - */ - public boolean isValidating() { - return validating; - } - - /** - * @param b - */ - public void setValidating(boolean b) { - validating = b; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#accessForRead() - */ - public void accessForRead() { - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#accessForWrite() - */ - public void accessForWrite() { - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#isModified() - */ - public boolean isModified() { - return false; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#isShared() - */ - public boolean isShared() { - return false; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#isSharedForWrite() - */ - public boolean isSharedForWrite() { - return false; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#preDelete() - */ - public void preDelete() { - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#preUnload() - */ - public void preUnload() { - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#releaseFromRead() - */ - public void releaseFromRead() { - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#releaseFromWrite() - */ - public void releaseFromWrite() { - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#setBatchMode(boolean) - */ - public void setBatchMode(boolean isBatch) { - } - - public boolean useStreamsForIO() { - return true; - } - - public boolean isBatchMode() { - return false; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AttributeTranslatorFilter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AttributeTranslatorFilter.java deleted file mode 100644 index b0d08696f..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AttributeTranslatorFilter.java +++ /dev/null @@ -1,35 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 Sep 21, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - - -public final class AttributeTranslatorFilter extends TranslatorFilter { - - public AttributeTranslatorFilter() { - super(null, -1); - } - - public AttributeTranslatorFilter(Translator trans, int version) { - super(trans, version); - } - - public final int scanNextTranslator(Translator[] children, int start) { - int found = start + 1; - for (; found < children.length; ++found) { - if (children[found].isDOMAttribute()) - break; - } - found = (found < children.length) ? found : -1; - return found; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventNode.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventNode.java deleted file mode 100644 index e57583388..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventNode.java +++ /dev/null @@ -1,585 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.ArrayList; -import java.util.List; - -import org.eclipse.emf.common.notify.Notifier; -import org.eclipse.emf.ecore.EObject; -import org.xml.sax.Attributes; - - -/** - * CacheEventNodes (CENOs) store information collected from SAX Events. This information can then be - * used once all necessary SAX Events have been generated to create and/or set values on EMF model - * objects. - * - * CacheEventNodes (CENOs) have a simple lifecycle: initialize, collect data, commit, discard. When - * initialized, CENOs will attempt to find the appropriate translator for a given XML element name, - * and also create/set any necessary EMF model values. Data is collected as SAX character() events - * are generated. On the SAX endElement event, the CENO is committed(), which is where it will - * complete its processing to create EMF model features. In those cases where it cannot complete its - * processing, it will defer its processing to the updateEMF() method of its parent. Defered - * processing is necessary to handle EMF features that require read ahead cues from the XML. CENOs - * will add themselves to their parents as children in a tree data structure. When an CENO - * determines it is the golden piece of information required to instantiate its parent feature, it - * will trigger its parent CENO to process the rest of the cached CENO tree. As mentioned, the - * building of a CENO tree will only occur for nodes with read ahead cues. - * - * discard() is invoked by init() to ensure that no junk state is left from a previous use of the - * CENO. commit() will call discard as needed. Because of the use of discard, CENOs can be pooled - * and reused. If a CENO determines that it is contained in a pool, it will manage its own release - * from that pool. Self- management is necessary because of the way in which CENOs might cache - * certain children while waiting to create the parent EMF feature. - * - * @author mdelder - */ -public class CacheEventNode { - - public static final String ROOT_NODE = "EMF_ROOT_NODE"; //$NON-NLS-1$ - - private String nodeName = null; - private Translator translator = null; - private Notifier emfOwner = null; - private StringBuffer buffer = null; - private List children = null; - private int versionID; - - /* - * The internal data structure used to store the attributes is a String[]. The choice was made - * to use an array to avoid the creation of another object (probably a Hashtable) and to exploit - * array-access times to get the name and value of the attributes (opposed to full fledged - * method invocations). - * - */ - private String[] attributes = null; - private CacheEventNode parent = null; - private CacheEventPool containingPool = null; - private Boolean ignorable = null; - - public CacheEventNode(CacheEventPool containingPool) { - this.containingPool = containingPool; - } - - /** - * Lifecycle method. init(TranslatorResource) will configure this Adapter as a ROOT node. - * - * This method will invoke discard() before completing its tasks. - */ - public void init(TranslatorResource resource) { - this.discard(); - this.setEmfOwner(resource); - this.setTranslator(resource.getRootTranslator()); - this.setVersionID(resource.getVersionID()); - this.nodeName = CacheEventNode.ROOT_NODE; - } - - /** - * Lifecycle method. init(CacheEventNode, String, Attributes) will configure this Adapter to be - * a non-ROOT node of the Adapter data structure - * - * This method will invoke discard() before completing its tasks. - */ - public void init(CacheEventNode parentArg, String nodeNameArg, Attributes attributesArg) { - this.discard(); - this.nodeName = nodeNameArg; - init(parentArg, attributesArg); - } - - private void init(CacheEventNode parentRecord, Attributes attributesArg) { - setParent(parentRecord); - - setAttributes(attributesArg); - if (parent != null) { - /* I am not the root */ - - /* - * If the parent is part of the DOM Path, then we ignore it and interact with the grand - * parent - */ - if (parent.translator != null && parent.isInDOMPath()) { - setParent(parent.getParent()); - } - - setVersionID(parent.getVersionID()); - if (parent.getEmfOwner() != null && parent.getTranslator() != null) { - - /* My parent had enough information to create themself */ - - if (parent.getParent() != null) { - setTranslator(parent.getTranslator().findChild(nodeName, parent.getEmfOwner(), getVersionID())); - - } else { - setTranslator(parent.getTranslator()); - } - - if (this.translator == null) { - /* Our translator is null! Ahh! Run! */ - throw new IllegalStateException("Parent Translator (" + parent.getTranslator() + //$NON-NLS-1$ - ") did not find a Child Translator for \"" + //$NON-NLS-1$ - nodeName + "\"."); //$NON-NLS-1$ - } - - if (this.translator.getReadAheadHelper(nodeName) == null && !this.translator.isManagedByParent()) { - /* - * I do not require a read ahead cue, and I am not managed by my parent so I can - * create an instance of my EMF object - */ - - Notifier myEmfOwner = this.translator.createEMFObject(getNodeName(), null); - setEmfOwner(myEmfOwner); - this.translator.setMOFValue(parent.getEmfOwner(), myEmfOwner); - } - /* - * Else I require a read ahead value or I am being managed by my parent, so I have - * no need to create an EMF object - */ - } - /* - * Else I am not mapped to the EMF stack (XML Elements found in the DOMPath are ignored) - */ - } - /* processAttributes is guarded and will not execute unless ready */ - processAttributes(); - - } - - /** - * commit() is invoked only if the CacheEventNode (CENO) has all the information they need and - * should be able to determine what to do to the EMF feature. - * - * The commit() method will invoke discard() when it has completed its tasks, if needed. Thus, - * after invoking this method, the CENO may have no meaningful state. If discard() is invoked, - * all previously held reference will be released in order to be made eligible for Garbage - * Collection. - * - */ - public void commit() { - - if (parent == null || this.isIgnorable()) { - discard(); - releaseFromContainingPool(); - return; - } - - ReadAheadHelper helper = null; - Translator activeTranslator = getTranslator(); - Translator parentTranslator = getParent().getTranslator(); - - if (parent != null && parent.getEmfOwner() == null) { - - /* - * Not enough information yet, add the CacheEventNode to the DOM Cache tree - */ - - parent.appendToBuffer(this); - if ((helper = getParent().getReadAheadHelper()) != null) { - /* - * If the parentRecord's emfOwner is null, then it must not be initialized therefore - * it or one of its ancestors must require read ahead clues - * - * The following if statement checks if the parent is the node waiting for a - * readAhead cue - */ - EObject parentOwner = null; - if (helper.nodeValueIsReadAheadName(getNodeName())) { - /* The readAheadName is the value of the qName child node */ - - /* We have enough information to create the EmfOwner in the parent! */ - parentOwner = parentTranslator.createEMFObject(getParent().getNodeName(), getBuffer()); - - /* - * Now we need to parse the cached DOM tree and update the emfOwner of the - * parent - */ - getParent().updateEMF(parentOwner); - - } else if (helper.nodeNameIsReadAheadName(getNodeName())) { - /* The readAheadName is the actual name of the child node (qName) */ - - /* We have enough information to create the EmfOwner in the parent! */ - parentOwner = parentTranslator.createEMFObject(getParent().getNodeName(), getNodeName()); - - /* - * Now we need to parse the cached DOM tree and update the emfOwner of the - * parent - */ - getParent().updateEMF(parentOwner); - } - - } /* Else an ancestor of the parent is waiting */ - - } else { - if (activeTranslator != null) { - if (activeTranslator.isManagedByParent()) { - - Object value = activeTranslator.convertStringToValue(getNodeName(), null, getBuffer(), getParent().getEmfOwner()); - activeTranslator.setMOFValue(getParent().getEmfOwner(), value); - processAttributes(); - } else { - - activeTranslator.setTextValueIfNecessary(getBuffer(), getEmfOwner(), getVersionID()); - } - - } - discard(); - releaseFromContainingPool(); - } - } - - /** - * Instruct the CacheEventNode to discard all references to make everything eligible for garbage - * collection. This should ONLY be called after commit has succeeded. In the case of EMF - * features that require a readAheadName, process not be completed in commit(), but rather will - * be defered to the updateEMF() method. This method was made private specifically because it - * could erase all information contained in the CacheEventNode before it has been processed. - * - */ - private void discard() { - translator = null; - emfOwner = null; - buffer = null; - if (children != null) - children.clear(); - children = null; - attributes = null; - parent = null; - } - - private void releaseFromContainingPool() { - if (containingPool != null) - containingPool.releaseNode(this); - } - - public boolean isIgnorable() { - if (ignorable == null) { - boolean result = false; - if (this.translator != null) { - if (this.translator.isEmptyContentSignificant()) { - result = false; - } else { - String domPath = this.translator.getDOMPath(); - result = (domPath != null) ? domPath.indexOf(this.nodeName) >= 0 : false; - } - } - ignorable = result ? Boolean.TRUE : Boolean.FALSE; - } - return ignorable.booleanValue(); - } - - /** - * Determines if a given child has a translator. - * - * @param childNodeName - * the name of the current XML child node - * @return true only if the childNodeName can be ignored (e.g. it is part of the DOM Path) - */ - public boolean isChildIgnorable(String childNodeName) { - boolean result = false; - - Translator childTranslator = null; - if (this.getTranslator() != null) { - childTranslator = this.getTranslator().findChild(childNodeName, this.getEmfOwner(), this.getVersionID()); - - if (childTranslator != null) { - if (childTranslator.isEmptyContentSignificant()) { - result = false; - } else { - String temp = null; - result = ((temp = childTranslator.getDOMPath()) != null) ? temp.indexOf(childNodeName) >= 0 : false; - } - } - } - - return result; - } - - public boolean isInDOMPath() { - boolean result = false; - - if (this.getTranslator() != null) { - - result = this.getNodeName().equals(this.getTranslator().getDOMPath()); - } - - return result; - } - - public String toString() { - StringBuffer output = new StringBuffer("CacheEventNode[");//$NON-NLS-1$ - output.append("nodeName=");//$NON-NLS-1$ - output.append(nodeName); - output.append("; translator=");//$NON-NLS-1$ - output.append(translator); - output.append("; emfOwner=");//$NON-NLS-1$ - try { - output.append(emfOwner); - } catch (RuntimeException re) { - output.append("Could not render as string!");//$NON-NLS-1$ - } - output.append("; buffer=");//$NON-NLS-1$ - output.append(this.buffer); - output.append("; hasChildren=");//$NON-NLS-1$ - output.append((children != null && children.size() > 0)); - if (children != null) { - for (int i = 0; i < this.children.size(); i++) { - output.append("\n\tchildren(");//$NON-NLS-1$ - output.append(i); - output.append("): ");//$NON-NLS-1$ - output.append(this.children.get(i)); - } - } - output.append("]");//$NON-NLS-1$ - return output.toString(); - } - - /** - * Updates the EMF model by creating EMF Features as necessary from the DOM Tree Cache - * - * @param owner - */ - public void updateEMF(EObject owner) { - this.setEmfOwner(owner); - if (this.parent != null) { - this.translator.setMOFValue((EObject) this.parent.getEmfOwner(), owner); - this.processAttributes(); - } - - this.updateEMF(); - } - - /** - * The translator and the owner of the parent CENO passed to this method should be nonnull - */ - public void updateEMF() { - if (this.children == null) - return; - - CacheEventNode child = null; - Translator childTranslator = null; - Object value = null; - if (this.getEmfOwner() != null) { - Notifier parentOwner = this.getEmfOwner(); - Translator parentTranslator = this.getTranslator(); - for (int i = 0; i < this.children.size(); i++) { - - child = (CacheEventNode) this.children.get(i); /* Create the EMF feature */ - if (this.isChildIgnorable(child.getNodeName())) { - this.addChildren(child.getChildren()); - } else { - childTranslator = parentTranslator.findChild(child.getNodeName(), parentOwner, child.getVersionID()); - child.setTranslator(childTranslator); - - value = childTranslator.convertStringToValue(child.getNodeName(), null, child.getBuffer(), parentOwner); - childTranslator.setMOFValue(parentOwner, value); - - if (childTranslator.isObjectMap()) { - child.setEmfOwner((Notifier) value); - childTranslator.setTextValueIfNecessary(child.getBuffer(), child.getEmfOwner(), getVersionID()); - } - - child.processAttributes(); - child.updateEMF(); /* update the EMF of the child */ - - } - child.discard(); - child.releaseFromContainingPool(); - } - this.children = null; - } - } - - public void addChild(CacheEventNode child) { - if (this.children == null) { - this.children = new ArrayList(); - } - if (parent != null && this.isIgnorable()) { - parent.addChild(child); - } else { - this.children.add(child); - } - } - - protected void addChildren(List childrenArg) { - if (this.children == null) { - this.children = new ArrayList(); - } - this.children.addAll(childrenArg); - } - - public boolean removeChild(CacheEventNode child) { - if (this.children == null) { - return false; - } - return this.children.remove(child); - } - - public List getChildren() { - return this.children; - } - - public ReadAheadHelper getReadAheadHelper() { - if (this.translator != null && this.translator.hasReadAheadNames()) { - return translator.getReadAheadHelper(nodeName); - } - return null; - } - - - /* See the documentation for the attributes field for info on how it is structured */ - public void setAttributes(Attributes attr) { - - /* - * The attributes returned from the parser may be stored by reference, so we must copy them - * over to a local data store - */ - if (attr != null && attr.getLength() > 0) { - - if (this.attributes == null) { - this.attributes = new String[attr.getLength() * 2]; - } - for (int i = 0; i < attr.getLength(); i++) { - this.attributes[i] = attr.getQName(i); - this.attributes[i + attr.getLength()] = attr.getValue(i); - } - - } - } - - /** - * processAttributes may be invoked multiple times. It is configured to only carry out the - * processing one time. After it successfully completes the construction of Translators and - * values it will discard the value of the attributes field by setting it to null. - * - */ - public void processAttributes() { - /* See the documentation for the attributes field for info on how it is structured */ - if (this.attributes != null && this.attributes.length > 0) { - - if (this.emfOwner != null && this.translator != null) { - Translator attrTranslator = null; - final int limit = this.attributes.length / 2; - Object value = null; - for (int i = 0; i < limit; i++) { - - /* Find the attribute translator by using the attribute name (attributes[i]) */ - attrTranslator = this.translator.findChild(this.attributes[i], this.emfOwner, this.versionID); - - if (attrTranslator != null) { - - /* - * Convert the value of corresponding attribute value (attributes[i+limit]) - * to a meaningful value - */ - value = attrTranslator.convertStringToValue(this.attributes[i + limit], (EObject) this.emfOwner); - attrTranslator.setMOFValue((EObject) this.emfOwner, value); - } - } - - /* Forget the attributes so we do not process them again */ - this.attributes = null; - } - } - } - - /** - * Appends data to the buffer stored by this CENO. Text will be extracted from the data array - * begining at positiong <i>start </i> and ending at position <i>start+length </i>. - * - * @param data - * @param start - * @param length - */ - public void appendToBuffer(char[] data, int start, int length) { - - if (parent != null && this.isIgnorable()) { - parent.appendToBuffer(data, start, length); - return; - } - - if (buffer == null) { - this.buffer = new StringBuffer(); - } - - /* - * acts as a more efficient form of "append". Using this method avoids the need to copy the - * data into its own data structure (e.g. String) before being added to the buffer - */ - this.buffer.insert(buffer.length(), data, start, length); - - } - - /** - * Add the given CENO as a child of this CENO. - * - * @param record - */ - public void appendToBuffer(CacheEventNode record) { - - this.addChild(record); - } - - public String getBuffer() { - if (this.buffer == null) { - return null; - } - return this.buffer.toString(); - } - - public Notifier getEmfOwner() { - return emfOwner; - } - - public CacheEventNode getParent() { - return parent; - } - - private void setParent(CacheEventNode record) { - this.parent = record; - } - - public Translator getTranslator() { - return this.translator; - } - - public void setEmfOwner(Notifier notifier) { - - this.emfOwner = notifier; - } - - public void setTranslator(Translator translator) { - this.translator = translator; - } - - public String getNodeName() { - return nodeName; - } - - public int getVersionID() { - - if (this.parent == null) { - try { - return ((TranslatorResource) this.getEmfOwner()).getVersionID(); - - } catch (RuntimeException re) { - } - } - return this.versionID; - } - - public void setVersionID(int i) { - versionID = i; - } - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventPool.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventPool.java deleted file mode 100644 index 55799e248..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventPool.java +++ /dev/null @@ -1,149 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.ArrayList; -import java.util.Collection; - -import org.xml.sax.Attributes; - -/** - * Provides an instance pool of reusable CacheEventNodes. The pool will default to 10 live - * instances. When its available instances reach five times its initial capacity, it will shrink - * itself down to the initial capacity. - * - * @author mdelder - */ -public class CacheEventPool { - - public static final int DEFAULT_CAPACITY = 10; - public static final int DEFAULT_CAPACITY_INCREMENT = 25; - - private int poolCapacity = DEFAULT_CAPACITY; - private CacheEventStack availablePool = null; - private Collection inusePool = null; - - public CacheEventPool() { - this(DEFAULT_CAPACITY); - } - - /** - * Create a CacheEventPOol with the given initial capacity - * - * @param initialCapacity - * The number of available instances to create. - */ - public CacheEventPool(int initialCapacity) { - poolCapacity = (initialCapacity > 0) ? initialCapacity : DEFAULT_CAPACITY; - availablePool = new CacheEventStack(); - inusePool = new ArrayList(poolCapacity); - } - - /** - * Create a CacheEventNode (CENO) initialized to use the given resource as its EMF Owner. - * - * THIS METHOD SHOULD ONLY BE USED TO CREATE ROOT NODES. - * - * @param resource - * the resource that will be populated - * @return a CacheEventNode to serve as the root. - */ - public CacheEventNode createCacheEventNode(TranslatorResource resource) { - CacheEventNode adapter = fetchFreeNode(); - adapter.init(resource); - return adapter; - } - - /** - * Create child CacheEventNodes (CENOs) that will branch from the given parent. - * - * @param parent - * the containing CENO - * @param nodeName - * The value of the XML element node name - * @param attributes - * The attributes that were part of the given XML element - * @return A CENO that has been properly initialized. - */ - public CacheEventNode createCacheEventNode(CacheEventNode parent, String nodeName, Attributes attributes) { - CacheEventNode adapter = fetchFreeNode(); - adapter.init(parent, nodeName, attributes); - return adapter; - } - - /** - * Release the CacheEventNode CENO back to the pool of availabe instances. This method should - * not be invoked directly. CENOs which are acquired from a given pool will automatically - * release themselves when necessary. - * - * @param adapter - */ - public void releaseNode(CacheEventNode adapter) { - freeNode(adapter); - } - - /** - * freezePool() should be invoked to free any unused resources. After freezePool has been - * invoked, warmPool() will need to be invoked before the pool can be used again. - * - */ - public void freezePool() { - availablePool.clear(); - availablePool = null; - } - - /** - * warmPool() must be invoked to notify the pool it is about to be used. This should occur only - * once per document rendering. Until the pool is in use, it contains no available - * CacheEventNodes (CENOs) in order to limit the size of the in-memory footprint of the - * EMF2SAXWriter. - * - */ - public void warmPool() { - ensureMinimumCapacity(); - } - - private CacheEventNode fetchFreeNode() { - CacheEventNode result = null; - - if (availablePool == null || availablePool.isEmpty()) - warmPool(); - - result = availablePool.pop(); - inusePool.add(result); - - return result; - } - - private void freeNode(CacheEventNode adapter) { - if (inusePool.remove(adapter)) - availablePool.push(adapter); - //else - // throw new IllegalStateException("Adapter not contained in pool!"); - if (availablePool.size() > (5 * poolCapacity)) { - availablePool.clear(); - ensureMinimumCapacity(); - } - } - - private void ensureMinimumCapacity() { - if (availablePool == null) { - availablePool = new CacheEventStack(); - } - if (availablePool.size() < poolCapacity) { - final int minimumCapacity = poolCapacity - availablePool.size(); - for (int i = 0; i < minimumCapacity; i++) - availablePool.push(new CacheEventNode(this)); - } - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventStack.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventStack.java deleted file mode 100644 index 03f419858..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventStack.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Sep 24, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import java.util.ArrayList; -import java.util.EmptyStackException; - -/** - * An unsynchronized implementation of a Stack (LIFO) data structure. No casting is required when - * using this data structure. - * - * @author mdelder - */ -public class CacheEventStack extends ArrayList { - - /** - * - * @return the top of the stack without removing it - */ - public CacheEventNode peek() { - if (size() == 0) - throw new EmptyStackException(); - - return (CacheEventNode) get(size() - 1); - } - - /** - * - * @return the top of the stack and removing it - */ - public CacheEventNode pop() { - if (size() == 0) - throw new EmptyStackException(); - - return (CacheEventNode) remove(size() - 1); - } - - /** - * - * @param adapter - * A CENO to push onto the top of the stack - */ - public void push(CacheEventNode adapter) { - add(adapter); - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityPackageMappingRegistry.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityPackageMappingRegistry.java deleted file mode 100644 index 25367c8a1..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityPackageMappingRegistry.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.Map; - -/** - * This class is used to register mappings for a package prefix to its current namespace URI. Also, - * this registry is used to map the package - */ -public class CompatibilityPackageMappingRegistry { - public static CompatibilityPackageMappingRegistry INSTANCE = new CompatibilityPackageMappingRegistry(); - private Map prefixToPackageURIs = new HashMap(); - private Map packageURIsToPrefixes = new HashMap(); - - /** - * - */ - private CompatibilityPackageMappingRegistry() { - super(); - } - - /** - * @return - */ - public Map getPackageURIsToPrefixes() { - return packageURIsToPrefixes; - } - - /** - * @return - */ - public Map getPrefixToPackageURIs() { - return prefixToPackageURIs; - } - - public void registerPrefixToPackageURI(String prefix, String uri) { - if (prefix != null && uri != null) { - prefixToPackageURIs.put(prefix, uri); - packageURIsToPrefixes.put(uri, prefix); - } - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityResourceFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityResourceFactory.java deleted file mode 100644 index f824de384..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityResourceFactory.java +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Apr 23, 2003 - * - * To change the template for this generated file go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.wst.common.internal.emf.resource; - -import java.util.Map; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; - -/** - * @author DABERG - * - * To change the template for this generated type comment go to Window>Preferences>Java>Code - * Generation>Code and Comments - */ -public class CompatibilityResourceFactory extends XMIResourceFactoryImpl { - /** - * - */ - public CompatibilityResourceFactory() { - super(); - } - - protected Map prefixToPackageURIs; - - protected Map packageURIsToPrefixes; - - public Map getPrefixToPackageURI() { - return CompatibilityPackageMappingRegistry.INSTANCE.getPrefixToPackageURIs(); - } - - public Map getPackageURIsToPrefixes() { - return CompatibilityPackageMappingRegistry.INSTANCE.getPackageURIsToPrefixes(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl#createResource(org.eclipse.emf.common.util.URI) - */ - public Resource createResource(URI uri) { - return new CompatibilityXMIResourceImpl(uri); - } - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilitySAXXMIHandler.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilitySAXXMIHandler.java deleted file mode 100644 index ee6ff3e9e..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilitySAXXMIHandler.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Apr 30, 2003 - * - * To change the template for this generated file go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.wst.common.internal.emf.resource; - -import java.util.Map; - -import org.eclipse.emf.ecore.xmi.XMLHelper; -import org.eclipse.emf.ecore.xmi.XMLResource; -import org.eclipse.emf.ecore.xmi.impl.SAXXMIHandler; - -/** - * @author DABERG - * - * To change the template for this generated type comment go to Window>Preferences>Java>Code - * Generation>Code and Comments - */ -public class CompatibilitySAXXMIHandler extends SAXXMIHandler { - protected final static String NULL_ATTRIB = XMLResource.XSI_NS + ":null"; //$NON-NLS-1$ - - /** - * @param xmiResource - * @param helper - * @param options - */ - public CompatibilitySAXXMIHandler(XMLResource xmiResource, XMLHelper helper, Map options) { - super(xmiResource, helper, options); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.ecore.xmi.impl.XMLHandler#isNull() - */ - protected boolean isNull() { - boolean isnull = super.isNull(); - if (!isnull) - isnull = attribs.getValue(NULL_ATTRIB) != null; - return isnull; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityURIConverter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityURIConverter.java deleted file mode 100644 index ba135f505..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityURIConverter.java +++ /dev/null @@ -1,17 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.URIConverter; - -public interface CompatibilityURIConverter extends URIConverter { - URI deNormalize(URI uri); - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMILoadImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMILoadImpl.java deleted file mode 100644 index 5f17a46ed..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMILoadImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Apr 30, 2003 - * - * To change the template for this generated file go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.emf.ecore.xmi.XMLHelper; -import org.eclipse.emf.ecore.xmi.impl.SAXWrapper; -import org.eclipse.emf.ecore.xmi.impl.XMILoadImpl; -import org.xml.sax.helpers.DefaultHandler; - -/** - * @author DABERG - * - * To change the template for this generated type comment go to Window>Preferences>Java>Code - * Generation>Code and Comments - */ -public class CompatibilityXMILoadImpl extends XMILoadImpl { - - /** - * @param helper - */ - public CompatibilityXMILoadImpl(XMLHelper helper) { - super(helper); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl#makeDefaultHandler() - */ - protected DefaultHandler makeDefaultHandler() { - return new SAXWrapper(new CompatibilitySAXXMIHandler(resource, helper, options)); - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMIResource.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMIResource.java deleted file mode 100644 index a954f5fd2..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMIResource.java +++ /dev/null @@ -1,41 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.xmi.XMIResource; - -public interface CompatibilityXMIResource extends XMIResource { - int FORMAT_EMF1 = 0; - /** - * format for MOF5 compatibility; note that this can NOT be used with resources usings the - * "platform:/plugin" protocol" - */ - int FORMAT_MOF5 = 1; - - void addOriginalPackageURI(String packageUri, String originalUri); - - int getFormat(); - - /** - * Set the serialization format. By default it is FORMAT_EMF1. - * - * @see CompatibilityXMIResource#FORMAT_EMF1 - * @see CompatibilityXMIResource#FORMAT_MOF5 - */ - void setFormat(int format); - - boolean usesDefaultFormat(); - - /** - * @param rootObject - */ - void removePreservingIds(EObject rootObject); - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMIResourceImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMIResourceImpl.java deleted file mode 100644 index 2419be716..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMIResourceImpl.java +++ /dev/null @@ -1,338 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.InternalEObject; -import org.eclipse.emf.ecore.xmi.XMLHelper; -import org.eclipse.emf.ecore.xmi.XMLLoad; -import org.eclipse.emf.ecore.xmi.XMLSave; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; -import org.eclipse.wst.common.internal.emf.utilities.IDUtil; -import org.eclipse.wst.common.internal.emf.utilities.ResourceIsLoadingAdapter; -import org.eclipse.wst.common.internal.emf.utilities.ResourceIsLoadingAdapterFactory; - - -public class CompatibilityXMIResourceImpl extends XMIResourceImpl implements CompatibilityXMIResource { - protected static final String DEFAULT_ENCODING = "UTF-8"; //$NON-NLS-1$ - protected int format = FORMAT_EMF1; - protected Map originalPackageURIs = new HashMap(); - private boolean preserveIDs = false; - - private static final String PLATFORM_PROTOCOL = "platform"; //$NON-NLS-1$ - private static final String PLATFORM_PLUGIN = "plugin"; //$NON-NLS-1$ - - /** - * Constructor for MappableXMIResourceImpl. - */ - public CompatibilityXMIResourceImpl() { - super(); - initDefaultSaveOptions(); - } - - public CompatibilityXMIResourceImpl(URI uri) { - super(uri); - initDefaultSaveOptions(); - } - - /** - * @see org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl#createXMLHelper() - */ - protected final XMLHelper createXMLHelper() { - MappedXMIHelper helper = doCreateXMLHelper(); - helper.setPackageURIsToPrefixes(getPackageURIsToPrefixes()); - return helper; - } - - protected MappedXMIHelper doCreateXMLHelper() { - return new MappedXMIHelper(this, getPrefixToPackageURIs()); - } - - /** - * Subclasses should not need to override this method. - * - * @see CompatibilityPackageMappingRegistry#getPrefixToPackageURIs() - */ - protected Map getPrefixToPackageURIs() { - return CompatibilityPackageMappingRegistry.INSTANCE.getPrefixToPackageURIs(); - } - - /** - * Subclasses should not need to override this method. - * - * @see CompatibilityPackageMappingRegistry#getPrefixToPackageURIs() - */ - protected Map getPackageURIsToPrefixes() { - return CompatibilityPackageMappingRegistry.INSTANCE.getPackageURIsToPrefixes(); - } - - public void addOriginalPackageURI(String packageUri, String originalUri) { - originalPackageURIs.put(packageUri, originalUri); - } - - public int getFormat() { - return format; - } - - public void setFormat(int format) { - if (!isPlatformPluginResourceURI()) - this.format = format; - } - - private boolean isPlatformPluginResourceURI() { - URI aURI = getURI(); - - return aURI != null && PLATFORM_PROTOCOL.equals(uri.scheme()) && PLATFORM_PLUGIN.equals(uri.segment(0)); - } - - /** - * @see org.eclipse.emf.ecore.resource.Resource#getURIFragment(EObject) - */ - public String getURIFragment(EObject eObject) { - if (usesDefaultFormat()) - return super.getURIFragment(eObject); - return IDUtil.getOrAssignID(eObject, this); - } - - public boolean usesDefaultFormat() { - return format == CompatibilityXMIResource.FORMAT_EMF1; - } - - /** - * @see org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl#createXMLSave() - */ - protected XMLSave createXMLSave() { - if (usesDefaultFormat()) - return super.createXMLSave(); - return new CompatibilityXMISaveImpl(createXMLHelper()); - } - - /** - * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doSave(OutputStream, Map) - */ - public void doSave(OutputStream outputStream, Map options) throws IOException { - super.doSave(outputStream, options); - } - - /** - * Method initDefaultOptions. - */ - protected void initDefaultSaveOptions() { - if (defaultSaveOptions == null) { - getDefaultSaveOptions(); - } - } - - /** - * @see org.eclipse.emf.ecore.resource.impl.ResourceImpl#getEObjectByID(String) - */ - protected EObject getEObjectByID(String id) { - if (idToEObjectMap != null) { - EObject eObject = (EObject) idToEObjectMap.get(id); - if (eObject != null) { - return eObject; - } - } - return null; - } - - /** - * Called when the object is unloaded. This implementation - * {@link InternalEObject#eSetProxyURI sets}the object to be a proxy and clears the - * {@link #eAdapters adapters}. - */ - protected void unloaded(InternalEObject internalEObject) { - //overridden from the super class; call super.getURIFragment instead of the implementation - //at this level, to avoid ID generation during unload - //internalEObject.eSetProxyURI(uri.appendFragment(getURIFragment(internalEObject))); - internalEObject.eSetProxyURI(uri.appendFragment(super.getURIFragment(internalEObject))); - internalEObject.eAdapters().clear(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doLoad(java.io.InputStream, - * java.util.Map) - */ - public final void doLoad(InputStream inputStream, Map options) throws IOException { - basicDoLoad(inputStream, options); - } - - /** - * @deprecated Use {@link #doLoad(InputStream, Map)} instead. - */ - protected void basicDoLoad(InputStream inputStream, Map options) throws IOException { - super.doLoad(inputStream, options); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#init() - */ - protected void init() { - super.init(); - setEncoding(DEFAULT_ENCODING); - } - - protected XMLLoad createXMLLoad() { - return new CompatibilityXMILoadImpl(createXMLHelper()); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.wst.common.internal.emf.resource.CompatibilityXMIResource#removePreservingIds(org.eclipse.emf.ecore.EObject) - */ - public void removePreservingIds(EObject rootObject) { - setPreserveIDs(true); - getContents().remove(rootObject); - } - - /** - * @return Returns the preserveIDs. - */ - public boolean isPreserveIDs() { - return preserveIDs; - } - - /** - * @param preserveIDs - * The preserveIDs to set. - */ - public void setPreserveIDs(boolean preserveIDs) { - this.preserveIDs = preserveIDs; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#detachedHelper(org.eclipse.emf.ecore.EObject) - */ - protected void detachedHelper(EObject eObject) { - if (modificationTrackingAdapter != null) { - eObject.eAdapters().remove(modificationTrackingAdapter); - } - - if (useUUIDs()) { - DETACHED_EOBJECT_TO_ID_MAP.put(eObject, getID(eObject)); - } - - if (!isPreserveIDs() && idToEObjectMap != null && eObjectToIDMap != null) { - idToEObjectMap.remove(eObjectToIDMap.remove(eObject)); - } - } - - public void load(Map options) throws IOException { - - ResourceIsLoadingAdapter adapter = null; - if (isLoaded) { - adapter = ResourceIsLoadingAdapter.findAdapter(this); - if (adapter != null) - adapter.waitForResourceToLoad(); - return; - } - synchronized (this) { - adapter = ResourceIsLoadingAdapter.findAdapter(this); - if (adapter == null && !isLoaded) - addSynchronizationLoadingAdapter(); - } - if(adapter != null) - adapter.waitForResourceToLoad(); - else { - try { - super.load(options); - } catch(IOException ioe) { - removeLoadingSynchronizationAdapter(); - throw ioe; - } catch(RuntimeException re) { - removeLoadingSynchronizationAdapter(); - throw re; - } catch(Error e) { - removeLoadingSynchronizationAdapter(); - throw e; - } - } - } - - /** - * - */ - private void addSynchronizationLoadingAdapter() { - if (ResourceIsLoadingAdapter.findAdapter(this) == null) - eAdapters().add(ResourceIsLoadingAdapterFactory.INSTANCE.createResourceIsLoadingAdapter()); - } - - /** - * - */ - private void removeLoadingSynchronizationAdapter() { - ResourceIsLoadingAdapter adapter = ResourceIsLoadingAdapter.findAdapter(this); - if (adapter != null) { - adapter.forceRelease(); - eAdapters().remove(adapter); - } - } - - /** - * Case 1: LOAD RESOURCE FROM DISK this.isLoaded == false AND isLoaded == - * true (which means we entered the load() method, but have not completed - * the load), and we're loading from a resource on disk, then we add the - * adapter Case 2: RESOURCE CREATION (NOT A LOAD) Case 4: RESOURCE CREATION, - * UNLOADED, NEW CONTENTS (NOT A LOAD) Resource is created but not from a - * resource on disk, so contents is null AND not empty, so no adapter: THIS - * IS NOT A LOAD Case 3: RESOURCE HAS BEEN UNLOADED, BEING RELOADED FROM - * DISK Contents is NOT null, but it is Empty and the resource is being - * loaded from disk. We must add the adapter. - * - */ - public boolean isResourceBeingLoaded(boolean isLoaded) { - return (!this.isLoaded && isLoaded) && (contents == null || contents.isEmpty()); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.ecore.resource.Resource#getContents() - */ - public EList getContents() { - waitForResourceToLoadIfNecessary(); - return super.getContents(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.ecore.resource.impl.ResourceImpl#isLoaded() - */ - public boolean isLoaded() { - waitForResourceToLoadIfNecessary(); - return super.isLoaded(); - } - - /** - * - */ - protected final void waitForResourceToLoadIfNecessary() { - ResourceIsLoadingAdapter loadingAdapter = ResourceIsLoadingAdapter.findAdapter(this); - if (loadingAdapter != null) loadingAdapter.waitForResourceToLoad(); - } - - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMISaveImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMISaveImpl.java deleted file mode 100644 index c1a7bf291..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMISaveImpl.java +++ /dev/null @@ -1,127 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.Map; - -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.resource.Resource; -import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.emf.ecore.xmi.XMIResource; -import org.eclipse.emf.ecore.xmi.XMLHelper; -import org.eclipse.emf.ecore.xmi.XMLResource; -import org.eclipse.emf.ecore.xmi.impl.XMISaveImpl; - -public class CompatibilityXMISaveImpl extends XMISaveImpl { - - /** - * Constructor for CompatibilityXMISaveImpl. - * - * @param helper - */ - public CompatibilityXMISaveImpl(XMLHelper helper) { - super(helper); - } - - /** - * Constructor for CompatibilityXMISaveImpl. - * - * @param options - * @param helper - * @param encoding - */ - public CompatibilityXMISaveImpl(Map options, XMLHelper helper, String encoding) { - super(options, helper, encoding); - } - - /** - * @see org.eclipse.emf.ecore.xmi.impl.XMISaveImpl#init(XMLResource, Map) - */ - protected void init(XMLResource resource, Map options) { - super.init(resource, options); - xmiType = true; - } - - /** - * @see org.eclipse.emf.ecore.xmi.impl.XMISaveImpl#addNamespaceDeclarations() - */ - public void addNamespaceDeclarations() { - doc.addAttribute(XMI_VER_NS, XMIResource.VERSION_VALUE); - doc.addAttribute(XMI_XMLNS, XMIResource.XMI_URI); - EPackage[] packages = helper.packages(); - StringBuffer xsiSchemaLocation = null; - if (declareSchemaLocation) { - for (int i = 0; i < packages.length; i++) { - EPackage ePackage = packages[i]; - - EObject root = EcoreUtil.getRootContainer(ePackage); - if (root instanceof EPackage) { - EPackage rootEPackage = (EPackage) root; - Resource resource = rootEPackage.eResource(); - if (resource != null) { - URI uri = resource.getURI(); - String rootNsURI = rootEPackage.getNsURI(); - if (uri == null ? rootNsURI != null : !uri.toString().equals(rootNsURI)) { - declareXSI = true; - if (xsiSchemaLocation == null) { - xsiSchemaLocation = new StringBuffer(); - } else { - xsiSchemaLocation.append(' '); - } - xsiSchemaLocation.append(rootNsURI); - xsiSchemaLocation.append(' '); - xsiSchemaLocation.append(helper.getHREF(rootEPackage)); - } - } - } - } - } - - if (declareXSI) { - doc.addAttribute(XSI_XMLNS, XMLResource.XSI_URI); - } - - for (int i = 0; i < packages.length; i++) { - EPackage ePackage = packages[i]; - //Modified from superclass - dispatch back to helper for compatibility - //String nsURI = ePackage.getNsURI(); - //String nsPrefix = ePackage.getNsPrefix(); - String[] nsInfo = ((MappedXMIHelper) helper).getNSInfo(ePackage); - doc.addAttributeNS(XMLResource.XML_NS, nsInfo[0], nsInfo[1]); - } - - if (xsiSchemaLocation != null) { - doc.addAttribute(XSI_SCHEMA_LOCATION, xsiSchemaLocation.toString()); - } - } - - protected void saveHref(EObject remote, EStructuralFeature f) { - String name = helper.getQName(f); - String href = helper.getHREF(remote); - if (href != null) { - doc.startElement(name); - EClass eClass = remote.eClass(); - - EClass expectedType = (EClass) f.getEType(); - //Changed next line to always write type if expectedType - //is different from eClass - if (eClass != expectedType) { - saveTypeAttribute(eClass); - } - - doc.addAttribute(XMLResource.HREF, href); - doc.endEmptyElement(); - } - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ConstantAttributeTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ConstantAttributeTranslator.java deleted file mode 100644 index 356f102d4..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ConstantAttributeTranslator.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Apr 15, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.emf.ecore.EObject; - -/** - * @author schacher - */ -public class ConstantAttributeTranslator extends Translator { - - protected String attributeValue; - - /** - * @param domNameAndPath - * @param eClass - */ - public ConstantAttributeTranslator(String domNameAndPath, String attributeValue) { - super(domNameAndPath, null, DOM_ATTRIBUTE); - this.attributeValue = attributeValue; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#getMOFValue(org.eclipse.emf.ecore.EObject) - */ - public Object getMOFValue(EObject mofObject) { - return attributeValue; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#isSetMOFValue(org.eclipse.emf.ecore.EObject) - */ - public boolean isSetMOFValue(EObject emfObject) { - return true; - } - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/DefaultTranslatorFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/DefaultTranslatorFactory.java deleted file mode 100644 index 7518472fc..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/DefaultTranslatorFactory.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 20, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.Notifier; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.wst.common.internal.emf.utilities.Namespace; -import org.eclipse.wst.common.internal.emf.utilities.NamespaceAdapter; - - -/** - * @author schacher - */ -public class DefaultTranslatorFactory implements VariableTranslatorFactory { - - public static final String XMLNS = "xmlns:"; //$NON-NLS-1$ - public static final DefaultTranslatorFactory INSTANCE = new DefaultTranslatorFactory(); - - public DefaultTranslatorFactory() { - super(); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.VariableTranslatorFactory#accepts(java.lang.String) - */ - public boolean accepts(String domName) { - return domName != null && domName.startsWith(XMLNS); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.VariableTranslatorFactory#accepts(org.eclipse.emf.common.notify.Notification) - */ - public boolean accepts(Notification notif) { - return notif.getFeature() == NamespaceAdapter.NOTIFICATION_FEATURE; - } - - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.VariableTranslatorFactory#create(java.lang.String) - */ - public Translator create(String domName) { - return new NamespaceTranslator(domName); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.VariableTranslatorFactory#create(org.eclipse.emf.ecore.EObject) - */ - public List create(Notifier target) { - if (!(target instanceof EObject)) - return null; - List namespaces = NamespaceAdapter.getNamespaces((EObject) target); - if (namespaces == null || namespaces.isEmpty()) - return null; - List result = new ArrayList(namespaces.size()); - for (int i = 0; i < namespaces.size(); i++) { - result.add(create((Namespace) namespaces.get(i))); - } - return result; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.VariableTranslatorFactory#create(org.eclipse.emf.common.notify.Notification) - */ - public Translator create(Notification notif) { - Namespace ns = (Namespace) notif.getNewValue(); - return create(ns); - } - - private Translator create(Namespace ns) { - return new NamespaceTranslator(XMLNS + ns.getPrefix()); - } - - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/DependencyTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/DependencyTranslator.java deleted file mode 100644 index c7d1c6257..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/DependencyTranslator.java +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Mar 25, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import java.util.List; - -import org.eclipse.emf.common.notify.Notifier; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EStructuralFeature; - -/** - * @author schacher - */ -public class DependencyTranslator extends Translator { - - /** - * @param domNameAndPath - * @param aFeature - */ - public DependencyTranslator(String domNameAndPath, EStructuralFeature aFeature, EStructuralFeature aDependentFeature) { - super(domNameAndPath, aFeature); - dependencyFeature = aDependentFeature; - } - - public EObject getChild(EObject parent) { - EObject child = basicGetDependencyObject(parent); - if (child == null) - return createChild(parent); - return child; - } - - - protected EObject createChild(EObject parent) { - EObject child = createEMFObject(dependencyFeature); - parent.eSet(dependencyFeature, child); - return child; - } - - public List getMOFChildren(EObject mofObject) { - //return super.getMOFChildren(getChild(mofObject)); - return super.getMOFChildren(mofObject); - } - - public Object getMOFValue(EObject mofObject) { - return super.getMOFValue(getChild(mofObject)); - } - - public void setMOFValue(EObject emfObject, Object value) { - //super.setMOFValue(getChild(emfObject), value); - super.setMOFValue(getChild(emfObject), value, -1); - } - - public void setMOFValue(Notifier owner, Object value, int newIndex) { - super.setMOFValue(getChild((EObject) owner), value, newIndex); - } - - public void removeMOFValue(Notifier owner, Object value) { - super.removeMOFValue(getChild((EObject) owner), value); - } - - public boolean isSetMOFValue(EObject emfObject) { - return super.isSetMOFValue(getChild(emfObject)); - } - - public void unSetMOFValue(EObject emfObject) { - super.unSetMOFValue(getChild(emfObject)); - } - - - public boolean isDependencyChild() { - return true; - } - - public boolean featureExists(EObject emfObject) { - return super.featureExists(getChild(emfObject)); - } - - public void clearList(EObject mofObject) { - super.clearList(getChild(mofObject)); - } - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapter.java deleted file mode 100644 index 9782ea143..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapter.java +++ /dev/null @@ -1,68 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 org.eclipse.emf.common.notify.Adapter; -import org.eclipse.emf.ecore.EObject; -import org.w3c.dom.Node; - -public interface EMF2DOMAdapter extends Adapter { - - - Class ADAPTER_CLASS = EMF2DOMAdapter.class; - - /** - * Return the DOM node that the target of this adapter maps to. If the target MOF object maps to - * more than one DOM node, this node is the top-most node. - */ - Node getNode(); - - void setNode(Node aNode); - - /** - * Set to false and notification of changes from both the DOM node and the MOF object will be - * ignored. - */ - boolean isNotificationEnabled(); - - /** - * Set to false and notification of changes from both the DOM node and the MOF object will be - * ignored. - */ - void setNotificationEnabled(boolean isEnabled); - - /** - * Updates the DOM tree for this adapter from the current values of the MOF Object. This method - * updates ALL the DOM nodes from all the MOF attributes. - */ - void updateDOM(); - - /** - * Updates the MOF Object from the DOM tree. All the children of the DOM tree are updated into - * the MOF object. - */ - void updateMOF(); - - public void updateDOMFeature(Translator map, Node node, EObject mofObject); - - public void updateMOFFeature(Translator map, Node node, EObject mofObject); - - EObject getEObject(); - - /** - * Return true if MOF object is a proxy. - */ - boolean isMOFProxy(); - - /** - * Remove the DOM adapters from the node AND all its child nodes, recursively. - */ - void removeAdapters(Node node); -}
\ No newline at end of file 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 deleted file mode 100644 index 6230f951c..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java +++ /dev/null @@ -1,1782 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.emf.common.notify.Adapter; -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.Notifier; -import org.eclipse.emf.common.notify.impl.AdapterImpl; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EReference; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.InternalEObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.wst.common.internal.emf.utilities.Assert; -import org.eclipse.wst.common.internal.emf.utilities.DOMUtilities; -import org.eclipse.wst.common.internal.emf.utilities.EtoolsCopySession; -import org.eclipse.wst.common.internal.emf.utilities.ExtendedEcoreUtil; -import org.eclipse.wst.common.internal.emf.utilities.FeatureValueConversionException; -import org.eclipse.wst.common.internal.emf.utilities.Revisit; -import org.eclipse.wst.common.internal.emf.utilities.StringUtil; -import org.eclipse.wst.common.internal.emf.utilities.TranslatorService; -import org.eclipse.wst.common.internal.emf.utilities.WFTUtilsResourceHandler; -import org.w3c.dom.Attr; -import org.w3c.dom.Document; -import org.w3c.dom.DocumentType; -import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; - - -public class EMF2DOMAdapterImpl extends AdapterImpl implements EMF2DOMAdapter { - - final protected static boolean fDebug = false; - - protected boolean fNotificationEnabled = true; - - protected Node fNode; - - protected Translator fTranslator; - - protected EMF2DOMRenderer fRenderer; - - protected Translator[] childTranslators; - - protected boolean isRoot = false; - - private static final String PLATFORM = "org.eclipse.core.runtime.Platform"; //$NON-NLS-1$ - private static final String ISRUNNING = "isRunning"; //$NON-NLS-1$ - - private class DependencyAdapter extends org.eclipse.emf.common.notify.impl.AdapterImpl { - - static final String KEY = "EMF2DOMDependencyAdapter"; //$NON-NLS-1$ - - public void notifyChanged(Notification msg) { - EMF2DOMAdapterImpl.this.notifyChanged(msg); - } - - /** - * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(Object) - */ - public boolean isAdapterForType(Object type) { - return KEY.equals(type); - } - } - - /** - * Constructor for root adapters. - */ - public EMF2DOMAdapterImpl(TranslatorResource resource, Document document, EMF2DOMRenderer renderer, Translator translator) { - this((Notifier) resource, (Node) document, renderer, translator); - isRoot = true; - } - - /** - * Construct an Adapter given an EObject and a node - */ - public EMF2DOMAdapterImpl(Notifier object, Node node, EMF2DOMRenderer renderer, Translator translator) { - super(); - setTarget(object); - fNode = node; - fRenderer = renderer; - fTranslator = translator; - initChildTranslators(); - addEMFAdapter(); - addDOMAdapter(); - addDependencyAdapterIfNecessary(); - } - - /** - * Construct an adapter from a DOM Node. The EObject will be created - */ - public EMF2DOMAdapterImpl(Node node, EMF2DOMRenderer renderer, Translator translator) { - fNode = node; - fRenderer = renderer; - fTranslator = translator; - setTargetFromNode(); - initChildTranslators(); - addEMFAdapter(); - addDOMAdapter(); - addDependencyAdapterIfNecessary(); - - } - - protected void addDependencyAdapterIfNecessary() { - if (!fTranslator.isDependencyParent()) - return; - EObject child = fTranslator.basicGetDependencyObject(getEObject()); - if (child != null) - addDependencyAdapter(child); - } - - protected void initChildTranslators() { - List children = new ArrayList(); - boolean isRunning = false; //is the OSGI platform running ? - try { - // If the Platform class can be found, then continue to check if the OSGI platform is running - Class clazz = Class.forName(PLATFORM); - Method m = clazz.getMethod(ISRUNNING, null); - isRunning = ((Boolean)m.invoke(clazz, null)).booleanValue(); - } catch (ClassNotFoundException e) { - // Ignore because this must be in a non_OSGI environment - } catch (SecurityException e) { - // Ignore because this must be in a non_OSGI environment - } catch (NoSuchMethodException e) { - // Ignore because this must be in a non_OSGI environment - } catch (IllegalArgumentException e) { - // Ignore because this must be in a non_OSGI environment - } catch (IllegalAccessException e) { - // Ignore because this must be in a non_OSGI environment - } catch (InvocationTargetException e) { - // Ignore because this must be in a non_OSGI environment - } - //Check for extended child translators because we are in OSGI mode - if (isRunning) { - Translator[] extendedChildren = TranslatorService.getInstance().getTranslators(); - for (int i = 0; i < extendedChildren.length; i++) { - if (extendedChildren[i] != null) - children.add(extendedChildren[i]); - } - } - - - children.addAll(Arrays.asList(fTranslator.getChildren(getTarget(), fRenderer.getVersionID()))); - - VariableTranslatorFactory factory = fTranslator.getVariableTranslatorFactory(); - if (factory != null) { - String domName = null; - NamedNodeMap map = fNode.getAttributes(); - - if (map != null) { - int length = map.getLength(); - for (int i = 0; i < length; i++) { - Node attrNode = map.item(i); - domName = attrNode.getNodeName(); - //Handle variable translators - Translator t = fTranslator.findChild(domName, getTarget(), fRenderer.getVersionID()); - if (t != null && !children.contains(t)) - children.add(t); - } - } - List childrenFromEMF = factory.create(getTarget()); - if (childrenFromEMF != null) - children.addAll(childrenFromEMF); - } - - childTranslators = (Translator[]) children.toArray(new Translator[children.size()]); - } - - /** - * Set to false and notification of changes from both the DOM node and the MOF object will be - * ignored. - */ - public boolean isNotificationEnabled() { - return fNotificationEnabled; - } - - /** - * Set to false and notification of changes from both the DOM node and the MOF object will be - * ignored. - */ - public void setNotificationEnabled(boolean isEnabled) { - fNotificationEnabled = isEnabled; - } - - public boolean isAdapterForType(Object type) { - return EMF2DOMAdapter.ADAPTER_CLASS == type; - } - - protected void addEMFAdapter() { - target.eAdapters().add(this); - } - - public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append(shortClassName(this)); - sb.append('('); - sb.append(getNode().getNodeName()); - sb.append(','); - sb.append(shortClassName(getTarget())); - sb.append(')'); - return sb.toString(); - } - - protected String shortClassName(Object o) { - if (o != null) { - String cn = o.getClass().getName(); - int i = cn.lastIndexOf('.'); - return cn.substring(i + 1, cn.length()); - } - return null; - } - - /* - * Prints out a MOF notification for debugging - */ - protected void debugMOFNotify(Notification msg) { - if (fDebug) { - String notifType = ""; //$NON-NLS-1$ - switch (msg.getEventType()) { - case Notification.ADD : - notifType = "ADD"; //$NON-NLS-1$ - break; - case Notification.REMOVE : - notifType = "REMOVE"; //$NON-NLS-1$ - break; - case Notification.ADD_MANY : - notifType = "ADD_MANY"; //$NON-NLS-1$ - break; - case Notification.REMOVE_MANY : - notifType = "REMOVE_MANY"; //$NON-NLS-1$ - break; - case Notification.SET : { - if (msg.getPosition() == Notification.NO_INDEX) - notifType = "REPLACE"; //$NON-NLS-1$ - else - notifType = "SET"; //$NON-NLS-1$ - break; - } - case Notification.UNSET : - notifType = "UNSET"; //$NON-NLS-1$ - break; - } - - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("MOF Change: " + notifType); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tnotifier : " + msg.getNotifier()); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tchangedFeature: " + msg.getFeature()); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\toldValue : " + msg.getOldValue()); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tnewValue : " + msg.getNewValue()); //$NON-NLS-1$ - } - } - - /* - * Override this method to create the feature maps for the adapter. - */ - protected Translator[] getChildTranslators() { - return childTranslators; - } - - protected Translator findTranslator(Notification not) { - if (not.getFeature() == null) - return null; - Translator[] maps = getChildTranslators(); - for (int i = 0; i < maps.length; i++) { - if (maps[i].isMapFor(not.getFeature(), not.getOldValue(), not.getNewValue())) - return maps[i]; - } - return null; - } - - /** - * Update all the children of the target MOF object in the relationship described by - * - * @map. - * - * @param map - * com.ibm.etools.mof2dom.AttributeTranslator Describes the mapping from the MOF - * attribute name to the DOM node name - */ - protected void primUpdateDOMMultiFeature(Translator map, Node node, List mofChildren, List domChildren, Notifier owner) { - - //Used for inserting primitives - List inorderDOMChildren = null; - if (!map.isObjectMap() || map.isManagedByParent()) { - inorderDOMChildren = new ArrayList(); - inorderDOMChildren.addAll(domChildren); - } - Node parent = findDOMPath(node, map, false); - - // Go though the MOF children checking to see if the corresponding - // MOF Adapter children exists. If not, create the adapter. - // Also handles reordering children that have moved. - int i = 0; - for (; i < mofChildren.size(); i++) { - Object child = mofChildren.get(i); - EObject mofChild = null; - - EMF2DOMAdapter adapter = null; - - // Check to see if the child is a MOF Object. - if (!map.isManagedByParent() && child instanceof EObject) { - mofChild = (EObject) mofChildren.get(i); - adapter = getExistingAdapter(mofChild); - } - - if (adapter != null && i < domChildren.size() && domChildren.get(i) == adapter.getNode()) - continue; - if (adapter != null) { - if (domChildren.isEmpty()) - continue; - // A node has been reordered in the list - Node reorderNode = adapter.getNode(); - Node insertBeforeNode = (Node) domChildren.get(i); - domChildren.remove(reorderNode); - domChildren.add(i, reorderNode); - if (reorderNode != insertBeforeNode) { - reorderDOMChild(parent, reorderNode, insertBeforeNode, map); - } - } else { - // A new node has been added, create it - parent = createDOMPath(node, map); - if (mofChild != null) { - adapter = createAdapter(mofChild, map); - Node newNode = adapter.getNode(); - Node insertBeforeNode = findInsertBeforeNode(parent, map, mofChildren, i, domChildren); - DOMUtilities.insertBeforeNodeAndWhitespace(parent, newNode, insertBeforeNode); - domChildren.add(i, newNode); - boolean notificationFlag = adapter.isNotificationEnabled(); - adapter.setNotificationEnabled(false); - try { - indent(newNode, map); - } finally { - adapter.setNotificationEnabled(notificationFlag); - } - adapter.updateDOM(); - } else { - // The mof feature is a collection of primitives. - // create a new dom node and listen to it. - Element newNode = createNewNode(null, map); - Node insertBeforeNode = findInsertBeforeNode(parent, map, mofChildren, i, inorderDOMChildren); - DOMUtilities.insertBeforeNodeAndWhitespace(parent, newNode, insertBeforeNode); - indent(newNode, map); - addDOMAdapter(newNode); // Hook up listeners - domChildren.add(i, newNode); - inorderDOMChildren.add(newNode); - Text newText = parent.getOwnerDocument().createTextNode(map.convertValueToString(child, (EObject) owner)); - DOMUtilities.insertBeforeNode(newNode, newText, null); - } - } - } - - // Remove any remaining adapters. - for (; i < domChildren.size(); i++) { - removeDOMChild(parent, (Element) domChildren.get(i)); - } - - // If there are no MOF children, remove any unnecessary DOM node paths - if (mofChildren.size() == 0 && map.hasDOMPath()) { - if (map.shouldRenderEmptyDOMPath((EObject) owner)) - createDOMPath(node, map); - else - removeDOMPath(node, map); - } - - } - - /** - * Update all the children of the target MOF object in the relationship described by - * - * @map. - * - * @param map - * com.ibm.etools.mof2dom.AttributeTranslator Describes the mapping from the MOF - * attribute name to the DOM node name - */ - protected void primUpdateMOFMultiFeature(Translator map, Node node, List mofChildren, List domChilren) { - - Hashtable nodeToAdapter = new Hashtable(); - - for (int i = 0; i < mofChildren.size(); i++) { - EMF2DOMAdapter adapter = getExistingAdapter((EObject) mofChildren.get(i)); - if (adapter != null) - nodeToAdapter.put(adapter.getNode(), adapter); - } - - // Go though the DOM children checking to see if the corresponding - // MOF Adapter children exists. If not, create the adapter. - // Also handles reordering children that have moved. - int i = 0; - int mofIndex = 0; - List adaptersToUpdate = new ArrayList(); - for (; i < domChilren.size(); i++) { - Element childNode = (Element) domChilren.get(i); - EMF2DOMAdapter adapter = i < mofChildren.size() ? getExistingAdapter((EObject) mofChildren.get(i)) : null; - if (adapter != null && !adapter.isMOFProxy() && adapter.getNode() == childNode) { - // Because the adapter is processing STRUCTURE_CHANGED from the - // DOM, we - // must update all the way down the tree since anything under - // the notifying - // DOM node could have changed. - adapter.updateMOF(); - mofIndex++; - continue; - } - - adapter = (EMF2DOMAdapter) nodeToAdapter.get(childNode); - if (adapter != null) { - reorderIfNecessary((EList) mofChildren, adapter.getEObject(), mofIndex); - mofIndex++; - } else { - adapter = createAdapter(childNode, map); - if (adapter != null) { - try { - //We don't want to push anything back to the child dom - adapter.setNotificationEnabled(false); - map.setMOFValue(getTarget(), adapter.getTarget(), mofIndex); - } finally { - adapter.setNotificationEnabled(true); - } - - adaptersToUpdate.add(adapter); - mofIndex++; - } - } - } - - // Remove any remaining adapters. - for (; i < mofChildren.size(); i++) { - removeMOFValue((EObject) mofChildren.get(i), map); - } - - // The adapters cannot be updated as they created. We must wait until - // all of the adapters are created and removed before updating, - // otherwise - // we can get in a state where there are adapters fighting with - // eachother - // (one for the old node and one for the new node). - for (int j = 0; j < adaptersToUpdate.size(); j++) { - ((EMF2DOMAdapter) adaptersToUpdate.get(j)).updateMOF(); - } - } - - /** - * Removes a feature's value. - * - * @param childAdapter - * com.ibm.etools.mof2dom.EMF2DOMAdapter The child to remove - * @param mofAttributeName - * String The name of the mofAttribute to remove the child from. - */ - protected void removeMOFValue(EObject value, Translator translator) { - - if (value == null) - return; - - EMF2DOMAdapter adapter = (EMF2DOMAdapter) EcoreUtil.getExistingAdapter(value, EMF2DOMAdapter.ADAPTER_CLASS); - if (adapter != null) { - // Remove the adapter from BOTH the MOF Object and the DOM Nodes - value.eAdapters().remove(adapter); - removeAdapters(adapter.getNode()); - } - - EStructuralFeature feature = translator.getFeature(); - boolean doUnload = feature == null || (translator.isObjectMap() && ((EReference) feature).isContainment()); - - // translator.removeMOFValue() was here originally - - // Unload the objects. - if (doUnload) - ExtendedEcoreUtil.unload(value); - - // Remove the MOF value - translator.removeMOFValue(getTarget(), value); - } - - protected void reorderIfNecessary(EList emfChildren, EObject eObj, int emfIndex) { - int currIndex = emfChildren.indexOf(eObj); - if (currIndex > -1 && currIndex != emfIndex) - emfChildren.move(emfIndex, eObj); - } - - /** - * default is to do nothing; subclasses can override - */ - protected void indent(Node newNode, Translator map) { - - } - - protected Node findInsertBeforeNode(Node parentNode, Translator map, List mofList, int mofInx, List domList) { - Node insertBeforeNode = null; - - // If there are no current dom children for this map, find the initial - // insert pos. - if (domList.size() == 0) - return findInitialInsertBeforeNode(parentNode, map); - - // If some dom nodes then find the correct one to insert before. - int i = mofInx + 1; - while (i < mofList.size() && insertBeforeNode == null) { - // Start at the mofInx passed in and look forward for the first - // adapted - // MOF object. Use that node as the insert before node. - Object o = mofList.get(i); - if (!map.isObjectMap() || map.isManagedByParent()) - break; - EObject tMOFObject = (EObject) o; - EMF2DOMAdapter tAdapter = (EMF2DOMAdapter) EcoreUtil.getExistingAdapter(tMOFObject, EMF2DOMAdapter.ADAPTER_CLASS); - if (tAdapter != null) { - insertBeforeNode = tAdapter.getNode(); - } - i++; - } - - // Handle inserting at the end of the list - if (insertBeforeNode == null) - insertBeforeNode = DOMUtilities.getNextNodeSibling((Node) domList.get(domList.size() - 1)); - if (insertBeforeNode == null) - insertBeforeNode = ((Node) domList.get(domList.size() - 1)).getNextSibling(); - - return insertBeforeNode; - } - - protected Node findInitialInsertBeforeNode(Node parentNode, Translator mapNode) { - Translator[] maps = getChildTranslators(); - - // First, skip past all the maps in the ordered collection - // of maps. We want to begin the search with this node. - int i = 0; - for (; i < maps.length; i++) { - if (maps[i] == mapNode) - break; - } - - // Now search go through each map node until a child node matching - // its DOM name is found. - Node insertBeforeNode = null; - for (int j = i; j < maps.length && insertBeforeNode == null; j++) { - NodeList childNodes = parentNode.getChildNodes(); - Translator nodeToFindMap = maps[j]; - for (int k = 0; k < childNodes.getLength(); k++) { - Node node = childNodes.item(k); - if (nodeToFindMap.isMapFor(node.getNodeName())) { - insertBeforeNode = node; - break; - } - } - } - return insertBeforeNode; - } - - /* - * Traverses the path that <map> specifies. Returns the last node of the path that was able to - * be traversed or null if the path could not be traversed. The <addAdapters> boolean is used to - * determine if the receiver is added as an adapter to every node found on the path. - */ - protected Node findDOMPath(Node parent, Translator map, boolean addAdapters) { - - String path = map.getDOMPath(); - Node curNode = parent; - Iterator iter = DOMUtilities.createPathIterator(path); - - while (curNode != null && iter.hasNext()) { - String nodeName = (String) iter.next(); - curNode = DOMUtilities.getNodeChild(curNode, nodeName); - if (addAdapters && curNode != null) { - addDOMAdapter(curNode); - } - } - return curNode; - } - - /** - * Return the list of DOM node children that currently exist with the specified tagname. - */ - protected List getDOMChildren(Node node, Translator map) { - Node parent = findDOMPath(node, map, true); - if (parent != null) - return DOMUtilities.getNodeChildren(parent, map.getDOMNames()); - return new ArrayList(); - } - - protected EMF2DOMAdapter getExistingAdapter(EObject refObject) { - EMF2DOMAdapter adapter = (EMF2DOMAdapter) EcoreUtil.getExistingAdapter(refObject, EMF2DOMAdapter.ADAPTER_CLASS); - if (adapter != null && adapter.isMOFProxy()) { - refObject.eAdapters().remove(adapter); - removeDOMAdapter(adapter.getNode(), adapter); - adapter = null; - } - return adapter; - } - - protected void primAddDOMAdapter(Node aNode, EMF2DOMAdapter anAdapter) { - fRenderer.registerDOMAdapter(aNode, anAdapter); - } - - protected EMF2DOMAdapter primGetExistingAdapter(Node aNode) { - return fRenderer.getExistingDOMAdapter(aNode); - } - - protected void removeDOMAdapter(Node aNode, EMF2DOMAdapter anAdapter) { - fRenderer.removeDOMAdapter(aNode, anAdapter); - } - - protected void addDOMAdapter(Node childNode) { - - // Only add the adapter if this is an child node that will not be - // adapted. For instance a subtree that maps to a MOF attribute - // setting. - if (childNode.getNodeType() == Node.ELEMENT_NODE) { - EMF2DOMAdapter attrAdapter = primGetExistingAdapter(childNode); - - if (attrAdapter == null || attrAdapter.getNode() != getNode()) { - // If the node is adapted, but not by this adapter then remove - // it. This happens to non-object children when the parent tag - // name is changed. - removeDOMAdapter(childNode, attrAdapter); - - if (fDebug) { - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tCHILD: Adding DOM adapter: " + this); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\t\tto: " + childNode); //$NON-NLS-1$ - } - primAddDOMAdapter(childNode, this); - } - } - } - - /** - * Reorder a child before a given node - */ - protected void reorderDOMChild(Node parentNode, Node childNode, Node insertBeforeNode, Translator map) { - try { - removeDOMChild(parentNode, childNode, false); - parentNode.insertBefore(childNode, insertBeforeNode); - } catch (Exception e) { - e.printStackTrace(); - } - } - - protected String getNewlineString(Node node) { - return DOMUtilities.NEWLINE_STRING; - } - - protected String primGetIndentString(Node node) { - return DOMUtilities.getIndentString(node); - } - - /** - * Remove a child node - */ - protected void removeDOMChild(Node parentNode, Node childNode) { - removeDOMChild(parentNode, childNode, true); - } - - /** - * Remove a child node - */ - protected void removeDOMChild(Node parentNode, Node childNode, boolean removeAdapter) { - try { - if (childNode == null) - return; - // Look for any whitespace preceeding the node being - // removed and remove it as well. - Text prevText = DOMUtilities.getPreviousTextSibling(childNode); - if (prevText != null && DOMUtilities.isWhitespace(prevText)) { - parentNode.removeChild(prevText); - } - // Remove the node. - if (removeAdapter) - removeAdapters(childNode); - parentNode.removeChild(childNode); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Remove the DOM adapters from the node AND all its child nodes, recursively. - */ - public void removeAdapters(Node node) { - EMF2DOMAdapter adapter = primGetExistingAdapter(node); - if (adapter != null) { - // Remove the adapter from both the DOM node and the MOF Object. - removeDOMAdapter(node, adapter); - if (adapter.getNode() == node) { - Notifier localTarget = adapter.getTarget(); - if (localTarget != null) - localTarget.eAdapters().remove(adapter); - } - } - - NodeList nl = node.getChildNodes(); - for (int i = 0; i < nl.getLength(); i++) { - Node n = nl.item(i); - removeAdapters(n); - } - } - - /** - * Creates the path specified by <map>under <node>. Only the portion of the path that does not - * exist (if any) is created - * - * @param node - * org.w3c.dom.Node - * @param map - * com.ibm.etools.mof2dom.Translator - */ - protected Node createDOMPath(Node node, Translator map) { - Iterator i = DOMUtilities.createPathIterator(map.getDOMPath()); - Node curNode = node; - while (i.hasNext()) { - String nodeName = (String) i.next(); - curNode = findOrCreateNode(node, map, nodeName); - } - return curNode; - } - - protected Element findOrCreateNode(Node parent, Translator map, String segment) { - Node node = DOMUtilities.getNodeChild(parent, segment); - if (node == null) { - // The node did not already exist, create it. - Document doc = parent.getOwnerDocument(); - node = doc.createElement(segment); - if (map.isEmptyTag()) - setEmptyTag((Element) node); - - Node insertBeforeNode = findInitialInsertBeforeNode(parent, map); - DOMUtilities.insertBeforeNodeAndWhitespace(parent, node, insertBeforeNode); - indent(node, map); - addDOMAdapter(node); // Hook up listeners - } - return (Element) node; - } - - /** - * Remove the node passed in if it has only whitespace nodes as children - * - * @param node - * org.w3c.dom.Node The node to check - */ - protected void removeIfEmpty(Node node) { - NodeList nl = node.getChildNodes(); - - // Run through all the nodes children. If a non-whitespace node - // pis found, bail. - for (int i = 0; i < nl.getLength(); i++) { - Node childNode = nl.item(i); - if (!DOMUtilities.isWhitespace(childNode)) - return; - } - - // We only get here if there are no non-whitespace chars, so - // simply remove the node. - removeDOMChild(node.getParentNode(), node); - } - - /** - * Remove the DOM path specified by <map>from <node> - */ - protected void removeDOMPath(Node node, Translator map) { - Node childNode = findDOMPath(node, map, false); - while (childNode != null && childNode != node) { - removeIfEmpty(childNode); - childNode = childNode.getParentNode(); - } - } - - /** - * Create an adapter for a child DOM node - * - * @param node - * org.w3c.dom.Node The node to create the adapter for. - */ - protected EMF2DOMAdapter createAdapter(EObject mofObject, Translator childMap) { - // Assert.isNotNull(childMap.getChildAdapterClass()); - Assert.isNotNull(mofObject); - - EMF2DOMAdapter adapter = (EMF2DOMAdapter) EcoreUtil.getAdapter(mofObject.eAdapters(), EMF2DOMAdapter.ADAPTER_CLASS); - - if (adapter != null && adapter.isMOFProxy()) { - mofObject.eAdapters().remove(adapter); - removeAdapters(adapter.getNode()); - adapter = null; - } - if (adapter == null) - adapter = primCreateAdapter(mofObject, childMap); - return adapter; - } - - /** - * Create an adapter for a child DOM node - * - * @param node - * org.w3c.dom.Node The node to create the adapter for. - */ - protected EMF2DOMAdapter primCreateAdapter(EObject mofObject, Translator childMap) { - - Element newNode = createNewNode(mofObject, childMap); - return new EMF2DOMAdapterImpl(mofObject, newNode, fRenderer, childMap); - } - - /** - * Create an adapter for a child DOM node - * - * @param node - * org.w3c.dom.Node The node to create the adapter for. - */ - protected EMF2DOMAdapter primCreateAdapter(Node node, Translator childMap) { - return new EMF2DOMAdapterImpl(node, fRenderer, childMap); - } - - /** - * Create an adapter for a child DOM node - * - * @param node - * org.w3c.dom.Node The node to create the adapter for. - */ - protected EMF2DOMAdapter createAdapter(Node node, Translator childMap) { - - //Assert.isNotNull(childMap.getChildAdapterClass()); - Assert.isNotNull(node); - - EMF2DOMAdapter adapter = primGetExistingAdapter(node); - - if (adapter != null) { - if (adapter.isMOFProxy() || adapter.getTarget() == null) { - removeDOMAdapter(node, adapter); - if (adapter.getTarget() != null) { - adapter.getTarget().eAdapters().remove(adapter); - } - adapter = null; - } - } else { - adapter = primCreateAdapter(node, childMap); - } - return adapter; - } - - protected Element createNewNode(EObject mofObject, Translator childMap) { - Node node = getNode(); - Document doc = (node instanceof Document) ? (Document) node : node.getOwnerDocument(); - - Element element = doc.createElement(childMap.getDOMName(mofObject)); - if (childMap.isEmptyTag()) - setEmptyTag(element); - - return element; - } - - protected void setEmptyTag(Element element) { - Revisit.toDo(); - //Need to figure out how to do this with pure DOM apis, if it is - // possible - } - - /* - * Return true if MOF object is a proxy. - */ - public boolean isMOFProxy() { - if (isRoot || target == null) - return false; - return ((InternalEObject) target).eIsProxy(); - } - - public EObject getEObject() { - if (isRoot) - return null; - return (EObject) target; - } - - /** - * Return the DOM node that the target of this adapter maps to. If the target MOF object maps to - * more than one DOM node, this node is the top-most node. - */ - public Node getNode() { - return fNode; - } - - public void setNode(Node aNode) { - fNode = aNode; - } - - public void updateDOM() { - if (!isNotificationEnabled()) - return; - primUpdateDOM(); - } - - public void updateMOF() { - if (!isNotificationEnabled()) - return; - primUpdateMOF(); - } - - protected void primUpdateDOM() { - if (isRoot) - updateDOMRootFeature(); - else { - Translator[] maps = getChildTranslators(); - for (int i = 0; i < maps.length; i++) { - updateDOMFeature(maps[i], getNode(), getEObject()); - } - } - } - - public void primUpdateMOF() { - if (isRoot) - updateMOFRootFeature(); - else { - Translator[] maps = getChildTranslators(); - for (int i = 0; i < maps.length; i++) { - updateMOFFeature(maps[i], getNode(), getEObject()); - } - } - } - - protected void updateDOMRootFeature() { - boolean notificationFlag = isNotificationEnabled(); - try { - setNotificationEnabled(false); - primUpdateDOMMultiFeature(fTranslator, fNode, getResourceContents(), getDOMChildren(fNode, fTranslator), null); - updateDOMDocumentType(); - } finally { - setNotificationEnabled(notificationFlag); - } - } - - protected void updateMOFRootFeature() { - boolean notificationFlag = isNotificationEnabled(); - try { - setNotificationEnabled(false); - updateMOFDocumentType(); - primUpdateMOFMultiFeature(fTranslator, fNode, getResourceContents(), getDOMChildren(fNode, fTranslator)); - } finally { - setNotificationEnabled(notificationFlag); - } - } - - protected DocumentType getDocumentType() { - return ((Document) fNode).getDoctype(); - } - - protected TranslatorResource getResource() { - return (TranslatorResource) getTarget(); - } - - protected EList getResourceContents() { - if (!isRoot) - throw new IllegalStateException(); - return ((Resource) getTarget()).getContents(); - } - - protected void updateDOMDocumentType() { - - DocumentType docType = getDocumentType(); - String publicId = null, systemId = null, oldPublicId, oldSystemId; - oldPublicId = docType == null ? null : docType.getPublicId(); - oldSystemId = docType == null ? null : docType.getSystemId(); - TranslatorResource resource = getResource(); - if (resource != null) { - publicId = resource.getPublicId(); - systemId = resource.getSystemId(); - } - if (!(StringUtil.stringsEqual(publicId, oldPublicId) && StringUtil.stringsEqual(systemId, oldSystemId))) - fRenderer.replaceDocumentType(resource.getDoctype(), publicId, systemId); - } - - protected void updateDOMDocumentType(Notification msg) { - if (msg.getFeature() == TranslatorResource.DOC_TYPE_FEATURE) - updateDOMDocumentType(); - } - - protected void updateMOFDocumentType() { - - TranslatorResource resource = getResource(); - if (resource == null) - return; - - String publicId = null, systemId = null; - DocumentType docType = getDocumentType(); - - if (docType != null) { - publicId = docType.getPublicId(); - systemId = docType.getSystemId(); - } - if (!(StringUtil.stringsEqual(publicId, resource.getPublicId()) && StringUtil.stringsEqual(systemId, resource.getSystemId()))) - resource.setDoctypeValues(publicId, systemId); - } - - public void notifyChanged(Notification msg) { - - if (isRoot) { - notifyChangedForRoot(msg); - return; - } - if (isDependencyFeature(msg)) - handleDependencyFeature(msg); - - if (!isNotificationEnabled()) - return; - - debugMOFNotify(msg); - - switch (msg.getEventType()) { - case Notification.ADD : - case Notification.REMOVE : - case Notification.ADD_MANY : - case Notification.REMOVE_MANY : - case Notification.SET : - case Notification.UNSET : - case Notification.MOVE : - Translator translator = findTranslator(msg); - if (translator == null) - translator = addVariableTranslatorIfNecessary(msg); - if (translator != null) - updateDOMFeature(translator, getNode(), getEObject()); - break; - } - } - - protected void notifyChangedForRoot(Notification msg) { - if (!isNotificationEnabled()) - return; - - debugMOFNotify(msg); - - switch (msg.getEventType()) { - case Notification.ADD : - case Notification.REMOVE : - case Notification.ADD_MANY : - case Notification.REMOVE_MANY : - primUpdateDOM(); - break; - case Notification.SET : - updateDOMDocumentType(msg); - break; - case EtoolsCopySession.RESOURCE_COPIED : - updateDOM(); - break; - } - } - - protected void addDependencyAdapter(EObject child) { - Adapter existing = EcoreUtil.getExistingAdapter(child, DependencyAdapter.KEY); - if (existing != null) - return; - DependencyAdapter forwarder = new DependencyAdapter(); - child.eAdapters().add(forwarder); - forwarder.setTarget(child); - } - - protected void addDOMAdapter() { - - primAddDOMAdapter(fNode, this); - if (fDebug) { - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Adding DOM adapter: " + this); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tto: " + fNode); //$NON-NLS-1$ - } - - // Go through the maps. All of the DOM nodes that are not listened - // to by another DOM Node adapter, must be listened to by this adapter. - NodeList childNodes = fNode.getChildNodes(); - for (int j = 0; j < childNodes.getLength(); j++) { - Node childNode = childNodes.item(j); - int nodeType = childNode.getNodeType(); - if (!DOMUtilities.isTextNode(childNode) && nodeType != Node.COMMENT_NODE) { - Translator map = findTranslator(childNode.getNodeName(), false); - if (map != null && map.isManagedByParent()) - addDOMAdapter(childNode); - } - } - } - - protected Translator addVariableTranslatorIfNecessary(Notification msg) { - VariableTranslatorFactory fact = fTranslator.getVariableTranslatorFactory(); - Translator trans = null; - if (fact != null && fact.accepts(msg)) { - trans = fact.create(msg); - if (trans != null) - childTranslators = (Translator[]) Translator.concat(childTranslators, trans); - } - return trans; - } - - protected Text createTextNode(Document doc, Translator map, String text) { - String nonnulltext = (text != null) ? text : ""; //$NON-NLS-1$ - return map.isCDATAContent() ? doc.createCDATASection(nonnulltext) : doc.createTextNode(nonnulltext); - } - - protected String extractReadAheadName() { - if (!fTranslator.hasReadAheadNames()) - return null; - String readAheadName = null; - - ReadAheadHelper helper = fTranslator.getReadAheadHelper(fNode.getNodeName()); - if (helper == null) - return null; - - Node child = null; - String[] names = helper.getValues(); - if (helper.getChildDOMName() == null) { - for (int i = 0; i < names.length; i++) { - child = DOMUtilities.getNodeChild(fNode, names[i]); - if (child != null) { - readAheadName = names[i]; - break; - } - } - } else { - child = DOMUtilities.getNodeChild(fNode, helper.getChildDOMName()); - if (child != null) - readAheadName = DOMUtilities.getChildText(child); - } - if (readAheadName == null) - readAheadName = names[0]; - return readAheadName; - } - - /** - * Extracts the text from <node>and converts it to an object suitable for setting into <feature> - */ - protected Object extractValue(Node node, Translator map, EObject emfObject) { - - // Extract the value from the text child - Node textNode = DOMUtilities.getChildTextNode(node); - String trimmedValue = null; - if (textNode != null) - trimmedValue = textNode.getNodeValue(); - try { - return map.convertStringToValue(trimmedValue, emfObject); - } catch (FeatureValueConversionException ex) { - handleFeatureValueConversionException(ex); - return null; - } - } - - /** - * @param ex - */ - protected void handleFeatureValueConversionException(FeatureValueConversionException ex) { - throw ex; - - } - - /* - * Finds the child node that <map> specifies. If there is more than one child that satisfies - * <map> then the first one is returned. - * - * This method traverses past the domPath if one is specified in the <map>. - */ - protected Node findDOMNode(Node parent, Translator map) { - return findDOMNode(parent, map, false); - } - - /* - * Finds the child node that <map> specifies. If there is more than one child that satisfies - * <map> then the first one is returned. The <addAdapters> boolean is used to determine if the - * receiver is added as an adapter to every node found on the path. - * - * This method traverses past the domPath if one is specified in the <map>. - */ - protected Node findDOMNode(Node parent, Translator map, boolean addAdapters) { - - // First, trace down the path - Node curNode = findDOMPath(parent, map, addAdapters); - if (map.isDOMTextValue() || map.isDOMAttribute() || curNode == null) - return curNode; - - // Now look for the first DOM name we can find - String[] domNames = map.getDOMNames(); - Node node = null; - for (int i = 0; i < domNames.length; i++) { - String nodeName = domNames[i]; - List nodes = DOMUtilities.getNodeChildren(curNode, nodeName); - if (nodes != null && !nodes.isEmpty()) { - if (nodes.size() > 1) - handleInvalidMultiNodes(nodeName); - node = (Node) nodes.get(0); - if (node != null) { - if (addAdapters && (map != null || map.isManagedByParent())) - addDOMAdapter(curNode); - break; - } - } - } - return node; - } - - protected void handleInvalidMultiNodes(String nodeName) { - throw new IllegalStateException(WFTUtilsResourceHandler.getString(WFTUtilsResourceHandler.EMF2DOMAdapterImpl_ERROR_0, new Object[]{nodeName})); - } - - /** - * Creates the path specified by <map>under <node>. Only the portion of the path that does not - * exist (if any) is created - * - * @param node - * org.w3c.dom.Node - * @param map - * com.ibm.etools.mof2dom.Translator - */ - protected Text findOrCreateTextNode(Node parent, Translator map, String text) { - Text textNode = DOMUtilities.getChildTextNode(parent); - if (textNode != null) { - textNode.setData(text); - } else { - if (!isEmptyTag((Element) parent)) { - Text newNode = createTextNode(parent.getOwnerDocument(), map, text); - DOMUtilities.insertBeforeNode(parent, newNode, null); - return newNode; - } - } - return textNode; - } - - protected Translator findTranslator(String tagName, boolean attributeMap) { - Translator[] maps = getChildTranslators(); - for (int i = 0; i < maps.length; i++) { - Translator map = maps[i]; - if (map.isMapFor(tagName) && attributeMap == map.isDOMAttribute()) - return maps[i]; - } - - return null; - } - - protected EMF2DOMAdapter getExistingAdapter(Node aNode) { - EMF2DOMAdapter adapter = primGetExistingAdapter(aNode); - if (adapter != null && adapter.isMOFProxy()) { - removeDOMAdapter(aNode, adapter); - adapter.getTarget().eAdapters().remove(adapter); - adapter = null; - } - return adapter; - } - - protected void handleDependencyFeature(Notification msg) { - if (msg.getOldValue() != null) - removeDependencyAdapter((EObject) msg.getOldValue()); - if (msg.getNewValue() != null) - addDependencyAdapter((EObject) msg.getNewValue()); - } - - protected boolean isDependencyFeature(Notification msg) { - switch (msg.getEventType()) { - case Notification.SET : - return fTranslator.isDependencyParent() && fTranslator.getDependencyFeature() == msg.getFeature(); - default : - return false; - } - } - - protected boolean isEmptyTag(Element parent) { - Revisit.toDo(); - //Determine how to implement this with pure DOM apis, if possible. - return false; - } - - protected void postUpdateDOMFeature(Translator map, Node node, EObject mofObject) { - } - - protected void preUpdateDOMFeature(Translator map, Node node, EObject mofObject) { - } - - /** - * Update an attribute of the target DOM object from with the values currently stored in the MOF - * object. The - * - * @map specifies the name of the MOF attribute to update and the name of the DOM node. - * - * @param map - * com.ibm.etools.mof2dom.AttributeTranslator - */ - protected void primUpdateDOMFeature(Translator map, Node node, EObject mofObject) { - Object attrValue = null; - boolean isSet = false; - if (map.isIDMap()) { - try { - attrValue = map.getMOFValue(mofObject); - } catch (IDTranslator.NoResourceException ex) { - //If the object has been removed from the resource, - //No need to update - return; - } - isSet = attrValue != null; - } else { - attrValue = map.getMOFValue(mofObject); - isSet = map.isSetMOFValue(mofObject); - } - - if (map.isDOMAttribute()) { - // An attribute of the MOF object maps to an attribute of the - // DOM node. Get the value of the MOF attribute and set it - // into DOM node. - Element e = (Element) createDOMPath(node, map); - if (attrValue != null && isSet) - e.setAttribute(map.getDOMName(mofObject), map.convertValueToString(attrValue, mofObject)); - else - e.removeAttribute(map.getDOMName(mofObject)); - } else { - updateDOMSubtree(map, node, mofObject, attrValue); - } - } - - /** - * Update an attribute of the target DOM object from with the values currently stored in the MOF - * object. The - * - * @map specifies the name of the MOF attribute to update and the name of the DOM node. - */ - protected void primUpdateDOMLinkFeature(Translator map, Node node, EObject mofObject) { - LinkUpdaterTarget.INSTANCE.updateDOM(map, node, mofObject); - - } - - /** - * Update all the children of the target MOF object in the relationship described by - * - * @map. - */ - protected void primUpdateDOMMultiFeature(Translator map, Node node, EObject mofObject) { - - List mofChildren = map.getMOFChildren(mofObject); - List domChildren = getDOMChildren(node, map); - - primUpdateDOMMultiFeature(map, node, mofChildren, domChildren, mofObject); - } - - /** - * Update an attribute of the target MOF object from the DOM node subtree. The - * - * @map specifies the name of the MOF attribute to update and the name of the DOM node. - */ - protected boolean primUpdateMOFFeature(Translator map, Node node, EObject mofObject) { - if (!map.featureExists(mofObject)) - return false; - Object domValue = null; - boolean updateMOFAttAdapter = false; - boolean isUnset = false; - EMF2DOMAdapter attrAdapter = null; - - Node child = findDOMNode(node, map, true); - - if (map.isDOMAttribute() && child != null) { - // An attribute of the MOF object maps to an attribute of the - // DOM node. Get the value of the DOM attribute and set it - // into the MOF object. - - Attr domAttr = (Attr) child.getAttributes().getNamedItem(map.getDOMName(mofObject)); - if (domAttr != null) { - domValue = domAttr.getValue(); - domValue = map.convertStringToValue((String) domValue, mofObject); - } else - isUnset = true; - } else { - // An attribute of the MOF object is actually a sub-element - // of the DOM node. Search for the first sub-element with - // the correct name to use as an attribute. - if (child != null) { - // Check to see if this is a single valued attribute that has - // a MOF object as its value - if (!map.isManagedByParent()) { - attrAdapter = createAdapter(child, map); - updateMOFAttAdapter = true; - domValue = attrAdapter.getTarget(); - } else { - // Check to make sure the child is adapted. If not, adapt - // it. - addDOMAdapter(child); - - // Extract the value from the text child - domValue = extractValue(child, map, mofObject); - } - } else - isUnset = true; - } - - // Set the attribute extracted from the DOM to the MOF object. - boolean hasChanged = true; - try { - if (map.isIDMap()) - map.setMOFValue(mofObject, domValue); - else { - Object oldValue = null; - oldValue = map.getMOFValue(mofObject); - boolean isSet = map.isSetMOFValue(mofObject); - //In the case of enums with default values, we need to trip - // the attribute from - //default to a set value - if (oldValue == domValue) { - if (oldValue == null || isSet) - hasChanged = false; - } else if (domValue == null && !isSet) - //If the domValue is null and the feature is not set, then - // we don't need - //to do anything - hasChanged = false; - else if (oldValue != null && oldValue.equals(domValue) && isSet) - hasChanged = false; - if (oldValue == null && domValue == null && map.isSetMOFValue(mofObject) == isUnset) - hasChanged = true; - if (hasChanged) { - if (!(map.isDataType()) && !map.isShared()) - removeMOFValue((EObject) oldValue, map); - if (domValue == null) - map.unSetMOFValue(mofObject); - else - map.setMOFValue(mofObject, domValue); - - if ((domValue == null && !(map.isEnumFeature())) || isUnset) - map.unSetMOFValue(mofObject); //unset - // null - // for - // non - // enum - // features - - if (updateMOFAttAdapter) - attrAdapter.updateMOF(); - } - } - } catch (FeatureValueConversionException ex) { - handleFeatureValueConversionException(ex); - map.unSetMOFValue(mofObject); - } - return hasChanged; - } - - /** - * Update an attribute of the target MOF object from the DOM node subtree. This method is only - * called if the DOM node changes and the map is an object link map. The - * - * @map specifies the name of the MOF attribute to update and the name of the DOM node. - * - * @param map - * com.ibm.etools.mof2dom.AttributeTranslator - * @return Return true if the MOF feature was updated, false if no update was done. - */ - protected void primUpdateMOFLinkFeature(Translator map, Node node, EObject mofObject) { - LinkUpdaterTarget.INSTANCE.updateMOF(map, node, mofObject); - } - - /** - * Update all the children of the target MOF object in the relationship described by - * - * @map. - * - * @param map - * com.ibm.etools.mof2dom.AttributeTranslator Describes the mapping from the MOF - * attribute name to the DOM node name - */ - protected void primUpdateMOFMultiFeature(Translator map, Node node, EObject mofObject) { - // If the feature is a collection of strings or ints, call a special - // method - // that handles this. - if (map.isManagedByParent()) { - updateMOFMultiPrimitiveFeature(map, node, mofObject); - return; - } - - List nodeChildren = getDOMChildren(node, map); - List mofChildren = map.getMOFChildren(mofObject); - - primUpdateMOFMultiFeature(map, node, mofChildren, nodeChildren); - } - - protected void removeDependencyAdapter(EObject obj) { - Adapter existing = EcoreUtil.getExistingAdapter(obj, DependencyAdapter.KEY); - if (existing != null) - obj.eAdapters().remove(existing); - } - - /** - * Removes all the DOM children from <parent>that are represented by <map>. - */ - protected void removeDOMChildren(Node parent, Translator map) { - String[] domNames = map.getDOMNames(); - HashSet domNamesSet = new HashSet(domNames.length); - for (int i = 0; i < domNames.length; i++) - domNamesSet.add(domNames[i]); - - // Walk through all the children and find any that match the map. - NodeList nl = parent.getChildNodes(); - List toRemove = new ArrayList(); - for (int i = 0; i < nl.getLength(); i++) { - Node childNode = nl.item(i); - if (domNamesSet.contains(childNode.getNodeName())) - toRemove.add(childNode); - } - - // Remove any children that were found. - for (int i = 0; i < toRemove.size(); i++) { - Node childNode = (Node) toRemove.get(i); - removeDOMChild(parent, childNode, true); - } - } - - protected void setTargetFromNode() { - setTarget(fTranslator.createEMFObject(fNode.getNodeName(), extractReadAheadName())); - } - - /** - * Update an attribute of the target DOM object from with the values currently stored in the MOF - * object. The - * - * @map specifies the name of the MOF attribute to update and the name of the DOM node. - * - * @param map - * com.ibm.etools.mof2dom.AttributeTranslator - */ - final public void updateDOMFeature(Translator map, Node node, EObject mofObject) { - if (!isNotificationEnabled()) - return; - try { - preUpdateDOMFeature(map, node, mofObject); - if (map.isMultiValued()) { - updateDOMMultiFeature(map, node, mofObject); - return; - } - - if (fDebug) { - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating DOM Node: " + node); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + mofObject); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$ - } - boolean notificationFlag = isNotificationEnabled(); - try { - setNotificationEnabled(false); - primUpdateDOMFeature(map, node, mofObject); - } finally { - setNotificationEnabled(notificationFlag); - } - - if (map.isTargetLinkMap()) { - updateDOMLinkFeature(map, node, mofObject); - } - } finally { - postUpdateDOMFeature(map, node, mofObject); - } - } - - /** - * Update an attribute of the target DOM object from the values currently stored in the MOF - * object. The - * - * @map specifies the name of the MOF attribute to update and the name of the DOM node. - * - * @param map - * com.ibm.etools.mof2dom.AttributeTranslator - */ - final protected void updateDOMLinkFeature(Translator map, Node node, EObject mofObject) { - if (fDebug) { - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating DOM Node (link): " + node); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + mofObject); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$ - } - primUpdateDOMLinkFeature(map, node, mofObject); - } - - /** - * Update all the children of the target MOF object in the relationship described by - * - * @map. - * - * @param map - * com.ibm.etools.mof2dom.AttributeTranslator Describes the mapping from the MOF - * attribute name to the DOM node name - */ - final protected void updateDOMMultiFeature(Translator map, Node node, EObject mofObject) { - if (fDebug) { - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating DOM Node (multi): " + node); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + mofObject); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$ - } - boolean notificationFlag = isNotificationEnabled(); - try { - setNotificationEnabled(false); - primUpdateDOMMultiFeature(map, node, mofObject); - } finally { - setNotificationEnabled(notificationFlag); - } - } - - /** - * Update a DOM subtree to reflect the mofObject and map passed in. The subtree is of <node>is - * updated. - */ - protected void updateDOMSubtree(Translator map, Node node, EObject mofObject, Object attrValue) { - - if (map.featureExists(mofObject)) { - if ((map.isEnumFeature() || map.isBooleanFeature()) && (map.isUnsettable() && !map.isSetMOFValue(mofObject))) - attrValue = null; - } else - attrValue = map.extractStringValue(mofObject); - - // Create and/or update the DOM subtree - if (attrValue != null) { - Node parent = createDOMPath(node, map); - if (map.isManagedByParent()) { - // Handle the case where the mof value is not another - // mof object (primitive) - if (map.getDOMName(mofObject) != null && map.getDOMName(mofObject).startsWith("#")) //$NON-NLS-1$ - return; - - Element child = map.isDOMTextValue() ? (Element) parent : findOrCreateNode(parent, map, map.getDOMName(mofObject)); - - findOrCreateTextNode(child, map, map.convertValueToString(attrValue, mofObject)); - } else { - // Handle the case were the mof value is a mof object. - EObject mofValue = (EObject) attrValue; - EMF2DOMAdapter valueAdapter = (EMF2DOMAdapter) EcoreUtil.getExistingAdapter(mofValue, EMF2DOMAdapter.ADAPTER_CLASS); - if (valueAdapter != null) - valueAdapter.updateDOM(); - else { - removeDOMChildren(parent, map); - EMF2DOMAdapter adapter = createAdapter(mofValue, map); - List mofChildren = map.getMOFChildren(mofObject); - List domChildren = getDOMChildren(parent, map); - - Node insertBeforeNode = findInsertBeforeNode(parent, map, mofChildren, 0, domChildren); - DOMUtilities.insertBeforeNodeAndWhitespace(parent, adapter.getNode(), insertBeforeNode); - boolean notificationFlag = adapter.isNotificationEnabled(); - adapter.setNotificationEnabled(false); - try { - indent(adapter.getNode(), map); - } finally { - adapter.setNotificationEnabled(notificationFlag); - } - adapter.updateDOM(); - } - } - } else { - // The attribute value was set to null or unset. Remove any - // existing DOM nodes. - Node child = findDOMNode(node, map); - if (child != null) - removeDOMChild(child.getParentNode(), child); - } - } - - /** - * Update a feature that is set by linking to another existing object. This method is called - * when the MOF object is updated in order to update DOM nodes. - */ - final protected void updateMOFLinkFeature(Translator map, Node node, EObject mofObject) { - if (fDebug) { - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating MOFObject (link): " + mofObject); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + node); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$ - } - boolean notificationFlag = isNotificationEnabled(); - try { - setNotificationEnabled(false); - primUpdateMOFLinkFeature(map, node, mofObject); - } finally { - setNotificationEnabled(notificationFlag); - } - } - - /** - * Update all the children of the target MOF object in the relationship described by - * - * @map. - * - * @param map - * com.ibm.etools.mof2dom.AttributeTranslator Describes the mapping from the MOF - * attribute name to the DOM node name - */ - final protected void updateMOFMultiFeature(Translator map, Node node, EObject mofObject) { - if (fDebug) { - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating MOFObject (multi): " + mofObject); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + node); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$ - } - boolean notificationFlag = isNotificationEnabled(); - try { - setNotificationEnabled(false); - primUpdateMOFMultiFeature(map, node, mofObject); - } finally { - setNotificationEnabled(notificationFlag); - } - } - - /** - * Update all the children of the target MOF object in the relationship described by - * - * @map. The relationship MUST BE a collection of string for this method to work. - */ - protected void updateMOFMultiPrimitiveFeature(Translator map, Node node, EObject mofObject) { - List nodeChildren = getDOMChildren(node, map); - - map.clearList(mofObject); - - // Go through the list of nodes and update the MOF collection - 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); - - // Adapt the node so update will occur. - addDOMAdapter(child); - } - if (map.hasDOMPath() && nodeChildren.isEmpty() && findDOMPath(node, map, false) != null) - map.setMOFValueFromEmptyDOMPath(mofObject); - } - - /** - * Update an attribute of the target MOF object from the DOM node subtree. The - * - * @map specifies the name of the MOF attribute to update and the name of the DOM node. - * - * @param map - * com.ibm.etools.mof2dom.AttributeTranslator - */ - public void updateMOFFeature(Translator map, Node node, EObject mofObject) { - if (!isNotificationEnabled()) - return; - if (map.isMultiValued()) { - updateMOFMultiFeature(map, node, mofObject); - return; - } else if (map.isComment()) { - updateMOFCommentFeature(map, node, mofObject); - return; - } - - // TODO MDE Add a map.isComment() and updateMOFCommentFeature(map, node, mofObject); - - if (fDebug) { - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating MOFObject: " + mofObject); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + node); //$NON-NLS-1$ - org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$ - } - boolean notificationFlag = isNotificationEnabled(); - boolean hasChanged = false; - try { - setNotificationEnabled(false); - hasChanged = primUpdateMOFFeature(map, node, mofObject); - } finally { - setNotificationEnabled(notificationFlag); - } - - if (map.isTargetLinkMap() && hasChanged) - updateMOFLinkFeature(map, node, mofObject); - } - - /** - * @param map - * @param node - * @param mofObject - */ - public void updateMOFCommentFeature(Translator map, Node node, EObject mofObject) { - Node commentNode = node; - /* scan up the dom to find the first comment node before this node */ - while ((commentNode = commentNode.getPreviousSibling()) != null && commentNode.getNodeType() != Node.COMMENT_NODE) { - /* no comment available */ - if (commentNode.getNodeType() == Node.ELEMENT_NODE) - return; - } - if (commentNode != null) - map.setMOFValue(mofObject, commentNode.getNodeValue()); - - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRenderer.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRenderer.java deleted file mode 100644 index 206860d42..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRenderer.java +++ /dev/null @@ -1,264 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.HashMap; -import java.util.Map; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.TransformerFactoryConfigurationError; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.eclipse.emf.common.util.WrappedException; -import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.jem.util.logger.proxy.Logger; -import org.eclipse.wst.common.internal.emf.utilities.DOMLoadOptions; -import org.eclipse.wst.common.internal.emf.utilities.DOMUtilities; -import org.eclipse.wst.common.internal.emf.utilities.Revisit; -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - - - -public class EMF2DOMRenderer extends AbstractRendererImpl implements Renderer { - - protected Map domAdapterRegistry; - protected boolean needsToCreateDOM = true; - protected Document document; - - /** - * Constructor for DOMRendererImpl. - */ - public EMF2DOMRenderer() { - super(); - if (managesDOMAdapters()) - initDOMAdapterRegistry(); - } - - /** - * @see com.ibm.etools.emf2xml.Renderer#doLoad(InputStream, Map) - */ - public void doLoad(InputStream in, Map options) throws IOException { - if ((in != null) || !useStreamsForIO()) { - loadDocument(in, options); - EMF2DOMAdapter adapter = createRootDOMAdapter(); - adapter.updateMOF(); - } - } - - protected void loadDocument(InputStream in, Map options) throws IOException { - try { - DOMLoadOptions domOpts = new DOMLoadOptions(); - domOpts.setAllowJavaEncodings(true); - domOpts.setExpandEntityRefererences(true); - domOpts.setValidate(isValidating()); - document = DOMUtilities.loadDocument(in, domOpts, getResource().getEntityResolver()); - needsToCreateDOM = false; - } catch (RuntimeException t_rex) { - throw t_rex; - } catch (IOException iox) { - throw iox; - } catch (Exception ex) { - throw new WrappedException(ex); - } - } - - - /** - * @see com.ibm.etools.emf2xml.Renderer#doSave(OutputStream, Map) - */ - public void doSave(OutputStream outputStream, Map options) throws IOException { - createDOMTreeIfNecessary(); - serializeDocument(outputStream); - } - - /** - * Subclasses should override if adapters are not cached within this renderer, e.g., they are - * stored in notifying Nodes - */ - protected boolean managesDOMAdapters() { - return true; - } - - protected void initDOMAdapterRegistry() { - if (domAdapterRegistry == null) - domAdapterRegistry = new HashMap(); - } - - public void registerDOMAdapter(Node node, EMF2DOMAdapter adapter) { - domAdapterRegistry.put(node, adapter); - } - - public EMF2DOMAdapter getExistingDOMAdapter(Node node) { - return (EMF2DOMAdapter) domAdapterRegistry.get(node); - } - - public void removeDOMAdapter(Node aNode, EMF2DOMAdapter anAdapter) { - domAdapterRegistry.remove(aNode); - } - - /** - * @see com.ibm.etools.emf2xml.Renderer#prepareToAddContents() - */ - public void prepareToAddContents() { - // createDOMTreeIfNecessary(); - } - - protected Node createDOMTree() { - createDocument(); - EMF2DOMAdapter adapter = createRootDOMAdapter(); - adapter.updateDOM(); - needsToCreateDOM = false; - return document; - } - - - protected EMF2DOMAdapter createRootDOMAdapter() { - EMF2DOMAdapter root = new EMF2DOMAdapterImpl(getResource(), document, this, getResource().getRootTranslator()); - registerDOMAdapter(document, root); - return root; - } - - - protected void createDOMTreeIfNecessary() { - if (needsToCreateDOM) - createDOMTree(); - } - - /** - * Create a new Document given - * - * @aResource. - */ - protected void createDocument() { - TranslatorResource res = getResource(); - res.setDefaults(); - try { - document = DOMUtilities.createNewDocument(res.getDoctype(), res.getPublicId(), res.getSystemId()); - } catch (ParserConfigurationException e) { - throw new WrappedException(e); - } catch (SAXException e) { - throw new WrappedException(e); - } catch (IOException e) { - throw new WrappedException(e); - } - } - - public void serializeDocument(OutputStream out) throws IOException { - /* - * OutputFormat format = createOutputFormat(); Serializer serializer = - * SerializerFactory.getSerializerFactory(Method.XML).makeSerializer(out, format); - * serializer.asDOMSerializer().serialize(document); - */ - try { - TransformerFactory factory = TransformerFactory.newInstance(); - /* - * try { factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); } catch - * (IllegalArgumentException x) { } - */ - Transformer transformer = factory.newTransformer(); - - transformer.setOutputProperty(OutputKeys.ENCODING, getResource().getEncoding()); - transformer.setOutputProperty(OutputKeys.VERSION, getResource().getXMLVersion()); - transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$ - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); //$NON-NLS-1$ - if (getResource().getPublicId() != null) - transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, getResource().getPublicId()); - if (getResource().getSystemId() != null) - transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, getResource().getSystemId()); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$ - transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); //$NON-NLS-1$ //$NON-NLS-2$ - DOMSource source = new DOMSource(document.getDocumentElement()); - /* source.setSystemId(getResource().getSystemId()); */ - transformer.transform(source, new StreamResult(out)); - } catch (TransformerConfigurationException e) { - Logger.getLogger().logError(e); - } catch (TransformerFactoryConfigurationError e) { - Logger.getLogger().logError(e); - } catch (TransformerException e) { - Logger.getLogger().logError(e); - } finally { - } - } - - /* - * protected OutputFormat createOutputFormat() { OutputFormat format = new OutputFormat(); - * format.setIndenting(true); format.setLineSeparator(DOMUtilities.NEWLINE_STRING); - * //$NON-NLS-1$ format.setEncoding(getResource().getEncoding()); - * format.setVersion(getResource().getXMLVersion()); return format; } - */ - - public void replaceDocumentType(String docTypeName, String publicId, String systemId) { - Revisit.revisit(); - Document newDoc = null; - // Need be able to update the doctype directly on the existing document; right now can't - // because - // of limitations on parser neutral apis - - try { - newDoc = DOMUtilities.createNewDocument(docTypeName, publicId, systemId); - } catch (ParserConfigurationException e) { - throw new WrappedException(e); - } catch (SAXException e) { - throw new WrappedException(e); - } catch (IOException e) { - throw new WrappedException(e); - } - - - replaceNode(document.getDocumentElement(), newDoc, newDoc); - readapt(document, newDoc); - document = newDoc; - } - - protected void replaceNode(Node oldChild, Node newParent, Document newDoc) { - Node newChild = newDoc.importNode(oldChild, false); - newParent.appendChild(newChild); - readapt(oldChild, newChild); - NodeList children = oldChild.getChildNodes(); - int length = children.getLength(); - for (int i = 0; i < length; i++) { - replaceNode(children.item(i), newChild, newDoc); - } - } - - public void preUnload() { - EMF2DOMAdapter adapter = (EMF2DOMAdapter) EcoreUtil.getAdapter(resource.eAdapters(), EMF2DOMAdapter.ADAPTER_CLASS); - if (adapter != null) { - adapter.removeAdapters(adapter.getNode()); - } - } - - protected void readapt(Node oldChild, Node newChild) { - EMF2DOMAdapter adapter = getExistingDOMAdapter(oldChild); - if (adapter != null) { - registerDOMAdapter(newChild, adapter); - // Some nodes are managed by the parent and thus the - // node should not be set on the parent adapter - if (adapter.getNode() == oldChild) - adapter.setNode(newChild); - } - } - - public int getVersionID() { - return getResource().getVersionID(); - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRendererFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRendererFactory.java deleted file mode 100644 index fce560371..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRendererFactory.java +++ /dev/null @@ -1,29 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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; - - -public class EMF2DOMRendererFactory extends RendererFactory { - - public static final EMF2DOMRendererFactory INSTANCE = new EMF2DOMRendererFactory(); - - public EMF2DOMRendererFactory() { - super(); - } - - /** - * @see com.ibm.etools.emf2xml.RendererFactory#createRenderer() - */ - public Renderer createRenderer() { - EMF2DOMRenderer renderer = new EMF2DOMRenderer(); - renderer.setValidating(isValidating()); - return renderer; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRendererFactoryDefaultHandler.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRendererFactoryDefaultHandler.java deleted file mode 100644 index 1257a061a..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRendererFactoryDefaultHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Dec 1, 2003 - * - * To change the template for this generated file go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.wst.common.internal.emf.resource; - - -/** - * @author schacher - * - * To change the template for this generated type comment go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -public class EMF2DOMRendererFactoryDefaultHandler implements RendererFactoryDefaultHandler { - - public static final EMF2DOMRendererFactoryDefaultHandler INSTANCE = new EMF2DOMRendererFactoryDefaultHandler(); - - /** - * - */ - protected EMF2DOMRendererFactoryDefaultHandler() { - super(); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.RendererFactoryDefaultHandler#getDefaultRendererFactory() - */ - public RendererFactory getDefaultRendererFactory() { - return EMF2DOMRendererFactory.INSTANCE; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXDocumentHandler.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXDocumentHandler.java deleted file mode 100644 index 1ec3dbe9e..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXDocumentHandler.java +++ /dev/null @@ -1,210 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.io.IOException; - -import org.eclipse.jem.util.logger.proxy.Logger; -import org.xml.sax.Attributes; -import org.xml.sax.EntityResolver; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; -import org.xml.sax.helpers.DefaultHandler; - -/** - * The EMF2SAXDocumentHandler is utilized by the SAX parser to announce XML Events, such as - * beginning and end of XML elements and the contents of those elements. - * - * @author mdelder - */ -public class EMF2SAXDocumentHandler extends DefaultHandler { - - private TranslatorResource resource = null; - private final CacheEventStack eventStack = new CacheEventStack(); - private CacheEventPool availableEventPool = new CacheEventPool(); - - /** - * Create an EMF2SAXDocumentHandler to populate the given resource. - * - */ - public EMF2SAXDocumentHandler(TranslatorResource resource) { - this.resource = resource; - } - - /** - * @see org.xml.sax.helpers.DefaultHandler#resolveEntity(java.lang.String, java.lang.String) - */ - public InputSource resolveEntity(String publicId, String systemId) throws SAXException { - InputSource result = null; - this.resource.setDoctypeValues(publicId, systemId); - - try { - EntityResolver entityResolver = this.resource.getEntityResolver(); - - if (entityResolver != null) - result = entityResolver.resolveEntity(publicId, systemId); - else - result = super.resolveEntity(publicId, systemId); - } catch (IOException ioe) { - throw new SAXException(ioe); - } - - return result; - } - - /** - * @see org.xml.sax.ContentHandler#startDocument() - */ - public void startDocument() throws SAXException { - /* - * The endDocument() method should have frozen the pool, or it may not be warmed yet. In - * either case, this method call will do as little work as necessary - */ - availableEventPool.warmPool(); - - /* This line should not be necessary, but is left for safty */ - eventStack.clear(); - this.createRoot(this.resource); - - } - - /** - * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, - * java.lang.String, org.xml.sax.Attributes) - */ - public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { - addToStack(qName, attributes); - } - - /** - * @see org.xml.sax.ContentHandler#characters(char[], int, int) - */ - public void characters(char[] data, int start, int length) throws SAXException { - - CacheEventNode currentRecord = getCurrentRecord(); - if (currentRecord != null) { - currentRecord.appendToBuffer(data, start, length); - } - } - - /** - * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String, - * java.lang.String) - */ - public void endElement(String uri, String localName, String qName) throws SAXException { - - CacheEventNode currentRecord = null; - - /* - * This should only happen in the case where the DOMPath was ignored so the stack does not - * quite match with the XML data structure. In this case we do nothing - */ - if (qName.equals(this.getCurrentRecord().getNodeName())) { - currentRecord = this.removeCurrentRecord(); - if (currentRecord != null) { - currentRecord.commit(); - } - } - } - - /** - * @see org.xml.sax.ContentHandler#endDocument() - */ - public void endDocument() throws SAXException { - CacheEventNode lastRecord = this.removeCurrentRecord(); - lastRecord.commit(); - availableEventPool.freezePool(); - } - - /** - * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException) - */ - public void error(SAXParseException ex) throws SAXException { - throw ex; - } - - /** - * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException) - */ - public void fatalError(SAXParseException ex) throws SAXException { - throw ex; - } - - /** - * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException) - */ - public void warning(SAXParseException ex) throws SAXException { - Logger.getLogger().logWarning(ex); - } - - /** - * @return - */ - public TranslatorResource getResource() { - return resource; - } - - protected void createRoot(TranslatorResource resourceArg) { - this.eventStack.push(availableEventPool.createCacheEventNode(resourceArg)); - } - - protected void addToStack(String nodeName, Attributes attributes) { - CacheEventNode parent = this.getCurrentRecord(); - if (!parent.isChildIgnorable(nodeName)) { - this.eventStack.push(availableEventPool.createCacheEventNode(parent, nodeName, attributes)); - } - } - - /** - * Return the current CENO without removing it from the event stack. - * - * @return the current CENO without removing it - */ - protected CacheEventNode getCurrentRecord() { - CacheEventNode result = null; - if (!this.eventStack.isEmpty()) { - result = this.eventStack.peek(); - } - return result; - } - - /** - * Return the current CENO and remove it from the event stack. - * - * @return the current CENO and remove it - */ - protected CacheEventNode removeCurrentRecord() { - CacheEventNode result = null; - if (!this.eventStack.isEmpty()) { - result = this.eventStack.pop(); - } - return result; - } - - // private final void printStack() { - // // System.out.println("Printing stack ..."); - // // for (int i = 0; i < this.eventStack.size(); i++) { - // // debug("stack[" + i + "]: " + eventStack.get(i)); - // // } - // // System.out.println("... Printed stack"); - // } - // - // private final static void debug(Object obj) { - // // System.out.println(obj); - // } - // - // private final static void warn(Object obj) { - // //System.err.println(obj); - // } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java deleted file mode 100644 index 7bd2634e3..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java +++ /dev/null @@ -1,175 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Map; - -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.TransformerFactoryConfigurationError; -import javax.xml.transform.sax.SAXTransformerFactory; -import javax.xml.transform.sax.TransformerHandler; -import javax.xml.transform.stream.StreamResult; - -import org.eclipse.emf.common.util.WrappedException; -import org.eclipse.jem.util.logger.proxy.Logger; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import org.xml.sax.SAXNotRecognizedException; -import org.xml.sax.XMLReader; - -/** - * @author mdelder - */ -public class EMF2SAXRenderer extends AbstractRendererImpl { - - /** - * - */ - public EMF2SAXRenderer() { - super(); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#doLoad(java.io.InputStream, java.util.Map) - */ - public void doLoad(InputStream in, Map options) { - try { - SAXParserFactory factory = SAXParserFactory.newInstance(); - factory.setValidating(isValidating()); - factory.setNamespaceAware(true); - /* - * Causes errors in IBM JDK try { factory.setAttribute(JAXP_SCHEMA_LANGUAGE, - * W3C_XML_SCHEMA); } catch (IllegalArgumentException x) { } - */ - SAXParser parser = factory.newSAXParser(); - XMLReader reader = parser.getXMLReader(); - EMF2SAXDocumentHandler handler = new EMF2SAXDocumentHandler(this.getResource()); - try { - reader.setFeature("http://xml.org/sax/features/validation", isValidating()); //$NON-NLS-1$ - } catch (SAXNotRecognizedException snre) { - } - try { - reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true); //$NON-NLS-1$ - } catch (SAXNotRecognizedException snre) { - } - try { - reader.setFeature("http://apache.org/xml/features/validation/schema", isValidating()); //$NON-NLS-1$ - } catch (SAXNotRecognizedException e) { - reader.setFeature("http://xml.org/sax/features/validation", false); //$NON-NLS-1$ - Logger.getLogger().log("Warning: Parser does not support \"http://apache.org/xml/features/validation/schema\". Validation will be disabled."); //$NON-NLS-1$ - } - try { - reader.setFeature("http://apache.org/xml/features/allow-java-encodings", true); //$NON-NLS-1$ - } catch (SAXNotRecognizedException e) { - Logger.getLogger().log("Warning: Parser does not support \"http://apache.org/xml/features/allow-java-encodings\"."); //$NON-NLS-1$ - } - /* - * try { reader.setProperty("http://xml.org/sax/properties/lexical-handler", handler); } - * catch (SAXNotRecognizedException e) { } - */ - reader.setContentHandler(handler); - reader.setErrorHandler(handler); - //reader.setDTDHandler(handler); - reader.setEntityResolver(handler); - InputSource testsource = new InputSource(in); - reader.parse(testsource); - } catch (RuntimeException t_rex) { - throw t_rex; - } catch (Exception ex) { - throw new WrappedException(ex); - } - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#doSave(java.io.OutputStream, java.util.Map) - */ - public void doSave(OutputStream outputStream, Map options) throws IOException { - - /* - * try { Serializer serializer = - * SerializerFactory.getSerializerFactory(Method.XML).makeSerializer(outputStream, - * createOutputFormat()); serializer.setOutputByteStream(outputStream); ContentHandler - * handler = serializer.asContentHandler(); - */ - - TransformerHandler handler = null; - try { - try { - SAXTransformerFactory factory = (SAXTransformerFactory) TransformerFactory.newInstance(); - handler = factory.newTransformerHandler(); - - handler.setResult(new StreamResult(outputStream)); - Transformer transformer = handler.getTransformer(); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$ - transformer.setOutputProperty(OutputKeys.ENCODING, getResource().getEncoding()); - transformer.setOutputProperty(OutputKeys.VERSION, getResource().getXMLVersion()); - transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$ - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); //$NON-NLS-1$ - transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); //$NON-NLS-1$ //$NON-NLS-2$ - - if (getResource().getPublicId() != null) - transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, getResource().getPublicId()); - if (getResource().getSystemId() != null) - transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, getResource().getSystemId()); - - } catch (TransformerConfigurationException e) { - Logger.getLogger().logError(e); - } catch (TransformerFactoryConfigurationError e) { - Logger.getLogger().logError(e); - } - if (handler == null) { - Logger.getLogger("SAX Writer is null"); //$NON-NLS-1$ - return; - } - EMF2SAXWriter writer = new EMF2SAXWriter(); - writer.serialize(this.resource, handler); - } catch (SAXException saxe) { - throw new WrappedException(saxe); - } - } - - /* - * protected OutputFormat createOutputFormat() { OutputFormat format = new OutputFormat(); - * format.setIndenting(true); format.setLineSeparator(DOMUtilities.NEWLINE_STRING); - * //$NON-NLS-1$ format.setEncoding(getResource().getEncoding()); - * format.setVersion(getResource().getXMLVersion()); if (this.resource != null) - * format.setDoctype(this.resource.getPublicId(), this.resource.getSystemId()); return format; } - */ - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#prepareToAddContents() - */ - public void prepareToAddContents() { - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.Renderer#getVersionID() - */ - public int getVersionID() { - return getResource().getVersionID(); - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRendererFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRendererFactory.java deleted file mode 100644 index d3fd5d91b..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRendererFactory.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 19, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - - -/** - * Used to create instances of the EMF2SAXRenderer - * - * @author mdelder - */ -public class EMF2SAXRendererFactory extends RendererFactory { - - public static final EMF2SAXRendererFactory INSTANCE = new EMF2SAXRendererFactory(); - - protected EMF2SAXRendererFactory() { - super(); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.RendererFactory#createRenderer() - */ - public Renderer createRenderer() { - EMF2SAXRenderer renderer = new EMF2SAXRenderer(); - renderer.setValidating(isValidating()); - return renderer; - } - -}
\ No newline at end of file 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 deleted file mode 100644 index c5d08070e..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXWriter.java +++ /dev/null @@ -1,387 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.List; -import java.util.Stack; - -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; -import org.xml.sax.Attributes; -import org.xml.sax.ContentHandler; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.AttributesImpl; - -/** - * The EMF2SAXWriter handles the serialization of EMF Resources using SAX events. SAX events are - * triggered to the content handler as the tree is being parsed. These events can then be written - * into any stream wrapped by the ContentHandler. - * - * @author mdelder - */ -public class EMF2SAXWriter { - - public static final String NAMESPACE = "";//"http://java.sun.com/xml/ns/j2ee"; //$NON-NLS-1$ - - /* Used in those cases where no Attributes are necessary */ - private static final Attributes EMPTY_ATTRIBUTES = new AttributesImpl(); - - /** - * Serialize an EMF resource into an XML Stream using the given ContentHandler. Note that this - * method can also be used to copy a given EMF Resource if the EMF2SAXDocumentHandler is used as - * the given ContentHandler. - * - * @param resource - * @param handler - */ - public void serialize(TranslatorResource resource, ContentHandler handler) throws SAXException { - - Translator rootTranslator = resource.getRootTranslator(); - EList contents = resource.getContents(); - - if (contents.size() != 1) { - throw new IllegalStateException("The contents of a resource may only contain one EMF Model Object."); //$NON-NLS-1$ - } - handler.startDocument(); - EObject element = (EObject) contents.get(0); - serialize(handler, element, rootTranslator, new WriterHints(resource)); - handler.endDocument(); - - } - - private void serialize(ContentHandler handler, EObject target, Translator translator, WriterHints hints) throws SAXException { - - List mofChildren = null; - Object rawValue = null; - EObject newTarget = null; - Translator currentChildTranslator = null; - Translator nextTranslator = null; - char[] characterData = null; - String convertedValue = null; - Attributes attributes = null; - String childDomName = null; - final int version = hints.getVersion(); - - /* - * Processing hints are used to remember where are in the iteration of the translator's - * children. see the TranslatorFilter for more information on how this array is used. - */ - int[] processingHints = TranslatorFilter.createProcessingHints(); - - String targetDomName = translator.getDOMName(target); - - attributes = getAttributes(translator, target, hints); - - handler.startElement(NAMESPACE, targetDomName, targetDomName, attributes); - - currentChildTranslator = TranslatorFilter.getNextObjectTranslator(translator, processingHints[TranslatorFilter.NEXT_START_HINT_INDX], processingHints, target, version); - while (currentChildTranslator != null) { - /* For each Child Translator of the Translator parameter passed into the method */ - - /* Does the Translator have any MOF Children? */ - mofChildren = currentChildTranslator.getMOFChildren(target); - openDomPathIfNecessary(handler, hints, currentChildTranslator, target, mofChildren); - - if (currentChildTranslator.isManagedByParent()) { - /* - * Translators which are managed by their parents require less processing -- just - * convert their value to a string and write it out as the content of an XML element - */ - childDomName = currentChildTranslator.getDOMName(target); - if (!currentChildTranslator.isEmptyTag()) { - /* The Translator is not an Empty tag. Its text content is significant */ - - if (mofChildren.size() > 0) { - for (int j = 0; j < mofChildren.size(); j++) { - - /* Text only translators will not have open and close XML elements */ - if (!currentChildTranslator.isDOMTextValue()) - handler.startElement(NAMESPACE, childDomName, childDomName, EMPTY_ATTRIBUTES); - - rawValue = mofChildren.get(j); - /* convertValueToString should always return a non-null String */ - convertedValue = currentChildTranslator.convertValueToString(rawValue, target); - characterData = XMLEncoderDecoder.escape(convertedValue).toCharArray(); - handler.characters(characterData, 0, characterData.length); - - if (!currentChildTranslator.isDOMTextValue()) - handler.endElement(NAMESPACE, childDomName, childDomName); - } - } - } else { - /* - * The Translator is an Empty Element (its mere presence has significance) (e.g. - * <cascade-delete/> - */ - - if (currentChildTranslator.isBooleanFeature()) { - /* Boolean features may or may not be rendered */ - rawValue = mofChildren.get(0); - if (rawValue != null && ((Boolean) rawValue).booleanValue()) { - handler.startElement(NAMESPACE, childDomName, childDomName, EMPTY_ATTRIBUTES); - handler.endElement(NAMESPACE, childDomName, childDomName); - } - - } else { - /* Always render any other Empty elements */ - handler.startElement(NAMESPACE, childDomName, childDomName, EMPTY_ATTRIBUTES); - handler.endElement(NAMESPACE, childDomName, childDomName); - } - } - } else { - - /* The Translator is a more complex feature, handle its processing recursively */ - for (int j = 0; j < mofChildren.size(); j++) { - newTarget = (EObject) mofChildren.get(j); - serialize(handler, newTarget, currentChildTranslator, hints); - } - } - - /* Fetch the next peer translator */ - nextTranslator = TranslatorFilter.getNextObjectTranslator(translator, processingHints[TranslatorFilter.NEXT_START_HINT_INDX], processingHints, target, version); - - closeDomPathIfNecessary(handler, hints, currentChildTranslator, nextTranslator, target, mofChildren); - - /* - * We needed to invoke closeDomPathIfNecessary() with the peer, now we move on to - * process that peer - */ - currentChildTranslator = nextTranslator; - - } - handler.endElement(NAMESPACE, targetDomName, targetDomName); - } - - /** - * Determines whether or not a DOM Path should be rendered. This method is particularly useful - * for determining whether Empty XML elements are relevant and should be written to the XML - * stream. - * - * @param target - * The EMF Target of the Translation - * @param currentChildTranslator - * The current Translator - * @param mofChildren - * The mofChildren that were found for the Translator on the Target - * @return - */ - private boolean shouldRenderDomPath(EObject target, Translator currentChildTranslator, List mofChildren) { - return !currentChildTranslator.isEmptyContentSignificant() || (currentChildTranslator.shouldRenderEmptyDOMPath(target) || mofChildren.size() > 0); - } - - /** - * openDomPathIfNecessary will write the current DOM Path to the serialization stream if it has - * not been written by a previous peer translator. The processing results in the collapse of - * Peer Translators with matching DOM Paths into a single XML parent element. - * - * @param handler - * The ContentHandler which is writing the XML result - * @param hints - * A Global container for information specific to a single XML document - * @param currentChildTranslator - * The active Translator being processed - * @param target - * The EMF Target of the Translation - * @throws SAXException - */ - private void openDomPathIfNecessary(ContentHandler handler, WriterHints hints, Translator currentChildTranslator, EObject target, List mofChildren) throws SAXException { - - /* If the translator does not have a DOM Path, then we do nothing */ - if (currentChildTranslator.hasDOMPath() && shouldRenderDomPath(target, currentChildTranslator, mofChildren)) { - - String childDomPath = currentChildTranslator.getDOMPath(); - - /* - * IsDomPathActive() will verify whether this DOM Path has already been written to the - * XML stream - */ - if (!hints.isDomPathActive(childDomPath)) { - - /* - * Write an open element for the DOM Path and "remember" that we have written it - */ - handler.startElement(NAMESPACE, childDomPath, childDomPath, EMPTY_ATTRIBUTES); - hints.pushDomPath(childDomPath); - } - - } - } - - /** - * closeDomPathIfNecessary will determine whether the next peer Translator shares the active DOM - * Path of the current Translator. If the next peer Translator has the same DOM Path, no action - * will be taken (hence condensing the elements into a single XML parent). However, if the DOM - * Path differs (including the Next Peer Translator has no DOM Path) then the current DOM Path - * will be closed (a close XML element is generated. - * - * @param handler - * The ContentHandler which is writing the XML result - * @param hints - * A Global container for information specific to a single XML document - * @param currentChildTranslator - * The last Translator to have completed processing - * @param nextTranslator - * The next peer Translator that will become active - * @param target - * The EMF Target of the Translation - * @throws SAXException - */ - private void closeDomPathIfNecessary(ContentHandler handler, WriterHints hints, Translator currentChildTranslator, Translator nextTranslator, EObject target, List mofChildren) throws SAXException { - - if (currentChildTranslator.hasDOMPath() && shouldRenderDomPath(target, currentChildTranslator, mofChildren)) { - String childDomPath = currentChildTranslator.getDOMPath(); - if (nextTranslator != null) { /* - * There are more peers after this element, we can peek - * ahead - */ - String nextPeerDomPath = nextTranslator.getDOMPath(); - if (nextPeerDomPath == null || !nextPeerDomPath.equals(childDomPath)) { - handler.endElement(NAMESPACE, childDomPath, childDomPath); - hints.popDomPath(); - } - - } else { /* This was the last child element, we must close the dompath */ - handler.endElement(NAMESPACE, childDomPath, childDomPath); - hints.popDomPath(); - } - } - } - - /** - * Aggregate the Attribute translator children from a given translator. This method will request - * the AttributesImpl object from the WriterHints object. The WriterHints maintains this - * reusable collection to limit the requirement for new object creation. - * - * @param translator - * @param target - * @param hints - * @return an initialized set of Attributes for the given Translator and EMF Target - */ - private Attributes getAttributes(Translator translator, EObject target, WriterHints hints) { - - AttributesImpl attributes = hints.getAttributeHolder(); - int version = hints.getVersion(); - Object rawValue = null; - String convertedValue = null; - String childDomName = null; - Translator attributeTranslator = null; - int[] processingHints = TranslatorFilter.createProcessingHints(); - - while ((attributeTranslator = TranslatorFilter.getNextAttributeTranslator(translator, processingHints[TranslatorFilter.NEXT_START_HINT_INDX], processingHints, target, version)) != null) { - - List mofChildren = attributeTranslator.getMOFChildren(target); - if (mofChildren.size() > 0) { - for (int j = 0; j < mofChildren.size(); j++) { - - childDomName = attributeTranslator.getDOMName(target); - rawValue = mofChildren.get(j); - convertedValue = attributeTranslator.convertValueToString(rawValue, target); - convertedValue = XMLEncoderDecoder.escape(convertedValue); - attributes.addAttribute(NAMESPACE, childDomName, childDomName, "String", convertedValue); //$NON-NLS-1$ - } - - } else { - childDomName = attributeTranslator.getDOMName(target); - convertedValue = (String) attributeTranslator.getMOFValue(target); - if (convertedValue != null) - attributes.addAttribute(NAMESPACE, childDomName, childDomName, "String", convertedValue); //$NON-NLS-1$ - } - } - return attributes; - } - - /** - * WriterHints is used to "remember" certain pieces of information while the writer is - * processing. Of particular interest are the version and the state of the DOM Path output. - * Consecutive elements with consistent (identical) DOM Paths are collapsed under a single XML - * element. - * - * The WriterHints provides global state between recursive invocations of serialize(). It should - * be not be used to store local data (e.g. data that is only relevant to a single Translator in - * a given context). - * - * The WriterHints also stores an AttributesImpl object that is re-used to store attributes. The - * getAttributes() method will request the Attributes Holder. - * - * @author mdelder - */ - public final class WriterHints { - private final TranslatorResource resource; - private final Stack domStack = new Stack(); - private final AttributesImpl attributesImpl = new AttributesImpl(); - - public WriterHints(TranslatorResource res) { - this.resource = res; - } - - /** - * Push a new domPath onto the stack - * - * @param domPath - * a DOMPath which has been written to the XML stream - */ - public void pushDomPath(String domPath) { - - if (domPath != null && domPath.length() > 0) - domStack.push(domPath); - } - - /** - * Pop the current domPath from the Array - */ - public void popDomPath() { - - if (!domStack.isEmpty()) - domStack.pop(); - } - - /** - * Determines if the given DOMPath has already been written to the XML stream - * - * @param domPath - * @return true if the given DOMPath has already been written to the XML stream - */ - public boolean isDomPathActive(String domPath) { - boolean result = false; - if (!domStack.isEmpty()) { - - String currentDomPath = (String) domStack.peek(); - if (currentDomPath != null && domPath != null) - result = currentDomPath.equals(domPath); - else if (!(currentDomPath == null ^ domPath == null)) - result = true; - } - - return result; - } - - /** - * @return the version of the EMF Resource - */ - public int getVersion() { - return this.resource.getVersionID(); - } - - /** - * Returns an empty AttributesImpl object to store attributes. Within the context of a given - * WriterHints object (and hence single XML document), the object returned is a singleton. - * The same AttributesImpl object is cleared and reused for each invocation. - * - * @return an empty AttributesImpl object to store attributes - */ - public AttributesImpl getAttributeHolder() { - this.attributesImpl.clear(); - return this.attributesImpl; - } - - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/FileNameResourceFactoryRegistry.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/FileNameResourceFactoryRegistry.java deleted file mode 100644 index f2108595b..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/FileNameResourceFactoryRegistry.java +++ /dev/null @@ -1,91 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.Map; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.Resource.Factory; -import org.eclipse.wst.common.internal.emf.utilities.DefaultOverridableResourceFactoryRegistry; - - -public abstract class FileNameResourceFactoryRegistry extends DefaultOverridableResourceFactoryRegistry { - - private Map/*<String shortName, ResourceFactoryDescriptor>*/ descriptors = new HashMap(); - private Map/*<ResourceFactoryDescriptor, Resource.Factory>*/ factories = new HashMap(); - - public FileNameResourceFactoryRegistry() { - super(); - } - - /** - * Return a Resource.Factory that is registered with the last segment of the URI's file name. - * - * @see org.eclipse.emf.ecore.resource.impl.ResourceFactoryRegistryImpl#getFactory(URI) - */ - protected Object getFileNameFactory(URI uri) { - - if(uri != null) { - ResourceFactoryDescriptor descriptor = getDescriptor(uri); - - if(descriptor != null) { - return getFactory(descriptor); - } - } - return null; - - } - - public synchronized Resource.Factory getFactory(URI uri) { - - Resource.Factory resourceFactory = null; - if(uri != null && uri.lastSegment() != null) { - ResourceFactoryDescriptor descriptor = getDescriptor(uri); - - if(descriptor != null) { - resourceFactory = getFactory(descriptor); - } - } - if(resourceFactory == null) - resourceFactory = super.getFactory(uri); - return resourceFactory; - } - - /** - * Register a file name representing the last segment of a URI with the corresponding - * Resource.Factory. - */ - public synchronized void registerLastFileSegment(String aSimpleFileName, Resource.Factory aFactory) { - URI uri = URI.createURI(aSimpleFileName); - String lastSegment = uri.lastSegment(); - addDescriptor(new StaticResourceFactoryDescriptor(lastSegment, aFactory)); - } - - protected synchronized ResourceFactoryDescriptor getDescriptor(URI uri) { - return (ResourceFactoryDescriptor) descriptors.get(uri.lastSegment()); - } - protected synchronized Map getDescriptors() { - return descriptors; - } - - protected final synchronized Resource.Factory getFactory(ResourceFactoryDescriptor descriptor) { - Resource.Factory factory = (Factory) factories.get(descriptor); - if(factory == null) { - factories.put(descriptor, (factory = descriptor.createFactory())); - } - return factory; - } - - protected void addDescriptor(ResourceFactoryDescriptor descriptor) { - descriptors.put(descriptor.getShortSegment(), descriptor); - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/GenericTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/GenericTranslator.java deleted file mode 100644 index eafe09f36..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/GenericTranslator.java +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Mar 20, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EStructuralFeature; - -/** - * Specialized translator for objects that contain simple mappings with no specialized behavior. - */ -public class GenericTranslator extends Translator { - - protected Translator[] children; - - /** - * @param domNameAndPath - * @param eClass - */ - public GenericTranslator(String domNameAndPath, EClass eClass) { - super(domNameAndPath, eClass); - } - - /** - * @param domNameAndPath - * @param aFeature - */ - public GenericTranslator(String domNameAndPath, EStructuralFeature aFeature) { - super(domNameAndPath, aFeature); - } - - /** - * @param domNameAndPath - * @param aFeature - * @param path - */ - public GenericTranslator(String domNameAndPath, EStructuralFeature aFeature, TranslatorPath path) { - super(domNameAndPath, aFeature, path); - } - - /** - * @param domNameAndPath - * @param aFeature - * @param paths - */ - public GenericTranslator(String domNameAndPath, EStructuralFeature aFeature, TranslatorPath[] paths) { - super(domNameAndPath, aFeature, paths); - } - - /** - * @param domNameAndPath - * @param aFeature - * @param eClass - */ - public GenericTranslator(String domNameAndPath, EStructuralFeature aFeature, EClass eClass) { - super(domNameAndPath, aFeature, eClass); - } - - /** - * @param domNameAndPath - * @param aFeature - * @param style - */ - public GenericTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) { - super(domNameAndPath, aFeature, style); - } - - /** - * @return Translator[] - */ - public Translator[] getChildren() { - return children; - } - - /** - * Sets the children. - * - * @param children - * The children to set - */ - public void setChildren(Translator[] children) { - this.children = children; - } - - - public static Translator appendChildren(GenericTranslator tran, Translator[] child) { - Translator[] orgChild = tran.getChildren(); - Translator[] newChildren = (Translator[]) concat(orgChild, child); - tran.setChildren(newChildren); - return tran; - } - - public static Translator appendChild(GenericTranslator tran, Translator child) { - Object[] orgChild = tran.getChildren(); - Translator[] newChildren = (Translator[]) concat(orgChild, child); - tran.setChildren(newChildren); - return tran; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java deleted file mode 100644 index 15755f0e2..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Mar 19, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.EcorePackage; -import org.eclipse.emf.ecore.xmi.XMIResource; - -/** - * @author schacher - */ -public class IDTranslator extends Translator { - public class NoResourceException extends RuntimeException { - - public NoResourceException() { - super(); - } - - public NoResourceException(String s) { - super(s); - } - } - - static final public EStructuralFeature ID_FEATURE = EcorePackage.eINSTANCE.getEClass_EIDAttribute(); - static final public IDTranslator INSTANCE = new IDTranslator(); - - public IDTranslator() { - super("id", ID_FEATURE, DOM_ATTRIBUTE); //$NON-NLS-1$ - } - - public void setMOFValue(EObject emfObject, Object value) { - XMIResource res = (XMIResource) emfObject.eResource(); - if (res == null) - throw new NoResourceException(); - String id = res.getID(emfObject); - if (id == null && value == null) - return; - if ((id != null && !id.equals(value)) || (value != null && !value.equals(id))) - res.setID(emfObject, (String) value); - } - - public Object getMOFValue(EObject emfObject) { - if (emfObject == null) - throw new NoResourceException(); - XMIResource res = (XMIResource) emfObject.eResource(); - if (res == null) - throw new NoResourceException(); - return res.getID(emfObject); - } - - - public boolean featureExists(EObject emfObject) { - return true; - } - - public boolean isIDMap() { - return true; - } - - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IRootObjectResource.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IRootObjectResource.java deleted file mode 100644 index 0cdef3ac5..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IRootObjectResource.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.emf.ecore.EObject; - -public interface IRootObjectResource { - - public EObject getRootObject(); - -} diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/LinkUpdaterTarget.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/LinkUpdaterTarget.java deleted file mode 100644 index f5cd1f99b..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/LinkUpdaterTarget.java +++ /dev/null @@ -1,59 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.Iterator; -import java.util.List; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.util.EcoreUtil; -import org.w3c.dom.Node; - - -public class LinkUpdaterTarget extends Object { - - public static final LinkUpdaterTarget INSTANCE = new LinkUpdaterTarget(); - - /** - * Constructor for LinkUpdaterMultiTarget. - * - * @param adapter - */ - private LinkUpdaterTarget() { - super(); - } - - - public void updateDOM(Translator map, Node node, EObject mofObject) { - refreshSourceObjects(map, node, mofObject, true); - } - - public void updateMOF(Translator map, Node node, EObject mofObject) { - refreshSourceObjects(map, node, mofObject, false); - } - - protected void refreshSourceObjects(Translator map, Node node, EObject mofObject, boolean domUpdate) { - TranslatorPath[] paths = map.getTranslatorPaths(); - for (int i = 0; i < paths.length; i++) { - TranslatorPath path = paths[i]; - List allSourceObjects = path.findObjects(mofObject); - for (Iterator iter = allSourceObjects.iterator(); iter.hasNext();) { - EObject curObject = (EObject) iter.next(); - EMF2DOMAdapter curAdapter = (EMF2DOMAdapter) EcoreUtil.getAdapter(curObject.eAdapters(), EMF2DOMAdapter.class); - if (curAdapter != null) { - if (domUpdate) - curAdapter.updateDOM(); - else - curAdapter.updateMOF(); - } - } - } - } -}
\ No newline at end of file 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 ac27864eb..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MappedXMIHelper.java +++ /dev/null @@ -1,295 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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); - } -}
\ No newline at end of file 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 deleted file mode 100644 index abfcc8334..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MultiObjectTranslator.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Mar 31, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EStructuralFeature; - -/** - * @author schacher - */ -public abstract class MultiObjectTranslator extends Translator { - private static final Translator[] EMPTY_TRANSLATORS = new Translator[]{}; - - /** - * @param domNameAndPath - * @param aFeature - * @param style - */ - public MultiObjectTranslator(String domNameAndPath, EStructuralFeature aFeature) { - super(domNameAndPath, aFeature); - } - - public abstract Translator getDelegateFor(EObject o); - - public abstract Translator getDelegateFor(String domName, String readAheadName); - - - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#createEMFObject(java.lang.String, - * java.lang.String) - */ - public EObject createEMFObject(String nodeName, String readAheadName) { - return getDelegateFor(nodeName, readAheadName).createEMFObject(nodeName, readAheadName); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#getChildren(java.lang.Object) - */ - public Translator[] getChildren(Object o, int version) { - if (o == null) - return EMPTY_TRANSLATORS; - return getDelegateFor((EObject) o).getChildren(o, version); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#getDOMName(java.lang.Object) - */ - public String getDOMName(Object value) { - return getDelegateFor((EObject) value).getDOMName(value); - } - - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#isManagedByParent() - */ - public boolean isManagedByParent() { - return false; - } - - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/NamespaceTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/NamespaceTranslator.java deleted file mode 100644 index b266883e3..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/NamespaceTranslator.java +++ /dev/null @@ -1,112 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 14, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.wst.common.internal.emf.utilities.Namespace; -import org.eclipse.wst.common.internal.emf.utilities.NamespaceAdapter; - - -/** - * @author schacher - */ -public class NamespaceTranslator extends Translator { - - protected String prefix; - - /** - * @param domNameAndPath - * @param aFeature - */ - public NamespaceTranslator(String domName) { - super(domName, NamespaceAdapter.NOTIFICATION_FEATURE, DOM_ATTRIBUTE); - initPrefix(); - } - - private void initPrefix() { - String dName = getDOMName(null); - prefix = dName.substring(DefaultTranslatorFactory.XMLNS.length()); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#setMOFValue(org.eclipse.emf.ecore.EObject, - * java.lang.Object) - */ - public void setMOFValue(EObject emfObject, Object value) { - NamespaceAdapter.addNamespace(prefix, (String) value, emfObject); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#isSetMOFValue(org.eclipse.emf.ecore.EObject) - */ - public boolean isSetMOFValue(EObject emfObject) { - return getMOFValue(emfObject) != null; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#getMOFValue(org.eclipse.emf.ecore.EObject) - */ - public Object getMOFValue(EObject mofObject) { - return NamespaceAdapter.getNamespaceURIAtThisLevel(prefix, mofObject); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#unSetMOFValue(org.eclipse.emf.ecore.EObject) - */ - public void unSetMOFValue(EObject emfObject) { - NamespaceAdapter.removeNamespace(prefix, emfObject); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#featureExists(org.eclipse.emf.ecore.EObject) - */ - public boolean featureExists(EObject emfObject) { - return true; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#isDataType() - */ - public boolean isDataType() { - return true; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#isMapFor(java.lang.Object, java.lang.Object, - * java.lang.Object) - */ - public boolean isMapFor(Object aFeature, Object oldValue, Object newValue) { - if (aFeature == feature) { - Namespace namespace = (Namespace) (oldValue == null ? newValue : oldValue); - if (namespace != null) - return prefix.equals(namespace.getPrefix()); - } - return false; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ObjectTranslatorFilter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ObjectTranslatorFilter.java deleted file mode 100644 index 918b9ce85..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ObjectTranslatorFilter.java +++ /dev/null @@ -1,35 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 Sep 21, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - - -public final class ObjectTranslatorFilter extends TranslatorFilter { - - public ObjectTranslatorFilter() { - super(null, -1); - } - - public ObjectTranslatorFilter(Translator trans, int version) { - super(trans, version); - } - - public final int scanNextTranslator(Translator[] children, int start) { - int found = start + 1; - for (; found < children.length; ++found) { - if (!children[found].isDOMAttribute()) - break; - } - found = (found < children.length) ? found : -1; - return found; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReadAheadHelper.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReadAheadHelper.java deleted file mode 100644 index a7d1a23f8..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReadAheadHelper.java +++ /dev/null @@ -1,92 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Apr 2, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -/** - * @author schacher - */ -public class ReadAheadHelper { - - protected String parentDOMName; - protected String[] values; - protected String childDOMName; - - public ReadAheadHelper(String parentDOMName, String[] values, String childDOMName) { - super(); - this.parentDOMName = parentDOMName; - this.values = values; - this.childDOMName = childDOMName; - } - - /** - * @return - */ - public String getChildDOMName() { - return childDOMName; - } - - /** - * @return - */ - public String getParentDOMName() { - return parentDOMName; - } - - /** - * @return - */ - public String[] getValues() { - return values; - } - - /** - * @param string - */ - public void setChildDOMName(String string) { - childDOMName = string; - } - - /** - * @param string - */ - public void setParentDOMName(String string) { - parentDOMName = string; - } - - /** - * @param strings - */ - public void setValues(String[] strings) { - values = strings; - } - - - public boolean nodeValueIsReadAheadName(String nodeName) { - - return (childDOMName != null) ? childDOMName.equals(nodeName) : false; - } - - public boolean nodeNameIsReadAheadName(String nodeName) { - boolean result = false; - for (int i = 0; i < values.length; i++) { - if (nodeName.equals(values[i])) { - result = true; - break; - } - } - return result; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedResource.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedResource.java deleted file mode 100644 index 4aafc233a..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedResource.java +++ /dev/null @@ -1,128 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 org.eclipse.emf.ecore.resource.Resource; - -public interface ReferencedResource extends Resource, CompatibilityXMIResource { - //TODO - rename packaged - - public static final String DELETED_ERROR_MSG = "This resource has been deleted and can no longer be used."; //$NON-NLS-1$ - - public static final int RESOURCE_WAS_SAVED = 601; - - /** - * A flag used to indicate a ReferencedResource is about - * to save. - */ - public static final int RESOURCE_ABOUT_TO_SAVE = 602; - - /** - * A flag used to indicate a ReferencedResource has failed - * to save. - */ - public static final int RESOURCE_SAVE_FAILED = 603; - - /** - * Access this resource for read only. This call increments the use read count of this resource. - * Clients should call this method before they use the resource. They should call - * releaseFromRead() after they are done modifying this resource. - */ - void accessForRead(); - - /** - * Access this resource for write only. This call increments the use write count of this - * resource. Clients should call this method before they modify the resource. They should call - * releaseFromWrite() after they are done modifying this resource. - */ - void accessForWrite(); - - /** - * Return true if this resource has just been loaded and not yet accessed for read or write. - */ - boolean isNew(); - - /** - * Return true if this resource does not have any write references. - */ - boolean isReadOnly(); - - /** - * Return true if this resource is shared for read or write by more than one accessor. - */ - boolean isShared(); - - /** - * Return true if this resource is shared for write by more than one accessor. - */ - boolean isSharedForWrite(); - - /** - * Release read the access to this resource. This call decrements the use count of this resource - * and will remove the resource from its resource set if the use count goes to 0. Clients should - * call this method when they are done accessing the resource and only after they have called - * accessForRead() to obtain access. - */ - void releaseFromRead(); - - /** - * Release write the access to this resource. This call decrements the write count of this - * resource and will remove the resource from its resource set if the use count goes to 0. - * Clients should call this method when they are done accessing the resource and only after they - * have called accessForWrite() to obtain access. - */ - void releaseFromWrite(); - - /** - * Saves this resource only if the write count is equal to 1. - */ - void saveIfNecessary() throws Exception; - - /** - * Return true if this resource is dirty and is not shared for write. - */ - boolean needsToSave(); - - - - /** - * Set whether we should allow a refresh to take place even when this resource is dirty. - * - * @param b - */ - void setForceRefresh(boolean b); - - /** - * Return whether we should allow a refresh to take place even when this resource is dirty. - */ - boolean shouldForceRefresh(); - - boolean wasReverted(); - - /** - * Returns the number of open read accesses on this resource - * - * @return - */ - int getReadCount(); - - /** - * Returns the number of open write accesses on this resource - * - * @return - */ - int getWriteCount(); - - /** - * If the resource is no longer being accessed, then remove it from the resource set. - */ - void unloadIfNecessary(); -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIFactoryImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIFactoryImpl.java deleted file mode 100644 index d891c2cda..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIFactoryImpl.java +++ /dev/null @@ -1,100 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.ArrayList; -import java.util.List; - -import org.eclipse.emf.common.notify.AdapterFactory; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; - -public class ReferencedXMIFactoryImpl extends ResourceFactoryImpl { - - protected static List globalAdapterFactories; - protected List localAdapterFactories; - - /** - * ReferencedXMIFactoryImpl constructor comment. - */ - public ReferencedXMIFactoryImpl() { - super(); - } - - /** - * This is the method that subclasses can override to actually instantiate a new Resource - * - * @param uri - * @return - */ - protected Resource doCreateResource(URI uri) { - return new ReferencedXMIResourceImpl(uri); - } - - /** - * @see org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl#createResource(URI) - */ - public final Resource createResource(URI uri) { - Resource res = doCreateResource(uri); - adaptNew(res); - return res; - } - - protected void adaptNew(Resource res) { - if (globalAdapterFactories != null) { - for (int i = 0; i < globalAdapterFactories.size(); i++) { - AdapterFactory factory = (AdapterFactory) globalAdapterFactories.get(i); - factory.adaptAllNew(res); - } - } - if (localAdapterFactories != null) { - for (int i = 0; i < localAdapterFactories.size(); i++) { - AdapterFactory factory = (AdapterFactory) localAdapterFactories.get(i); - factory.adaptAllNew(res); - } - } - } - - /** - * The local adapter factory is an adapter factory that you use to only adapt the resource - * specific to the ResourceFactory instance. - * - * @param factory - */ - public void addLocalAdapterFactory(AdapterFactory factory) { - if (localAdapterFactories == null) - localAdapterFactories = new ArrayList(3); - localAdapterFactories.add(factory); - } - - public void removeLocalAdapterFactory(AdapterFactory factory) { - if (localAdapterFactories != null) - localAdapterFactories.remove(factory); - } - - /** - * A global adapter factory will be used to adapt any resource created by any ResourceFactory - * instance. - * - * @param factory - */ - public static void addGlobalAdapterFactory(AdapterFactory factory) { - if (globalAdapterFactories == null) - globalAdapterFactories = new ArrayList(3); - globalAdapterFactories.add(factory); - } - - public static void removeGlobalAdapterFactory(AdapterFactory factory) { - if (globalAdapterFactories != null) - globalAdapterFactories.remove(factory); - } -} - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java deleted file mode 100644 index 5f01fead3..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java +++ /dev/null @@ -1,403 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.Notifier; -import org.eclipse.emf.common.notify.impl.NotificationImpl; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.jem.util.logger.proxy.Logger; -import org.eclipse.wst.common.internal.emf.utilities.IDUtil; - -public class ReferencedXMIResourceImpl extends CompatibilityXMIResourceImpl implements ReferencedResource { - //TODO Add toString hook - private static final String TO_STRING = "ReferencedXMIResource, file = "; //$NON-NLS-1$ - private static final String READ_COUNT_TO_STRING = " R= "; //$NON-NLS-1$ - private static final String WRITE_COUNT_TO_STRING = " W= "; //$NON-NLS-1$ - - private int readReferenceCount = 1; - private int editReferenceCount = 0; - protected boolean isNew = true; - protected boolean forceRefresh; - - public static class ESynchronizedAdapterList extends EAdapterList - { - - public ESynchronizedAdapterList(Notifier notifier) { - super(notifier); - } - - public synchronized boolean add(Object object) - { - return super.add(object); - } - - public synchronized void add(int index, Object object) - { - super.add(index, object); - } - - public synchronized boolean addAll(Collection collection) - { - return super.addAll(collection); - } - - public synchronized boolean remove(Object object) - { - return super.remove(object); - } - - public synchronized Object remove(int index) - { - return super.remove(index); - } - - public synchronized boolean removeAll(Collection collection) - { - return super.removeAll(collection); - } - - public synchronized void clear() - { - super.clear(); - } - - - public synchronized Object set(int index, Object object) - { - return super.set(index, object); - } - - public synchronized void move(int newPosition, Object object) - { - super.move(newPosition, object); - } - - public synchronized Object move(int newPosition, int oldPosition) - { - return super.move(newPosition, oldPosition); - } - } - - - /** - * ReferencableXMIResourceImpl constructor comment. - */ - public ReferencedXMIResourceImpl() { - super(); - } - - public ReferencedXMIResourceImpl(URI uri) { - super(uri); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.wst.common.internal.emf.resource.ReferencedResource#getReadCount() - */ - public int getReadCount() { - return readReferenceCount; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.wst.common.internal.emf.resource.ReferencedResource#getWriteCount() - */ - public int getWriteCount() { - return editReferenceCount; - } - - - - /* - * @see ReferencedResource#accessForRead - */ - public void accessForRead() { - checkDeleted(); - if (!isNew()) - readReferenceCount++; - isNew = false; - } - - /* - * @see ReferencedResource#accessForWrite - */ - public void accessForWrite() { - checkDeleted(); - editReferenceCount++; - if (isNew) - releaseFromRead(); - isNew = false; - if (!isTrackingModification()) - setTrackingModification(true); - } - - /* - * Check if this resource has been removed and throw an exception if it does not have a - * ResourceSet. - */ - protected void checkDeleted() { - if (getResourceSet() == null) - throw new RuntimeException(DELETED_ERROR_MSG); - } - - /** - * - */ - public void collectContainedObjects(java.util.List collecting, EObject parentObject) { - - java.util.Iterator children = parentObject.eContents().iterator(); - while (children.hasNext()) { - EObject child = (EObject) children.next(); - collecting.add(child); - collectContainedObjects(collecting, child); - } - } - - /** - * - */ - public void ensureFullIDHydration() { - List allRefObjects = new ArrayList(); - Iterator rootObjects = getContents().iterator(); - while (rootObjects.hasNext()) { - EObject child = (EObject) rootObjects.next(); - allRefObjects.add(child); - collectContainedObjects(allRefObjects, child); - } - - Iterator iter = allRefObjects.iterator(); - while (iter.hasNext()) - IDUtil.assignID((EObject) iter.next(), this); - } - - /** - * If the resource is no longer being accessed, then remove it from the resource set. - */ - public void unloadIfNecessary() { - if ((getTotalReferenceCount() <= 0) || (editReferenceCount <= 0 && isModified())) - unload(); - } - - /** - * Return the number of write accesses to this resource. - * - * @return int The number of references. - */ - protected int getTotalReferenceCount() { - return editReferenceCount + readReferenceCount; - } - - /* - * @see ReferencedResource#isNew - */ - public boolean isNew() { - return isNew; - } - - /* - * @see ReferencedResource#isReadOnly - */ - public boolean isReadOnly() { - return editReferenceCount <= 0; - } - - /* - * @see ReferencedResource#isShared - */ - public boolean isShared() { - return getTotalReferenceCount() > 1; - } - - /* - * @see ReferencedResource#isSharedForWrite - */ - public boolean isSharedForWrite() { - return editReferenceCount > 1; - } - - /** - * @see ReferencedResource#preDelete - */ - public void preDelete() { - } - - /* - * @see ReferencedResource#releaseFromRead - */ - public void releaseFromRead() { - readReferenceCount--; - if (readReferenceCount < 0) - throw new RuntimeException("Read reference count error: " + this.toString()); //$NON-NLS-1$ - unloadIfNecessary(); - } - - /* - * @see ReferencedResource#releaseFromWrite - */ - public void releaseFromWrite() { - editReferenceCount--; - if (editReferenceCount < 0) - throw new RuntimeException("Write reference count error: " + this.toString()); //$NON-NLS-1$ - unloadIfNecessary(); - } - - /* - * @see ReferencedResource#saveIfNecessary - */ - public void saveIfNecessary() throws Exception { - if (!isSharedForWrite()) // caller is the only referencer - save(Collections.EMPTY_MAP); - } - - public String toString() { - return TO_STRING + getURI().toString() + READ_COUNT_TO_STRING + new Integer(readReferenceCount) + WRITE_COUNT_TO_STRING + new Integer(editReferenceCount); - } - - /* - * @see ReferencedResource#needsToSave() - */ - public boolean needsToSave() { - return isModified() && !isSharedForWrite(); - } - - - /** - * @see ReferencedResource#setForceRefresh(boolean) - */ - public void setForceRefresh(boolean b) { - forceRefresh = b; - } - - /** - * @see ReferencedResource#shouldForceRefresh() - */ - public boolean shouldForceRefresh() { - return forceRefresh; - } - - protected void basicDoLoad(InputStream arg0, Map arg1) throws IOException { - boolean isTrackingMods = isTrackingModification(); - try { - if (isTrackingMods) - setTrackingModification(false); - super.basicDoLoad(arg0, arg1); - } finally { - if (isTrackingMods) - setTrackingModification(true); - } - } - - /** - * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doUnload() - */ - protected void doUnload() { - if (isTrackingModification() && editReferenceCount < 1) //do not turn off modification if - // we still have a write count - setTrackingModification(false); - super.doUnload(); - setForceRefresh(false); - setModified(false); //dcb - this is required to ensure that resources without files are - // marked as not modified. - if (readReferenceCount == 0 && editReferenceCount == 0) { - getResourceSet().getResources().remove(this); - } - - } - - - /** - * The resource has been unloaded, and there are no references. Treat the resource like a new - * Resource - */ - // never used -// private void resetAsNew() { -// readReferenceCount = 1; -// isNew = true; -// } - - /** - * @see org.eclipse.emf.ecore.resource.Resource#save(Object) - */ - public void save(Map options) throws IOException { - notifyAboutToSave(); - try { - super.save(options); - } catch (Exception e) { - notifySaveFailed(); - if (e instanceof IOException) - throw (IOException) e; - else - Logger.getLogger().write(e); - } - notifySaved(); - } - - protected void notifySaved() { - notifySaveEvent(RESOURCE_WAS_SAVED); - } - - protected void notifyAboutToSave() { - notifySaveEvent(RESOURCE_ABOUT_TO_SAVE); - } - - protected void notifySaveFailed() { - notifySaveEvent(RESOURCE_SAVE_FAILED); - } - - private void notifySaveEvent(int eventType) { - if (eNotificationRequired()) { - Notification notification = - new NotificationImpl(eventType, this, this) - { - public Object getNotifier() - { - return ReferencedXMIResourceImpl.this; - } - public int getFeatureID(Class expectedClass) - { - return eventType; - } - }; - eNotify(notification); - } - } - - /** - * @see com.ibm.etools.emf.workbench.ReferencedResource#wasReverted() - */ - public boolean wasReverted() { - return false; - } - - public EList eAdapters() - { - if (eAdapters == null) - { - eAdapters = new ESynchronizedAdapterList(this); - } - return eAdapters; - } - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Renderer.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Renderer.java deleted file mode 100644 index 6768cd178..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Renderer.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Map; - -/** - * Interface that defines the api for rendering an EMF object to XML and vice versa - */ -public interface Renderer { - - public static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; //$NON-NLS-1$ - - public static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema"; //$NON-NLS-1$ - - void setResource(TranslatorResource aResource); - - TranslatorResource getResource(); - - void doLoad(InputStream in, Map options) throws IOException; - - void doSave(OutputStream outputStream, Map options) throws IOException; - - boolean useStreamsForIO(); - - void prepareToAddContents(); - - int getVersionID(); - - boolean isModified(); - - void accessForWrite(); - - void accessForRead(); - - void releaseFromRead(); - - void releaseFromWrite(); - - void preDelete(); - - void preUnload(); - - boolean isShared(); - - boolean isSharedForWrite(); - - void setBatchMode(boolean isBatch); - - boolean isBatchMode(); -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RendererFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RendererFactory.java deleted file mode 100644 index 9f294d32a..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RendererFactory.java +++ /dev/null @@ -1,157 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; - - -public abstract class RendererFactory { - - public abstract Renderer createRenderer(); - - private static RendererFactory defaultRendererFactory; - - private static RendererFactoryDefaultHandler defaultHandler; - - private boolean validating = true; - - /** - * Interested parties can use the - */ - public final static Notifier NotificationEngine = Notifier.INSTANCE; - - /** - * @return - */ - public static RendererFactory getDefaultRendererFactory() { - if (defaultRendererFactory == null) - defaultRendererFactory = getDefaultHandler().getDefaultRendererFactory(); - return defaultRendererFactory; - } - - /** - * @param factory - */ - public static void setDefaultRendererFactory(RendererFactory factory) { - - //System.out.println("\n\n***Setting factory: " + factory); - NotificationEngine.notifyListeners(factory); - defaultRendererFactory = factory; - } - - public String toString() { - return "RendererFactory instance: " + getClass().getName(); //$NON-NLS-1$ - } - - public static class Notifier { - - private static final Notifier INSTANCE = new Notifier(); - - private final Collection resourceFactoryListeners = new ArrayList(); - - private Notifier() { - } - - public void notifyListeners(RendererFactory rendererFactory) { - - final int length = resourceFactoryListeners.size(); - //System.out.println("Notifying " + length + " listeners"); - - if (length > 0) { - /* - * Since the renderer factories are singletons, this reference check should always - * work - */ - if (rendererFactory != RendererFactory.getDefaultRendererFactory()) { - WeakReference wref = null; - Listener listener = null; - synchronized (resourceFactoryListeners) { - for (Iterator i = resourceFactoryListeners.iterator(); i.hasNext();) { - wref = (WeakReference) i.next(); - listener = (Listener) wref.get(); - //System.out.println("Notifying Listener: " + listener); - if (listener != null) - listener.updateRendererFactory(rendererFactory); - else - i.remove(); - } - } - } - } - } - - public void addListener(Listener l) { - //System.out.println("Adding listener: " + l); - synchronized (resourceFactoryListeners) { - resourceFactoryListeners.add(new WeakReference(l)); - } - } - - public void removeListener(Listener listenerToRemove) { - final int length = resourceFactoryListeners.size(); - if (length > 0) { - WeakReference wref = null; - Listener listener = null; - synchronized (resourceFactoryListeners) { - for (Iterator i = resourceFactoryListeners.iterator(); i.hasNext();) { - wref = (WeakReference) i.next(); - listener = (Listener) wref.get(); - if (listener != null) { - if (listener == listenerToRemove) { - i.remove(); - break; - } - } else { - i.remove(); - } - } - } - } - } - - } - - public interface Listener { - void updateRendererFactory(RendererFactory newRendererFactory); - } - - /** - * @return - */ - public boolean isValidating() { - return validating; - } - - /** - * @param b - */ - public void setValidating(boolean b) { - validating = b; - } - - /** - * @return - */ - public static RendererFactoryDefaultHandler getDefaultHandler() { - if (defaultHandler == null) - defaultHandler = EMF2DOMRendererFactoryDefaultHandler.INSTANCE; - return defaultHandler; - } - - /** - * @param handler - */ - public static void setDefaultHandler(RendererFactoryDefaultHandler handler) { - defaultHandler = handler; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RendererFactoryDefaultHandler.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RendererFactoryDefaultHandler.java deleted file mode 100644 index 575df4fe2..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RendererFactoryDefaultHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Dec 1, 2003 - * - * To change the template for this generated file go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.wst.common.internal.emf.resource; - - -/** - * @author schacher - * - * To change the template for this generated type comment go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -public interface RendererFactoryDefaultHandler { - - RendererFactory getDefaultRendererFactory(); - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ResourceFactoryDescriptor.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ResourceFactoryDescriptor.java deleted file mode 100644 index ab3a7bd5f..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ResourceFactoryDescriptor.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; - -public abstract class ResourceFactoryDescriptor { - - - /** - * Returns true if the current descriptor is applicable to the given fileURI. - * - * @param fileURI The URI of the file to be loaded - * @return True if the current descriptor declares a resource factory applicable to the given URI. - */ - public abstract boolean isEnabledFor(URI fileURI); - - /** - * The contentType is one optional way that a ResourceFactory - * might apply to a URI. Clients should call {@link isEnabledFor} - * instead of comparing the content Types when searching for an - * applicable descriptor from a set. - * - * <p><b>Subclasses may return null.(optional)</b></p> - * - * @return The content type that this descriptor is applicable to. - */ - public IContentType getContentType(){ - return null; - } - - /** - * In the case where more than one factory is defined for the same fileName, - * and creation is passed a uri only a default factory is needed - * - * - * @return The boolean describing the default factory - */ - public boolean isDefault(){ - return true; - } - - /** - * The short segment is one possible way that a ResourceFactory - * might apply to a URI. Clients should call {@link isEnabledFor} - * instead of comparing the short segments when searching for an - * applicable descriptor from a set. - * - * <p><b>Subclasses may NOT return null.</b></p> - * - * @return The short segment that this descriptor is applicable to. - */ - public abstract String getShortSegment(); - - - /** - * The correct instance of Resource.Factory. The instance returned - * may or may not be unique, so if you require the same instance - * for each call, you should cache the value returned the first - * time from this method. - * - * @return An instance of Resource.Factory. - */ - public abstract Resource.Factory createFactory(); - - public int hashCode() { - return getShortSegment().hashCode(); - } - - public boolean equals(Object o) { - if(o instanceof ResourceFactoryDescriptor) - return getShortSegment().equals(((ResourceFactoryDescriptor)o).getShortSegment()); - return false; - } -} diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RootTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RootTranslator.java deleted file mode 100644 index 1de7966d4..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RootTranslator.java +++ /dev/null @@ -1,63 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 org.eclipse.emf.common.notify.Notifier; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; - -public class RootTranslator extends Translator { - - /** - * Constructor for RootTranslator. - * - * @param domNameAndPath - * @param eClass - */ - public RootTranslator(String domNameAndPath, EClass eClass) { - super(domNameAndPath, eClass); - } - - /** - * @see com.ibm.etools.emf2xml.impl.Translator#setMOFValue(Notifier, Object, int) - */ - public void setMOFValue(Notifier owner, Object value, int newIndex) { - ((Resource) owner).getContents().add(newIndex, (EObject)value); - } - - /** - * @see com.ibm.etools.emf2xml.impl.Translator#removeMOFValue(Notifier, Object) - */ - public void removeMOFValue(Notifier owner, Object value) { - ((Resource) owner).getContents().remove(value); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#setMOFValue(org.eclipse.emf.ecore.EObject, - * java.lang.Object) - */ - public void setMOFValue(Resource res, Object value) { - if (res != null && value != null) - res.getContents().add((EObject)value); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#isMultiValued() - */ - public boolean isMultiValued() { - return true; - } - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/SourceLinkTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/SourceLinkTranslator.java deleted file mode 100644 index d5d697bb7..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/SourceLinkTranslator.java +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Apr 1, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EStructuralFeature; - -/** - * @author schacher - */ -public class SourceLinkTranslator extends Translator { - - - /** - * @param domNameAndPath - * @param aFeature - * @param path - */ - public SourceLinkTranslator(String domNameAndPath, EStructuralFeature aFeature, TranslatorPath path) { - super(domNameAndPath, aFeature, path); - } - - /** - * @param domNameAndPath - * @param aFeature - * @param path - */ - public SourceLinkTranslator(String domNameAndPath, EStructuralFeature aFeature, TranslatorPath path, int style) { - super(domNameAndPath, aFeature, path); - fStyle |= style; - } - - /** - * @param domNameAndPath - * @param aFeature - * @param style - */ - public SourceLinkTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) { - super(domNameAndPath, aFeature, style); - } - - public Object convertStringToValue(String strValue, EObject owner) { - - Object value = null; - if (strValue != null) - // Find the object with the name that matches matchName - value = fTranslatorPaths[0].findObject(owner, strValue.trim()); - if ((fStyle & Translator.STRING_RESULT_OK) != 0) - return ((value != null) ? value : strValue); - return value; - } - - public String convertValueToString(Object value, EObject owner) { - TranslatorPath path = fTranslatorPaths[0]; - Object attrValue = path.getLastMap().getMOFValue((EObject) value); - return path.getLastMap().convertValueToString(attrValue, owner); - } - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/StaticResourceFactoryDescriptor.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/StaticResourceFactoryDescriptor.java deleted file mode 100644 index 491b4c6d6..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/StaticResourceFactoryDescriptor.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; - -/** - * Declares a subclass to create Resource.Factory(ies) from an extension. - */ -class StaticResourceFactoryDescriptor extends ResourceFactoryDescriptor { - - private final String shortSegment; - private final Resource.Factory factory; - - /** - * - * @param shortSegment A non-null name of the file associated with the given factory - * @param factory A non-null Resource.Factory that can load files of the given name - */ - public StaticResourceFactoryDescriptor(String shortSegment, Resource.Factory factory) { - Assert.isNotNull(shortSegment); - Assert.isNotNull(factory); - this.shortSegment = shortSegment; - this.factory = factory; - } - - public boolean isEnabledFor(URI fileURI) { - /* shortSegment must be non-null for the descriptor to be created, - * a validation check in init() verifies this requirement */ - if(fileURI != null && fileURI.lastSegment() != null) - return shortSegment.equals(fileURI.lastSegment()); - return false; - } - - public Resource.Factory createFactory() { - return factory; - } - - public String getShortSegment() { - return shortSegment; - } -} 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 deleted file mode 100644 index 812b4d027..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java +++ /dev/null @@ -1,792 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.eclipse.emf.common.notify.Notifier; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EDataType; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EReference; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.EcorePackage; -import org.eclipse.emf.ecore.impl.EStructuralFeatureImpl; -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; - - -public class Translator { - - public final static int NO_STYLE = 0; - public final static int DOM_ATTRIBUTE = 1; - public final static int EMPTY_TAG = 1 << 1; - public final static int CDATA_CONTENT = 1 << 2; - /** - * Style bit that indicates that the end tag should NOT be indented; by default it is. - */ - public final static int END_TAG_NO_INDENT = 1 << 3; - /** - * Style bit that indicates that booleans should NOT be converted as "True" and "False"; default - * is that they are - */ - public final static int BOOLEAN_LOWERCASE = 1 << 4; - /** - * Style bit that indicates an enum value contains hyphens If this is true, then internally the - * hyphens are replaced with underscores - */ - public final static int ENUM_FEATURE_WITH_HYPHENS = 1 << 5; - - protected final static int OBJECT_MAP = 1 << 6; - protected final static int BOOLEAN_FEATURE = 1 << 7; - - protected final static int SHARED_REFERENCE = 1 << 8; - - /** - * Indicates that the feature may be significant even if it is empty - */ - public final static int EMPTY_CONTENT_IS_SIGNIFICANT = 1 << 9; - - /** - * Used to indicate that feature is associated with a comment node - */ - protected final static int COMMENT_FEATURE = 1 << 10; - - /** - * If the value is null, then an eUnset() will be invoked on the feature - */ - public final static int UNSET_IF_NULL = 1 << 11; - - /** - * Return the element contents as a String if the feature is unresolveable (Used by the - * SourceLinkTranslator) - */ - public final static int STRING_RESULT_OK = 1 << 12; - - protected String[] fDOMNames; - protected String fDOMPath = ""; //$NON-NLS-1$ - protected Map readAheadNames; - protected int fStyle = NO_STYLE; - protected EStructuralFeature feature; - protected TranslatorPath[] fTranslatorPaths; - protected EClass emfClass; - protected String fNameSpace = ""; //$NON-NLS-1$ - // added by MDE - protected String domNameAndPath = null; - - /** - * Indicates if any of the children of this Translator are themselves DependencyTranslators - */ - protected Boolean isDependencyParent; - protected EStructuralFeature dependencyFeature; - protected static EcorePackage ECORE_PACKAGE = EcorePackage.eINSTANCE; - - // Use this identifier for the DOMName when the attribute - // value is to be extracted directly from the text of the node. - // This is rare, but occurs in the web.xml in the case of a - // WelcomeFile. - static final public String TEXT_ATTRIBUTE_VALUE = "$TEXT_ATTRIBUTE_VALUE"; //$NON-NLS-1$ - - static final public EStructuralFeature CONTAINER_FEATURE = new ContainerFeature(); - - static final public EStructuralFeature ROOT_FEATURE = new RootFeature(); - - protected static class ContainerFeature extends EStructuralFeatureImpl { - protected ContainerFeature() { - super(); - } - } - - protected static class RootFeature extends EStructuralFeatureImpl { - protected RootFeature() { - super(); - } - } - - public Translator findChild(String tagName, Object target, int versionID) { - - Translator result = null; - Translator[] maps = getChildren(target, versionID); - - if (maps != null) { - for (int i = 0; i < maps.length; i++) { - Translator map = maps[i]; - if (map.isMapFor(tagName)) { - result = map; - break; - } - } - } - if (result == null) { - VariableTranslatorFactory factory = getVariableTranslatorFactory(); - if (factory != null && factory.accepts(tagName)) { - result = factory.create(tagName); - } - } - return result; - } - - /** - * Utility method to string together arrays of children - */ - public static Object[] concat(Object[] array1, Object[] array2) { - Object[] result = (Object[]) java.lang.reflect.Array.newInstance(array1.getClass().getComponentType(), array1.length + array2.length); - System.arraycopy(array1, 0, result, 0, array1.length); - System.arraycopy(array2, 0, result, array1.length, array2.length); - return result; - } - - public static Object[] concat(Object[] array1, Object object2) { - Object[] newArray = new Object[]{object2}; - return concat(array1, newArray); - } - - public static Translator createParentAndTextAttributeTranslator(String domName, EStructuralFeature parentFeature, EStructuralFeature childFeature) { - GenericTranslator parent = new GenericTranslator(domName, parentFeature, END_TAG_NO_INDENT); - parent.setChildren(new Translator[]{new Translator(TEXT_ATTRIBUTE_VALUE, childFeature)}); - return parent; - } - - public Translator(String domNameAndPath, EClass eClass) { - initializeDOMNameAndPath(domNameAndPath); - setEMFClass(eClass); - } - - public Translator(String domNameAndPath, EStructuralFeature aFeature) { - initializeDOMNameAndPath(domNameAndPath); - setFeature(aFeature); - } - - public Translator(String domNameAndPath, EStructuralFeature aFeature, EClass eClass) { - this(domNameAndPath, aFeature); - setEMFClass(eClass); - } - - public Translator(String domNameAndPath, EStructuralFeature aFeature, TranslatorPath path) { - this(domNameAndPath, aFeature, new TranslatorPath[]{path}); - } - - public Translator(String domNameAndPath, EStructuralFeature aFeature, TranslatorPath[] paths) { - initializeDOMNameAndPath(domNameAndPath); - fTranslatorPaths = paths; - setFeature(aFeature); - } - - public Translator(String domNameAndPath, EStructuralFeature aFeature, int style) { - initializeDOMNameAndPath(domNameAndPath); - fStyle = style; - setFeature(aFeature); - } - - public static EcorePackage getEcorePackage() { - return EcorePackage.eINSTANCE; - } - - public String getDOMName(Object value) { - return fDOMNames[0]; - } - - public String[] getDOMNames() { - return fDOMNames; - } - - public String getDOMPath() { - return fDOMPath; - } - - public boolean hasDOMPath() { - return fDOMPath != null && fDOMPath.length() != 0; - } - - public EStructuralFeature getFeature() { - return feature; - } - - /** - * Parse the DOM names and path out of <domNameAndPath>and set the appropriate fields. - */ - protected void initializeDOMNameAndPath(String domNameAndPathArg) { - if (domNameAndPathArg == null) - return; - int inx = domNameAndPathArg.lastIndexOf('/'); - if (inx != -1) { - fDOMNames = parseDOMNames(domNameAndPathArg.substring(inx + 1)); - fDOMPath = domNameAndPathArg.substring(0, inx); - } else { - fDOMNames = parseDOMNames(domNameAndPathArg); - fDOMPath = ""; //$NON-NLS-1$ - } - // added by MDE - this.domNameAndPath = domNameAndPathArg; - - } - - /** - * Indicates whether the node should be written as an empty tag; eg, <distributable/> - */ - public boolean isCDATAContent() { - return (fStyle & CDATA_CONTENT) != 0; - } - - /** - * Indicates whether the DOMName represents a sub element name or an attribute name - * - * @return boolean True if the DOMName is an attribute name. - */ - public boolean isDOMAttribute() { - return (fStyle & DOM_ATTRIBUTE) != 0; - } - - /** - * Indicates whether the node should be written as an empty tag; eg, <distributable/> - */ - public boolean isEmptyTag() { - return (fStyle & EMPTY_TAG) != 0; - } - - public boolean isBooleanUppercase() { - return (fStyle & BOOLEAN_FEATURE) != 0 && (fStyle & BOOLEAN_LOWERCASE) == 0; - } - - public boolean isBooleanFeature() { - return (fStyle & BOOLEAN_FEATURE) != 0; - } - - public boolean shouldIndentEndTag() { - return (fStyle & END_TAG_NO_INDENT) == 0; - } - - public boolean isEmptyContentSignificant() { - return ((fStyle & EMPTY_TAG) != 0) || ((fStyle & EMPTY_CONTENT_IS_SIGNIFICANT) != 0); - } - - /** - * Returns true if this map is to another MOF object (not a primitive) - */ - public boolean isObjectMap() { - return (fStyle & OBJECT_MAP) != 0; - } - - /** - * Returns true if this map is for a shared reference - */ - public boolean isShared() { - return (fStyle & SHARED_REFERENCE) != 0; - } - - public boolean isEnumWithHyphens() { - return (fStyle & ENUM_FEATURE_WITH_HYPHENS) != 0; - } - - /** - * Indicates whether the map represents a case where the text of the DOMNode represents the - * objects one and only attribute value. An example of this case is a <welcome-file>file.txt - * </welcome-file>. - */ - public boolean isDOMTextValue() { - return fDOMNames[0] == TEXT_ATTRIBUTE_VALUE; - } - - /** - * Indicates whether the id is the mof attribute that should be set. - */ - public boolean isIDMap() { - return false; - } - - /** - * Indicates whether the id is the mof attribute that should be set. - */ - public boolean isLinkMap() { - return fTranslatorPaths != null; - } - - public boolean isTargetLinkMap() { - return isLinkMap() && !isObjectMap(); - } - - /** - * Return true if this map is the one representing a node with the name <domName>. By default - * this method simply compares the DOM name of the map against the <domName>parameter - * - * @return boolean - * @param domName - * java.lang.String - */ - public boolean isMapFor(String domName) { - if (domName.equals(getDOMPath())) - return true; - for (int i = 0; i < fDOMNames.length; i++) { - if (domName.equals(fDOMNames[i])) - return true; - } - return false; - } - - public boolean isMapFor(Object aFeature, Object oldValue, Object newValue) { - return feature == aFeature; - } - - /** - * Indicates whether feature being mapped is a collection. - * - * @return boolean True if the feature is multi valued. - */ - public boolean isMultiValued() { - if (feature != null) - return feature.isMany(); - return false; - } - - /** - * Parses comma separated names from <domNamesString>. Returns an array containing the names. - * - * @return java.lang.String[] - * @param domNamesString - * java.lang.String - */ - protected String[] parseDOMNames(String domNamesString) { - int startInx = 0; - int inx = domNamesString.indexOf(','); - ArrayList results = new ArrayList(1); - while (inx != -1) { - results.add(domNamesString.substring(startInx, inx)); - startInx = inx + 1; - inx = domNamesString.indexOf(',', startInx); - } - if (startInx == 0) - results.add(domNamesString); - else - results.add(domNamesString.substring(startInx)); - return (String[]) results.toArray(new String[results.size()]); - } - - public String toString() { - StringBuffer sb = new StringBuffer(); - String cn = getClass().getName(); - int i = cn.lastIndexOf('.'); - cn = cn.substring(++i, cn.length()); - sb.append(cn); - sb.append('('); - sb.append(fDOMNames[0]); - for (int j = 1; j < fDOMNames.length; j++) { - sb.append('|'); - sb.append(fDOMNames[j]); - } - sb.append(','); - sb.append(hashCode()); - sb.append(')'); - return sb.toString(); - } - - /** - * Gets the TranslatorPath. - * - * @return Returns a TranslatorPath - */ - public TranslatorPath[] getTranslatorPaths() { - return fTranslatorPaths; - } - - /* - * @see Object#equals(Object) - */ - public boolean equals(Object object) { - if (!(object instanceof Translator)) - return false; - Translator mapInfo = (Translator) object; - return fDOMNames.equals(mapInfo.getDOMNames()) && (feature == null && mapInfo.getFeature() == null || feature.equals(mapInfo.getFeature())); - } - - /** - * Returns the isManagedByParent. - * - * @return boolean - */ - public boolean isManagedByParent() { - return getChildren(null, -1) == null; - } - - /* - * In the 99% case there is only one node name to be concerned with, but subclasses can override - * for the cases where multiple dom names map to one feature - */ - public EObject createEMFObject(String nodeName, String readAheadName) { - if (emfClass == null) { - if (feature == null) - return null; - if (isObjectMap()) - return createEMFObject(feature); - } - return createEMFObject(emfClass); - } - - public static EObject createEMFObject(EStructuralFeature aFeature) { - if (aFeature == null) - return null; - - return createEMFObject(((EReference) aFeature).getEReferenceType()); - } - - public static EObject createEMFObject(EClass anEClass) { - if (anEClass == null) - return null; - return anEClass.getEPackage().getEFactoryInstance().create(anEClass); - } - - public void setTextValueIfNecessary(String textValue, Notifier owner, int versionId) { - Translator textTranslator = this.findChild(Translator.TEXT_ATTRIBUTE_VALUE, owner, versionId); - if (textTranslator != null) { - Object objectValue = textTranslator.convertStringToValue(textValue, (EObject) owner); - textTranslator.setMOFValue(owner, objectValue); - } - } - - /** - * Check to see if feature is valid on a particular mofObject. - * - * @return boolean Return true if the feature specified exists on the MOF object. - * @param emfObject - * org.eclipse.emf.ecore.EObject - */ - public boolean featureExists(EObject emfObject) { - if (feature == null) - return false; - - return emfObject.eClass().getEStructuralFeature(feature.getName()) != null; - } - - /** - * Translators which do not have a feature should override this method with custom behavior. - */ - public String extractStringValue(EObject emfObject) { - if (isEmptyTag() && feature == null) - return ""; //Fake it out with a value //$NON-NLS-1$ - return null; - } - - public Object convertStringToValue(String nodeName, String readAheadName, String value, Notifier owner) { - Object result = null; - try { - - if (!this.isManagedByParent()) { - result = createEMFObject(nodeName, readAheadName); - } else { - result = convertStringToValue(value, (EObject) owner); - } - - } catch (ClassCastException cce) { - - } - return result; - } - - /** - * Converts a string value to the appropriate type. - * - * @return java.lang.Object The converted value - * @param strValue - * java.lang.String The string to convert. - */ - public Object convertStringToValue(String strValue, EObject owner) { - if (feature == null) - return strValue; - if (strValue != null) { - if (isEnumWithHyphens()) - strValue = strValue.replace('-', '_'); - if (!isCDATAContent()) { - strValue = strValue.trim(); - } - } - Object value = FeatureValueConverter.DEFAULT.convertValue(strValue, feature); - if (value == null) { - if (isEmptyTag() && !isDOMAttribute() && !isDOMTextValue() && isBooleanFeature()) - return Boolean.TRUE; - EObject convertToType = feature.getEType(); - if (convertToType == null) - value = strValue; - else if (convertToType.equals(getEcorePackage().getEString())) { - value = ""; //$NON-NLS-1$ - } - } - return value; - } - - /** - * Converts a value of a specified type to a string value. Subclasses may override for special - * cases where special conversion needs to occur based on the feature and or object type. - * - * @return String The converted value - * @param value - * java.lang.Object The object to convert. - */ - public String convertValueToString(Object value, EObject owner) { - if (isEmptyTag() || value == null) - return null; - else if (isEnumWithHyphens()) - return value.toString().replace('_', '-'); - else if (isBooleanUppercase()) - return ((Boolean) value).booleanValue() ? "True" : "False"; //$NON-NLS-1$ //$NON-NLS-2$ - - return value.toString(); - } - - public Translator[] getVariableChildren(Notifier target, int version) { - Translator[] results = null; - VariableTranslatorFactory factory = getVariableTranslatorFactory(); - if (factory != null) { - List variableTranslators = factory.create(target); - if (variableTranslators != null && variableTranslators.size() > 0) { - Object[] vtoa = variableTranslators.toArray(); - - results = new Translator[vtoa.length]; - for (int i = 0; i < results.length; i++) - results[i] = (Translator) vtoa[i]; - } - - } - if (results == null) - results = new Translator[0]; - return results; - } - - /** - * Returns null by default; subclasses should override to return specific children - */ - public Translator[] getChildren(Object target, int versionID) { - return getChildren(); - } - - protected Translator[] getChildren() { - return null; - } - - /** - * Return the list of MOF children that currently exist for the values of an attribute. - */ - public List getMOFChildren(EObject mofObject) { - if (feature == null) - return Collections.EMPTY_LIST; - Object value = getMOFValue(mofObject); - List result = Collections.EMPTY_LIST; - if (isMultiValued()) - result = (List) value; - else if (value != null) - result = Collections.singletonList(value); - return result; - } - - public Object getMOFValue(EObject mofObject) { - if (feature == null) - return null; - return mofObject.eGet(feature); - } - - /** - * Sets a value of a feature in a mof object. - */ - public void setMOFValue(Notifier owner, Object value, int newIndex) { - if (feature != null) { - if ((fStyle & UNSET_IF_NULL) != 0 && value == null) - ExtendedEcoreUtil.eUnsetOrRemove((EObject) owner, feature, value); - else - ExtendedEcoreUtil.eSetOrAdd((EObject) owner, feature, value, newIndex); - } - } - - public void setMOFValue(Notifier owner, Object value) { - if (owner instanceof EObject) { - setMOFValue((EObject) owner, value); - } else if (owner instanceof Resource) { - setMOFValue((Resource) owner, value); - } - } - - public void setMOFValue(EObject emfObject, Object value) { - // if (feature != null) - // emfObject.eSet(feature, value); - setMOFValue(emfObject, value, -1); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.impl.Translator#setMOFValue(org.eclipse.emf.ecore.EObject, - * java.lang.Object) - */ - public void setMOFValue(Resource res, Object value) { - if (res != null && value != null) - res.getContents().add((EObject)value); - } - - public void removeMOFValue(Notifier owner, Object value) { - if (feature != null) - ExtendedEcoreUtil.eUnsetOrRemove((EObject) owner, feature, value); - } - - public boolean isSetMOFValue(EObject emfObject) { - boolean isSet = feature != null && emfObject.eIsSet(feature); - if (isEmptyTag()) - return isSet && ((Boolean) emfObject.eGet(feature)).booleanValue(); - return isSet; - } - - public void unSetMOFValue(EObject emfObject) { - if (feature != null) - emfObject.eUnset(feature); - } - - public void clearList(EObject mofObject) { - if (feature != null) - ((List) mofObject.eGet(feature)).clear(); - } - - protected void setFeature(EStructuralFeature aFeature) { - this.feature = aFeature; - if (feature == null) - return; - //This way an instance check happens only once - if (aFeature instanceof EReference) { - fStyle |= OBJECT_MAP; - if (!((EReference) aFeature).isContainment()) - fStyle |= SHARED_REFERENCE; - } - - if (getEcorePackage().getEBoolean() == feature.getEType()) - fStyle |= BOOLEAN_FEATURE; - } - - protected void setEMFClass(EClass anEClass) { - this.emfClass = anEClass; - if (anEClass != null) - fStyle |= OBJECT_MAP; - - } - - public boolean hasReadAheadNames() { - return readAheadNames != null && !readAheadNames.isEmpty(); - } - - /** - * Return the read ahead names, if they are defined, for a given parent node name. This is used - * when creation of a specific EMF object is dependent on the value of a child node. - */ - public ReadAheadHelper getReadAheadHelper(String parentName) { - if (readAheadNames == null) - return null; - return (ReadAheadHelper) readAheadNames.get(parentName); - } - - public void addReadAheadHelper(ReadAheadHelper helper) { - if (readAheadNames == null) - readAheadNames = new HashMap(3); - readAheadNames.put(helper.getParentDOMName(), helper); - } - - public boolean isDependencyChild() { - return false; - } - - /** - * @return - */ - public boolean isDependencyParent() { - if (isDependencyParent == null) { - isDependencyParent = Boolean.FALSE; - Translator[] theChildren = getChildren(null, -1); - if (theChildren != null) { - for (int i = 0; i < theChildren.length; i++) { - //For now we assume one - if (theChildren[i].isDependencyChild()) { - isDependencyParent = Boolean.TRUE; - dependencyFeature = theChildren[i].getDependencyFeature(); - } - } - } - } - return isDependencyParent.booleanValue(); - } - - /** - * @return - */ - public EStructuralFeature getDependencyFeature() { - return dependencyFeature; - } - - public EObject basicGetDependencyObject(EObject parent) { - return (EObject) parent.eGet(dependencyFeature); - } - - /** - * Use when the DOM path is not null, and there are no children. Default is false, but - * subclasses may wish to override - */ - public boolean shouldRenderEmptyDOMPath(EObject eObject) { - return isEmptyContentSignificant(); - } - - /** - * Use when the translator tolerates parent nodes that relate to the DOM path, and no children; - * default is do nothing - */ - public void setMOFValueFromEmptyDOMPath(EObject eObject) { - - } - - /** - * Namespace for the attributes - * - * @return - */ - public String getNameSpace() { - return fNameSpace; - } - - /** - * Set the namespace for the dom attribute - * - * @param string - */ - public void setNameSpace(String string) { - fNameSpace = string; - } - - public VariableTranslatorFactory getVariableTranslatorFactory() { - if (isObjectMap()) - return DefaultTranslatorFactory.INSTANCE; - return null; - } - - public boolean isEnumFeature() { - return feature != null && ECORE_PACKAGE.getEEnum().isInstance(feature.getEType()); - } - - public boolean isUnsettable() { - return feature != null && feature.isUnsettable(); - } - - public boolean isDataType() { - return feature != null && feature.getEType() instanceof EDataType; - } - - /** - * @return - */ - public boolean isComment() { - return (fStyle & COMMENT_FEATURE) != 0; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorFilter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorFilter.java deleted file mode 100644 index b12067d1b..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorFilter.java +++ /dev/null @@ -1,220 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 Sep 21, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.emf.ecore.EObject; - - -/* - * Translator filters can be used to differentiate between Object and Attribute Translators without - * breaking them out into seperate data structures. The Filter will rely on the underlying data - * structure used to store the children of the given Translator. - * - * getNextChild() will return null when no other translators of the given genre are available. - * - * The processing hints which are created and then passed to getNext*Translator() store information - * that needs to be persisted between calls. The createProcessingHints() will create a properly - * initialized array. The constants NEXT_START_HINT_INDX and MODE_HINT_INDX provide pointers into - * the array for the NEXT_START position and the proper mode to operate in - * (STANDARD_TRANSLATORS_MODE or - * - */ -public abstract class TranslatorFilter { - - protected final Translator translator; - protected final int version; - - public static final int NEXT_START_HINT_INDX = 0; - public static final int MODE_HINT_INDX = 1; - - public static final int STANDARD_TRANSLATORS_MODE = 0; - public static final int VARIABLE_TRANSLATORS_MODE = 1; - - /* - * These TranslatorFilters are used in a stateless mode. Only their scanNextTranslator() methods - * will be invoked - */ - private static final TranslatorFilter objectTranslatorFilter = new ObjectTranslatorFilter(null, -1); - private static final TranslatorFilter attributeTranslatorFilter = new AttributeTranslatorFilter(null, -1); - - - protected int mode = STANDARD_TRANSLATORS_MODE; - protected int index = -1; - - protected Translator cachedPeekAheadTranslator = null; - - public TranslatorFilter(Translator trans, int version) { - this.translator = trans; - this.version = version; - } - - /** - * Calling peek twice will advance the current child - */ - public Translator peekNextChild(EObject target) { - cachedPeekAheadTranslator = getNextChild(target); - return cachedPeekAheadTranslator; - } - - /** - * getNextChild() will return null when no other translators of the given genre are available. - */ - public Translator getNextChild(EObject target) { - - Translator result = null; - if (cachedPeekAheadTranslator != null) { - result = cachedPeekAheadTranslator; - cachedPeekAheadTranslator = null; - return result; - } - - int found = 0; - Translator children[] = null; - switch (mode) { - case STANDARD_TRANSLATORS_MODE : - children = this.translator.getChildren(target, this.version); - - /* Look for the next Attribute Translator */ - found = scanNextTranslator(children, this.index); - - if (found >= 0) { - /* - * If found, (1) update the result, (2) update the index so we can skip ahead on - * the next invocation (3) escape the VARIABLE_TRANSLATORS processing - */ - result = children[found]; - this.index = found; - break; - } - /* - * Reset the index. DO NOT BREAK. Allow entry into VARIABLE_TRANSLATORS case - */ - this.index = -1; - /* - * update the mode to VARIABLE_TRANSLATORS so we can skip to it directly next time - */ - this.mode = VARIABLE_TRANSLATORS_MODE; - case VARIABLE_TRANSLATORS_MODE : - children = this.translator.getVariableChildren(target, this.version); - found = scanNextTranslator(children, this.index); - if (found >= 0) { - /* - * If found, (1) update the result, (2) update the index so we can skip ahead on - * the next invocation - */ - result = children[found]; - this.index = found; - } - - } - - return result; - } - - public static final int[] createProcessingHints() { - return new int[]{-1, STANDARD_TRANSLATORS_MODE}; - } - - public static final Translator getNextAttributeTranslator(Translator translator, int startHint, int[] nextHint, EObject target, int version) { - - return TranslatorFilter.getNextChild(translator, startHint, nextHint, target, version, attributeTranslatorFilter); - } - - public static final Translator getNextObjectTranslator(Translator translator, int startHint, int[] nextHint, EObject target, int version) { - - return TranslatorFilter.getNextChild(translator, startHint, nextHint, target, version, objectTranslatorFilter); - } - - /** - * getNextChild() takes hints on where to begin in the children array of the given Translator. - * When it finds the translator, it will update the hints array with the start hint for the next - * invocation(hints[0]) and when necessary it will use update the mode (hints[1]) to either - * STANDARD_TRANSLATORS or VARIABLE_TRANSLATORS. - * - * @param translator - * @param startHint - * @param hints - * a two-element array: hints[0] will be updated with the next startHint and hints[1] - * will be used to store the mode. - * @param target - * @param version - * @param translatorFilter - * @return - */ - public static final Translator getNextChild(Translator translator, int startHint, int[] hints, EObject target, int version, TranslatorFilter translatorFilter) { - - Translator result = null; - - int index = startHint; - Translator children[] = null; - - switch (hints[MODE_HINT_INDX]) { - case STANDARD_TRANSLATORS_MODE : - children = translator.getChildren(target, version); - if (children != null && startHint < children.length) { - - /* Look for the next Attribute Translator */ - index = translatorFilter.scanNextTranslator(children, index); - - if (index >= 0) { - /* - * If found, (1) update the result, (2) update the index so we can skip - * ahead on the next invocation (3) escape the VARIABLE_TRANSLATORS - * processing - */ - result = children[index]; - break; - } - /* - * DO NOT BREAK we will default to VARIABLE TRANSLATORS MODE so we must reset - * the startHint appropriately - */ - startHint = -1; - } - - case VARIABLE_TRANSLATORS_MODE : - hints[MODE_HINT_INDX] = VARIABLE_TRANSLATORS_MODE; - /* - * Reset the index. - */ - index = startHint; - children = translator.getVariableChildren(target, version); - if (children != null && children.length > 0 && startHint < children.length) { - index = translatorFilter.scanNextTranslator(children, index); - result = (index >= 0) ? children[index] : null; - } - } - - hints[NEXT_START_HINT_INDX] = (result == null && children != null) ? children.length : index; - - return result; - } - - - public abstract int scanNextTranslator(Translator[] children, int start); - - /** - * @return - */ - public int getIndex() { - return index; - } - - /** - * @return - */ - public int getMode() { - return mode; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorPath.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorPath.java deleted file mode 100644 index a2d843e17..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorPath.java +++ /dev/null @@ -1,94 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.Iterator; -import java.util.List; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EStructuralFeature; - - -public class TranslatorPath { - protected Translator[] mapInfoPath; - - /** - * Construct with an array of Translator that specifies the path to follow from an object to - * another object - */ - public TranslatorPath(Translator[] path) { - mapInfoPath = path; - } - - public List findObjects(EObject startObject) { - Object cur = startObject; - for (int i = 0; i < mapInfoPath.length; i++) { - Translator curMap = mapInfoPath[i]; - if (cur instanceof EObject) { - EStructuralFeature curAttr = curMap.getFeature(); - if (curAttr == Translator.CONTAINER_FEATURE) { - curAttr = ((EObject) cur).eContainmentFeature(); - cur = ((EObject) cur).eContainer(); - } else if (curAttr == Translator.ROOT_FEATURE) { - cur = ((TranslatorResource) startObject.eResource()).getRootObject(); - } else { - cur = ((EObject) cur).eGet(curAttr); - } - if (curMap.isMultiValued()) { - return (List) cur; - } - } - } - return null; - } - - public Object findObject(EObject startObject, Object matchValue) { - List objects = findObjects(startObject); - if (objects == null) - return null; - return findObject(objects, getLastMap(), matchValue); - } - - private Object findObject(List objectList, Translator map, Object matchValue) { - for (Iterator iter = objectList.iterator(); iter.hasNext();) { - EObject mofObject = (EObject) iter.next(); - Object curMatchValue = mofObject.eGet(map.getFeature()); - if (matchValue.equals(curMatchValue)) - return mofObject; - } - return null; - } - - public Translator getLastMap() { - return mapInfoPath[mapInfoPath.length - 1]; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#toString() - */ - public String toString() { - StringBuffer sb = new StringBuffer(); - String cn = getClass().getName(); - int i = cn.lastIndexOf('.'); - cn = cn.substring(++i, cn.length()); - sb.append(cn); - sb.append('('); - sb.append(mapInfoPath[0]); - for (int j = 1; j < mapInfoPath.length; j++) { - sb.append('\n'); - sb.append(mapInfoPath[j]); - } - sb.append(')'); - return sb.toString(); - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResource.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResource.java deleted file mode 100644 index 32c9c47fd..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResource.java +++ /dev/null @@ -1,79 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.impl.EStructuralFeatureImpl; -import org.xml.sax.EntityResolver; - -public interface TranslatorResource extends ReferencedResource { - /* - * must make a subclass because the constructor for EStructuralFeature is protected - */ - static class DocTypeFeature extends EStructuralFeatureImpl { - protected DocTypeFeature() { - super(); - } - } - - - EStructuralFeature DOC_TYPE_FEATURE = new DocTypeFeature(); - - /** - * The public id of the XML document, if specified. - */ - String getPublicId(); - - /** - * Return the first element in the EList. - */ - EObject getRootObject(); - - /** - * The system id of the XML document, if specified. - */ - String getSystemId(); - - /** - * Sets the public id and system id of the XML document. - */ - void setDoctypeValues(String publicId, String systemId); - - /** - * Sets the default public/system ids if necessary - */ - void setDefaults(); - - /** - * Returns the name that will be in the document type header of the serialized xml file - */ - String getDoctype(); - - /** - * Returns the XML version of this document - */ - String getXMLVersion(); - - Translator getRootTranslator(); - - /** - * Entity resolver that can be used when using standard parsers to read the resource - */ - EntityResolver getEntityResolver(); - - boolean usesDTD(); - - public int getVersionID(); - - void setVersionID(int i); - - Renderer getRenderer(); -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceFactory.java deleted file mode 100644 index 20a450b36..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceFactory.java +++ /dev/null @@ -1,68 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; - -public abstract class TranslatorResourceFactory extends ReferencedXMIFactoryImpl implements RendererFactory.Listener { - - protected RendererFactory rendererFactory; - private boolean listeningForUpdates = false; - - /** - * Constructor for TranslatorResourceFactory. - */ - public TranslatorResourceFactory(RendererFactory aRendererFactory, boolean listeningForUpdates) { - super(); - rendererFactory = aRendererFactory; - setListeningForUpdates(listeningForUpdates); - } - - /** - * Constructor for TranslatorResourceFactory. - */ - public TranslatorResourceFactory(RendererFactory aRendererFactory) { - this(aRendererFactory, true); - } - - public void setListeningForUpdates(boolean shouldBeListeningForUpdates) { - - if (this.listeningForUpdates ^ shouldBeListeningForUpdates) { - if (!shouldBeListeningForUpdates) - RendererFactory.NotificationEngine.removeListener(this); - else - RendererFactory.NotificationEngine.addListener(this); - - this.listeningForUpdates = shouldBeListeningForUpdates; - } - } - - public boolean isListeningForUpdates() { - return this.listeningForUpdates; - } - - public Resource doCreateResource(URI uri) { - Renderer aRenderer = rendererFactory.createRenderer(); - return createResource(uri, aRenderer); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.RendererFactory.Listener#updateRendererFactory(com.ibm.etools.emf2xml.RendererFactory) - */ - public void updateRendererFactory(RendererFactory newRendererFactory) { - //System.out.println("Updating renderer factory"); - rendererFactory = newRendererFactory; - } - - protected abstract TranslatorResource createResource(URI uri, Renderer aRenderer); - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceImpl.java deleted file mode 100644 index 0c71dee0f..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceImpl.java +++ /dev/null @@ -1,396 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Collection; -import java.util.Map; - -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.impl.NotificationImpl; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.EcorePackage; -import org.eclipse.emf.ecore.InternalEObject; -import org.eclipse.emf.ecore.impl.ENotificationImpl; -import org.eclipse.emf.ecore.resource.impl.ResourceImpl; -import org.eclipse.jem.util.logger.proxy.Logger; -import org.eclipse.wst.common.internal.emf.utilities.StringUtil; -import org.xml.sax.EntityResolver; - -public abstract class TranslatorResourceImpl extends ReferencedXMIResourceImpl implements TranslatorResource, IRootObjectResource{ - static final public EStructuralFeature ID_FEATURE = EcorePackage.eINSTANCE.getEClass_EIDAttribute(); - protected static final String DEFAULT_ENCODING = "UTF-8"; //$NON-NLS-1$ - protected static final String DEFAULT_VERSION = "1.0"; //$NON-NLS-1$ - protected Renderer renderer; - /** - * The public Id to use at the head of the document. - */ - protected String publicId; - /** - * The system Id to use at the head of the document. - */ - protected String systemId; - protected String xmlVersion; - // Default the resources to J2EE 1.4 - protected int versionID; - - /** - * @deprecated since 4/29/2003 - used for compatibility Subclasses should - * be using the Renderers and translator framework - */ - public TranslatorResourceImpl() { - super(); - } - - /** - * @deprecated since 4/29/2003 - used for compatibility Subclasses should - * be using the Renderers and translator framework - */ - public TranslatorResourceImpl(URI uri) { - super(uri); - } - - public TranslatorResourceImpl(URI uri, Renderer aRenderer) { - super(uri); - setRenderer(aRenderer); - versionID = getDefaultVersionID(); - } - - public TranslatorResourceImpl(Renderer aRenderer) { - super(); - setRenderer(aRenderer); - } - - public java.lang.String getEncoding() { - if (super.getEncoding() == null) - setEncoding(DEFAULT_ENCODING); - return super.getEncoding(); - } - - public String getPublicId() { - return publicId; - } - - /** - * Return the first element in the EList. - */ - public EObject getRootObject() { - if (contents == null || contents.isEmpty()) - return null; - return (EObject) getContents().get(0); - } - - public String getSystemId() { - return systemId; - } - - public void setDoctypeValues(String aPublicId, String aSystemId) { - boolean changed = !(StringUtil.stringsEqual(publicId, aPublicId) && StringUtil.stringsEqual(systemId, aSystemId)); - publicId = aPublicId; - systemId = aSystemId; - if (changed) { - eNotify(new NotificationImpl(Notification.SET, null, null) { - public Object getFeature() { - return DOC_TYPE_FEATURE; - } - - public Object getNotifier() { - return TranslatorResourceImpl.this; - } - }); - } - } - - /** - * Returns the xmlVersion. - * - * @return String - */ - public String getXMLVersion() { - if (xmlVersion == null) - xmlVersion = DEFAULT_VERSION; - return xmlVersion; - } - - /** - * Sets the xmlVersion. - * - * @param xmlVersion - * The xmlVersion to set - */ - public void setXMLVersion(String xmlVersion) { - this.xmlVersion = xmlVersion; - } - - protected void basicDoLoad(InputStream inputStream, Map options) throws IOException { - // long start = System.currentTimeMillis(); - boolean isTrackingMods = isTrackingModification(); - try { - if (isTrackingMods) - setTrackingModification(false); - renderer.doLoad(inputStream, options); - } - finally { - if (isTrackingMods) - setTrackingModification(true); - } - // long end = System.currentTimeMillis(); - // recordTime("Load", start, end); - } - - public void save(Map options) throws IOException { - if (renderer.useStreamsForIO()) { - super.save(options); - } else { - notifyAboutToSave(); - try { - doSave((OutputStream)null, options); - notifySaved(); - } catch (Exception e) { - notifySaveFailed(); - if (e instanceof IOException) - throw (IOException) e; - else - Logger.getLogger().write(e); - } - notifySaved(); - } - } - - - /** - * @see com.ibm.etools.xmi.helpers.CompatibilityXMIResourceImpl#doSave(OutputStream, - * Map) - */ - public void doSave(OutputStream outputStream, Map options) throws IOException { - // long start = System.currentTimeMillis(); - renderer.doSave(outputStream, options); - setModified(false); - // long end = System.currentTimeMillis(); - // recordTime("Save", start, end); - } - - // private void recordTime(String type, long start, long end) { - // System.out.println(renderer.getClass().getName() + "\t" + type + "\t" + - // (end - start) + - // "\t\t\tms" + "\t" + (( this.getVersionID()) / 10.0) + "\t" + this); - // //$NON-NLS-1$ - // //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ - // } - - /** - * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doUnload() - */ - protected void doUnload() { - renderer.preUnload(); - super.doUnload(); - } - - public String toString() { - return getClass().getName() + getURI().toString(); - } - - /** - * Returns the renderer. - * - * @return Renderer - */ - public Renderer getRenderer() { - return renderer; - } - - /** - * Sets the renderer. - * - * @param renderer - * The renderer to set - */ - public void setRenderer(Renderer renderer) { - this.renderer = renderer; - if (renderer.getResource() != this) - renderer.setResource(this); - } - - /** - * For compatibility of old subtype resources, returns the super - * implementation - * - * @return - */ - protected EList primGetContents() { - return super.getContents(); - } - - public EList getContents() { - waitForResourceToLoadIfNecessary(); - if (contents == null) { - initializeContents(); - } - return contents; - } - - protected void initializeContents() { - contents = new ResourceImpl.ContentsEList() { - public boolean add(Object object) { - renderer.prepareToAddContents(); - return super.add(object); - } - - public boolean addAll(Collection collection) { - renderer.prepareToAddContents(); - return super.addAll(collection); - } - }; - } - - public void setDefaults() { - if (systemId != null && publicId != null) - return; - String pubId = publicId == null ? getDefaultPublicId() : publicId; - String sysId = systemId == null ? getDefaultSystemId() : systemId; - setDoctypeValues(pubId, sysId); - } - - /** - * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#init() - */ - protected void init() { - super.init(); - setEncoding(DEFAULT_ENCODING); - } - - /** - * Returns null by default; subclasses can override - * - * @see com.ibm.etools.emf2xml.TranslatorResource#createEntityResolver() - */ - public EntityResolver getEntityResolver() { - return null; - } - - protected abstract String getDefaultPublicId(); - - protected abstract String getDefaultSystemId(); - - protected abstract int getDefaultVersionID(); - - /** - * @return - */ - public int getVersionID() { - return versionID; - } - - /** - * @param i - */ - public void setVersionID(int i) { - versionID = i; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf2xml.TranslatorResource#usesDTD() - */ - public boolean usesDTD() { - return getPublicId() != null && getSystemId() != null; - } - - /** - * Overridden to notify when the ID gets set; need this to push it into - * the resource - * - * @see org.eclipse.emf.ecore.xmi.XMLResource#setID(EObject, String) - */ - public void setID(EObject eObject, String id) { - String oldId = getID(eObject); - super.setID(eObject, id); - eObject.eNotify(new ENotificationImpl((InternalEObject) eObject, Notification.SET, ID_FEATURE, oldId, id)); - } - - /** - * This method indicates whether or not the extent associated with the - * resource has been modified since the last time it was loaded or saved. - * - * @return boolean - */ - public boolean isModified() { - return super.isModified() || renderer.isModified(); - } - - /* - * Overriden to give the renderer a hook - * - * @see org.eclipse.wst.common.internal.emf.resource.ReferencedResource#accessForWrite() - */ - public void accessForWrite() { - renderer.accessForWrite(); - super.accessForWrite(); - } - - /* - * Overriden to give the renderer a hook - * - * @see org.eclipse.wst.common.internal.emf.resource.ReferencedResource#accessForRead() - */ - public void accessForRead() { - renderer.accessForRead(); - super.accessForRead(); - } - - public void releaseFromRead() { - renderer.releaseFromRead(); - super.releaseFromRead(); - } - - public void releaseFromWrite() { - renderer.releaseFromWrite(); - super.releaseFromWrite(); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf.workbench.ReferencedXMIResourceImpl#preDelete() - */ - public void preDelete() { - super.preDelete(); - renderer.preDelete(); - } - - public boolean isShared() { - return super.isShared() || renderer.isShared(); - } - - public boolean isSharedForWrite() { - return super.isSharedForWrite() || renderer.isSharedForWrite(); - } - - public void load(Map options) throws IOException { - synchronized (this) { - if (isLoaded) - return; - // System.out.println(Thread.currentThread() + " - // TranslatorResource.load(): " + this); - if (renderer.useStreamsForIO()) { - super.load(options); - } - else if (!isLoaded) { - load((InputStream) null, options); - } - } - - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/UnsupportedFeature.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/UnsupportedFeature.java deleted file mode 100644 index 43c5864ab..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/UnsupportedFeature.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Apr 13, 2004 - * - * TODO To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package org.eclipse.wst.common.internal.emf.resource; - -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.impl.EAttributeImpl; - -/** - * @author cbridgha - * - * TODO To change the template for this generated type comment go to Window - Preferences - Java - - * Code Generation - Code and Comments - */ -public class UnsupportedFeature extends EAttributeImpl { - /** - * This is used to capture features that are no longer supported - */ - public static boolean isUnsupported(EClass anEClass, String featureName) { - - if (featureName.equals("isZeroParams") && anEClass.getName().equals("MethodElement")) //$NON-NLS-1$ //$NON-NLS-2$ - return true; - return false; - } - - public UnsupportedFeature() { - super(); - // TODO Auto-generated constructor stub - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/VariableTranslatorFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/VariableTranslatorFactory.java deleted file mode 100644 index 1a4eef991..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/VariableTranslatorFactory.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 20, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.resource; - -import java.util.List; - -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.Notifier; - - -/** - * @author schacher - */ -public interface VariableTranslatorFactory { - /** Returns whether a Translator should be created for the given DOM name */ - boolean accepts(String domName); - - /** Returns whether a Translator should be created for the given feature */ - boolean accepts(Notification notif); - - Translator create(Notification notif); - - /** Creates a new Translator for the DOM name */ - Translator create(String domName); - - /** Creates variable translators for an EMF object to be rendered */ - List create(Notifier target); - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/XMLEncoderDecoder.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/XMLEncoderDecoder.java deleted file mode 100644 index 7898757a4..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/XMLEncoderDecoder.java +++ /dev/null @@ -1,170 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 May 20, 2004 - * - * TODO To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package org.eclipse.wst.common.internal.emf.resource; - -/** - * @author mdelder - * - */ -public class XMLEncoderDecoder { - - /** - * - */ - public XMLEncoderDecoder() { - super(); - } - - /** - * Identifies the last printable character in the Unicode range that is supported by the - * encoding used with this serializer. For 8-bit encodings this will be either 0x7E or 0xFF. For - * 16-bit encodings this will be 0xFFFF. Characters that are not printable will be escaped using - * character references. - */ - private int _lastPrintable = 0xFFFE; - - protected static XMLEncoderDecoder _singleton; - - - /** - * Returns a decoded version of the value. - */ - public String decode(String value) { - // NOT_IMPLEMENTED - return value; - } - - - /** - * Escapes a string so it may be printed as text content or attribute value. Non printable - * characters are escaped using character references. Where the format specifies a deault entity - * reference, that reference is used (e.g. <tt>&lt;</tt>). - * - * @param source - * The string to escape - */ - public char[] encode(char[] value) { - boolean unmodified = true; - StringBuffer sbuf = new StringBuffer(value.length); - String charRef = null; - char ch; - for (int i = 0; i < value.length; ++i) { - ch = value[i]; - // If there is a suitable entity reference for this - // character, print it. The list of available entity - // references is almost but not identical between - // XML and HTML. - charRef = getEntityRef(ch); - if (charRef != null) { - sbuf.append('&'); - sbuf.append(charRef); - sbuf.append(';'); - unmodified = false; - } else if ((ch >= ' ' && ch <= _lastPrintable && ch != 0xF7) || ch == '\n' || ch == '\r' || ch == '\t') { - // If the character is not printable, print as character - // reference. - // Non printables are below ASCII space but not tab or line - // terminator, ASCII delete, or above a certain Unicode - // threshold. - sbuf.append(ch); - } else { - sbuf.append("&#");//$NON-NLS-1$ - sbuf.append(Integer.toString(ch)); - sbuf.append(';'); - unmodified = false; - } - } - if (unmodified) - return value; - char[] result = new char[sbuf.length()]; - sbuf.getChars(0, sbuf.length(), result, 0); - return result; - } - - /** - * Escapes a string so it may be printed as text content or attribute value. Non printable - * characters are escaped using character references. Where the format specifies a deault entity - * reference, that reference is used (e.g. <tt>&lt;</tt>). - * - * @param source - * The string to escape - */ - public String encode(String value) { - StringBuffer sbuf = new StringBuffer(value.length()); - String charRef = null; - char ch; - for (int i = 0; i < value.length(); ++i) { - ch = value.charAt(i); - // If there is a suitable entity reference for this - // character, print it. The list of available entity - // references is almost but not identical between - // XML and HTML. - charRef = getEntityRef(ch); - if (charRef != null) { - sbuf.append('&'); - sbuf.append(charRef); - sbuf.append(';'); - } else if ((ch >= ' ' && ch <= _lastPrintable && ch != 0xF7) || ch == '\n' || ch == '\r' || ch == '\t') { - // If the character is not printable, print as character - // reference. - // Non printables are below ASCII space but not tab or line - // terminator, ASCII delete, or above a certain Unicode - // threshold. - sbuf.append(ch); - } else { - sbuf.append("&#");//$NON-NLS-1$ - sbuf.append(Integer.toString(ch)); - sbuf.append(';'); - } - } - return sbuf.toString(); - } - - public static String escape(String value) { - if (_singleton == null) { - _singleton = new XMLEncoderDecoder(); - } - return _singleton.encode(value); - } - - /** - * Returns the suitable entity reference for this character value, or null if no such entity - * exists. Calling this method with <tt>'&'</tt> will return <tt>"&amp;"</tt>. - * - * @param ch - * Character value - * @return Character entity name, or null - */ - protected String getEntityRef(char ch) { - // Encode special XML characters into the equivalent character - // references. - // These five are defined by default for all XML documents. - switch (ch) { - case '<' : - return "lt";//$NON-NLS-1$ - case '>' : - return "gt";//$NON-NLS-1$ - case '"' : - return "quot";//$NON-NLS-1$ - case '\'' : - return "apos";//$NON-NLS-1$ - case '&' : - return "amp";//$NON-NLS-1$ - } - return null; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AdapterFactoryDescriptor.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AdapterFactoryDescriptor.java deleted file mode 100644 index a852031ea..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AdapterFactoryDescriptor.java +++ /dev/null @@ -1,17 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - -import org.eclipse.emf.common.notify.AdapterFactory; - -public interface AdapterFactoryDescriptor { - - public AdapterFactory createAdapterFactory(); - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AdapterFactoryUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AdapterFactoryUtil.java deleted file mode 100644 index 706f9eac8..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AdapterFactoryUtil.java +++ /dev/null @@ -1,45 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - -import java.util.List; - -import org.eclipse.emf.common.notify.AdapterFactory; -import org.eclipse.emf.common.notify.Notifier; - -public class AdapterFactoryUtil { - - /** - * Constructor for AdapterFactoryUtil. - */ - public AdapterFactoryUtil() { - super(); - } - - public static void adaptNew(Notifier newObject, List factories) { - AdapterFactory fact; - for (int i = 0; i < factories.size(); i++) { - fact = (AdapterFactory) factories.get(i); - fact.adaptNew(newObject, null); - } - } - - public static void createAdapterFactories(List descriptors, List factories) { - AdapterFactoryDescriptor desc; - AdapterFactory adapterFact; - for (int i = 0; i < descriptors.size(); i++) { - desc = (AdapterFactoryDescriptor) descriptors.get(i); - adapterFact = desc.createAdapterFactory(); - if (adapterFact != null) - factories.add(adapterFact); - } - descriptors.clear(); - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ArrayUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ArrayUtil.java deleted file mode 100644 index 847b88d6f..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ArrayUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - - - -public class ArrayUtil { - - public static Object[] concat(Object[] array1, Object[] array2) { - Class componentType = null; - if (array1.getClass().getComponentType() == array2.getClass().getComponentType()) - componentType = array1.getClass().getComponentType(); - else - componentType = Object.class; - - return concat(array1, array2, componentType); - } - - public static Object[] concat(Object[] array1, Object[] array2, Class componentType) { - Object[] result = (Object[]) java.lang.reflect.Array.newInstance(componentType, array1.length + array2.length); - System.arraycopy(array1, 0, result, 0, array1.length); - System.arraycopy(array2, 0, result, array1.length, array2.length); - return result; - } - - public static Object[] concatAll(java.util.List arrays, Class componentType) { - int resultLength = 0; - for (int i = 0; i < arrays.size(); i++) { - resultLength += ((Object[]) arrays.get(i)).length; - } - Object[] result = (Object[]) java.lang.reflect.Array.newInstance(componentType, resultLength); - int pos = 0; - for (int i = 0; i < arrays.size(); i++) { - Object[] array = (Object[]) arrays.get(i); - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Assert.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Assert.java deleted file mode 100644 index b37585115..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Assert.java +++ /dev/null @@ -1,131 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - -import org.eclipse.jem.util.logger.proxy.Logger; - - - -/** - * <code>Assert</code> is useful for for embedding runtime sanity checks in code. The predicate - * methods all test a condition and throw some type of unchecked exception if the condition does not - * hold. - * <p> - * Assertion failure exceptions, like most runtime exceptions, are thrown when something is - * misbehaving. Assertion failures are invariably unspecified behavior; consequently, clients should - * never rely on these being thrown (and certainly should not being catching them specifically). - * </p> - */ -// This class was, originally, copied directly from com.ibm.itp.common. -// It was copied to our own package just to minimize minor dependencies -// on other packages and internal APIs. -public final class Assert { - /* This class is not intended to be instantiated. */ - - private Assert() { - } - - /** - * Asserts that an argument is legal. If the given boolean is not <code>true</code>, an - * <code>IllegalArgumentException</code> is thrown. - * - * @param expression - * the outcode of the check - * @return <code>true</code> if the check passes (does not return if the check fails) - * @exception IllegalArgumentException - * if the legality test failed - */ - public static boolean isLegal(boolean expression) { - return isLegal(expression, "");//$NON-NLS-1$ - } - - /** - * Asserts that an argument is legal. If the given boolean is not <code>true</code>, an - * <code>IllegalArgumentException</code> is thrown. The given message is included in that - * exception, to aid debugging. - * - * @param expression - * the outcode of the check - * @param message - * the message to include in the exception - * @return <code>true</code> if the check passes (does not return if the check fails) - * @exception IllegalArgumentException - * if the legality test failed - */ - public static boolean isLegal(boolean expression, String message) { - if (!expression) - throw new IllegalArgumentException(); - return expression; - } - - /** - * Asserts that the given object is not <code>null</code>. If this is not the case, some kind - * of unchecked exception is thrown. - * - * @param object - * the value to test - * @exception IllegalArgumentException - * if the object is <code>null</code> - */ - public static void isNotNull(Object object) { - isNotNull(object, "");//$NON-NLS-1$ - } - - /** - * Asserts that the given object is not <code>null</code>. If this is not the case, some kind - * of unchecked exception is thrown. The given message is included in that exception, to aid - * debugging. - * - * @param object - * the value to test - * @param message - * the message to include in the exception - * @exception IllegalArgumentException - * if the object is <code>null</code> - */ - public static void isNotNull(Object object, String message) { - if (object == null) { - Logger.getLogger().logError("null_argument: " + message);//$NON-NLS-1$ - throw new AssertionFailedException(); - } - } - - /** - * Asserts that the given boolean is <code>true</code>. If this is not the case, some kind of - * unchecked exception is thrown. - * - * @param expression - * the outcode of the check - * @return <code>true</code> if the check passes (does not return if the check fails) - */ - public static boolean isTrue(boolean expression) { - return isTrue(expression, "");//$NON-NLS-1$ - } - - /** - * Asserts that the given boolean is <code>true</code>. If this is not the case, some kind of - * unchecked exception is thrown. The given message is included in that exception, to aid - * debugging. - * - * @param expression - * the outcode of the check - * @param message - * the message to include in the exception - * @return <code>true</code> if the check passes (does not return if the check fails) - */ - public static boolean isTrue(boolean expression, String message) { - if (!expression) { - Logger.getLogger().logError("assertion failed: " + message);//$NON-NLS-1$ - throw new AssertionFailedException(); - } - return expression; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AssertionFailedException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AssertionFailedException.java deleted file mode 100644 index 044c60db5..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AssertionFailedException.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - -/** - * <code>AssertionFailedException</code> is a runtime exception thrown by some of the methods in - * <code>Assert</code>. - * <p> - * This class is not declared public to prevent some misuses; programs that catch or otherwise - * depend on assertion failures are susceptible to unexpected breakage when assertions in the code - * are added or removed. - * </p> - */ -// This class was, originally, copied directly from com.ibm.itp.common. -// It was copied to our own package just to minimize minor dependencies -// on other packages and internal APIs. -class AssertionFailedException extends RuntimeException { - /** - * Constructs a new exception. - */ - public AssertionFailedException() { - } - - /** - * Constructs a new exception with the given message. - */ - public AssertionFailedException(String detail) { - super(detail); - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Association.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Association.java deleted file mode 100644 index 485d0c3f0..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Association.java +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - -/** - * Insert the type's description here. Creation date: (12/17/2000 7:38:15 PM) - * - * @author: Administrator - */ -public class Association { - protected Object key; - protected Object value; - - /** - * Association constructor comment. - */ - public Association(Object aKey, Object aValue) { - setKey(aKey); - setValue(aValue); - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 7:38:48 PM) - * - * @return java.lang.Object - */ - public java.lang.Object getKey() { - return key; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 7:38:48 PM) - * - * @return java.lang.Object - */ - public java.lang.Object getValue() { - return value; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 7:38:48 PM) - * - * @param newKey - * java.lang.Object - */ - public void setKey(java.lang.Object newKey) { - key = newKey; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 7:38:48 PM) - * - * @param newValue - * java.lang.Object - */ - public void setValue(java.lang.Object newValue) { - value = newValue; - } -} - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/CloneablePublic.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/CloneablePublic.java deleted file mode 100644 index d9960032c..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/CloneablePublic.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Sep 22, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.utilities; - -import org.eclipse.emf.common.notify.Adapter; - -/** - * Interface that exposes the clone method, for objects that need to generically copy other - * cloneable objects - */ -public interface CloneablePublic extends Cloneable, Adapter.Internal { - Object clone(); - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/CommandContext.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/CommandContext.java deleted file mode 100644 index 913139cb1..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/CommandContext.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Apr 27, 2004 - */ -package org.eclipse.wst.common.internal.emf.utilities; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.emf.ecore.resource.ResourceSet; -import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; - - - -/** - * @author John Mourra - */ -public class CommandContext implements ICommandContext { - - private IProgressMonitor monitor; - private Map properties; - private ResourceSet resourceSet; - - /** - * @param monitor - */ - public CommandContext(IProgressMonitor monitor) { - this(monitor, null, null); - } - - /** - * @param monitor - * @param configurationProperties - * @param resourceSet - */ - public CommandContext(IProgressMonitor monitor, Map configurationProperties, ResourceSet resourceSet) { - this.monitor = monitor; - this.properties = configurationProperties; - this.resourceSet = resourceSet; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.ws.rd.command.framework.ICommandContext#getProgressMonitor() - */ - public IProgressMonitor getProgressMonitor() { - if (monitor == null) - monitor = new NullProgressMonitor(); - return monitor; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.ws.rd.command.framework.ICommandContext#getConfigurationProperties() - */ - public Map getConfigurationProperties() { - if (properties == null) - properties = new HashMap(); - return properties; - } - - /* - * (non-Javadoc) - * - * @see com.ibm.ws.rd.command.framework.ICommandContext#getResourceSet() - */ - public ResourceSet getResourceSet() { - if (resourceSet == null) - resourceSet = new ResourceSetImpl(); - return resourceSet; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/CopyGroup.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/CopyGroup.java deleted file mode 100644 index 79b3b1e71..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/CopyGroup.java +++ /dev/null @@ -1,320 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.ResourceSet; - -/** - * This class is used to copy a group of RefObjects and/or Resources. This group will ensure that - * all non-composite relationships are deferred until all Resources and RefObjects are copied. This - * allows you to make copies of a group of objects that may have non-composite relationships and - * ensure that these relationships are pointing to the copied object if it is part of the group - * (either directly or through a containment relationship). Creation date: (12/17/2000 1:21:17 PM) - * - * @author: Administrator - */ -public class CopyGroup { - protected String defaultIdSuffix; - protected ResourceSet copyContext; - protected List resources; - protected List refObjects; - protected List copiedResources; - protected List copiedRefObjects; - protected boolean preserveIds = false; - - /** - * CopyGroup constructor comment. - */ - public CopyGroup() { - super(); - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:28:16 PM) - * - * @param aRefObject - * org.eclipse.emf.ecore.EObject - */ - public boolean add(EObject aRefObject) { - return add(aRefObject, null); - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:28:16 PM) - * - * @param aRefObject - * org.eclipse.emf.ecore.EObject - */ - public boolean add(EObject aRefObject, String idSuffix) { - if (aRefObject != null && !containsRefObject(aRefObject)) { - getRefObjects().add(createAssociation(aRefObject, idSuffix)); - return true; - } - return false; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:27:32 PM) - * - * @param aResources - * org.eclipse.emf.ecore.resource.Resource - */ - public void add(Resource aResource) { - add(aResource, null); - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:27:32 PM) - * - * @param aResources - * org.eclipse.emf.ecore.resource.Resource - */ - public void add(Resource aResource, String newUri) { - if (aResource != null) - getResources().add(createAssociation(aResource, newUri)); - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:28:16 PM) - * - * @param aRefObject - * org.eclipse.emf.ecore.EObject - */ - public void addCopied(EObject aRefObject) { - if (aRefObject != null) - getCopiedRefObjects().add(aRefObject); - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:27:32 PM) - * - * @param aResources - * org.eclipse.emf.ecore.resource.Resource - */ - public void addCopied(Resource aResource) { - if (aResource != null) { - getCopiedResources().add(aResource); - if (getCopyContext() != null) - getCopyContext().getResources().add(aResource); - } - } - - protected boolean contains(List associations, Object anObject) { - if (anObject == null) - return false; - int size = associations.size(); - Association assoc; - for (int i = 0; i < size; i++) { - assoc = (Association) associations.get(i); - if (assoc.getKey() == anObject) - return true; - } - return false; - } - - /** - * Return true if - * - * @aRefObject has been added to this group. Creation date: (12/17/2000 1:28:16 PM) - * @param aRefObject - * org.eclipse.emf.ecore.EObject - */ - public boolean containsRefObject(EObject aRefObject) { - return contains(getRefObjects(), aRefObject); - } - - /** - * Return true if - * - * @aResource has been added to this group. Creation date: (12/17/2000 1:28:16 PM) - * @param aRefObject - * org.eclipse.emf.ecore.EObject - */ - public boolean containsResource(Resource aResource) { - return contains(getResources(), aResource); - } - - private Association createAssociation(Object key, Object value) { - return new Association(key, value); - } - - /** - * Returns a List of RefObjects that were copied. Creation date: (12/17/2000 1:25:46 PM) - * - * @return java.util.List - */ - public java.util.List getCopiedRefObjects() { - if (copiedRefObjects == null) - copiedRefObjects = new ArrayList(); - return copiedRefObjects; - } - - /** - * Returns a List of Resources that were copied. Creation date: (12/17/2000 1:25:46 PM) - * - * @return java.util.List - */ - public java.util.List getCopiedResources() { - if (copiedResources == null) - copiedResources = new ArrayList(); - return copiedResources; - } - - /** - * The context to add all copied resources into. Creation date: (12/17/2000 8:09:45 PM) - * - * @return org.eclipse.emf.ecore.resource.ResourceSet - */ - public org.eclipse.emf.ecore.resource.ResourceSet getCopyContext() { - return copyContext; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:44:43 PM) - * - * @return java.lang.String - */ - public java.lang.String getDefaultIdSuffix() { - return defaultIdSuffix; - } - - /** - * Should the id be copied in the case where no suffix is specified? Defaults to false - */ - public boolean getPreserveIds() { - return preserveIds; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:25:46 PM) - * - * @return java.util.List - */ - public java.util.List getRefObjects() { - if (refObjects == null) - refObjects = new ArrayList(); - return refObjects; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:25:46 PM) - * - * @return java.util.List - */ - public java.util.List getResources() { - if (resources == null) - resources = new ArrayList(); - return resources; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:25:46 PM) - * - * @return java.util.List - */ - public java.util.List primGetRefObjects() { - return refObjects; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:25:46 PM) - * - * @return java.util.List - */ - public java.util.List primGetResources() { - return resources; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:28:16 PM) - * - * @param aRefObject - * org.eclipse.emf.ecore.EObject - * @return boolean - */ - public boolean remove(EObject aRefObject) { - if (aRefObject != null && primGetRefObjects() != null) { - Iterator it = primGetRefObjects().iterator(); - Association association; - while (it.hasNext()) { - association = (Association) it.next(); - if (association.getKey() == aRefObject) - return primGetRefObjects().remove(association); - } - } - return false; - } - - /** - * Insert the method's description here. Creation date: (12/17/2000 1:27:32 PM) - * - * @param aResources - * org.eclipse.emf.ecore.resource.Resource - * @return boolean - */ - public boolean remove(Resource aResource) { - if (aResource != null && primGetResources() != null) { - Iterator it = primGetResources().iterator(); - Association association; - while (it.hasNext()) { - association = (Association) it.next(); - if (association.getKey() == aResource) - return primGetResources().remove(association); - } - } - return false; - } - - /** - * Set the context to add all copied resources into. Creation date: (12/17/2000 8:09:45 PM) - * - * @param newCopyContext - * org.eclipse.emf.ecore.resource.Context - */ - public void setCopyContext(org.eclipse.emf.ecore.resource.ResourceSet newCopyContext) { - copyContext = newCopyContext; - } - - /** - * If an ID suffix is not defined for a EObject that is to be copied, this value will be used. - * Creation date: (12/17/2000 1:44:43 PM) - * - * @param newDefaultIdSuffix - * java.lang.String - */ - public void setDefaultIdSuffix(java.lang.String newDefaultIdSuffix) { - defaultIdSuffix = newDefaultIdSuffix; - } - - /** - * Should the id be copied in the case where no suffix is specified? - */ - public void setPreserveIds(boolean value) { - preserveIds = value; - } - - /** - * Subclasses should override this method if they require additional processing after the group - * has been copied. - * - * @param copyUtil - */ - public void postCopy(EtoolsCopyUtility copyUtil) { - } - -} - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DOMLoadOptions.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DOMLoadOptions.java deleted file mode 100644 index 05ae8a5ef..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DOMLoadOptions.java +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Mar 12, 2003 - * - * To change this generated comment go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.wst.common.internal.emf.utilities; - -/** - * @author schacher - * - * To change this generated comment go to Window>Preferences>Java>Code Generation>Code and Comments - */ -public class DOMLoadOptions { - protected boolean validate; - protected boolean allowJavaEncodings; - protected boolean expandEntityRefererences; - - /** - * @return boolean - */ - public boolean isAllowJavaEncodings() { - return allowJavaEncodings; - } - - /** - * @return boolean - */ - public boolean isExpandEntityRefererences() { - return expandEntityRefererences; - } - - /** - * @return boolean - */ - public boolean isValidate() { - return validate; - } - - /** - * Sets the allowJavaEncodings. - * - * @param allowJavaEncodings - * The allowJavaEncodings to set - */ - public void setAllowJavaEncodings(boolean allowJavaEncodings) { - this.allowJavaEncodings = allowJavaEncodings; - } - - /** - * Sets the expandEntityRefererences. - * - * @param expandEntityRefererences - * The expandEntityRefererences to set - */ - public void setExpandEntityRefererences(boolean expandEntityRefererences) { - this.expandEntityRefererences = expandEntityRefererences; - } - - /** - * Sets the validate. - * - * @param validate - * The validate to set - */ - public void setValidate(boolean validate) { - this.validate = validate; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DOMUtilities.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DOMUtilities.java deleted file mode 100644 index 3e80a8931..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DOMUtilities.java +++ /dev/null @@ -1,703 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.eclipse.jem.util.logger.proxy.Logger; -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; -import org.xml.sax.EntityResolver; -import org.xml.sax.ErrorHandler; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; - -/** - * A class containing common dom manipulation and search functions. - */ -public class DOMUtilities { - // Handy Constants - public static final String INDENT_STRING = "\t"; //$NON-NLS-1$ - public static final String NEWLINE_STRING = System.getProperty("line.separator"); //$NON-NLS-1$ - //Hack to be removed when the DOM apis change such that there is an easier - //way to fluff up and set the doctype - private static final String DUMMY_ENTITY_STRING = "dummy"; //$NON-NLS-1$ - private static final String DUMMY_ENTITY_NODE_STRING = "<dummy/>"; //$NON-NLS-1$ - private static DocumentBuilder defaultDocumentBuilder; - private static EntityResolver defaultEntityResolver; - - /** - * Returns an iterator that iterates over the sub nodes of a path. - */ - static public Iterator createPathIterator(String path) { - String tPath = path.startsWith("/") ? path.substring(1) : path; //$NON-NLS-1$ - if (tPath.length() == 0) - tPath = null; - final String aPath = tPath; - - return new Iterator() { - int prevIndex = 0; - int curIndex = 0; - String pathString = aPath; - - public boolean hasNext() { - return pathString != null && prevIndex != -1; - } - - public Object next() { - curIndex = pathString.indexOf('/', prevIndex); - String nodeString = null; - if (curIndex != -1) - nodeString = pathString.substring(prevIndex, curIndex++); - else - nodeString = pathString.substring(prevIndex); - prevIndex = curIndex; - return nodeString; - } - - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - - /** - * Get the text for the passed in node. - */ - static public String getChildText(Node node) { - Text textNode = getChildTextNode(node); - if (textNode != null) - return textNode.getData(); - return null; - } - - /** - * Get the text for the passed in node. - */ - static public Text getChildTextNode(Node node) { - Node textNode = node.getFirstChild(); - while (textNode != null && DOMUtilities.isTextNode(textNode)) { - if (!isWhitespace(textNode)) - return (Text) textNode; - textNode = textNode.getNextSibling(); - } - return null; - } - - /** - * Return a string representing the current indentation of the node. - */ - static public String getIndentString(Node node) { - Revisit.toDo(); - return ""; //$NON-NLS-1$ - } - - /** - * Get the last non-text child of a node. - * - * @return org.w3c.dom.Node The last non-text child node of - * @node. - * @param node - * org.w3c.dom.Node The node - */ - public static Node getLastNodeChild(Node node) { - if (node == null) - return null; - Node child = node.getLastChild(); - while (child != null && child.getNodeType() == Node.TEXT_NODE) - child = child.getPreviousSibling(); - return child; - } - - /** - * Get the next non-text sibling after a node. - * - * @return org.w3c.dom.Node The first non-text sibling node after - * @node. If there is no next non-text sibling, null is returned. - * @param node - * org.w3c.dom.Node The node - */ - public static Node getNextNodeSibling(Node node) { - Node sibling = node.getNextSibling(); - while (sibling != null && sibling.getNodeType() != Node.ELEMENT_NODE) - sibling = sibling.getNextSibling(); - return sibling; - } - - /** - * Get the first child Node with the specified name - */ - static public Node getNodeChild(Node node, String nodeName) { - Node child = null; - NodeList children = node.getChildNodes(); - for (int i = 0; i < children.getLength(); i++) { - Node n = children.item(i); - if (n.getNodeType() == Node.ELEMENT_NODE && n.getNodeName().equals(nodeName)) { - child = n; - break; - } - } - return child; - } - - /** - * Traverses the path passed in <pathName>. The path is a string in the form - * 'node1/node2/node3'. This method starts at node. - */ - static public Node getNodeChildForPath(Node parent, String pathName) { - - Node curNode = parent; - Iterator i = DOMUtilities.createPathIterator(pathName); - while (i.hasNext()) { - String child = (String) i.next(); - curNode = DOMUtilities.getNodeChild(curNode, child); - if (curNode == null) - return null; - } - return curNode; - } - - /** - * Get the Node children with the specified names - */ - static public List getNodeChildren(Node node, String[] nodeNames) { - NodeList childNodes = node.getChildNodes(); - ArrayList results = new ArrayList(); - - for (int i = 0; i < childNodes.getLength(); i++) { - Node n = childNodes.item(i); - if (n.getNodeType() == Node.ELEMENT_NODE) { - boolean found = false; - for (int j = 0; j < nodeNames.length; j++) { - if (nodeNames[j].equals(n.getNodeName())) { - found = true; - break; - } - } - if (found) - results.add(n); - } - } - return results; - } - - /** - * Get the Node children with the specified name - */ - static public List getNodeChildren(Node node, String nodeName) { - NodeList childNodes = node.getChildNodes(); - ArrayList results = new ArrayList(); - - for (int i = 0; i < childNodes.getLength(); i++) { - Node n = childNodes.item(i); - if (n.getNodeType() == Node.ELEMENT_NODE && n.getNodeName().equals(nodeName)) - results.add(n); - } - return results; - } - - /** - * Get the first non-text sibling before a node. - * - * @return org.w3c.dom.Node The first non-text sibling node before - * @node. If there is no previous non-text sibling, null is returned. - * @param node - * org.w3c.dom.Node The node - */ - public static Node getPreviousNodeSibling(Node node) { - if (node == null) - return null; - Node sibling = node.getPreviousSibling(); - while (sibling != null && DOMUtilities.isTextNode(sibling)) - sibling = sibling.getPreviousSibling(); - return sibling; - } - - /** - * Get the first text node before a node. - * - * @return org.w3c.dom.Node The first text node before - * @node. Null if no such node exist. - * @param node - * org.w3c.dom.Node The node - */ - public static Text getPreviousText(Node node) { - Text sibling = getPreviousTextSibling(node); - - if (sibling == null && node.getParentNode() != null) - sibling = getPreviousText(node.getParentNode()); - - return sibling; - } - - /** - * Get the first text sibling before a node. - * - * @return org.w3c.dom.Node The first text sibling node before - * @node. If there is no previous text sibling, null is returned. - * @param node - * org.w3c.dom.Node The node - */ - public static Text getPreviousTextSibling(Node node) { - Assert.isNotNull(node); - - Node sibling = node.getPreviousSibling(); - Node lastText = null; - while (sibling != null && sibling.getNodeType() == Node.TEXT_NODE) { - lastText = sibling; - sibling = sibling.getPreviousSibling(); - } - return (Text) lastText; - } - - /** - * Get the first text sibling before a node. - * - * @return org.w3c.dom.Node The first text sibling node before - * @node. If there is no previous text sibling, null is returned. - * @param node - * org.w3c.dom.Node The node - */ - public static String getTrailingWhitespace(Text node) { - Assert.isNotNull(node); - - String text = node.getData(); - if (text.length() == 0) - return ""; //$NON-NLS-1$ - - int i = text.length() - 1; - for (; i >= 0; i--) { - if (!Character.isWhitespace(text.charAt(i))) { - break; - } - } - - return text.substring(++i); - } - - /** - * Inserts <newNode>into <parent>after <refNode>. If <refNode>is null then the node is inserted - * to the beginning of the parent's child nodes. - * - * @param parent - * org.w3c.dom.Node - * @param newNode - * org.w3c.dom.Node - * @param refNode - * org.w3c.dom.Node - */ - public static void insertAfterNode(Node parent, Node newNode, Node refNode) { - Node insertBeforeNode = null; - if (refNode != null) { - insertBeforeNode = refNode.getNextSibling(); - } - if (refNode == null) - insertBeforeNode(parent, newNode, parent.getFirstChild()); - else - insertBeforeNode(parent, newNode, insertBeforeNode); - } - - /** - * Insert a <newNode>into <parent>before <refNode>. This utility method is used to ensure that - * the insertion does not result in two adjacent text nodes. The DOM model does not handle - * adjacent text nodes. They must be joined together. - * - * @param newNode - * org.w3c.dom.Node - * @param newNode - * org.w3c.dom.Node - * @param refNode - * org.w3c.dom.Node - */ - static public void insertBeforeNode(Node parent, Node newNode, Node refNode) { - if (newNode.getNodeType() == Node.TEXT_NODE) { - Text textNewNode = (Text) newNode; - - // If the insert before node is text, join it with the new node. - if (refNode != null && refNode.getNodeType() == Node.TEXT_NODE) { - Text textRefNode = (Text) refNode; - textRefNode.setData(textNewNode.getData() + textRefNode.getData()); - return; - } - // If the node we are inserting after is text, - // join it with the new node. - Node insertAfterNode = (refNode == null) ? parent.getLastChild() : refNode.getPreviousSibling(); - if (insertAfterNode != null && insertAfterNode.getNodeType() == Node.TEXT_NODE) { - Text textInsertAfterNode = (Text) insertAfterNode; - textInsertAfterNode.setData(textInsertAfterNode.getData() + textNewNode.getData()); - return; - } - } - // There is no text node to join to, simple insert the node. - parent.insertBefore(newNode, refNode); - } - - /** - * Insert a <newNode>into <parent>before <refNode>. This method will also insert the node before - * any whitespace nodes that appear in the tree before <refNode>. This method will also ensure - * that the insertion does not result in two adjacent text nodes. The DOM model does not handle - * adjacent text nodes. They must be joined together. - * - * @param newNode - * org.w3c.dom.Node - * @param newNode - * org.w3c.dom.Node - * @param refNode - * org.w3c.dom.Node - */ - static public void insertBeforeNodeAndWhitespace(Node parent, Node newNode, Node refNode) { - Node curNode = (refNode == null) ? parent.getLastChild() : refNode.getPreviousSibling(); - Node lastNode = refNode; - - while (curNode != null && (DOMUtilities.isWhitespace(curNode) || DOMUtilities.isComment(curNode))) { - lastNode = curNode; - curNode = curNode.getPreviousSibling(); - } - - insertBeforeNode(parent, newNode, lastNode); - } - - /** - * Return whether the node is a text node. - * - * @return boolean Answer true if the node is a text node, false otherwise. - * @param node - * org.w3c.dom.Node The node to check - */ - static public boolean isTextNode(Node node) { - Assert.isNotNull(node); - return (node.getNodeType() == Node.TEXT_NODE) || (node.getNodeType() == Node.CDATA_SECTION_NODE); - } - - /** - * Return whether the node is entirely comment or not. - * - * @return boolean Answer true if the node is whitespace, false otherwise. - * @param node - * org.w3c.dom.Node The node to check - */ - static public boolean isComment(Node node) { - Assert.isNotNull(node); - - return node.getNodeType() == Node.COMMENT_NODE; - } - - /** - * Return whether the node is entirely whitepace or not. - * - * @return boolean Answer true if the node is whitespace, false otherwise. - * @param node - * org.w3c.dom.Node The node to check - */ - static public boolean isWhitespace(Node node) { - Assert.isNotNull(node); - - if (node.getNodeType() != Node.TEXT_NODE) - return false; - - Text textNode = (Text) node; - String text = textNode.getData(); - if (text == null) - return false; - - for (int i = 0; i < text.length(); i++) { - if (!Character.isWhitespace(text.charAt(i))) { - return false; - } - } - return true; - } - - /** - * Remove all the children of <node> - */ - static public void removeAllChildren(Node node) { - NodeList list = node.getChildNodes(); - for (int i = 0; i < list.getLength(); i++) { - node.removeChild(list.item(i)); - } - } - - // traverses the DOM starting at the specified node and returns a list - // of nodes matching the search string - - static public ArrayList getAllNodes(Node node, String nodeName) { - ArrayList nodeList = new ArrayList(); - - String[] nodeNames = {nodeName}; - findAllNodes(node, nodeNames, nodeList); - - return nodeList; - } - - // traverses the DOM starting at the specified node and returns a list - // of nodes matching the search strings - - static public ArrayList getAllNodes(Node node, String[] nodeNamesArray) { - ArrayList nodeList = new ArrayList(); - findAllNodes(node, nodeNamesArray, nodeList); - - return nodeList; - } - - // recursive helper for getAllNodes - static private void findAllNodes(Node node, String[] nodeNames, ArrayList results) { - - NodeList nodes = node.getChildNodes(); - if (nodes != null) { - for (int i = 0; i < nodes.getLength(); i++) { - for (int j = 0; j < nodeNames.length; j++) { - if (nodes.item(i).getNodeName().equals(nodeNames[j])) { - results.add(nodes.item(i)); - } - } - findAllNodes(nodes.item(i), nodeNames, results); - } - } - } - - /** - * Returns the system defined JAXP document builder - */ - static public DocumentBuilder newDefaultDocumentBuilder(DOMLoadOptions options) throws ParserConfigurationException { - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - dbf.setValidating(options.isValidate()); - dbf.setNamespaceAware(options.isValidate()); - /* - * Causes errors in IBM JDK try { dbf.setAttribute(Renderer.JAXP_SCHEMA_LANGUAGE, - * Renwderer.W3C_XML_SCHEMA); } catch (IllegalArgumentException x) { } - */ - try { - dbf.setAttribute("http://apache.org/xml/features/allow-java-encodings", new Boolean(options.isAllowJavaEncodings())); //$NON-NLS-1$ - } catch (IllegalArgumentException ignore) { - Logger.getLogger().log("Warning: Parser does not support \"http://apache.org/xml/features/allow-java-encodings\"."); //$NON-NLS-1$ - } - try { - dbf.setAttribute("http://apache.org/xml/features/validation/schema", new Boolean(options.isValidate())); //$NON-NLS-1$ - } catch (IllegalArgumentException ignore) { - dbf.setValidating(false); - Logger.getLogger().log("Warning: Parser does not support \"http://apache.org/xml/features/validation/schema\". Validation will be disabled."); //$NON-NLS-1$ - } - dbf.setExpandEntityReferences(options.isExpandEntityRefererences()); - DocumentBuilder result = dbf.newDocumentBuilder(); - result.setErrorHandler(new ErrorHandler() { - /* - * (non-Javadoc) - * - * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException) - */ - public void error(SAXParseException arg0) throws SAXException { - throw arg0; - } - - /* - * (non-Javadoc) - * - * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException) - */ - public void fatalError(SAXParseException arg0) throws SAXException { - throw arg0; - } - - public void warning(SAXParseException arg0) throws SAXException { - Logger.getLogger().logWarning(arg0); - } - - }); - return result; - } - - /** - * Creates a stub document, where the DocumentType is defined by the parameters. - */ - static public Document createNewDocument(String doctype, String publicId, String systemId) throws ParserConfigurationException, SAXException, IOException { - DocumentBuilder builder = getDefaultDocumentBuilder(); - InputStream in = createHeaderInputStream(doctype, publicId, systemId, true); - Document result = builder.parse(in); - removeDummyEntity(result); - removeExtraneousComments(result); - return result; - } - - public static Document loadDocument(InputStream in, DOMLoadOptions options, EntityResolver resolver) throws ParserConfigurationException, SAXException, IOException { - DocumentBuilder builder = DOMUtilities.newDefaultDocumentBuilder(options); - builder.setEntityResolver(resolver); - Document result = builder.parse(in); - removeExtraneousComments(result); - return result; - } - - /** - * At the time of this writing, the DOM Level 2 APIs are not advanced enough for setting the - * document type; so the only parser independent way of accomplishing this is by creating a - * stream and parsing it. - */ - public static InputStream createHeaderInputStream(String doctype, String publicId, String systemId) { - return createHeaderInputStream(doctype, publicId, systemId, false); - } - - - - private static InputStream createHeaderInputStream(String doctype, String publicId, String systemId, boolean includeDummy) { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - - // The prior code (which is still in the catch block), uses - // the system default encoding [System.getProperty("file.encoding")]; - // on Z/OS this is Cp1047. The combination of "UTF-8" in the header - // and "Cp1047" in the writer create an unusable input stream. - - PrintWriter writer; - - try { - OutputStreamWriter outputWriter = new OutputStreamWriter(outputStream, "UTF-8"); //$NON-NLS-1$ - // throws UnsupportedEncodingException - writer = new PrintWriter(outputWriter); - } catch (UnsupportedEncodingException e) { - // Should never get here (earlier code) - writer = new PrintWriter(outputStream); - } - - writeHeader(writer, doctype, publicId, systemId); - if (includeDummy) - addDummyEntity(writer); - writer.flush(); - writer.close(); - - byte[] bytes = outputStream.toByteArray(); - return new ByteArrayInputStream(bytes); - } - - - private static void writeHeader(PrintWriter writer, String doctype, String publicId, String systemId) { - writer.write("<?xml version=\""); //$NON-NLS-1$ - writer.write("1.0"); //$NON-NLS-1$ - writer.write("\" encoding=\""); //$NON-NLS-1$ - writer.write("UTF-8"); //$NON-NLS-1$ - writer.write("\"?>"); //$NON-NLS-1$ - writer.println(); - - if (doctype != null) { - writer.write("<!DOCTYPE "); //$NON-NLS-1$ - writer.write(doctype); - writer.write(" PUBLIC \""); //$NON-NLS-1$ - writer.write(publicId); - writer.write("\" \""); //$NON-NLS-1$ - writer.write(systemId); - writer.write("\">"); //$NON-NLS-1$ - writer.println(); - } - } - - private static void addDummyEntity(PrintWriter writer) { - Revisit.revisit(); - writer.println(DUMMY_ENTITY_NODE_STRING); - //Major hack because we can not parse an empty document - } - - private static void removeDummyEntity(Document doc) { - doc.removeChild(getNodeChild(doc, DUMMY_ENTITY_STRING)); - } - - private static void removeExtraneousComments(Document doc) { - //another major hack because of a bug in XML4J 4.0.7 that added all the - //comments from the dtd to the document. Can be removed after we move up - //Xerces levels - Node aNode = doc.getFirstChild(); - while (aNode != null) { - Node nextNode = aNode.getNextSibling(); - if (aNode.getNodeType() == Node.COMMENT_NODE) - doc.removeChild(aNode); - aNode = nextNode; - } - } - - /** - * For performance, cache a static instance of the JAXP registered document builder. Validation - * is disabled for this instance. If you need validation, use - * {@link #newDefaultDocumentBuilder(boolean, boolean, boolean)} - * - * @return DocumentBuilder - * @throws ParserConfigurationException - * if JAXP is not configured correctly - */ - public static DocumentBuilder getDefaultDocumentBuilder() throws ParserConfigurationException { - if (defaultDocumentBuilder == null) { - DOMLoadOptions opts = new DOMLoadOptions(); - opts.setAllowJavaEncodings(true); - opts.setExpandEntityRefererences(true); - opts.setValidate(false); - defaultDocumentBuilder = newDefaultDocumentBuilder(opts); - defaultDocumentBuilder.setEntityResolver(defaultEntityResolver); - defaultDocumentBuilder.setErrorHandler(new ErrorHandler() { - /* - * (non-Javadoc) - * - * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException) - */ - public void error(SAXParseException exception) throws SAXException { - - } - - /* - * (non-Javadoc) - * - * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException) - */ - public void fatalError(SAXParseException exception) throws SAXException { - - } - - /* - * (non-Javadoc) - * - * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException) - */ - public void warning(SAXParseException exception) throws SAXException { - - } - - }); - } - - return defaultDocumentBuilder; - } - - /** - * @return - */ - public static EntityResolver getDefaultEntityResolver() { - return defaultEntityResolver; - } - - /** - * @param resolver - */ - public static void setDefaultEntityResolver(EntityResolver resolver) { - defaultEntityResolver = resolver; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DanglingHREFException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DanglingHREFException.java deleted file mode 100644 index 21f9254f7..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DanglingHREFException.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 May 12, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.utilities; - -/** - * Exception thrown when a proxy can not be resolved - */ -public class DanglingHREFException extends Exception { - - - public DanglingHREFException() { - super(); - } - - /** - * @param s - */ - public DanglingHREFException(String s) { - super(s); - } - - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultFeatureValueConverter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultFeatureValueConverter.java deleted file mode 100644 index b8a51c745..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultFeatureValueConverter.java +++ /dev/null @@ -1,354 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - - -import org.eclipse.emf.ecore.EAttribute; -import org.eclipse.emf.ecore.EClassifier; -import org.eclipse.emf.ecore.EEnum; -import org.eclipse.emf.ecore.EEnumLiteral; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.EcorePackage; -import org.eclipse.emf.ecore.xml.type.XMLTypePackage; - -/** - * Insert the type's description here. Creation date: (5/10/2001 2:49:49 PM) - * - * @author: Administrator - */ -public class DefaultFeatureValueConverter implements FeatureValueConverter { - private static final String FAILED_CONVERSION_PATTERN = WFTUtilsResourceHandler.Failed_to_convert__0__to___ERROR_; - - /** - * DefaultFeatureValueConverter constructor comment. - */ - public DefaultFeatureValueConverter() { - super(); - } - - /** - * Convert - * - * @aValue to a Boolean. - */ - protected Object convertToBoolean(Object aValue) { - if (aValue instanceof String) - return Boolean.valueOf((String) aValue); - if (aValue instanceof Boolean) - return aValue; - return failedToConvert(aValue, WFTUtilsResourceHandler.Boolean_UI_); - } - - /** - * Convert - * - * @aValue to a Byte. - */ - protected Object convertToByte(Object aValue) { - if (aValue instanceof String) - return Byte.valueOf((String) aValue); - if (aValue instanceof Byte) - return aValue; - return failedToConvert(aValue, WFTUtilsResourceHandler.Byte_UI_); - } - - /** - * Convert - * - * @aValue to a Character. - */ - protected Object convertToCharacter(Object aValue) { - if (aValue instanceof String && ((String) aValue).length() == 1) - return new Character(((String) aValue).charAt(0)); - if (aValue instanceof Character) - return aValue; - return failedToConvert(aValue, WFTUtilsResourceHandler.Character_UI_); - } - - /** - * Convert - * - * @aValue to a Double. - */ - protected Object convertToDouble(Object aValue) { - if (aValue instanceof String) { - try { - return Double.valueOf((String) aValue); - } catch (NumberFormatException e) { - return defaultDouble(); - } - } - if (aValue instanceof Double) - return aValue; - return failedToConvert(aValue, WFTUtilsResourceHandler.Double_UI_); - } - - /** - * Convert - * - * @aValue to a EEnumLiteral. - */ - protected Object convertToEnum(Object aValue, EStructuralFeature aFeature) { - EEnumLiteral literal = null; - EEnum eenum = (EEnum) aFeature.getEType(); - if (aValue instanceof String) - literal = eenum.getEEnumLiteral((String) aValue); - else if (aValue instanceof Integer) - literal = eenum.getEEnumLiteral(((Integer) aValue).intValue()); - else if (aValue instanceof EEnumLiteral) - literal = (EEnumLiteral) aValue; - - if (literal == null) - return failedToConvert(aValue, WFTUtilsResourceHandler.Enumeration_UI_); - - return literal.getInstance(); - } - - /** - * Convert - * - * @aValue to a Float. - */ - protected Object convertToFloat(Object aValue) { - if (aValue instanceof String) { - try { - return Float.valueOf((String) aValue); - } catch (NumberFormatException e) { - return defaultFloat(); - } - } - if (aValue instanceof Float) - return aValue; - return failedToConvert(aValue, WFTUtilsResourceHandler.Float_UI_); - } - - /** - * Convert - * - * @aValue to a Integer. - */ - protected Object convertToInteger(Object aValue) { - if (aValue instanceof String) { - try { - return Integer.valueOf((String) aValue); - } catch (NumberFormatException e) { - return defaultInteger(); - } - } - if (aValue instanceof Integer) - return aValue; - return failedToConvert(aValue, WFTUtilsResourceHandler.Integer_UI_); - } - - /** - * Convert - * - * @aValue to a Java Object. - */ - protected Object convertToJavaObject(Object aValue) { - return aValue; - } - - /** - * Convert - * - * @aValue to a Long. - */ - protected Object convertToLong(Object aValue) { - if (aValue instanceof String) { - try { - return Long.valueOf((String) aValue); - } catch (NumberFormatException e) { - return defaultLong(); - } - } - if (aValue instanceof Long) - return aValue; - return failedToConvert(aValue, WFTUtilsResourceHandler.Long_UI_); - } - - /** - * Convert - * - * @aValue to a MofObject. - */ - protected Object convertToMofObject(Object aValue) { - if (aValue instanceof EObject) - return aValue; - return failedToConvert(aValue, WFTUtilsResourceHandler.MofObject_UI_); - } - - /** - * Convert - * - * @aValue to a Short. - */ - protected Object convertToShort(Object aValue) { - if (aValue instanceof String) { - try { - return Short.valueOf((String) aValue); - } catch (NumberFormatException e) { - return defaultShort(); - } - } - if (aValue instanceof Short) - return aValue; - return failedToConvert(aValue, WFTUtilsResourceHandler.Short_UI_); - } - - /** - * Convert - * - * @aValue to a String. - */ - protected Object convertToString(Object aValue) { - return aValue.toString(); - } - - /** - * Convert - * - * @aValue to the type of - * @anAttribute. - */ - protected Object convertValue(Object aValue, org.eclipse.emf.ecore.EAttribute anAttribute) { - - EClassifier meta = anAttribute.getEType(); - if (meta.eClass() == EcorePackage.eINSTANCE.getEEnum()) - return convertToEnum(aValue, anAttribute); - if (meta.getEPackage() instanceof EcorePackage) - { - switch (meta.getClassifierID()) { - case EcorePackage.ESTRING : - return convertToString(aValue); - case EcorePackage.EBOOLEAN_OBJECT : - case EcorePackage.EBOOLEAN : - return convertToBoolean(aValue); - case EcorePackage.EINTEGER_OBJECT : - case EcorePackage.EINT : - return convertToInteger(aValue); - case EcorePackage.EFLOAT_OBJECT : - case EcorePackage.EFLOAT : - return convertToFloat(aValue); - case EcorePackage.ECHARACTER_OBJECT : - case EcorePackage.ECHAR : - return convertToCharacter(aValue); - case EcorePackage.ELONG_OBJECT : - case EcorePackage.ELONG : - return convertToLong(aValue); - case EcorePackage.EBYTE_OBJECT : - case EcorePackage.EBYTE : - return convertToByte(aValue); - case EcorePackage.EDOUBLE_OBJECT : - case EcorePackage.EDOUBLE : - return convertToDouble(aValue); - case EcorePackage.ESHORT_OBJECT : - case EcorePackage.ESHORT : - return convertToShort(aValue); - // case EcorePackage.EENUM: - // return convertToEnum(aValue, anAttribute); - case EcorePackage.EOBJECT : - return convertToMofObject(aValue); - case EcorePackage.EJAVA_OBJECT : - return convertToJavaObject(aValue); - } - } - else if (meta.getEPackage() instanceof XMLTypePackage) - { - switch (meta.getClassifierID()) { - case XMLTypePackage.STRING : - return convertToString(aValue); - case XMLTypePackage.BOOLEAN_OBJECT : - case XMLTypePackage.BOOLEAN : - return convertToBoolean(aValue); - case XMLTypePackage.INT_OBJECT : - case XMLTypePackage.INTEGER : - case XMLTypePackage.INT : - return convertToInteger(aValue); - case XMLTypePackage.FLOAT_OBJECT : - case XMLTypePackage.FLOAT : - return convertToFloat(aValue); - case XMLTypePackage.LONG_OBJECT : - case XMLTypePackage.LONG : - return convertToLong(aValue); - case XMLTypePackage.BYTE_OBJECT : - case XMLTypePackage.BYTE : - return convertToByte(aValue); - case XMLTypePackage.DOUBLE_OBJECT : - case XMLTypePackage.DOUBLE : - return convertToDouble(aValue); - case XMLTypePackage.SHORT_OBJECT : - case XMLTypePackage.SHORT : - return convertToShort(aValue); - } - } - return aValue; - } - - /** - * Convert - * - * @aValue to the type of - * @aFeature. - */ - public Object convertValue(Object aValue, org.eclipse.emf.ecore.EStructuralFeature aFeature) { - if (aValue == null || aFeature == null || !(aFeature instanceof EAttribute)) - return aValue; //nothing to convert - return convertValue(aValue, (EAttribute) aFeature); - } - - /** - * Return the default Double value. - */ - protected Double defaultDouble() { - return null; - } - - /** - * Return the default Float value. - */ - protected Float defaultFloat() { - return null; - } - - /** - * Return the default Integer value. - */ - protected Integer defaultInteger() { - return null; - } - - /** - * Return the default Long value. - */ - protected Long defaultLong() { - return null; - } - - /** - * Return the default Short value. - */ - protected Short defaultShort() { - return null; - } - - /** - * Failed to convert - * - * @aValue. - */ - protected Object failedToConvert(Object aValue, String aString) { - String errorString = java.text.MessageFormat.format(FAILED_CONVERSION_PATTERN, new String[]{aValue.toString(), aString}); - throw new FeatureValueConversionException(errorString); - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultOverridableResourceFactoryRegistry.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultOverridableResourceFactoryRegistry.java deleted file mode 100644 index 3441d0edd..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultOverridableResourceFactoryRegistry.java +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Mar 14, 2003 - * - * To change this generated comment go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.wst.common.internal.emf.utilities; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.Resource.Factory; -import org.eclipse.emf.ecore.resource.impl.ResourceFactoryRegistryImpl; - -/** - * @author DABERG - * - * To change this generated comment go to Window>Preferences>Java>Code Generation>Code and Comments - */ -public class DefaultOverridableResourceFactoryRegistry extends ResourceFactoryRegistryImpl { - protected static Resource.Factory GLOBAL_FACTORY = Resource.Factory.Registry.INSTANCE.getFactory(URI.createURI(DEFAULT_EXTENSION)); - - /** - * - */ - public DefaultOverridableResourceFactoryRegistry() { - super(); - } - - public Resource.Factory getFactory(URI uri) { - Object resourceFactory = null; - if (resourceFactory == null) { - String protocol = uri.scheme(); - resourceFactory = protocolToFactoryMap.get(protocol); - if (resourceFactory == null) { - String extension = uri.fileExtension(); - resourceFactory = extensionToFactoryMap.get(extension); - if (resourceFactory == null) { - resourceFactory = delegatedGetFactory(uri); - if (resourceFactory == GLOBAL_FACTORY) { - resourceFactory = extensionToFactoryMap.get(Resource.Factory.Registry.DEFAULT_EXTENSION); - if (resourceFactory == null) - resourceFactory = GLOBAL_FACTORY; - } - - } - } - } - - return resourceFactory instanceof Resource.Factory.Descriptor ? ((Resource.Factory.Descriptor) resourceFactory).createFactory() : (Resource.Factory) resourceFactory; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.ecore.resource.impl.ResourceFactoryRegistryImpl#delegatedGetFactory(org.eclipse.emf.common.util.URI) - */ - protected Factory delegatedGetFactory(URI uri) { - return Resource.Factory.Registry.INSTANCE.getFactory(uri); - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DeferredReferenceUtilityAction.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DeferredReferenceUtilityAction.java deleted file mode 100644 index ec1f66830..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DeferredReferenceUtilityAction.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EReference; - -/** - * Insert the type's description here. Creation date: (12/15/2000 5:25:43 PM) - * - * @author: Administrator - */ -public abstract class DeferredReferenceUtilityAction { - protected EReference reference; - protected Object referenceValue; - protected EObject copyContainer; - protected String idSuffix; - - /** - * DeferredCopy constructor comment. - */ - public DeferredReferenceUtilityAction(EReference aReference, Object aValue, String aSuffix, EObject aCopyContainer) { - reference = aReference; - referenceValue = aValue; - idSuffix = aSuffix; - copyContainer = aCopyContainer; - } - - /** - * Insert the method's description here. Creation date: (12/16/2000 9:32:28 AM) - * - * @return org.eclipse.emf.ecore.EObject - */ - public org.eclipse.emf.ecore.EObject getCopyContainer() { - return copyContainer; - } - - /** - * Insert the method's description here. Creation date: (12/15/2000 5:34:56 PM) - * - * @return java.lang.String - */ - public java.lang.String getIdSuffix() { - return idSuffix; - } - - /** - * Insert the method's description here. Creation date: (12/15/2000 5:34:56 PM) - * - * @return org.eclipse.emf.ecore.EReference - */ - public org.eclipse.emf.ecore.EReference getReference() { - return reference; - } - - /** - * Insert the method's description here. Creation date: (12/16/2000 9:32:28 AM) - * - * @return java.lang.Object - */ - public Object getReferenceValue() { - return referenceValue; - } - - public abstract void performAction(); -} - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EncoderDecoder.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EncoderDecoder.java deleted file mode 100644 index 69fe06b94..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EncoderDecoder.java +++ /dev/null @@ -1,30 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - -/** - * Represents an interface to an object which can encode and decode values. This typically involves - * cryptography algorithms. This interface, along with the supplied adapters provide an extension - * mechanism for pluggable crytography that can be used when storing and retrieving attribute - * values, and is used prevalently for encoding and decoding password values of mof objects. - */ -public interface EncoderDecoder { - /** - * Returns a decoded version of the value. - */ - public String decode(String value); - - /** - * Returns an encoded version of the value. - */ - public String encode(String value); -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EncoderDecoderAdapter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EncoderDecoderAdapter.java deleted file mode 100644 index 788b30062..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EncoderDecoderAdapter.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - -/** - * An adapter for EncoderDecoder implementations - */ -public abstract class EncoderDecoderAdapter implements EncoderDecoder { - - /** - * EncoderDecoderAdapter constructor comment. - */ - public EncoderDecoderAdapter() { - super(); - } - - /** - * Returns a decoded version of the value. - */ - public abstract String decode(String value); - - /** - * Returns an encoded version of the value. - */ - public abstract String encode(String value); -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EncoderDecoderRegistry.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EncoderDecoderRegistry.java deleted file mode 100644 index d6151123c..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EncoderDecoderRegistry.java +++ /dev/null @@ -1,111 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - -import java.util.HashMap; -import java.util.Map; - -/** - * Registry for storing and retrieving value decoders and encoders. Usage Example: - * - * <pre> - * - * - * // Use the standard WebSphere password value encoder/decoder. - * EncoderDecoderRegistry.getDefaultRegistry().setDefaultEncoderDecoder(new com.ibm.ejs.security.util.WASEncoderDecoder()); - * // Begin tracking changes... - * WriteBackHelper.begin(); - * // Load a resource which may have un-encoded values... - * // Note: The WCCM will attempt to detect un-encoded values. If unencoded values - * // are found, the value will be encoded, and the resource will be added to the - * // WriteBackHelper. - * Resource res = resourceSet.load("myResource"); - * // Ensure that any changes due to encoding are written back out. - * WriteBackHelper.end(); - * </pre> - */ -public class EncoderDecoderRegistry { - protected static EncoderDecoderRegistry _defaultInstance; - public static final EncoderDecoder INITIAL_DEFAULT_ENCODER = PassthruEncoderDecoder.INSTANCE; - protected Map encoders = new HashMap(); - protected Object defaultEncoderKey; - - /** - * EncoderDecoderRegistry constructor comment. - */ - public EncoderDecoderRegistry() { - super(); - initializeDefaultEncoders(); - } - - /** - * Insert the method's description here. Creation date: (2/2/2001 12:43:31 AM) - */ - public void addEncoderDecoder(EncoderDecoder encoderDecoder) { - encoders.put(encoderDecoder.getClass().getName(), encoderDecoder); - if (defaultEncoderKey == null) - defaultEncoderKey = encoderDecoder.getClass().getName(); - } - - /** - * Returns an encoder/decoder by key. - */ - public EncoderDecoder getDefaultEncoderDecoder() { - if (defaultEncoderKey == null) - return null; - return (EncoderDecoder) encoders.get(defaultEncoderKey); - } - - /** - * Returns the default registry to use for retrieving value encoders and decoders - */ - public static EncoderDecoderRegistry getDefaultRegistry() { - if (_defaultInstance == null) { - _defaultInstance = new EncoderDecoderRegistry(); - } - return _defaultInstance; - } - - /** - * Returns an encoder/decoder by key. - */ - public EncoderDecoder getEncoderDecoder(Object key) { - return (EncoderDecoder) encoders.get(key); - } - - /** - * Initializes a standard set of encoder/decoders. - */ - public void initializeDefaultEncoders() { - setDefaultEncoderDecoder(INITIAL_DEFAULT_ENCODER); - addEncoderDecoder(new XMLValueEncoderDecoder()); - } - - /** - * Removes the encoder/decoder with the specified key. - */ - public void removeEncoderDecoder(Object key) { - if (encoders.containsKey(key)) { - encoders.remove(key); - } - } - - /** - * Returns an encoder/decoder by key. - */ - public void setDefaultEncoderDecoder(EncoderDecoder encoder) { - defaultEncoderKey = encoder.getClass().getName(); - if (!encoders.containsKey(defaultEncoderKey)) { - addEncoderDecoder(encoder); - } - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopySession.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopySession.java deleted file mode 100644 index ca678b898..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopySession.java +++ /dev/null @@ -1,184 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.eclipse.emf.common.notify.impl.NotificationImpl; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.xmi.XMLResource; - -/** - * Insert the type's description here. Creation date: (05/04/01 11:25:59 PM) - * - * @author: Administrator - */ -public class EtoolsCopySession extends EtoolsCopyUtility { - public static final int RESOURCE_COPIED = 500; - private EtoolsCopyUtility parentCopyUtility; - private XMLResource currentResource; - private XMLResource currentCopyResource; - - /** - * EtoolsCopySession constructor comment. - */ - public EtoolsCopySession(EtoolsCopyUtility aCopyUtility) { - parentCopyUtility = aCopyUtility; - setPreserveIds(aCopyUtility.preserveIds()); - setCopyAdapters(aCopyUtility.isCopyAdapters()); - } - - /** - * Copy all Resources and RefObjects within <code>aGroup</code> and add them to - * <code>aGroup</code>. Non composite references will be deferred until all objects are - * copied from <code>aGroup</code>. - * - * Copy Resources first and then copy RefObjects. - */ - public void copy(CopyGroup aGroup) { - if (aGroup != null) { - copyResources(aGroup); - copyRefObjects(aGroup); - executeDeferredCopyActions(); - aGroup.postCopy(this); - notifyNewResourcesCopied(aGroup); - } - } - - /** - * This method should be used if you are only going to copy <code>aRefObject</code> in this - * copy execution. - */ - public EObject copy(EObject aRefObject, String idSuffix) { - EObject copied = containmentCopy(aRefObject, idSuffix); - executeDeferredCopyActions(); - return copied; - } - - /** - * This method should be used if you are only going to copy <code>aRefObject</code> in this - * copy execution. This method only copies <code>aRefObject</code> attributes. - */ - public EObject copyObject(EObject aRefObject, String idSuffix) { - EObject copied = containmentCopyObject(aRefObject, idSuffix); - executeDeferredCopyActions(); - return copied; - } - - /** - * This method should be used if you are only going to copy <code>aResource</code> in this - * copy execution. The copied Resource will have a URI equal to <code>newUri</code>. - */ - public Resource copy(Resource aResource, String newUri) { - Resource copied = containmentCopy(aResource, newUri); - executeDeferredCopyActions(); - copyModificationFlag(aResource, copied); - notifyNewResourceCopied(copied); - return copied; - } - - protected void notifyNewResourcesCopied(CopyGroup group) { - List copied = group.getCopiedResources(); - for (int i = 0; i < copied.size(); i++) { - notifyNewResourceCopied((Resource) copied.get(i)); - } - } - - protected void notifyNewResourceCopied(Resource copied) { - copied.eNotify(new NotificationImpl(RESOURCE_COPIED, null, null)); - } - - /** - * @see com.ibm.etools.emf.ecore.utilities.copy.EtoolsCopyUtility#primCopyObject(EObject, - * String) - */ - protected EObject primCopyObject(EObject aRefObject, String idSuffix) { - EObject copy = super.primCopyObject(aRefObject, idSuffix); - copyIdIfNecessary(aRefObject, copy, idSuffix); - return copy; - } - - protected void copyIdIfNecessary(EObject obj, EObject copy, String idSuffix) { - if ((idSuffix == null && !preserveIds) || currentResource == null) - return; - String id = currentResource.getID(obj); - if (id == null) - return; - id = idSuffix == null ? id : id + idSuffix; - currentCopyResource.setID(copy, id); - } - - - /** - * Set delivery back on for all the cached objects and push them to the parentCopyUtility. - */ - public void flush() { - Iterator it = getCopiedObjects().entrySet().iterator(); - Map parentCopies = getParentCopyUtility().getCopiedObjects(); - Map.Entry entry; - EObject copy; - while (it.hasNext()) { - entry = (Map.Entry) it.next(); - copy = (EObject) entry.getValue(); - copy.eSetDeliver(true); - parentCopies.put(entry.getKey(), copy); - } - copiedObjects = null; - } - - /** - * Return a cached copy. - */ - public EObject getCopy(EObject anObject) { - EObject copied = super.getCopy(anObject); - if (copied == null) - copied = getParentCopyUtility().getCopy(anObject); - return copied; - } - - /** - * Insert the method's description here. Creation date: (05/04/01 11:28:07 PM) - * - * @return com.ibm.etools.emf.ecore.utilities.copy.EtoolsCopyUtility - */ - protected EtoolsCopyUtility getParentCopyUtility() { - return parentCopyUtility; - } - - /** - * Return an instance of EObject that is the same type as <code>aRefObject</code>. - */ - public EObject newInstance(EObject aRefObject) { - EObject newType = super.newInstance(aRefObject); - newType.eSetDeliver(false); - return newType; - } - - /** - * @see com.ibm.etools.emf.ecore.utilities.copy.EtoolsCopyUtility#newInstance(Resource, String) - */ - public Resource newInstance(Resource aResource, String newUri) { - Resource copy = super.newInstance(aResource, newUri); - if (aResource instanceof XMLResource) { - currentResource = (XMLResource) aResource; - currentCopyResource = (XMLResource) copy; - } else { - currentResource = null; - currentCopyResource = null; - } - return copy; - } - -} - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopyUtility.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopyUtility.java deleted file mode 100644 index fa2455623..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopyUtility.java +++ /dev/null @@ -1,669 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.emf.common.notify.Adapter; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EAttribute; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EFactory; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EPackage; -import org.eclipse.emf.ecore.EReference; -import org.eclipse.emf.ecore.ETypedElement; -import org.eclipse.emf.ecore.EcorePackage; -import org.eclipse.emf.ecore.resource.Resource; - - -/** - * Insert the type's description here. Creation date: (12/13/2000 9:10:55 PM) - * - * @author: Administrator - */ -public class EtoolsCopyUtility { - protected static final String REFENUMLITERAL_TYPE_NAME = "EEnumLiteral"; //$NON-NLS-1$ - private final EcorePackage pkg = EcorePackage.eINSTANCE; - - private final ETypedElement METAENAME = pkg.getENamedElement_Name(); - - protected HashMap copiedObjects; - protected List deferredReferenceCopies; - protected boolean preserveIds = false; - protected boolean copyAdapters = false; - protected HashMap copiedAdapters; - - protected class DeferredSingleReferenceCopyAction extends DeferredReferenceUtilityAction { - public DeferredSingleReferenceCopyAction(EReference aReference, Object aValue, String aSuffix, EObject aCopyContainer) { - super(aReference, aValue, aSuffix, aCopyContainer); - } - - public void performAction() { - EObject value = (EObject) getReferenceValue(); - getCopyContainer().eSet(getReference(), getCopyIfFound(value)); - } - } - - protected class DeferredManyReferenceCopyAction extends DeferredReferenceUtilityAction { - public DeferredManyReferenceCopyAction(EReference aReference, List aValue, String aSuffix, EObject aCopyContainer) { - super(aReference, aValue, aSuffix, aCopyContainer); - } - - public void performAction() { - List copyList = (List) getCopyContainer().eGet(getReference()); - Iterator it = ((List) getReferenceValue()).iterator(); - EObject next; - while (it.hasNext()) { - next = (EObject) it.next(); - copyList.add(getCopyIfFound(next)); - } - } - } - - /** - * Insert the method's description here. Creation date: (12/13/2000 9:14:26 PM) - * - * @param aRefObject - * org.eclipse.emf.ecore.EObject - */ - public EtoolsCopyUtility() { - } - - /** - * Create a <code>DeferredManyReferenceCopyAction</code> and add it to the list of deferred - * copy actions. - */ - protected void addDeferredManyReferenceCopy(EReference reference, List aValue, String idSuffix, EObject aCopyContainer) { - getDeferredReferenceCopies().add(new DeferredManyReferenceCopyAction(reference, aValue, idSuffix, aCopyContainer)); - } - - /** - * Create a <code>DeferredSingleReferenceCopyAction</code> and add it to the list of deferred - * copy actions. - */ - protected void addDeferredSingleReferenceCopy(EReference reference, EObject aValue, String idSuffix, EObject aCopyContainer) { - getDeferredReferenceCopies().add(new DeferredSingleReferenceCopyAction(reference, aValue, idSuffix, aCopyContainer)); - } - - /** - * Check for an already copied object first. - */ - protected EObject containmentCopy(EObject anObject, String idSuffix) { - EObject copied = getCopy(anObject); - if (copied == null) - copied = primCopy(anObject, idSuffix); - return copied; - } - - /** - * Check for an already copied object first. - */ - protected EObject containmentCopyObject(EObject anObject, String idSuffix) { - EObject copied = getCopy(anObject); - if (copied == null) - copied = primCopyObject(anObject, idSuffix); - return copied; - } - - protected Resource containmentCopy(Resource aResource, String newUri) { - /* copied resources are never cached */ - return primCopy(aResource, newUri); - } - - /** - * Copy all Resources and RefObjects within <code>aGroup</code> and add them to - * <code>aGroup</code>. Non composite references will be deferred until all objects are - * copied from <code>aGroup</code>. - * - * Copy Resources first and then copy RefObjects. - */ - public void copy(CopyGroup aGroup) { - if (aGroup != null) { - EtoolsCopySession session = new EtoolsCopySession(this); - session.setPreserveIds(aGroup.getPreserveIds()); - session.copy(aGroup); - session.flush(); - } - } - - public EObject copy(EObject aRefObject) { - return copy(aRefObject, null); - } - - /** - * This method should be used if you are only going to copy <code>aRefObject</code> in this - * copy execution. - */ - public EObject copy(EObject aRefObject, String idSuffix) { - EtoolsCopySession session = new EtoolsCopySession(this); - EObject copied = session.copy(aRefObject, idSuffix); - session.flush(); - return copied; - } - - /** - * This method should be used if you are only going to copy <code>aRefObject</code> in this - * copy execution. This method only copies <code>aRefObject</code> with its properties, not - * references. - */ - public EObject copyObject(EObject aRefObject, String idSuffix) { - EtoolsCopySession session = new EtoolsCopySession(this); - EObject copied = session.copyObject(aRefObject, idSuffix); - session.flush(); - return copied; - } - - /** - * This method should be used if you are only going to copy <code>aResource</code> in this - * copy execution. The copied Resource will have a URI equal to <code>newUri</code>. - */ - public Resource copy(Resource aResource, String newUri) { - EtoolsCopySession session = new EtoolsCopySession(this); - Resource copied = session.copy(aResource, newUri); - session.flush(); - return copied; - } - - /** - * If an attribute is set and its value is not <code>null</code>, then perform copy - * <code>attribute</code> value from <code>aRefObject</code> to <code>copyRef</code>. - * Null is a valid value if the attribute is set. - */ - - protected void copyAttribute(EAttribute attribute, EObject aRefObject, String idSuffix, EObject copyRef) { - if (!attribute.isChangeable()) - return; //ignore - if (attribute.isMany()) { - List value = (List) aRefObject.eGet(attribute); - if (value != null) - copyManyAttribute(attribute, value, aRefObject, idSuffix, copyRef); - } else if (aRefObject.eIsSet(attribute)) { - Object value = aRefObject.eGet(attribute); - if (value == null) - copyRef.eSet(attribute, value); - else - copySingleAttribute(attribute, value, aRefObject, idSuffix, copyRef); - } else if (attribute == METAENAME) { - //set name to the ID (this is computed as a default), only get here if isSetName is - // false. - copyRef.eSet(attribute, aRefObject.eGet(attribute)); - } - } - - /** - * Iterate over the attributes of the receiver and copy each attribute. - */ - protected void copyCurrentAttributes(EObject aRefObject, String idSuffix, EObject copyRef) { - List attributes = aRefObject.eClass().getEAllAttributes(); - if (attributes != null) { - Iterator it = attributes.iterator(); - EAttribute ra; - while (it.hasNext()) { - ra = (EAttribute) it.next(); - copyAttribute(ra, aRefObject, idSuffix, copyRef); - } - } - } - - /** - * This method will iterate over the references of the receiver. If a reference's value is not - * <code>null</code>, then a series of tests are done before setting the value with the - * copied object, <code>copyRef</code>. - * - * Tests: 1. Do nothing if the reference equals the metaEContainer or metaEContains references. - */ - - protected void copyCurrentReferences(EObject aRefObject, String idSuffix, EObject copyRef) { - List references = aRefObject.eClass().getEAllReferences(); - if (references != null) { - Iterator it = references.iterator(); - EReference rr; - while (it.hasNext()) { - rr = (EReference) it.next(); - if (shouldCopyReference(rr)) - copyReference(rr, aRefObject, idSuffix, copyRef); - } - } - } - - /** - * Iterate over <code>anExtent</code> and copy each element to <code>copyExtent</code>. - */ - protected void copyExtent(EList anExtent, EList copyExtent) { - Iterator it = anExtent.iterator(); - EObject refObject; - while (it.hasNext()) { - refObject = (EObject) it.next(); - copyExtent.add(containmentCopy(refObject, null)); - } - } - - /** - * Copy a many value attribute which is treated as a many valued reference. - * - * Tests: - * - * 1. If the type is <bold>not </bold> <code>null</code>, then set the value on - * <code>copyRef</code> without making a copy. 2. If the type is <code>null</code>, then - * obtain the list from <code>copyRef</code> and add a copy of each value from the original - * list to it. - */ - - protected void copyManyAttribute(EAttribute attribute, List aValue, EObject aRefObject, String idSuffix, EObject copyRef) { - if (attribute.getEType() == null) - copyRef.eSet(attribute, aValue); - else { - List copyList = (List) copyRef.eGet(attribute); - Iterator it = aValue.iterator(); - Object next; - while (it.hasNext()) { - next = it.next(); - if (next instanceof EObject) - copyList.add(containmentCopy((EObject) next, idSuffix)); - else - copyList.add(next); - } - } - } - - /** - * This method will iterate over the references of the receiver. If a reference's value is not - * <code>null</code>, then a series of tests are done before setting the value with the - * copied object, <code>copyRef</code>. - * - * Tests: 1. If the reference is many, obtain the list from the receiving object and make a copy - * of each value if the reference is composite before adding to the list; otherwise, just add - * each value to the of the <code>copyRef</code>. - */ - - protected void copyManyReference(EReference aReference, List aList, EObject aRefObject, String idSuffix, EObject copyRef) { - if (!aList.isEmpty()) { - if (aReference.isContainment()) { - List copyList = (List) copyRef.eGet(aReference); - Iterator it = aList.iterator(); - EObject targetValue; - while (it.hasNext()) { - targetValue = (EObject) it.next(); - copyList.add(containmentCopy(targetValue, idSuffix)); - } - } else - addDeferredManyReferenceCopy(aReference, aList, idSuffix, copyRef); - } - } - - /** - * This method will iterate over the references of the receiver. If a reference's value is not - * <code>null</code>, then perform the copy. - */ - - protected void copyReference(EReference aReference, EObject aRefObject, String idSuffix, EObject copyRef) { - if (aReference.isMany()) { - List value = (List) aRefObject.eGet(aReference); - if (value != null) - copyManyReference(aReference, value, aRefObject, idSuffix, copyRef); - } else if (aRefObject.eIsSet(aReference)) { - Object value = aRefObject.eGet(aReference); - copySingleReference(aReference, (EObject) value, aRefObject, idSuffix, copyRef); - } - } - - /** - * Copy all RefObjects from <code>aGroup</code> and add the copy back to <code>aGroup</code>. - */ - protected void copyRefObjects(CopyGroup aGroup) { - Association association; - EObject refObject; - String idSuffix; - if (aGroup.primGetRefObjects() != null) { - Iterator it = aGroup.primGetRefObjects().iterator(); - while (it.hasNext()) { - association = (Association) it.next(); - refObject = (EObject) association.getKey(); - idSuffix = (String) association.getValue(); - if (idSuffix == null) - idSuffix = aGroup.getDefaultIdSuffix(); - aGroup.addCopied(containmentCopy(refObject, idSuffix)); - } - } - } - - /** - * Copy all Resources from <code>aGroup</code> and add the copy back to <code>aGroup</code>. - */ - protected void copyResources(CopyGroup aGroup) { - Association association; - Resource resource; - String uri; - if (aGroup.primGetResources() != null) { - Iterator it = aGroup.primGetResources().iterator(); - while (it.hasNext()) { - association = (Association) it.next(); - resource = (Resource) association.getKey(); - uri = (String) association.getValue(); - Resource copied = containmentCopy(resource, uri); - copyModificationFlag(resource, copied); - aGroup.addCopied(copied); - } - } - } - - /** - * Copy a single value attribute. - * - * Tests: - * - * 1. If an attribute type is not <code>null</code> then it is an object type and it must be - * copied. Do not copy the value if the attribute is an Enumeration type. 2. If an attribute - * type is <bold>not </bold> <code>null</code> then copy the value before setting it on - * <code>copyRef</code>. - */ - - protected void copySingleAttribute(EAttribute attribute, Object aValue, EObject aRefObject, String idSuffix, EObject copyRef) { - if (attribute.getEType() == null) { - copyRef.eSet(attribute, aValue); - } else { - //MOF108 - // if (attribute.isObjectType()) - if (attribute.getEType() instanceof EClass) - copyRef.eSet(attribute, containmentCopy((EObject) aValue, idSuffix)); - else - copyRef.eSet(attribute, aValue); - } - } - - /** - * This method will iterate over the references of the receiver. If a reference's value is not - * <code>null</code>, then a series of tests are done before setting the value with the - * copied object, <code>copyRef</code>. - * - * Tests: 1. If the reference is <bold>not </bold> many, make a copy of the value if the - * reference is composite before setting the value with <code>copyRef</code>; otherwise, just - * set the value as is. - */ - - protected void copySingleReference(EReference aReference, EObject aValue, EObject aRefObject, String idSuffix, EObject copyRef) { - //Exceptional case; the relationship is not the container relationship - //And is not navigable in the other direction; go ahead and copy - if (aValue != aRefObject.eContainer() || aReference.getEOpposite() == null) { - if (aReference.isContainment()) - copyRef.eSet(aReference, containmentCopy(aValue, idSuffix)); - else - addDeferredSingleReferenceCopy(aReference, aValue, idSuffix, copyRef); - } - } - - /** - * Copy all Resources and RefObjects within <code>aGroup</code> and add them to - * <code>aGroup</code>. Non composite references will be deferred until all objects are - * copied from <code>aGroup</code>. - * - * Copy Resources first and then copy RefObjects. - */ - public static void createCopy(CopyGroup aGroup) { - EtoolsCopyUtility utility = new EtoolsCopyUtility(); - utility.copy(aGroup); - } - - /** - * Copies attributes - */ - public static void createAttributeCopy(EObject aRefObject, EObject copyObject) { - EtoolsCopyUtility utility = new EtoolsCopyUtility(); - utility.copyCurrentAttributes(aRefObject, null, copyObject); - } - - /** - * Copies all set attributes and references based on containment. Thus, it will copy the entire - * containment tree. Use the idSuffix to define the suffix that will be appended to the existing - * IDs of copied objects. - */ - public static EObject createCopy(EObject aRefObject) { - return createCopy(aRefObject, null); - } - - /** - * Copies all set attributes and references based on containment. Thus, it will copy the entire - * containment tree. Use the idSuffix to define the suffix that will be appended to the existing - * IDs of copied objects. - */ - public static EObject createCopy(EObject aRefObject, String idSuffix) { - EtoolsCopyUtility utility = new EtoolsCopyUtility(); - return utility.copy(aRefObject, idSuffix); - } - - /** - * Copy <code>aResource</code> using <code>newUri</code> for the URI. - */ - public static Resource createCopy(Resource aResource, String newUri) { - EtoolsCopyUtility utility = new EtoolsCopyUtility(); - return utility.copy(aResource, newUri); - } - - protected void executeDeferredCopyActions() { - if (primGetDeferredReferenceCopies() != null) { - Iterator it = primGetDeferredReferenceCopies().iterator(); - DeferredReferenceUtilityAction action; - while (it.hasNext()) { - action = (DeferredReferenceUtilityAction) it.next(); - action.performAction(); - } - primGetDeferredReferenceCopies().clear(); - } - } - - /** - * Insert the method's description here. Creation date: (12/13/2000 9:17:35 PM) - * - * @return java.util.HashMap - */ - protected java.util.HashMap getCopiedObjects() { - if (copiedObjects == null) - copiedObjects = new HashMap(200); - return copiedObjects; - } - - protected java.util.HashMap getCopiedAdapters() { - if (copiedAdapters == null) - copiedAdapters = new HashMap(200); - return copiedAdapters; - } - - /** - * Return a cached copy. - */ - public EObject getCopy(EObject anObject) { - if (anObject == null) - return null; - return (EObject) getCopiedObjects().get(anObject); - } - - /** - * Return a cached copy, if none, return the argument. - */ - public EObject getCopyIfFound(EObject anObject) { - EObject copied = getCopy(anObject); - return copied == null ? anObject : copied; - } - - /** - * Insert the method's description here. Creation date: (12/16/2000 9:11:32 AM) - * - * @return java.util.List - */ - protected java.util.List getDeferredReferenceCopies() { - if (deferredReferenceCopies == null) - deferredReferenceCopies = new ArrayList(100); - return deferredReferenceCopies; - } - - /** - * Return an instance of EObject that is the same type as <code>aRefObject</code>. - */ - public EObject newInstance(EObject aRefObject) { - if (aRefObject == null) - return null; - EPackage epkg = (EPackage) aRefObject.eClass().eContainer(); - EFactory factory = epkg.getEFactoryInstance(); - EClass refObj = aRefObject.eClass(); - return factory.create(refObj); - } - - /** - * Return an instance of Resource that uses the same ResourceFactory as the one used by - * <code>aResource</code>. If <code>newUri</code> is <code>null</code> then use the URI - * from <code>aResource</code>. - */ - public Resource newInstance(Resource aResource, String newUri) { - if (aResource == null) - return null; - Resource newResource; - String originalUri = aResource.getURI().toString(); - newUri = newUri == null ? originalUri : newUri; - - Resource.Factory factory = null; - if (aResource.getResourceSet() == null) - factory = Resource.Factory.Registry.INSTANCE.getFactory(URI.createURI(originalUri)); - else - factory = aResource.getResourceSet().getResourceFactoryRegistry().getFactory(URI.createURI(originalUri)); - - - newResource = factory.createResource(URI.createURI(newUri)); - return newResource; - } - - /** - * Should the id be copied in the case where no suffix is specified? Defaults to false - */ - public boolean preserveIds() { - return preserveIds; - } - - /** - * Copies all set attributes and references based on containment. Thus, it will copy the entire - * containment tree. Use the idSuffix to define the suffix that will be appended to the existing - * IDs of copied objects. If an idSuffix does not exist, do not set an id on the copied object. - */ - protected EObject primCopy(EObject aRefObject, String idSuffix) { - if (aRefObject == null) - return null; - EObject copyRef = primCopyObject(aRefObject, idSuffix); - - copyCurrentReferences(aRefObject, idSuffix, copyRef); - return copyRef; - } - - /** - * Copies all set attributes based on containment. Thus, it will copy the entire containment - * tree. Use the idSuffix to define the suffix that will be appended to the existing IDs of - * copied objects. If an idSuffix does not exist, do not set an id on the copied object. - */ - protected EObject primCopyObject(EObject aRefObject, String idSuffix) { - if (aRefObject == null) - return null; - EObject copyRef = newInstance(aRefObject); - - recordCopy(aRefObject, copyRef); - copyCurrentAttributes(aRefObject, idSuffix, copyRef); - if (isCopyAdapters()) - copyAdapters(aRefObject, copyRef); - return copyRef; - } - - protected void copyAdapters(EObject aRefObject, EObject copyRef) { - List adapters = aRefObject.eAdapters(); - for (int i = 0; i < adapters.size(); i++) { - Adapter adapter = (Adapter) adapters.get(i); - copyAdapter(aRefObject, copyRef, adapter); - - } - } - - protected void copyAdapter(EObject aRefObject, EObject copyRef, Adapter adapter) { - if (!(adapter instanceof CloneablePublic)) - return; - CloneablePublic copyAdapter = (CloneablePublic) getCopiedAdapters().get(adapter); - if (copyAdapter == null) { - copyAdapter = (CloneablePublic) ((CloneablePublic) adapter).clone(); - getCopiedAdapters().put(adapter, copyAdapter); - } - if (copyAdapter != null) - copyRef.eAdapters().add(copyAdapter); - } - - /** - * Copies all set attributes and references based on containment. Thus, it will copy the entire - * containment tree. Use the idSuffix to define the suffix that will be appended to the existing - * IDs of copied objects. - */ - protected Resource primCopy(Resource aResource, String newUri) { - if (aResource == null) - return null; - Resource copyResource = newInstance(aResource, newUri); - copyExtent(aResource.getContents(), copyResource.getContents()); - return copyResource; - } - - protected void copyModificationFlag(Resource aResource, Resource copied) { - if (aResource.isModified()) - copied.setModified(true); - } - - /** - * Insert the method's description here. Creation date: (12/16/2000 9:11:32 AM) - * - * @return java.util.List - */ - private java.util.List primGetDeferredReferenceCopies() { - return deferredReferenceCopies; - } - - public void recordCopy(EObject aSource, EObject aCopy) { - getCopiedObjects().put(aSource, aCopy); - } - - public void recordCopy(Adapter aSource, Adapter aCopy) { - getCopiedAdapters().put(aSource, aCopy); - } - - /** - * Should the id be copied in the case where no suffix is specified? - */ - public void setPreserveIds(boolean value) { - preserveIds = value; - } - - protected boolean shouldCopyReference(EReference aReference) { - return aReference.isChangeable(); - } - - /** - * @return - */ - public boolean isCopyAdapters() { - return copyAdapters; - } - - /** - * Flag used to indicate whether adapters should be copied as well. In order for an adapter to - * be copied, it must implement the {@link CloneablePublic}interface. - */ - public void setCopyAdapters(boolean b) { - copyAdapters = b; - } - -} - - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExceptionHelper.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExceptionHelper.java deleted file mode 100644 index b5fc13369..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExceptionHelper.java +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.wst.common.frameworks.internal.enablement.nonui.IWFTWrappedException; - - - -/** - * Utility class to factor common code for implementers of IArchiveWrappedException - */ -public class ExceptionHelper { - - /** - * Utility class; cannot be instantiated - */ - private ExceptionHelper() { - super(); - } - - /** - * Return the messages from - * - * @exception and - * all nested exceptions, in order from outermost to innermost - */ - public static java.lang.String[] getAllMessages(IWFTWrappedException exception) { - List messages = new ArrayList(4); - messages.add(exception.getMessage()); - Exception nested = exception.getNestedException(); - while (nested != null) { - messages.add(nested.getMessage()); - if (nested instanceof IWFTWrappedException) - nested = ((IWFTWrappedException) nested).getNestedException(); - else - nested = null; - } - return (String[]) messages.toArray(new String[messages.size()]); - } - - /** - * Return the messages from - * - * @exception and - * all nested exceptions, in order from outermost to innermost, concatenated as - * one - */ - public static String getConcatenatedMessages(IWFTWrappedException exception) { - String[] messages = getAllMessages(exception); - StringBuffer sb = new StringBuffer(256); - for (int i = 0; i < messages.length; i++) { - sb.append(messages[i]); - if (i < messages.length - 1) - sb.append('\n'); - } - return sb.toString(); - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java deleted file mode 100644 index 848983326..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java +++ /dev/null @@ -1,272 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - -import java.io.FileNotFoundException; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.emf.common.notify.Adapter; -import org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EAdapterList; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.common.util.WrappedException; -import org.eclipse.emf.ecore.EAttribute; -import org.eclipse.emf.ecore.ENamedElement; -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.util.EcoreUtil; -import org.eclipse.emf.ecore.xmi.XMLResource; - - - -public class ExtendedEcoreUtil extends EcoreUtil { - private static FileNotFoundDetector FILE_NOT_FOUND_DETECTOR; - private static String NAME_ATTRIBUTE_STRING = "name"; //$NON-NLS-1$ - - - public interface FileNotFoundDetector { - boolean isFileNotFound(WrappedException wrappedEx); - } - - public static void setFileNotFoundDetector(FileNotFoundDetector detector) { - FILE_NOT_FOUND_DETECTOR = detector; - } - - public static FileNotFoundDetector getFileNotFoundDetector() { - if (FILE_NOT_FOUND_DETECTOR == null) { - FILE_NOT_FOUND_DETECTOR = new FileNotFoundDetector() { - public boolean isFileNotFound(WrappedException wrappedEx) { - if (getInnerFileNotFoundException(wrappedEx) != null) - return true; - return false; - } - }; - } - return FILE_NOT_FOUND_DETECTOR; - } - - public static FileNotFoundException getInnerFileNotFoundException(WrappedException wrappedEx) { - if (wrappedEx.exception() instanceof java.io.FileNotFoundException) { - return (FileNotFoundException) wrappedEx.exception(); - } else if (wrappedEx.exception() instanceof WrappedException) { - return getInnerFileNotFoundException((WrappedException) wrappedEx.exception()); - } - return null; - } - - public static void eSetOrAdd(EObject obj, EStructuralFeature feature, Object value) { - eSetOrAdd(obj, feature, value, 0); - } - - public static void eSetOrAdd(EObject obj, EStructuralFeature feature, Object value, int newIndex) { - if (feature.isMany() && value != null) { - if (newIndex >= 0) - ((List) obj.eGet(feature)).add(newIndex, value); - else - ((List) obj.eGet(feature)).add(value); - } else { - obj.eSet(feature, value); - } - } - - public static void eUnsetOrRemove(EObject obj, EStructuralFeature feature, Object value) { - if (feature == null || feature.isMany()) - ((List) obj.eGet(feature)).remove(value); - else - obj.eUnset(feature); - } - - public static boolean endsWith(URI sourceUri, URI testUri) { - //TODO Waiting on new emf URI API - String[] sourceSegments = sourceUri.segments(); - String[] testSegments = testUri.segments(); - int i = testSegments.length; - int j = sourceSegments.length; - if (j >= i) { - boolean test = true; - - while (test && i > 0) { - i--; - j--; - test = testSegments[i].equals(sourceSegments[j]); - } - return test; - } - return false; - } - - public static String getName(EObject obj) { - if (obj == null) - return null; - if (obj instanceof ENamedElement) - return ((ENamedElement) obj).getName(); - List allAtts = obj.eClass().getEAllAttributes(); - int size = allAtts.size(); - EAttribute att, nameAttribute = null; - for (int i = 0; i < size; i++) { - att = (EAttribute) allAtts.get(i); - if (NAME_ATTRIBUTE_STRING.equals(att.getName())) { - nameAttribute = att; - break; - } - } - if (nameAttribute != null) - return (String) obj.eGet(nameAttribute); - return null; - } - - /** - * @deprecated No longer needed. - */ - public static void addLoadingTag(Resource resource) { - //resource.eAdapters().add(IsLoadingDetector.INSTANCE); - } - - /** - * @deprecated No longer needed. - */ - public static void removeLoadingTag(Resource resource) { - //resource.eAdapters().remove(IsLoadingDetector.INSTANCE); - } - - /** - * Return true if the resource is currently being loaded. This is determined by checking for the - * IsLoadingDector in the list of eAdapters on the resource. - * - * @param resource - * @return boolean - * - * @see addLoadingTag(Resource) - * @see removeLoadingTag(Resource) - * @deprecated use {@link Resource.Internal#isLoading()} - */ - public static boolean isLoading(Resource resource) { - return resource != null ? ((Resource.Internal)resource).isLoading() : false; - } - - public static Adapter createAdapterForLoading(Adapter targetAdapter, EObject targetObject) { - Resource res = targetObject.eResource(); - if (res == null || isLoading(res)) - return new IsLoadingProxyAdapter(targetAdapter, targetObject); - return targetAdapter; - } - - public static void preRegisterPackage(String nsPrefix, EPackage.Descriptor descriptor) { - if (!EPackage.Registry.INSTANCE.containsKey(nsPrefix)) - EPackage.Registry.INSTANCE.put(nsPrefix, descriptor); - } - /** - * Returns the adapter of the specified type. - * @param anObject - * @param adapters list of adapters to search. - * @param type the type of adapter. - * @return an adapter from the list or null. - */ - public static Adapter getAdapter(EObject anObject, List adapters, Object type) { - - Object [] adaptArray = ((EAdapterList)adapters).data(); - if (adaptArray == null) return null; - for (int i = 0; i < adaptArray.length; i++) { - Adapter adapter = (Adapter) adaptArray[i]; - if (adapter != null && adapter.isAdapterForType(type)) { - return adapter; - } - } - return null; - } - - /** - * Remove this object from it's container, and make it and all it's children - * proxies - */ - public static void unload(EObject root) { - Resource res = root.eResource(); - EObject container = root.eContainer(); - /* Making sure the proxy is created first before unloading */ - if (root != null && res != null) - becomeProxy(root, res); - if (container == null) - if (res != null) - res.getContents().remove(root); - else { - EStructuralFeature feature = root.eContainmentFeature(); - if (feature != null) - eUnsetOrRemove(container, feature, root); - } - - } - - /** - * Turns this object and all it's children to proxies, and removes adapters precondition: The - * object has been removed from it's container - */ - public static void becomeProxy(EObject root, Resource res) { - Iterator iter = root.eAllContents(); - while (iter.hasNext()) { - doBecomeProxy((InternalEObject) iter.next(), res); - } - doBecomeProxy((InternalEObject) root, res); - } - - protected static void doBecomeProxy(InternalEObject p, Resource res) { - String id = res.getURIFragment(p); - p.eSetProxyURI(res.getURI().appendFragment(id)); - if (res instanceof XMLResource) { - ((XMLResource) res).setID(p,null); - } - p.eAdapters().clear(); - } - - public static void removeProxy(EObject root, Resource res) { - Iterator iter = root.eAllContents(); - while (iter.hasNext()) { - doRemoveProxy((InternalEObject) iter.next(), res); - } - doRemoveProxy((InternalEObject) root, res); - } - - protected static void doRemoveProxy(InternalEObject p, Resource res) { - String id = p.eProxyURI().fragment(); - if (res instanceof XMLResource) { - ((XMLResource) res).setID(p, id); - } - p.eSetProxyURI(null); - } - - - /** - * Ensures the passed object is not a proxy; if it is, throws an exception indicating the bad - * HREF. If the object is null, does nothing. - * - * @param object - * @throws DanglingHREFException - */ - public static void checkProxy(EObject object) throws DanglingHREFException { - if (object == null || !object.eIsProxy()) - return; - String msg = WFTUtilsResourceHandler.getString(WFTUtilsResourceHandler.DANGLING_HREF_ERROR_, new Object[]{((InternalEObject) object).eProxyURI()}); - throw new DanglingHREFException(msg); - } - - /** - * Return true if o1 and o2 are not the same values. This implementation takes into account that - * either parameter can be null. - * - * @param o1 - * @param o2 - * @return - */ - public static boolean valueChanged(Object o1, Object o2) { - return (o1 == null ^ o2 == null) || (o1 == null || !o1.equals(o2)); - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/FeatureValueConversionException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/FeatureValueConversionException.java deleted file mode 100644 index 0525a1f44..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/FeatureValueConversionException.java +++ /dev/null @@ -1,29 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - -public class FeatureValueConversionException extends RuntimeException { - - /** - * Constructor for FeatureValueConversionException. - */ - public FeatureValueConversionException() { - super(); - } - - /** - * Constructor for FeatureValueConversionException. - * - * @param s - */ - public FeatureValueConversionException(String s) { - super(s); - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/FeatureValueConverter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/FeatureValueConverter.java deleted file mode 100644 index 786a68748..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/FeatureValueConverter.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - - -import org.eclipse.emf.ecore.EStructuralFeature; - -/** - * Insert the type's description here. Creation date: (5/10/2001 2:46:54 PM) - * - * @author: Administrator - */ -public interface FeatureValueConverter { - static final FeatureValueConverter DEFAULT = new DefaultFeatureValueConverter(); - - /** - * Convert - * - * @aValue to the type of - * @aFeature. - */ - Object convertValue(Object aValue, EStructuralFeature aFeature); -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommand.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommand.java deleted file mode 100644 index d04099588..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommand.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceDelta; -import org.eclipse.core.runtime.CoreException; - -/** - * @author John Mourra - */ -public interface ICommand { - - /* - * This will contain the multi-selection of objects to deploy. This selection could be used to - * filter elements within a Module. Any other setup code should be done here... - */ - void init(Object[] selection); - - /** - * @param resource - * @param delta - * @param context - * @return - * @throws CoreException - */ - public boolean execute(IResource resource, IResourceDelta delta, ICommandContext context) throws CoreException; - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommandContext.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommandContext.java deleted file mode 100644 index bee3f613c..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommandContext.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - -import java.util.Map; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.emf.ecore.resource.ResourceSet; - -/** - * @author John Mourra - */ -public interface ICommandContext { - - /** - * @return - */ - public IProgressMonitor getProgressMonitor(); - - /** - * @return - */ - public Map getConfigurationProperties(); - - /** - * @return - */ - public ResourceSet getResourceSet(); -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IDUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IDUtil.java deleted file mode 100644 index 374ae1327..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IDUtil.java +++ /dev/null @@ -1,70 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.xmi.XMLResource; - -public class IDUtil { - - /** - * This method is invoked to assign a unique ID to the object. The object must be contained in a - * resource. - */ - public static void assignID(EObject object) { - Resource aResource = object.eResource(); - if (aResource instanceof XMLResource) - assignID(object, (XMLResource) aResource); - - } - - public static String getOrAssignID(EObject object) { - Resource aResource = object.eResource(); - if (aResource instanceof XMLResource) - return getOrAssignID(object, (XMLResource) aResource); - return null; - } - - public static String getOrAssignID(EObject object, XMLResource aResource) { - String id = aResource.getID(object); - if (id == null) - return assignID(object, aResource); - return id; - } - - public static String assignID(EObject object, XMLResource aResource) { - String name = getBaseIDForAssignment(object); - if (name == null) - return null; - String id = ensureUniqueID(aResource, name); - aResource.setID(object, id); - return id; - } - - protected static String ensureUniqueID(XMLResource aResource, String baseIDName) { - baseIDName += "_"; //$NON-NLS-1$ - //Change to use the current time instead of incremental numbers to help - //support team development. - long currentTime = System.currentTimeMillis(); - String id = baseIDName + currentTime; - while (aResource.getEObject(id) != null) { - ++currentTime; - id = baseIDName + currentTime; - } - return id; - } - - protected static String getBaseIDForAssignment(EObject object) { - EClass metaO = object.eClass(); - return metaO.getName(); - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordCipherException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordCipherException.java deleted file mode 100644 index 5ff513be3..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordCipherException.java +++ /dev/null @@ -1,16 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - - -import org.omg.CORBA.UserException; - -public class InvalidPasswordCipherException extends UserException { -} - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordDecodingException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordDecodingException.java deleted file mode 100644 index 2e1680819..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordDecodingException.java +++ /dev/null @@ -1,16 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - - -import org.omg.CORBA.UserException; - -public class InvalidPasswordDecodingException extends UserException { -} - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordEncodingException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordEncodingException.java deleted file mode 100644 index dd882d7d8..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordEncodingException.java +++ /dev/null @@ -1,16 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - - -import org.omg.CORBA.UserException; - -public class InvalidPasswordEncodingException extends UserException { -} - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IsLoadingDetector.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IsLoadingDetector.java deleted file mode 100644 index d7d114c12..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IsLoadingDetector.java +++ /dev/null @@ -1,41 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 Apr 1, 2003 - * - * To change the template for this generated file go to Window>Preferences>Java>Code Generation>Code - * and Comments - */ -package org.eclipse.wst.common.internal.emf.utilities; - -import org.eclipse.emf.common.notify.Adapter; -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.Notifier; - - -public class IsLoadingDetector implements Adapter { - public static final IsLoadingDetector INSTANCE = new IsLoadingDetector(); - - private IsLoadingDetector() { - } - - public void notifyChanged(Notification notification) { - } - - public Notifier getTarget() { - return null; - } - - public void setTarget(Notifier newTarget) { - } - - public boolean isAdapterForType(Object type) { - return type == this; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IsLoadingProxyAdapter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IsLoadingProxyAdapter.java deleted file mode 100644 index d90669bd8..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IsLoadingProxyAdapter.java +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Apr 1, 2003 - * - * To change the template for this generated file go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.wst.common.internal.emf.utilities; - -import org.eclipse.emf.common.notify.Adapter; -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.impl.AdapterImpl; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; - -/** - * @author DABERG - * - * To change the template for this generated type comment go to Window>Preferences>Java>Code - * Generation>Code and Comments - */ -public class IsLoadingProxyAdapter extends AdapterImpl { - private Resource resource; - private Adapter targetAdapter; - private EObject targetObject; - - public IsLoadingProxyAdapter(Adapter aTargetAdapter, EObject aTargetObject) { - targetAdapter = aTargetAdapter; - targetObject = aTargetObject; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification) - */ - public void notifyChanged(Notification msg) { - if (resource != null) { - //listen for the remove of the loading adapter - if (msg.getFeatureID(null) == Resource.RESOURCE__IS_LOADED && msg.getEventType() == Notification.SET) { - removeProxySupport(); - reset(); - } - } else if (cacheResource()) { - targetAdapter.notifyChanged(msg); - reset(); - } - } - - /** - * Cache the resource variable and return true if we removed the proxy support. - */ - private boolean cacheResource() { - if (getTarget() != null) { - EObject eObj = (EObject) getTarget(); - resource = eObj.eResource(); - if (resource != null) { - eObj.eAdapters().remove(this); - if (ExtendedEcoreUtil.isLoading(resource)) - resource.eAdapters().add(this); - else { - targetObject.eAdapters().add(targetAdapter); - return true; - } - } - } - return false; - } - - /** - * - */ - private void removeProxySupport() { - getTarget().eAdapters().remove(this); - targetObject.eAdapters().add(targetAdapter); - } - - private void reset() { - resource = null; - targetAdapter = null; - targetObject = null; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Namespace.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Namespace.java deleted file mode 100644 index 1a4a736b3..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Namespace.java +++ /dev/null @@ -1,42 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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 20, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.utilities; - - -public class Namespace { - - protected String prefix; - protected String nsURI; - - - public Namespace(String prefix, String uri) { - this.prefix = prefix; - this.nsURI = uri; - } - - public String getNsURI() { - return nsURI; - } - - public String getPrefix() { - return prefix; - } - - public void setNsURI(String string) { - nsURI = string; - } - - public void setPrefix(String string) { - prefix = string; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/NamespaceAdapter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/NamespaceAdapter.java deleted file mode 100644 index a21a01607..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/NamespaceAdapter.java +++ /dev/null @@ -1,205 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 20, 2003 - * - */ -package org.eclipse.wst.common.internal.emf.utilities; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.eclipse.emf.common.notify.impl.AdapterImpl; -import org.eclipse.emf.common.notify.impl.NotificationImpl; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.impl.EStructuralFeatureImpl; -import org.eclipse.emf.ecore.util.EcoreUtil; - - -/** - * Internal class used to hold namespaces parsed from an XML file using the xmlns:prefix="aURI" - * syntax - */ -public class NamespaceAdapter extends AdapterImpl implements CloneablePublic { - - protected final static String ADAPTER_TYPE = NamespaceAdapter.class.getName(); - protected Map prefixesToNS; - protected List namespaces; - - public final static EStructuralFeature NOTIFICATION_FEATURE = new EStructuralFeatureImpl() { - }; - - private static class Notification extends NotificationImpl { - - /** - * @param eventType - * @param oldValue - * @param newValue - */ - public Notification(int eventType, Object oldValue, Object newValue) { - super(eventType, oldValue, newValue); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.impl.NotificationImpl#getFeature() - */ - public Object getFeature() { - return NOTIFICATION_FEATURE; - } - } - - protected NamespaceAdapter() { - super(); - } - - public static void addNamespace(String prefix, String uri, EObject obj) { - if (obj == null) - return; - NamespaceAdapter adapter = getAdapter(obj); - if (adapter != null) - adapter.addNamespace(prefix, uri); - } - - public static void removeNamespace(String prefix, EObject obj) { - if (obj == null) - return; - NamespaceAdapter adapter = retrieveExistingAdapter(obj); - if (adapter != null) - adapter.removeNamespace(prefix); - } - - /** - * Facade method for resolving prefixes to an actual namespace URI. Used for objects contained - * by instances of {@link com.ibm.etools.emf2xml.TranslatorResource}. Walks up the object - * containment path until a namespace is found, or returns null. - */ - public static String getResolvedNamespaceURI(String prefix, EObject obj) { - if (prefix == null || obj == null) - return null; - EObject container = obj; - String nsURI; - while (container != null) { - nsURI = getNamespaceURIAtThisLevel(prefix, container); - if (nsURI != null) - return nsURI; - container = container.eContainer(); - } - return null; - } - - public static String getNamespaceURIAtThisLevel(String prefix, EObject obj) { - if (obj == null) - return null; - NamespaceAdapter adapter = retrieveExistingAdapter(obj); - return adapter == null ? null : adapter.getNamespaceURI(prefix); - } - - public static List getNamespaces(EObject obj) { - if (obj == null) - return Collections.EMPTY_LIST; - NamespaceAdapter adapter = retrieveExistingAdapter(obj); - return adapter == null ? null : adapter.getNamespaces(); - - } - - protected static NamespaceAdapter retrieveExistingAdapter(EObject obj) { - return (NamespaceAdapter) EcoreUtil.getExistingAdapter(obj, ADAPTER_TYPE); - } - - protected static NamespaceAdapter getAdapter(EObject obj) { - NamespaceAdapter adapter = retrieveExistingAdapter(obj); - return adapter == null ? createAdapter(obj) : adapter; - } - - protected static NamespaceAdapter createAdapter(EObject obj) { - NamespaceAdapter adapter = new NamespaceAdapter(); - adapter.setTarget(obj); - obj.eAdapters().add(adapter); - return adapter; - } - - protected void addNamespace(String prefix, String uri) { - Namespace ns = new Namespace(prefix, uri); - if (namespaces == null) - namespaces = new ArrayList(); - if (prefixesToNS == null) - prefixesToNS = new HashMap(); - - prefixesToNS.put(prefix, ns); - namespaces.add(ns); - fireNotification(org.eclipse.emf.common.notify.Notification.ADD, null, ns); - - } - - protected void removeNamespace(String prefix) { - Namespace ns = null; - if (prefixesToNS != null) - ns = (Namespace) prefixesToNS.get(prefix); - - if (ns != null) - namespaces.remove(ns); - fireNotification(org.eclipse.emf.common.notify.Notification.REMOVE, ns, null); - } - - protected String getNamespaceURI(String prefix) { - if (prefixesToNS == null) - return null; - Namespace ns = (Namespace) prefixesToNS.get(prefix); - if (ns != null) - return ns.getNsURI(); - return null; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object) - */ - public boolean isAdapterForType(Object type) { - return ADAPTER_TYPE.equals(type); - } - - public List getNamespaces() { - return namespaces == null ? Collections.EMPTY_LIST : Collections.unmodifiableList(namespaces); - } - - protected void fireNotification(int type, Object oldValue, Object newValue) { - if (target != null) - target.eNotify(new Notification(type, oldValue, newValue)); - } - - public boolean hasNamespaces() { - return namespaces != null && !namespaces.isEmpty(); - } - - /* - * (non-Javadoc) - * - * @see com.ibm.etools.emf.ecore.utilities.CloneablePublic#clone() - */ - public Object clone() { - NamespaceAdapter result = new NamespaceAdapter(); - if (hasNamespaces()) { - for (int i = 0; i < namespaces.size(); i++) { - Namespace ns = (Namespace) namespaces.get(i); - result.addNamespace(ns.getPrefix(), ns.getNsURI()); - } - } - return result; - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PassthruEncoderDecoder.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PassthruEncoderDecoder.java deleted file mode 100644 index e6840594f..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PassthruEncoderDecoder.java +++ /dev/null @@ -1,41 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - -/** - * A passthru EncoderDecoder implementation - */ -public class PassthruEncoderDecoder extends EncoderDecoderAdapter implements EncoderDecoder { - public static final PassthruEncoderDecoder INSTANCE = new PassthruEncoderDecoder(); - public static final String KEY = PassthruEncoderDecoder.class.getName(); - - /** - * EncoderDecoderAdapter constructor comment. - */ - private PassthruEncoderDecoder() { - super(); - } - - /** - * Returns a decoded version of the value. - */ - public String decode(String value) { - return value; - } - - /** - * Returns an encoded version of the value. - */ - public String encode(String value) { - return value; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordCipherUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordCipherUtil.java deleted file mode 100644 index f2371587d..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordCipherUtil.java +++ /dev/null @@ -1,66 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - -public class PasswordCipherUtil { - private static final String DEFAULT_SUPPORTED_CRYPTO_ALGORITHMS[] = {"xor"}; //$NON-NLS-1$ - private static String _supported_crypto_algorithms[]; - - public PasswordCipherUtil() { - } - - public static byte[] decipher(byte abyte0[], String s) throws InvalidPasswordCipherException, UnsupportedCryptoAlgorithmException { - if (s == null) - throw new UnsupportedCryptoAlgorithmException(); - byte abyte1[] = null; - if (s.equalsIgnoreCase(DEFAULT_SUPPORTED_CRYPTO_ALGORITHMS[0])) - abyte1 = xor(abyte0); - else - throw new UnsupportedCryptoAlgorithmException(); - - if (abyte1 == null) - throw new InvalidPasswordCipherException(); - - return abyte1; - } - - public static byte[] encipher(byte abyte0[], String s) throws InvalidPasswordCipherException, UnsupportedCryptoAlgorithmException { - if (s == null) - throw new UnsupportedCryptoAlgorithmException(); - byte abyte1[] = null; - if (s.equalsIgnoreCase(DEFAULT_SUPPORTED_CRYPTO_ALGORITHMS[0])) - abyte1 = xor(abyte0); - else - throw new UnsupportedCryptoAlgorithmException(); - - if (abyte1 == null) - throw new InvalidPasswordCipherException(); - return abyte1; - } - - public static String[] getSupportedCryptoAlgorithms() { - return _supported_crypto_algorithms; - } - - private static byte[] xor(byte abyte0[]) { - byte abyte1[] = null; - if (abyte0 != null) { - abyte1 = new byte[abyte0.length]; - for (int i = 0; i < abyte0.length; i++) - abyte1[i] = (byte) (0x5f ^ abyte0[i]); - } - return abyte1; - } - - static { - _supported_crypto_algorithms = null; - if (_supported_crypto_algorithms == null) - _supported_crypto_algorithms = DEFAULT_SUPPORTED_CRYPTO_ALGORITHMS; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordEncoderDecoder.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordEncoderDecoder.java deleted file mode 100644 index 2c82cedf2..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordEncoderDecoder.java +++ /dev/null @@ -1,28 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - -public class PasswordEncoderDecoder extends EncoderDecoderAdapter implements EncoderDecoder { - public static final String KEY = "password-security-coder"; //$NON-NLS-1$ - - public PasswordEncoderDecoder() { - } - - public String decode(String s) { - return PasswordUtil.passwordDecode(s); - } - - public String encode(String s) { - return PasswordUtil.passwordEncode(s); - } - - public Object getKey() { - return KEY; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordUtil.java deleted file mode 100644 index 012f2c2f1..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordUtil.java +++ /dev/null @@ -1,331 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - - -import java.io.UnsupportedEncodingException; - -public class PasswordUtil { - public static final String STRING_CONVERSION_CODE = "UTF8"; //$NON-NLS-1$ - public static final String EMPTY_STRING = ""; //$NON-NLS-1$ - public static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; - public static final String DEFAULT_CRYPTO_ALGORITHM; - private static final String SUPPORTED_CRYPTO_ALGORITHMS[]; - private static final byte BASE64_ENCODE_MAP[]; - private static final byte BASE64_DECODE_MAP[]; - - public PasswordUtil() { - } - - public static String decode(String s) throws InvalidPasswordDecodingException, UnsupportedCryptoAlgorithmException { - if (s == null) - throw new InvalidPasswordDecodingException(); - String s1 = getCryptoAlgorithm(s); - if (s1 == null) - throw new InvalidPasswordDecodingException(); - - if (!isValidCryptoAlgorithm(s1)) - throw new UnsupportedCryptoAlgorithmException(); - - String s2 = decode_password(removeCryptoAlgorithmTag(s), s1); - if (s2 == null) - throw new InvalidPasswordDecodingException(); - return s2; - } - - public static String encode(String s) throws InvalidPasswordEncodingException, UnsupportedCryptoAlgorithmException { - return encode(s, DEFAULT_CRYPTO_ALGORITHM); - } - - public static String encode(String s, String s1) throws InvalidPasswordEncodingException, UnsupportedCryptoAlgorithmException { - if (!isValidCryptoAlgorithm(s1)) - throw new UnsupportedCryptoAlgorithmException(); - if (s == null) - throw new InvalidPasswordEncodingException(); - - if (getCryptoAlgorithm(s) != null) - throw new InvalidPasswordEncodingException(); - - String s2 = encode_password(s.trim(), s1.trim()); - if (s2 == null) - throw new InvalidPasswordEncodingException(); - return s2; - } - - public static String getCryptoAlgorithm(String s) { - String s1 = null; - if (s != null) { - s = s.trim(); - if (s.length() >= 2) { - int i = s.indexOf("{"); //$NON-NLS-1$ - if (i == 0) { - int j = s.indexOf("}", ++i); //$NON-NLS-1$ - if (j > 0) - if (i < j) - s1 = s.substring(i, j).trim(); - else - s1 = EMPTY_STRING; - } - } - } - return s1; - } - - public static String getCryptoAlgorithmTag(String s) { - String s1 = null; - String s2 = getCryptoAlgorithm(s); - if (s2 != null) { - StringBuffer stringbuffer = new StringBuffer("{"); //$NON-NLS-1$ - if (s2.length() > 0) - stringbuffer.append(s2); - stringbuffer.append("}"); //$NON-NLS-1$ - s1 = stringbuffer.toString(); - } - return s1; - } - - public static boolean isValidCryptoAlgorithm(String s) { - if (s != null) { - s = s.trim(); - if (s.length() == 0) - return true; - for (int i = 0; i < SUPPORTED_CRYPTO_ALGORITHMS.length; i++) - if (s.equalsIgnoreCase(SUPPORTED_CRYPTO_ALGORITHMS[i])) - return true; - } - return false; - } - - public static boolean isValidCryptoAlgorithmTag(String s) { - return isValidCryptoAlgorithm(getCryptoAlgorithm(s)); - } - - public static String passwordDecode(String s) { - if (s == null) - return null; - String s1 = getCryptoAlgorithm(s); - if (s1 == null) - return s; - if (!isValidCryptoAlgorithm(s1)) - return null; - return decode_password(removeCryptoAlgorithmTag(s), s1); - } - - public static String passwordEncode(String s) { - return passwordEncode(s, DEFAULT_CRYPTO_ALGORITHM); - } - - public static String passwordEncode(String s, String s1) { - if (!isValidCryptoAlgorithm(s1)) - return null; - if (s == null) - return null; - String s2 = getCryptoAlgorithm(s); - if (s2 != null) { - if (s2.equalsIgnoreCase(s1.trim())) - return s.trim(); - return null; - } - return encode_password(s.trim(), s1.trim()); - } - - public static String removeCryptoAlgorithmTag(String s) { - String s1 = null; - if (s != null) { - s = s.trim(); - if (s.length() >= 2) { - int i = s.indexOf("{"); //$NON-NLS-1$ - if (i == 0) { - int j = s.indexOf("}", ++i); //$NON-NLS-1$ - if (j > 0) - if (++j < s.length()) - s1 = s.substring(j).trim(); - else - s1 = EMPTY_STRING; - } - } - } - return s1; - } - - private static byte[] convert_to_bytes(String s) { - byte abyte0[] = null; - if (s != null) - if (s.length() == 0) - abyte0 = EMPTY_BYTE_ARRAY; - else - try { - abyte0 = s.getBytes(STRING_CONVERSION_CODE); - } catch (UnsupportedEncodingException unsupportedencodingexception) { - abyte0 = null; - } - return abyte0; - } - - private static String convert_to_string(byte abyte0[]) { - String s = null; - if (abyte0 != null) - if (abyte0.length == 0) - s = EMPTY_STRING; - else - try { - s = new String(abyte0, STRING_CONVERSION_CODE); - } catch (UnsupportedEncodingException unsupportedencodingexception) { - s = null; - } - return s; - } - - private static byte[] convert_viewable_to_bytes(String s) { - byte abyte0[] = null; - if (s != null) - if (s.length() == 0) - abyte0 = EMPTY_BYTE_ARRAY; - else - try { - abyte0 = base64Decode(convert_to_bytes(s)); - } catch (Exception exception) { - abyte0 = null; - } - return abyte0; - } - - private static byte[] base64Decode(byte abyte0[]) { - int i; - for (i = abyte0.length; abyte0[--i] == 61;); - byte abyte1[] = new byte[(i + 1) - abyte0.length / 4]; - for (int j = 0; j < abyte0.length; j++) - abyte0[j] = BASE64_DECODE_MAP[abyte0[j]]; - int k = abyte1.length - 2; - int l = 0; - int i1; - for (i1 = 0; l < k; i1 += 4) { - abyte1[l] = (byte) (abyte0[i1] << 2 & 0xff | abyte0[i1 + 1] >>> 4 & 0x3); - abyte1[l + 1] = (byte) (abyte0[i1 + 1] << 4 & 0xff | abyte0[i1 + 2] >>> 2 & 0xf); - abyte1[l + 2] = (byte) (abyte0[i1 + 2] << 6 & 0xff | abyte0[i1 + 3] & 0x3f); - l += 3; - } - if (l < abyte1.length) { - abyte1[l++] = (byte) (abyte0[i1] << 2 & 0xff | abyte0[i1 + 1] >>> 4 & 0x3); - if (l < abyte1.length) - abyte1[l] = (byte) (abyte0[i1 + 1] << 4 & 0xff | abyte0[i1 + 2] >>> 2 & 0xf); - } - return abyte1; - } - - private static String convert_viewable_to_string(byte abyte0[]) { - String s = null; - if (abyte0 != null) - if (abyte0.length == 0) - s = EMPTY_STRING; - else - try { - s = convert_to_string(base64Encode(abyte0)); - } catch (Exception exception) { - s = null; - } - return s; - } - - private static byte[] base64Encode(byte abyte0[]) { - byte abyte1[] = new byte[((abyte0.length + 2) / 3) * 4]; - int i = 0; - int j = 0; - for (; i < abyte0.length - 2; i += 3) { - abyte1[j++] = BASE64_ENCODE_MAP[abyte0[i] >>> 2 & 0x3f]; - abyte1[j++] = BASE64_ENCODE_MAP[abyte0[i + 1] >>> 4 & 0xf | abyte0[i] << 4 & 0x3f]; - abyte1[j++] = BASE64_ENCODE_MAP[abyte0[i + 2] >>> 6 & 0x3 | abyte0[i + 1] << 2 & 0x3f]; - abyte1[j++] = BASE64_ENCODE_MAP[abyte0[i + 2] & 0x3f]; - } - if (i < abyte0.length) { - abyte1[j++] = BASE64_ENCODE_MAP[abyte0[i] >>> 2 & 0x3f]; - if (i < abyte0.length - 1) { - abyte1[j++] = BASE64_ENCODE_MAP[abyte0[i + 1] >>> 4 & 0xf | abyte0[i] << 4 & 0x3f]; - abyte1[j++] = BASE64_ENCODE_MAP[abyte0[i + 1] << 2 & 0x3f]; - } else { - abyte1[j++] = BASE64_ENCODE_MAP[abyte0[i] << 4 & 0x3f]; - } - } - for (; j < abyte1.length; j++) - abyte1[j] = 61; - return abyte1; - } - - private static String decode_password(String s, String s1) { - StringBuffer stringbuffer = new StringBuffer(); - if (s1.length() == 0) { - stringbuffer.append(s); - } else { - String s2 = null; - if (s.length() > 0) { - byte abyte0[] = convert_viewable_to_bytes(s); - if (abyte0 == null) - return null; - if (abyte0.length > 0) { - byte abyte1[] = null; - try { - abyte1 = PasswordCipherUtil.decipher(abyte0, s1); - } catch (InvalidPasswordCipherException invalidpasswordcipherexception) { - return null; - } catch (UnsupportedCryptoAlgorithmException unsupportedcryptoalgorithmexception) { - return null; - } - if (abyte1 != null && abyte1.length > 0) - s2 = convert_to_string(abyte1); - } - } - if (s2 != null && s2.length() > 0) - stringbuffer.append(s2); - } - return stringbuffer.toString(); - } - - private static String encode_password(String s, String s1) { - StringBuffer stringbuffer = new StringBuffer("{"); //$NON-NLS-1$ - if (s1.length() == 0) { - stringbuffer.append("}").append(s); //$NON-NLS-1$ - } else { - stringbuffer.append(s1).append("}"); //$NON-NLS-1$ - String s2 = null; - if (s.length() > 0) { - byte abyte0[] = convert_to_bytes(s); - if (abyte0.length > 0) { - byte abyte1[] = null; - try { - abyte1 = PasswordCipherUtil.encipher(abyte0, s1); - } catch (InvalidPasswordCipherException invalidpasswordcipherexception) { - return null; - } catch (UnsupportedCryptoAlgorithmException unsupportedcryptoalgorithmexception) { - return null; - } - if (abyte1 != null && abyte1.length > 0) { - s2 = convert_viewable_to_string(abyte1); - if (s2 == null) - return null; - } - } - } - if (s2 != null && s2.length() > 0) - stringbuffer.append(s2); - } - return stringbuffer.toString(); - } - - static { - SUPPORTED_CRYPTO_ALGORITHMS = PasswordCipherUtil.getSupportedCryptoAlgorithms(); - DEFAULT_CRYPTO_ALGORITHM = SUPPORTED_CRYPTO_ALGORITHMS[0]; - byte abyte0[] = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47}; - BASE64_ENCODE_MAP = abyte0; - BASE64_DECODE_MAP = new byte[128]; - for (int i = 0; i < BASE64_DECODE_MAP.length; i++) - BASE64_DECODE_MAP[i] = -1; - for (int j = 0; j < BASE64_ENCODE_MAP.length; j++) - BASE64_DECODE_MAP[BASE64_ENCODE_MAP[j]] = (byte) j; - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PleaseMigrateYourCodeError.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PleaseMigrateYourCodeError.java deleted file mode 100644 index 0df81e36d..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PleaseMigrateYourCodeError.java +++ /dev/null @@ -1,25 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - - -/** - * @author mdelder - * - */ -public class PleaseMigrateYourCodeError extends Error { - - //TODO Delete me - public PleaseMigrateYourCodeError() { - super(WFTUtilsResourceHandler.PleaseMigrateYourCodeError_ERROR_0); - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java deleted file mode 100644 index 34ff6435f..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java +++ /dev/null @@ -1,213 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.impl.AdapterImpl; -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.resource.URIConverter; - -public class ResourceDependencyRegister { - protected static Map GLOBAL_DEPENDENCIES = new HashMap(); - private static String RESOURCE_DEPENDENCY_TYPE = "ResourceDependencyAdapter"; //$NON-NLS-1$ - protected Map localDependencies = new HashMap(); - - class ResourceDependencyAdapter extends AdapterImpl { - Resource dependentResource; - - ResourceDependencyAdapter(Resource aDependentResource) { - dependentResource = aDependentResource; - dependentResource.eAdapters().add(this); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object) - */ - public boolean isAdapterForType(Object type) { - return RESOURCE_DEPENDENCY_TYPE.equals(type); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification) - */ - public void notifyChanged(Notification msg) { - //Listen for unloads and removes - switch (msg.getFeatureID(null)) { - case Resource.RESOURCE__IS_LOADED : - if (msg.getNotifier() != dependentResource && msg.getOldBooleanValue() && !msg.getNewBooleanValue()) - dependentResource.unload(); - break; - case Resource.RESOURCE__RESOURCE_SET : - if (msg.getOldValue() != null && msg.getNewValue() == null) { - if (msg.getNotifier() == dependentResource) - ((Resource) getTarget()).eAdapters().remove(this); - else { - ResourceSet set = dependentResource.getResourceSet(); - if (set != null) - set.getResources().remove(dependentResource); - } - } - break; - } - } - } - - class ResourceSetListener extends AdapterImpl { - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification) - */ - public void notifyChanged(Notification msg) { - if (msg.getEventType() == Notification.ADD) - proccessAddedResource((ResourceSet) msg.getNotifier(), (Resource) msg.getNewValue()); - } - } - - /** - * Register a dependency between two URIs. The first parameter, aURIString, is the one that - * dependentUriString depends on. - * - * @param aUriString - * java.lang.String - * @param dependentUriString - * java.lang.String - */ - public static void registerDependency(URI targetURI, URI dependentURI) { - if (targetURI != null && dependentURI != null) { - GLOBAL_DEPENDENCIES.put(dependentURI, targetURI); - } - } - - public ResourceDependencyRegister(ResourceSet aResourceSet) { - initialize(aResourceSet); - } - - - ResourceDependencyRegister() { - super(); - } - - /** - * @param aResourceSet - */ - protected void initialize(ResourceSet aResourceSet) { - if (aResourceSet == null) - throw new NullPointerException("The ResourceSet cannot be null."); //$NON-NLS-1$ - initializeLocalDependencies(aResourceSet); - setupDependencyAdapters(aResourceSet); - setupResourceSetListener(aResourceSet); - } - - /** - * @param aResourceSet - */ - protected void setupResourceSetListener(ResourceSet aResourceSet) { - aResourceSet.eAdapters().add(new ResourceSetListener()); - } - - /** - * @param aResourceSet - * @return - */ - protected void setupDependencyAdapters(ResourceSet aResourceSet) { - if (!aResourceSet.getResources().isEmpty()) { - Iterator it = localDependencies.entrySet().iterator(); - Map.Entry entry; - URI dependentURI, targetURI; - while (it.hasNext()) { - entry = (Map.Entry) it.next(); - dependentURI = (URI) entry.getKey(); - targetURI = (URI) entry.getValue(); - setupDependencyAdapter(aResourceSet, dependentURI, targetURI); - } - } - } - - /** - * @param aResourceSet - * @param dependentURI - * @param targetURI - * @return - */ - protected void setupDependencyAdapter(ResourceSet aResourceSet, URI dependentURI, URI targetURI) { - Resource dependent = aResourceSet.getResource(dependentURI, false); - if (dependent != null) - setupDependencyAdapter(dependent, targetURI, aResourceSet); - } - - protected void setupDependencyAdapter(Resource dependent, URI targetURI, ResourceSet aResourceSet) { - Resource target = aResourceSet.getResource(targetURI, false); - if (target == null) - target = aResourceSet.createResource(targetURI); - target.eAdapters().add(new ResourceDependencyAdapter(dependent)); - } - - /** - * @param aResourceSet - */ - protected void initializeLocalDependencies(ResourceSet aResourceSet) { - URIConverter converter = aResourceSet.getURIConverter(); - initializeLocalDependencies(converter); - } - - /** - * @param aResourceSet - */ - protected void initializeLocalDependencies(URIConverter aConverter) { - Iterator it = GLOBAL_DEPENDENCIES.entrySet().iterator(); - Map resolved = new HashMap(); - Map.Entry entry; - URI key, value; - while (it.hasNext()) { - entry = (Map.Entry) it.next(); - key = (URI) entry.getKey(); - value = (URI) entry.getValue(); - key = normalize(key, aConverter, resolved); - value = normalize(value, aConverter, resolved); - localDependencies.put(key, value); - } - } - - /** - * @param relativeURI - * @param converter - * @param resolved - * @return - */ - protected URI normalize(URI relativeURI, URIConverter converter, Map resolved) { - URI result = (URI) resolved.get(relativeURI); - if (result == null) { - result = converter.normalize(relativeURI); - resolved.put(relativeURI, result); - } - return result; - } - - /** - * @param set - * @param resource - */ - protected void proccessAddedResource(ResourceSet set, Resource resource) { - URI targetURI = (URI) localDependencies.get(resource.getURI()); - if (targetURI != null) - setupDependencyAdapter(resource, targetURI, set); - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapter.java deleted file mode 100644 index 3d4757466..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapter.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Created on Oct 26, 2004 - * - * TODO To change the template for this generated file go to - * Window - Preferences - Java - Code Style - Code Templates - */ -package org.eclipse.wst.common.internal.emf.utilities; - -import org.eclipse.emf.common.notify.Adapter; -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.impl.AdapterImpl; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.util.EcoreUtil; - -/** - * @author mdelder - */ -public class ResourceIsLoadingAdapter extends AdapterImpl implements Adapter { - - private static final Class RESOURCE_IS_LOADING_ADAPTER_CLASS = ResourceIsLoadingAdapter.class; - - public ResourceIsLoadingAdapter() { - } - - public static ResourceIsLoadingAdapter findAdapter(Resource aResource) { - ResourceIsLoadingAdapter adapter = null; - //System.out.println("ResourceIsLoadingAdapter Synchronizing on " + aResource); - - /* Synchronize on the Resource (which will be the target of - * the ResourceIsLoadingAdapter in the list, if it exists). - * - * removeIsLoadingSupport() will coordinate with this - * synchronization. - */ - synchronized (aResource) { - adapter = (ResourceIsLoadingAdapter) EcoreUtil.getAdapter(aResource.eAdapters(), ResourceIsLoadingAdapter.class); - } - return adapter; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.Adapter#notifyChanged(org.eclipse.emf.common.notify.Notification) - */ - public void notifyChanged(Notification notification) { - - if (notification.getNotifier() != null) { - - // listen for the remove of the loading adapter - if (isSetLoadedResourceNotification(notification)) removeIsLoadingSupport(); - } - } - - /** - * Default implementation is a no-op. - */ - public void waitForResourceToLoad() { - - } - - /** - * @param notification - * @return - */ - protected boolean isSetLoadedResourceNotification(Notification notification) { - return notification.getFeatureID(null) == Resource.RESOURCE__IS_LOADED && notification.getEventType() == Notification.SET; - } - - protected void removeIsLoadingSupport() { - - /* Synchronize on the target of the Adapter. If - * the list of adapters is searched for a - * ResourceIsLoadingAdapter using the - * ResourceIsLoadingAdapter.findAdapter() API, then - * the access to remove the Adapter using this method - * will be coordinated. - */ - if (getTarget() != null) { - //System.out.println("ResourceIsLoadingAdapter Synchronizing on " + getTarget()); - synchronized (getTarget()) { - getTarget().eAdapters().remove(this); - } - } - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.Adapter#isAdapterForType(java.lang.Object) - */ - public boolean isAdapterForType(Object type) { - return type == RESOURCE_IS_LOADING_ADAPTER_CLASS; - } - - /** - * - */ - public void forceRelease() { - - } - -} diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapterFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapterFactory.java deleted file mode 100644 index 072334232..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapterFactory.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Created on Oct 26, 2004 - * - * TODO To change the template for this generated file go to - * Window - Preferences - Java - Code Style - Code Templates - */ -package org.eclipse.wst.common.internal.emf.utilities; - - -/** - * @author mdelder - * - */ -public class ResourceIsLoadingAdapterFactory { - - public static ResourceIsLoadingAdapterFactory INSTANCE = new ResourceIsLoadingAdapterFactory(); - - public ResourceIsLoadingAdapter createResourceIsLoadingAdapter() { - return new ResourceIsLoadingAdapter(); - } - -} diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Revisit.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Revisit.java deleted file mode 100644 index 2ec67d491..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Revisit.java +++ /dev/null @@ -1,43 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - - -public class Revisit { - - /** - * Revisit constructor comment. - */ - public Revisit() { - super(); - } - - public static void revisit() { - } - - - public static void unComment() { - } - - public static void toDo() { - } - - public static void refactor() { - } - - public static void removeDeprecatedMethod() { - } - - public static void deleteMe() { - } - - public static void reviewDesign() { - } -} - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/StringUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/StringUtil.java deleted file mode 100644 index d1f230858..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/StringUtil.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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 Mar 18, 2003 - * - * To change this generated comment go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.wst.common.internal.emf.utilities; - -/** - * @author schacher - * - * To change this generated comment go to Window>Preferences>Java>Code Generation>Code and Comments - */ -public class StringUtil { - /** - * Enhanced equality check for two string parameters, that takes into consideration null values. - * If both values are null, this will return true. - * - * @param s1 - * @param s2 - * @return boolean - */ - public static boolean stringsEqual(String s1, String s2) { - if (s1 == null) - return s2 == null; - return s1.equals(s2); - } - -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/TranslatorManager.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/TranslatorManager.java deleted file mode 100644 index 79ee8b8ca..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/TranslatorManager.java +++ /dev/null @@ -1,168 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2006 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.utilities; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.jem.util.RegistryReader; -import org.eclipse.jem.util.logger.proxy.Logger; -import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin; -import org.eclipse.wst.common.internal.emf.resource.Translator; - -/** - * This is the TranslatorManager class used by the TranslatorService in order to discover - * and cache all of the extended Translators to be used by EMF2DOMAdapterImpl. - */ -public class TranslatorManager { - - /** - * The singleton TranslatorManager instance - */ - private static final TranslatorManager INSTANCE = new TranslatorManager(); - - /** - * Cache of all the TranslatorDescriptors - */ - private final Set translators = new HashSet(); - - /** - * Default static empty array used when no descriptors found - */ - private static final TranslatorDescriptor[] NO_EXTENDED_TRANSLATORS = new TranslatorDescriptor[0]; - - /** - * Returns the singleton instance of the TranslatorManager - * @return TranslatorManager INSTANCE - */ - public static TranslatorManager getInstance() { - return INSTANCE; - } - - /** - * Private constructor - */ - private TranslatorManager() { - new TranslatorRegistry().readRegistry(); - } - - /** - * Simple Registry Reader used by Translator Manager to recognize the Translator extensions - */ - private class TranslatorRegistry extends RegistryReader { - - /** - * The Translator element of the extension point. - */ - public static final String TRANSLATOR = "translator"; //$NON-NLS-1$ - - /** - * Default constructor - */ - public TranslatorRegistry() { - super(EcoreUtilitiesPlugin.ID, EcoreUtilitiesPlugin.TRANSLATOR_EXTENSTION_POINT); - } - - /** - * Add the configuration element if it matchs the expected translator element name - */ - public boolean readElement(IConfigurationElement element) { - boolean result = false; - if (TRANSLATOR.equals(element.getName())) { - addTranslatorDescriptor(new TranslatorDescriptor(element)); - result = true; - } - return result; - } - } - - /** - * Describes a Translator extension point element - */ - public class TranslatorDescriptor { - - /** - * Qualified class name attribute - */ - public static final String CLASSNAME = "className"; //$NON-NLS-1$ - - /** - * The config element for this Descriptor - */ - private final IConfigurationElement configElement; - - /** - * the cached qualified className value of this descriptor - */ - private String className; - - /** - * Constructor - * @param aConfigElement - */ - public TranslatorDescriptor(IConfigurationElement aConfigElement) { - super(); - configElement = aConfigElement; - className = configElement.getAttribute(CLASSNAME); - } - - /** - * Retrieve the cached value of the qualified class name of the extended Translator - * @return String classname - */ - public String getClassName() { - return className; - } - - /** - * Create the actual Translator instance from the configuration element. - * @return Translator - */ - public Translator createTranslator() { - Translator instance = null; - try { - instance = (Translator) configElement.createExecutableExtension(CLASSNAME); - } catch (CoreException e) { - Logger.getLogger().logError(e); - } - return instance; - } - } - - /** - * Add the TranslatorDescriptor to the cache of descriptor extensions. - * @param descriptor - */ - private void addTranslatorDescriptor(TranslatorDescriptor descriptor) { - Assert.isNotNull(descriptor); - translators.add(descriptor); - } - - /** - * Find all the associated TranslatorDescriptors for the Traslator extensions defined. - * @return TranslatorDescriptor[] - */ - public TranslatorDescriptor[] findTranslators() { - List result = new ArrayList(); - TranslatorDescriptor descriptor = null; - for (Iterator translatorsItr = translators.iterator(); translatorsItr.hasNext();) { - descriptor = (TranslatorDescriptor) translatorsItr.next(); - result.add(descriptor); - } - if (result.size() == 0) { - return NO_EXTENDED_TRANSLATORS; - } - return (TranslatorDescriptor[]) result.toArray(new TranslatorDescriptor[result.size()]); - } -} diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/TranslatorService.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/TranslatorService.java deleted file mode 100644 index 4012a7b5b..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/TranslatorService.java +++ /dev/null @@ -1,96 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2006 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.utilities; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.wst.common.internal.emf.resource.Translator; -import org.eclipse.wst.common.internal.emf.utilities.TranslatorManager.TranslatorDescriptor; - -/** - * This is the service class to deliver API to use to retrieve Translator extensions from - * the TranslatorManager and its RegistryReader. - */ -public class TranslatorService { - - /** - * Static Key value pair of descriptors as keys and Translator instances as values - */ - private static final Map translators = new HashMap(); - - /** - * Static empty array used when no extensions found - */ - // never used - //private static final Translator[] NO_TRANSLATORS = new Translator[0]; - - /** - * Singleton instance of the Translator service - */ - private static final TranslatorService INSTANCE = new TranslatorService(); - - /** - * Default constructor - */ - private TranslatorService() { - super(); - } - - public static TranslatorService getInstance() { - return INSTANCE; - } - - /** - * This will return the associated extension point TranslatorDescriptor objects from the manager - * @return TranslatorDescriptor[] - */ - public TranslatorDescriptor[] getTranslatorDescriptors() { - return TranslatorManager.getInstance().findTranslators(); - } - - /** - * This retrieves the extended Translators using the extension point manager and descriptors - * @return Translator[] (Note, the return value may contain null entries.) - */ - public Translator[] getTranslators() { - TranslatorDescriptor[] descriptors = getTranslatorDescriptors(); - Translator[] result = new Translator[descriptors.length]; - //The result index could differ from the descriptors index. - int resultIndex = 0; - for (int i=0; i<descriptors.length; i++) { - Translator instance = getTranslator(descriptors[i]); - if (instance!=null) { - result[resultIndex] = instance; - resultIndex++; - } - } - return result; - } - - /** - * Retrieve the existing associated Translator instance for the descriptor, or create a new - * one and cache on the Set. - * - * @param translatorDescriptor - * @return Translator associated with the descriptor - */ - public Translator getTranslator(TranslatorDescriptor translatorDescriptor) { - Translator translator = (Translator) translators.get(translatorDescriptor); - if (translator != null) - return translator; - - synchronized (translators) { - translator = translatorDescriptor.createTranslator(); - if (translator != null) - translators.put(translatorDescriptor, translator); - } - return translator; - } -} diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/UnsupportedCryptoAlgorithmException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/UnsupportedCryptoAlgorithmException.java deleted file mode 100644 index f71c66d95..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/UnsupportedCryptoAlgorithmException.java +++ /dev/null @@ -1,16 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - - -import org.omg.CORBA.UserException; - -public class UnsupportedCryptoAlgorithmException extends UserException { -} - diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/WFTUtilsResourceHandler.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/WFTUtilsResourceHandler.java deleted file mode 100644 index 0ed13f81d..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/WFTUtilsResourceHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 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.utilities; - - -import org.eclipse.osgi.util.NLS; - -public class WFTUtilsResourceHandler extends NLS { - private static final String BUNDLE_NAME = "wftutils";//$NON-NLS-1$ - - private WFTUtilsResourceHandler() { - // Do not instantiate - } - - public static String DANGLING_HREF_ERROR_; - public static String Integer_UI_; - public static String Failed_to_convert__0__to___ERROR_; - public static String Enumeration_UI_; - public static String Short_UI_; - public static String Character_UI_; - public static String Long_UI_; - public static String Double_UI_; - public static String ResourceDependencyRegister_ERROR_0; - public static String Float_UI_; - public static String Byte_UI_; - public static String Warning__Could_not_write_b_WARN_; - public static String Boolean_UI_; - public static String Stack_trace_of_nested_exce_ERROR_; - public static String MofObject_UI_; - public static String PleaseMigrateYourCodeError_ERROR_0; - public static String EMF2DOMAdapterImpl_ERROR_0; - - static { - NLS.initializeMessages(BUNDLE_NAME, WFTUtilsResourceHandler.class); - } - - public static String getString(String key, Object[] args) { - return NLS.bind(key, args); - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/WriteBackHelper.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/WriteBackHelper.java deleted file mode 100644 index 967e7e468..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/WriteBackHelper.java +++ /dev/null @@ -1,136 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; - - -/** - * @deprecated This class will be deleted. If you still need to use this class, please contact the - * WCCM team. A class which can be used in conjunction with Encoder/Decoders to save - * resources if they are made dirty by automatic encoding support. Usage Example: - * - * <pre> - * - * - * // Use the standard WebSphere password value encoder/decoder. - * EncoderDecoderRegistry.getDefaultRegistry().setDefaultEncoderDecoder(new com.ibm.ejs.security.util.WASEncoderDecoder()); - * // Begin tracking changes... - * WriteBackHelper.begin(); - * // Load a resource which may have un-encoded values... - * // Note: The WCCM will attempt to detect un-encoded values. If unencoded values - * // are found, the value will be encoded, and the resource will be added to the - * // WriteBackHelper. - * Resource res = resourceSet.load("myResource"); - * // Ensure that any changes due to encoding are written back out. - * WriteBackHelper.end(); - * </pre> - */ -public class WriteBackHelper { - private Set dirtyObjects = new HashSet(); - private boolean trackingChanges = false; - private static WriteBackHelper _instance; - static { - //Deprecated class - Revisit.deleteMe(); - } - - /** - * Private constructor ensures proper usage through singleton. - */ - private WriteBackHelper() { - super(); - } - - /** - * Adds a resource which is dirty, and needs to be saved. - */ - public void addDirtyObject(EObject dirtyObject) { - dirtyObjects.add(dirtyObject); - } - - /** - * Begin collecting objects which have changed. - */ - public void begin() { - trackingChanges = true; - } - - /** - * Attempts to save all dirty resources (if possible), then marks the resources as non-dirty. - */ - public void end() { - saveDirtyResources(); - reset(); - trackingChanges = false; - } - - /** - * Returns true if changes to mof objects are currently being tracked. - */ - public boolean isActive() { - return trackingChanges; - } - - /** - * Clears the list of dirty resources. - */ - protected void reset() { - dirtyObjects.clear(); - } - - /** - * Attempts to save all dirty resources (if possible), then marks the resources as non-dirty. - */ - protected void saveDirtyResources() { - Set dirtyResources = new HashSet(); - Iterator dirtyObjIter = dirtyObjects.iterator(); - while (dirtyObjIter.hasNext()) { - EObject dirtyObject = (EObject) dirtyObjIter.next(); - if (dirtyObject.eResource() != null && !dirtyResources.contains(dirtyObject)) { - dirtyResources.add(dirtyObject.eResource()); - } - } - Iterator dirtyIter = dirtyResources.iterator(); - while (dirtyIter.hasNext()) { - Resource dirtyResource = (Resource) dirtyIter.next(); - try { - dirtyResource.save(Collections.EMPTY_MAP); - } catch (Exception e) { - warn(dirtyResource, e); - } - } - } - - /** - * Adds a resource which is dirty, and needs to be saved. - */ - public static WriteBackHelper singleton() { - if (_instance == null) { - _instance = new WriteBackHelper(); - } - return _instance; - } - - /** - * Warn the user of problems during save. - */ - protected void warn(Resource res, Exception e) { - System.err.println(WFTUtilsResourceHandler.getString(WFTUtilsResourceHandler.Warning__Could_not_write_b_WARN_, new Object[]{res.getURI()})); - } -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/XMLValueEncoderDecoder.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/XMLValueEncoderDecoder.java deleted file mode 100644 index d9a1d2c21..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/XMLValueEncoderDecoder.java +++ /dev/null @@ -1,111 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 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.utilities; - - -/** - * An XML value escaping EncoderDecoder implementation - */ -public class XMLValueEncoderDecoder extends EncoderDecoderAdapter implements EncoderDecoder { - /** - * Identifies the last printable character in the Unicode range that is supported by the - * encoding used with this serializer. For 8-bit encodings this will be either 0x7E or 0xFF. For - * 16-bit encodings this will be 0xFFFF. Characters that are not printable will be escaped using - * character references. - */ - private int _lastPrintable = 0x7E; - protected static XMLValueEncoderDecoder _singleton; - - /** - * EncoderDecoderAdapter constructor comment. - */ - public XMLValueEncoderDecoder() { - super(); - } - - /** - * Returns a decoded version of the value. - */ - public String decode(String value) { - // NOT_IMPLEMENTED - return value; - } - - /** - * Escapes a string so it may be printed as text content or attribute value. Non printable - * characters are escaped using character references. Where the format specifies a deault entity - * reference, that reference is used (e.g. <tt>&lt;</tt>). - * - * @param source - * The string to escape - */ - public String encode(String value) { - StringBuffer sbuf = new StringBuffer(value.length()); - String charRef = null; - char ch; - for (int i = 0; i < value.length(); ++i) { - ch = value.charAt(i); - // If there is a suitable entity reference for this - // character, print it. The list of available entity - // references is almost but not identical between - // XML and HTML. - charRef = getEntityRef(ch); - if (charRef != null) { - sbuf.append('&'); - sbuf.append(charRef); - sbuf.append(';'); - } else if ((ch >= ' ' && ch <= _lastPrintable && ch != 0xF7) || ch == '\n' || ch == '\r' || ch == '\t') { - // If the character is not printable, print as character reference. - // Non printables are below ASCII space but not tab or line - // terminator, ASCII delete, or above a certain Unicode threshold. - sbuf.append(ch); - } else { - sbuf.append("&#");//$NON-NLS-1$ - sbuf.append(Integer.toString(ch)); - sbuf.append(';'); - } - } - return sbuf.toString(); - } - - public static String escape(String value) { - if (_singleton == null) { - _singleton = new XMLValueEncoderDecoder(); - } - return _singleton.encode(value); - } - - /** - * Returns the suitable entity reference for this character value, or null if no such entity - * exists. Calling this method with <tt>'&'</tt> will return <tt>"&amp;"</tt>. - * - * @param ch - * Character value - * @return Character entity name, or null - */ - protected String getEntityRef(char ch) { - // Encode special XML characters into the equivalent character references. - // These five are defined by default for all XML documents. - switch (ch) { - case '<' : - return "lt";//$NON-NLS-1$ - case '>' : - return "gt";//$NON-NLS-1$ - case '"' : - return "quot";//$NON-NLS-1$ - case '\'' : - return "apos";//$NON-NLS-1$ - case '&' : - return "amp";//$NON-NLS-1$ - } - return null; - } -}
\ No newline at end of file |