Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal')
-rw-r--r--bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSEAdapter.java439
-rw-r--r--bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERenderer.java644
-rw-r--r--bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERendererFactory.java32
3 files changed, 0 insertions, 1115 deletions
diff --git a/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSEAdapter.java b/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSEAdapter.java
deleted file mode 100644
index 2ebce04576..0000000000
--- a/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSEAdapter.java
+++ /dev/null
@@ -1,439 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2008 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.xml.core.internal.emf2xml;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.wst.common.internal.emf.resource.EMF2DOMAdapter;
-import org.eclipse.wst.common.internal.emf.resource.EMF2DOMAdapterImpl;
-import org.eclipse.wst.common.internal.emf.resource.EMF2DOMRenderer;
-import org.eclipse.wst.common.internal.emf.resource.Translator;
-import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
-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.FeatureValueConversionException;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.xml.core.internal.Logger;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-
-public class EMF2DOMSSEAdapter extends EMF2DOMAdapterImpl implements INodeAdapter {
-
- private Class resourceClass;
- public EMF2DOMSSEAdapter(Node node, EMF2DOMRenderer renderer, Translator translator) {
- super(node, renderer, translator);
- }
-
- public EMF2DOMSSEAdapter(Notifier object, Node node, EMF2DOMRenderer renderer, Translator translator) {
- super(object, node, renderer, translator);
- }
-
- public EMF2DOMSSEAdapter(TranslatorResource resource, Document document, EMF2DOMRenderer renderer, Translator translator) {
- super(resource, document, renderer, translator);
- }
-
- protected String calcIndentString(Node node) {
- Assert.isNotNull(node);
- Assert.isNotNull(node.getParentNode(), "Node must be connected into the tree"); //$NON-NLS-1$
-
- Node parent = node.getParentNode();
-
- String indentString = getNewlineString(node);
-
- // Find indentation string for this node based on its sibling or
- // parent
- Node previousSibling = DOMUtilities.getPreviousNodeSibling(node);
- if (previousSibling != null) {
- indentString = primGetIndentString(previousSibling);
- }
- else {
- String parentIndentString = primGetIndentString(parent);
- indentString = parentIndentString + DOMUtilities.INDENT_STRING;
- }
- return indentString;
- }
-
- /*
- * Prints out a DOM notification for debugging.
- */
- protected void debugDOMNotify(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue) {
- if (fDebug) {
- String notifType = ""; //$NON-NLS-1$
- switch (eventType) {
- case INodeNotifier.ADD :
- notifType = "ADD"; //$NON-NLS-1$
- break;
- case INodeNotifier.REMOVE :
- notifType = "REMOVE"; //$NON-NLS-1$
- break;
- case INodeNotifier.CHANGE :
- notifType = "CHANGE"; //$NON-NLS-1$
- break;
- case INodeNotifier.CONTENT_CHANGED :
- notifType = "CONTENT_CHANGED"; //$NON-NLS-1$
- break;
- case INodeNotifier.STRUCTURE_CHANGED :
- notifType = "STRUCTURE_CHANGE"; //$NON-NLS-1$
- break;
- }
- Logger.log(Logger.INFO_DEBUG, "DOM Change: " + notifType); //$NON-NLS-1$
- Logger.log(Logger.INFO_DEBUG, "\tnotifier : " + notifier); //$NON-NLS-1$
- Logger.log(Logger.INFO_DEBUG, "\tchangedFeature: " + changedFeature); //$NON-NLS-1$
- Logger.log(Logger.INFO_DEBUG, "\toldValue : " + oldValue); //$NON-NLS-1$
- Logger.log(Logger.INFO_DEBUG, "\tnewValue : " + newValue); //$NON-NLS-1$
- }
- }
-
- protected void disableUndoManagementIfNecessary() {
- IDOMModel model = getXMLModel();
- if (model != null && model.getUndoManager() != null)
- model.disableUndoManagement();
- }
-
- protected void enableUndoManagement() {
- IDOMModel model = getXMLModel();
- if (model != null && model.getUndoManager() != null)
- model.enableUndoManagement();
- }
-
- protected String getNewlineString(Node node) {
- /*
- * We should always have IDOMNode, and IStructuredDocument, and
- * consquently a valid "preferred" line delimiter, but just to be
- * safe, we'll assign something by default.
- */
- if (node instanceof IDOMNode) {
- IDOMNode xmlNode = (IDOMNode) node;
- IStructuredDocument document = xmlNode.getStructuredDocument();
- if (document != null) {
- return document.getLineDelimiter();
- }
- }
- return DOMUtilities.NEWLINE_STRING;
- }
-
- protected IDOMModel getXMLModel() {
- if (getNode() != null)
- return ((IDOMNode) getNode()).getModel();
- return null;
- }
-
- protected IDOMNode getXMLNode() {
- return (IDOMNode) getNode();
- }
-
- /*
- * Do nothing for SSE, we will tolerate anything they add
- */
- protected void handleFeatureValueConversionException(FeatureValueConversionException ex) {
- // Do nothing
- }
-
- /*
- * Do nothing for SSE, we will tolerate anything they add
- */
- protected void handleInvalidMultiNodes(String nodeName) {
- // Do nothing
- }
-
- protected void indent(Node node, Translator map) {
- Assert.isNotNull(node.getParentNode(), "Node must be connected into the tree"); //$NON-NLS-1$
- Assert.isNotNull(node);
-
- String indentString = calcIndentString(node);
-
- // Indent before the start tag
- indentStartTag(indentString, node, map);
-
- // Indent before the end tag
- indentEndTag(indentString, node, map);
- }
-
- /**
- * Indent before the end tag of the <node>passed in.
- */
- protected void indentEndTag(String indentString, Node node, Translator map) {
- if (!map.shouldIndentEndTag(node))
- return;
- String domPath = map.getDOMPath();
-
- if ((!map.isManagedByParent() && !map.isDOMTextValue()) || (map.isManagedByParent() && domPath.length() != 0) && node.getNodeName().equals(domPath)) {
- Text newWS = node.getOwnerDocument().createTextNode(getNewlineString(node) + indentString); //$NON-NLS-1$
- DOMUtilities.insertBeforeNode(node, newWS, null);
- }
- }
-
- /**
- * Indent before the start tag of the <node>passed in.
- */
- protected void indentStartTag(String indentString, Node node, Translator map) {
- Node parent = node.getParentNode();
- Text newWS = node.getOwnerDocument().createTextNode(getNewlineString(node) + indentString); //$NON-NLS-1$
- DOMUtilities.insertAfterNode(parent, newWS, DOMUtilities.getPreviousNodeSibling(node));
- }
-
- protected boolean isEmptyTag(Element parent) {
- return ((IDOMElement) parent).isEmptyTag();
- }
-
- /*
- * This method is called when the DOM node changes. It attempts to update
- * MOF object based on the changes.
- */
- public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) {
-
- if (!isNotificationEnabled())
- return;
-
- debugDOMNotify(notifier, eventType, changedFeature, oldValue, newValue);
-
- if (notifier != getNode() && eventType != INodeNotifier.CHANGE) {
- // This is the case where the notification was sent from a
- // sub node. Use the notifiers name to determine which
- // MOF feature to update. Note that is is assumed that if
- // the eventType is CHANGE then it attribute on a path node
- // changing. This was put in for the EGL group.
- if (notifier instanceof Element) {
- if (eventType == INodeNotifier.STRUCTURE_CHANGED || eventType == INodeNotifier.CONTENT_CHANGED || eventType == INodeNotifier.CHANGE) {
- Element notifyingNode = (Element) notifier;
- Translator map = findTranslator(notifyingNode.getNodeName(), false);
- if (map != null)
- updateMOFFeature(map, getNode(), getEObject());
- }
- }
- }
- else {
- // Update everything on STRUCTURE_CHANGE or CONTENT_CHANGE.
- // Other event types occur too often.
- if (eventType == INodeNotifier.STRUCTURE_CHANGED || eventType == INodeNotifier.CONTENT_CHANGED) {
- updateMOF();
- }
- // Update just the attribute that changed.
- else if (eventType == INodeNotifier.CHANGE) {
- Translator map = findTranslator(changedFeature.toString(), true);
- if (map != null)
- updateMOFFeature(map, getNode(), getEObject());
- }
- }
- }
-
- protected void postUpdateDOMFeature(Translator map, Node node, EObject mofObject) {
- enableUndoManagement();
- }
-
- protected void preUpdateDOMFeature(Translator map, Node node, EObject mofObject) {
- super.preUpdateDOMFeature(map, node, mofObject);
- disableUndoManagementIfNecessary();
- }
-
- protected void primAddDOMAdapter(Node aNode, EMF2DOMAdapter anAdapter) {
- ((IDOMNode) aNode).addAdapter((EMF2DOMSSEAdapter) anAdapter);
- }
-
- /**
- * 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 EMF2DOMSSEAdapter(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 EMF2DOMSSEAdapter(node, fRenderer, childMap);
- }
- 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 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);
- }
- }
- }
-
- protected EMF2DOMAdapter primGetExistingAdapter(Node aNode) {
- INodeNotifier sseNode = (INodeNotifier) aNode;
- Collection adapters = sseNode.getAdapters();
- for (Iterator iterator = adapters.iterator(); iterator.hasNext();) {
- INodeAdapter adapter = (INodeAdapter) iterator.next();
- // First Check if it's an EMF2DOMAdapter
- if (adapter != null && adapter.isAdapterForType(EMF2DOMAdapter.ADAPTER_CLASS)) {
- // Cast to EMF2DOMAdapter
- EMF2DOMSSEAdapter e2DAdapter = (EMF2DOMSSEAdapter) adapter;
- Object adapterTarget = e2DAdapter.getTarget();
-
- //Handle the cases where either adapter's target is null
- if ((getTarget() == null) || (adapterTarget == null))
- if (resourceClass != null && resourceClass.equals(e2DAdapter.getResourceClass()))
- return e2DAdapter;
- else
- continue;
-
-
- // Check if target is an EMF resource
- if (getTarget() instanceof Resource) {
- /*
- * Now check if it's the right one (Multiple resources
- * could be attached)
- */
- if (adapterTarget != null && adapterTarget == getTarget()) {
- return e2DAdapter;
- }
- }
- else {
- // Check if targets are EObjects with the same resources
- EObject myTarget = (EObject) getTarget();
- /*
- * Now check if it's the right one (Multiple resources could
- * be attached)
- */
- if (adapterTarget != null && ((EObject)adapterTarget).eResource() == myTarget.eResource()) {
- return e2DAdapter;
- }
- }
-
- if (adapterTarget instanceof EObject) {
- if (((EObject) e2DAdapter.getTarget()).eResource() == null) {
- return e2DAdapter;
- }
- }
- }
- }
- return null;
- }
-
- protected String primGetIndentString(Node node) {
- IStructuredDocument flatModel = ((IDOMNode) node).getStructuredDocument();
- int nodeStartOff = ((IDOMNode) node).getStartOffset();
-
- int startOff = Math.max(0, nodeStartOff - 100);
- int endOff = nodeStartOff;
-
- try {
- String text = flatModel.get(startOff, endOff - startOff);
-
- int inx = text.length() - 1;
- if (inx >= 0) {
- for (; inx >= 0; inx--) {
- char ch = text.charAt(inx);
- if (Character.isWhitespace(ch) && ch != '\n' && ch != '\r') {
- continue;
- }
- inx++;
- break;
- }
-
- return text.substring(inx);
- }
- }
- catch (BadLocationException ex) {
- Logger.logException(ex);
- }
- return ""; //$NON-NLS-1$
- }
-
- protected void removeDOMAdapter(Node aNode, EMF2DOMAdapter anAdapter) {
- ((IDOMNode) aNode).removeAdapter((INodeAdapter) anAdapter);
- }
-
-
- protected void reorderDOMChild(Node parentNode, Node childNode, Node insertBeforeNode, Translator map) {
- super.reorderDOMChild(parentNode, childNode, insertBeforeNode, map);
- // Since reordering deletes all the whitespace before the node, we
- // must indent .
- if (insertBeforeNode != null && insertBeforeNode.getNodeType() == Node.ELEMENT_NODE)
- indentStartTag(calcIndentString(insertBeforeNode), insertBeforeNode, map);
- else
- indentStartTag(calcIndentString(childNode), childNode, map);
- }
-
- protected void setEmptyTag(Element element) {
- ((IDOMElement) element).setEmptyTag(true);
- }
-
- public void updateDOM() {
- if (!isNotificationEnabled())
- return;
- try {
- disableUndoManagementIfNecessary();
- primUpdateDOM();
- }
- finally {
- enableUndoManagement();
- }
- }
-
- public Class getResourceClass() {
- return resourceClass;
- }
-
- protected void initChildTranslators() {
- if (fRenderer != null && fRenderer.getResource() != null)
- resourceClass = fRenderer.getResource().getClass();
- super.initChildTranslators();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERenderer.java b/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERenderer.java
deleted file mode 100644
index 8b23e11300..0000000000
--- a/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERenderer.java
+++ /dev/null
@@ -1,644 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2008 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.xml.core.internal.emf2xml;
-
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jem.util.emf.workbench.ProjectResourceSet;
-import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
-import org.eclipse.wst.common.internal.emf.resource.EMF2DOMAdapter;
-import org.eclipse.wst.common.internal.emf.resource.EMF2DOMRenderer;
-import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
-import org.eclipse.wst.common.internal.emf.utilities.DOMUtilities;
-import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
-import org.eclipse.wst.common.internal.emfworkbench.integration.ResourceSetWorkbenchEditSynchronizer;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.model.ModelLifecycleEvent;
-import org.eclipse.wst.sse.core.internal.provisional.IModelLifecycleListener;
-import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IModelStateListener;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.Logger;
-import org.eclipse.wst.xml.core.internal.document.DocumentTypeImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.w3c.dom.Node;
-
-
-public class EMF2DOMSSERenderer extends EMF2DOMRenderer implements IModelStateListener, IModelLifecycleListener {
-
- protected Object aboutToChangeNode = null;
-
- protected boolean isBatchChanges = false;
-
- private boolean isSaving = false;
-
- private IModelManager modelManager;
-
- private Class resourceClass;
-
- /** The XML DOM model */
- protected IDOMModel xmlModel;
-
- /** Used internally; the unique id for the xml model */
- protected String xmlModelId;
-
- protected boolean xmlModelReverted = false;
-
- public EMF2DOMSSERenderer() {
- super();
- }
-
- public void accessForRead() {
- if (!resource.isNew()) {
- String id = getModelManagerId();
- getModelManager().getExistingModelForRead(id);
- }
- }
-
- public void accessForWrite() {
- modelAccessForWrite();
- }
-
- /**
- * see batchModelEnd
- *
- */
-
- public void batchModeEnd() {
- getXMLModel().changedModel();
- setRootNodeAdapterNotificationEnabled(true);
- isBatchChanges = false;
- }
-
- /**
- * batchModeStart and batchModeEnd is a pair that controls notifications,
- * and tread access. They should always be called in a try/finally block.
- *
- * setBatchModel begins the processing where notifications are not sent
- * out on each change, but saved up until the endBatchMode called.
- *
- * This pair of calls can also, indirectly, "lock" the DOM Model to access
- * from only one thread, so it should not be locked for long periods of
- * time. That's also why it is important to have the endBatchMode in a
- * finally block to be sure it is always called, or the DOM will be left
- * in a locked, unusable, state and only shortly away from severere
- * program error.
- *
- * <pre><code>
- * Example
- * </code>
- *
- * try {
- * batchModelStart();
- * ...do a some work ...
- * }
- * finally {
- * endBatchMode();
- * }
- *
- *
- * </pre>
- */
- public void batchModeStart() {
- isBatchChanges = true;
- getXMLModel().aboutToChangeModel();
- setRootNodeAdapterNotificationEnabled(false);
- }
-
- private void cacheSynchronizationStamp() {
- IFile file = WorkbenchResourceHelper.getFile(resource);
- if (file != null) {
- if (xmlModel != null)
- xmlModel.resetSynchronizationStamp(file);
- }
- }
-
- /**
- * Create a new Document given
- *
- * @aResource.
- */
- protected void createDocument() {
- TranslatorResource res = getResource();
- res.setDefaults();
- IFile file = WorkbenchResourceHelper.getFile(resource);
- InputStream is = DOMUtilities.createHeaderInputStream(res.getDoctype(), res.getPublicId(), res.getSystemId());
- if (is == null)
- return;
- try {
- try {
- List folders = new ArrayList();
- IContainer container = file.getParent();
- while (null != container && !container.exists() && container instanceof IFolder) {
- folders.add(container);
- container = container.getParent();
- }
- IFolder folder = null;
- for (int i = 0; i < folders.size(); i++) {
- folder = (IFolder) folders.get(i);
- folder.create(true, true, null);
- }
- file.create(is, true, null);
- file.setLocal(true, 1, null);
- }
- catch (CoreException e1) {
- Logger.logException(e1);
- }
- finally {
- if (null != is) {
- is.close();
- }
- }
- initializeXMLModel(file, resource.getWriteCount() != 0);
- }
- catch (IOException ex) {
- Logger.log(Logger.ERROR, "IWAE0017E Unexpected IO exception occurred creating xml document");//$NON-NLS-1$
- }
- }
-
- protected void createDOMTreeIfNecessary() {
- if (needsToCreateDOM)
- createDOMTree();
- }
-
- protected EMF2DOMAdapter createRootDOMAdapter() {
- return new EMF2DOMSSEAdapter(getResource(), document, this, getResource().getRootTranslator());
- }
-
- public void deRegisterAsModelLifecycleListener() {
- if (xmlModel != null)
- xmlModel.removeModelLifecycleListener(this);
- }
-
- public void deRegisterAsModelStateListener() {
- if (xmlModel != null)
- xmlModel.removeModelStateListener(this);
- }
-
- private void deregisterFromXMLModel() {
-
- deRegisterAsModelStateListener();
- deRegisterAsModelLifecycleListener();
- // This try/catch block is a hack to fix defect 204114. This occurs
- // because
- // the model manager plugin is shut down and unloaded before the j2ee
- // plugin.
- // Calling getModelManager() can result in a class cast exception that
- // should
- // be ignored.
- // ModelManager mgr = null;
- try {
- getModelManager();
- }
- catch (ClassCastException exc) {
- return;
- }
- if (xmlModel != null) {
- int writeCount = resource.getWriteCount();
- int readCount = resource.getReadCount();
- for (int i = 0; i < writeCount; i++)
- xmlModel.releaseFromEdit();
- for (int ii = 0; ii < readCount; ii++)
- xmlModel.releaseFromRead();
- }
- EMF2DOMAdapter adapter = (EMF2DOMAdapter) EcoreUtil.getAdapter(resource.eAdapters(), EMF2DOMAdapter.ADAPTER_CLASS);
- if (adapter != null) {
- adapter.removeAdapters(adapter.getNode());
- }
- xmlModel = null;
- xmlModelId = null;
- }
-
- public void doSave(OutputStream outputStream, Map options) throws IOException {
-
- try {
- isSaving = true;
- if (null != outputStream) {
- throw new RuntimeException(this.getClass().getName() + " should not use an OutputStream for saving");} //$NON-NLS-1$
- createDOMTreeIfNecessary();
- ResourceSetWorkbenchEditSynchronizer synchronizer = (ResourceSetWorkbenchEditSynchronizer) ((ProjectResourceSet) resource.getResourceSet()).getSynchronizer();
- IFile aFile = WorkbenchResourceHelper.getFile(resource);
- try {
- synchronizer.preSave(aFile, resource);
- xmlModel.save(aFile);
- }
- catch (CoreException ex) {
- synchronizer.removeFromRecentlySavedList(aFile);
- Logger.logException(ex);
- }
- cacheSynchronizationStamp();
- }
- finally {
- isSaving = false;
- }
- }
-
- public EMF2DOMAdapter getExistingDOMAdapter(Node node) {
- //IDOMNode xNode = (IDOMNode) node;
- //return (EMF2DOMSSEAdapter) xNode.getAdapterFor(EMF2DOMAdapter.ADAPTER_CLASS);
-
- INodeNotifier sseNode = (INodeNotifier) node;
- Collection adapters = sseNode.getAdapters();
- for (Iterator iterator = adapters.iterator(); iterator.hasNext();) {
- INodeAdapter adapter = (INodeAdapter) iterator.next();
- // First Check if it's an EMF2DOMAdapter
- if (adapter != null && adapter.isAdapterForType(EMF2DOMAdapter.ADAPTER_CLASS)) {
- // Cast to EMF2DOMSSEAdapter
- EMF2DOMSSEAdapter e2DAdapter = (EMF2DOMSSEAdapter) adapter;
- //Handle the cases where either adapter's target is null
- //Use the resourceClass to make sure the resource type is identical
- if (getResource() == null || e2DAdapter.getTarget() == null)
- if(resourceClass.equals(e2DAdapter.getResourceClass()))
- return e2DAdapter;
- else
- continue;
-
- // First check if targets are resources
- if (e2DAdapter.getTarget() instanceof Resource) {
- /*
- * Now check if it's the right one (Multiple resources
- * could be attached)
- */
- if (e2DAdapter.getTarget() == getResource()) {
- return e2DAdapter;
- }
- } else {
- // Check if targets are EObjects with the same resources
- TranslatorResource myTarget = getResource();
- EObject adapterTarget = (EObject) e2DAdapter.getTarget();
- /*
- * Now check if it's the right one (Multiple resources could
- * be attached)
- */
- if (adapterTarget.eResource() == myTarget || adapterTarget.eResource() == null) {
- return e2DAdapter;
- }
- }
- }
- }
- return null;
-
- }
-
- protected IModelManager getModelManager() {
- if (modelManager == null)
- modelManager = StructuredModelManager.getModelManager();
- return modelManager;
- }
-
- /**
- * Return id used to key the XML resource in the XML ModelManager.
- */
- protected String getModelManagerId() {
- if (xmlModelId == null) {
- IFile file = WorkbenchResourceHelper.getFile(getResource());
- if (file != null) {
- xmlModelId = getModelManager().calculateId(file);
- }
- else {
- xmlModelId = resource.getURI() + Long.toString(System.currentTimeMillis());
- }
- }
- return xmlModelId;
- }
-
- protected ResourceSet getResourceSet() {
- return resource == null ? null : resource.getResourceSet();
- }
-
- /**
- * Return the DOM model for this resource.
- */
- public IDOMModel getXMLModel() {
- return xmlModel;
- }
-
- public String getXMLModelId() {
- return xmlModelId;
- }
-
- private IDOMModel initializeXMLModel(IFile file, boolean forWrite) throws UnsupportedEncodingException, IOException {
- if (file == null || !file.exists())
- throw new FileNotFoundException((file == null) ? "null" : file.getFullPath().toOSString()); //$NON-NLS-1$
- try {
- IModelManager manager = getModelManager();
- String id = manager.calculateId(file);
- if (forWrite) {
- IDOMModel mod = (IDOMModel)manager.getExistingModelForEdit(id);
- if (mod == null)
- setXMLModel((IDOMModel) manager.getModelForEdit(file));
- else {
- setXMLModel(mod);
- }
- }
- else {
- IDOMModel mod = (IDOMModel)manager.getExistingModelForRead(id);
- if (mod == null)
- setXMLModel((IDOMModel) manager.getModelForRead(file));
- else {
- setXMLModel(mod);
- }
- }
- setXMLModelId(getXMLModel().getId());
- needsToCreateDOM = false;
- }
- catch (CoreException e) {
- Logger.logException(e);
- return null;
- }
- String id = getXMLModel().getId();
- syncReferenceCounts(id, forWrite);
- if (xmlModel != null)
- document = xmlModel.getDocument();
- return xmlModel;
- }
-
- public boolean isBatchMode() {
- return isBatchChanges;
- }
-
- public boolean isModified() {
- return (getXMLModel() != null && getXMLModel().isDirty());
- }
-
- public boolean isShared() {
-
- if( xmlModel == null) { //resource could be in process of being unloaded - check with model manager
- String id = getModelManagerId();
- return getModelManager().isShared(id);
- }
- if (getResourceSet() == null)
- return false;
- return xmlModel.isShared();
- }
-
- public boolean isSharedForWrite() {
- if (getResourceSet() == null || xmlModel == null)
- return false;
- return xmlModel.isSharedForEdit();
- }
-
- protected void loadDocument(InputStream in, Map options) throws IOException {
- if (null != in) {
- throw new RuntimeException(this.getClass().getName() + " should not use an InputStream for loading");} //$NON-NLS-1$
- IFile file = WorkbenchResourceHelper.getFile(resource);
- initializeXMLModel(file, (resource.getWriteCount() != 0));
- cacheSynchronizationStamp();
- }
-
- protected boolean managesDOMAdapters() {
- return false;
- }
-
- public void modelAboutToBeChanged(IStructuredModel model) {
- if (model.getStructuredDocument() != null)
- aboutToChangeNode = model.getStructuredDocument().getFirstStructuredDocumentRegion();
- }
-
- public void modelAboutToBeReinitialized(IStructuredModel structuredModel) {
- // TODO Auto-generated method stub
-
- }
-
- private void modelAccessForWrite() {
- String id = getModelManagerId();
- getModelManager().getExistingModelForEdit(id);
- }
-
- public void modelChanged(IStructuredModel model) {
- if (isBatchChanges)
- return;
- try {
- if (aboutToChangeNode != null && model.getStructuredDocument() != null
- && model.getStructuredDocument().getFirstStructuredDocumentRegion() != aboutToChangeNode) {
- String id = getModelManagerId();
- IStructuredModel tempModel = null;
- try {
- tempModel = getModelManager().getExistingModelForEdit(id);
- xmlModelReverted = true;
- resource.unload();
- } finally {
- if (tempModel != null && (tempModel.getReferenceCountForEdit() > 0)) {
- tempModel.releaseFromEdit();
- }
- }
- }
- } finally {
- aboutToChangeNode = null;
- }
- }
-
- public void modelDirtyStateChanged(IStructuredModel model, boolean isDirty) {
- if (!isDirty && resource.isModified()) { // The XMLModel was saved
- resource.setModified(false);
- long stamp = WorkbenchResourceHelper.computeModificationStamp(resource);
- WorkbenchResourceHelper.setSynhronizationStamp(resource, stamp);
- IProject proj = WorkbenchResourceHelper.getProject(resource);
- ResourceSetWorkbenchEditSynchronizer synchronizer = (ResourceSetWorkbenchEditSynchronizer) ((ProjectResourceSet) WorkbenchResourceHelperBase.getResourceSet(proj)).getSynchronizer();
- IFile aFile = WorkbenchResourceHelper.getFile(resource);
- synchronizer.preSave(aFile, resource);
- }
- if (isDirty)
- resource.setModified(true);
- }
-
- public void modelReinitialized(IStructuredModel structuredModel) {
- // TODO Auto-generated method stub
-
- }
-
- public void modelResourceDeleted(IStructuredModel model) {
- // Do nothing
- }
-
- public void modelResourceMoved(IStructuredModel oldModel, IStructuredModel newModel) {
- // Do nothing
- }
-
- /**
- * This method is called just prior to being removed from the ResourceSet.
- * Ensure that all reference counts to the XMLModel are removed.
- */
- public void preDelete() {
- if (resource.isLoaded())
- deregisterFromXMLModel();
- }
-
- public void preUnload() {
- deregisterFromXMLModel();
- }
-
- public void processPostModelEvent(ModelLifecycleEvent event) {
- // TODO Auto-generated method stub
-
- }
-
- public void processPreModelEvent(ModelLifecycleEvent event) {
- if (!isSaving) {
- if (event.getType() == ModelLifecycleEvent.MODEL_SAVED) {
- ResourceSetWorkbenchEditSynchronizer synchronizer = (ResourceSetWorkbenchEditSynchronizer) ((ProjectResourceSet) resource.getResourceSet()).getSynchronizer();
- IFile aFile = WorkbenchResourceHelper.getFile(resource);
- synchronizer.preSave(aFile, resource);
- }
- }
- }
-
-
- public void registerAsModelLifecycleListener() {
- this.xmlModel.addModelLifecycleListener(this);
- }
-
- /**
- * Insert the method's description here. Creation date: (9/7/2001 10:49:53
- * AM)
- */
- public void registerAsModelStateListener() {
- this.xmlModel.addModelStateListener(this);
- }
-
- public void releaseFromRead() {
- if (xmlModel != null)
- xmlModel.releaseFromRead();
- }
-
- public void releaseFromWrite() {
- if (xmlModel != null)
- xmlModel.releaseFromEdit();
- }
-
- public void removeDOMAdapter(Node aNode, EMF2DOMAdapter anAdapter) {
- ((IDOMNode) aNode).removeAdapter((EMF2DOMSSEAdapter) anAdapter);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.util.emf.xml.EMF2DOMRenderer#replaceDocumentType(java.lang.String,
- * java.lang.String, java.lang.String)
- */
- public void replaceDocumentType(String docTypeName, String publicId, String systemId) {
- if (document == null)
- return;
- DocumentTypeImpl docType = (DocumentTypeImpl) document.getDoctype();
- if (docType == null)
- return;
- if (publicId == null && systemId == null)
- document.removeChild(docType);
- else {
- docType.setPublicId(publicId);
- docType.setSystemId(systemId);
- }
- }
-
- /**
- * @deprecated use batchModeStart and BatchModeEnd instead even if you do
- * not use batchModelStart/End, you still need to use the
- * try/finally pattern documented there.
- */
-
- public void setBatchMode(boolean isBatch) {
-
- // This is some extra processing for clients to know they may be using
- // incorrectly
- if (isBatch) {
- if (isBatchChanges) {
- Logger.log(Logger.INFO_DEBUG, "setBatch was set to true when it was already true. This can be an indication of invalid calling order"); //$NON-NLS-1$
- }
- }
-
-
- if (isBatch) {
- batchModeStart();
- }
- else {
- batchModeEnd();
- }
- }
-
- private void setRootNodeAdapterNotificationEnabled(boolean b) {
- EObject root = resource.getRootObject();
- if (root != null) {
- EMF2DOMAdapter adapter = (EMF2DOMAdapter) EcoreUtil.getExistingAdapter(root, EMF2DOMAdapter.ADAPTER_CLASS);
- if (adapter != null) {
- adapter.setNotificationEnabled(b);
- if (b)
- adapter.updateDOM();
- }
- }
- }
-
- /**
- * Return the DOM model for this resource.
- */
- public void setXMLModel(IDOMModel xmlModel) {
- deRegisterAsModelStateListener();
- deRegisterAsModelLifecycleListener();
- this.xmlModel = xmlModel;
- registerAsModelStateListener();
- registerAsModelLifecycleListener();
- }
-
- public void setXMLModelId(String id) {
- xmlModelId = id;
- }
-
- private void syncReferenceCounts(String id, boolean forWrite) {
- int editIndex = 0, readIndex = 0;
- if (forWrite)
- editIndex++;
- else
- readIndex++;
- int writeCount = resource.getWriteCount();
- int readCount = resource.getReadCount();
- for (int i = writeCount; i > editIndex; i--)
- modelManager.getExistingModelForEdit(id);
- for (int i = readCount; i > readIndex; i--)
- modelManager.getExistingModelForRead(id);
- }
-
- public boolean useStreamsForIO() {
- return false;
- }
-
- public boolean wasReverted() {
- return xmlModelReverted;
- }
-
- public void setResource(TranslatorResource resource) {
- super.setResource(resource);
- if (resource != null)
- resourceClass = resource.getClass();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERendererFactory.java b/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERendererFactory.java
deleted file mode 100644
index 9b7912321d..0000000000
--- a/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERendererFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 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.xml.core.internal.emf2xml;
-
-import org.eclipse.wst.common.internal.emf.resource.Renderer;
-import org.eclipse.wst.common.internal.emf.resource.RendererFactory;
-
-/**
- * @author schacher
- */
-public class EMF2DOMSSERendererFactory extends RendererFactory {
-
- public static final EMF2DOMSSERendererFactory INSTANCE = new EMF2DOMSSERendererFactory();
-
- public EMF2DOMSSERendererFactory() {
- // Default constructor
- }
-
-
- public Renderer createRenderer() {
- return new EMF2DOMSSERenderer();
- }
-}

Back to the top