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 'plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java')
-rw-r--r--plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java422
1 files changed, 0 insertions, 422 deletions
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java
deleted file mode 100644
index 66c6b355e..000000000
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java
+++ /dev/null
@@ -1,422 +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
- *******************************************************************************/
-/*
- * Created on Mar 3, 2004
- *
- * To change the template for this generated file go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-package org.eclipse.wst.common.internal.emfworkbench;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.runtime.CoreException;
-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.resource.ResourceSet;
-import org.eclipse.jem.util.emf.workbench.EMFWorkbenchContextBase;
-import org.eclipse.jem.util.emf.workbench.ISynchronizerExtender;
-import org.eclipse.jem.util.emf.workbench.ProjectResourceSet;
-import org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter;
-import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.wst.common.internal.emf.resource.CompatibilityXMIResource;
-import org.eclipse.wst.common.internal.emf.resource.ReferencedXMIFactoryImpl;
-import org.eclipse.wst.common.internal.emf.utilities.DefaultOverridableResourceFactoryRegistry;
-import org.eclipse.wst.common.internal.emfworkbench.edit.EditModelRegistry;
-import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
-import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent;
-import org.eclipse.wst.common.internal.emfworkbench.integration.ProjectResourceSetEditImpl;
-
-/**
- * @author schacher
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public class EMFWorkbenchContext extends EMFWorkbenchContextBase implements ISynchronizerExtender {
-
- private Map readOnlyModels = new HashMap();
- private Map editableModels = new HashMap();
-
- protected Adapter resourceSetListener;
-
- protected boolean defaultToMOF5Compatibility = false;
-
-
- /**
- * @param aProject
- */
- public EMFWorkbenchContext(IProject aProject) {
- super(aProject);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext#initializeResourceSet(org.eclipse.wst.common.internal.emfworkbench.ProjectResourceSet)
- */
- protected void initializeResourceSet(ProjectResourceSet aResourceSet) {
- super.initializeResourceSet(aResourceSet);
- Resource.Factory.Registry reg = new DefaultOverridableResourceFactoryRegistry();
- Resource.Factory factory = new ReferencedXMIFactoryImpl();
- reg.getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, factory);
- // add xmi because other plugins are registering it globally
- reg.getExtensionToFactoryMap().put("xmi", factory); //$NON-NLS-1$
- aResourceSet.setResourceFactoryRegistry(reg);
- aResourceSet.getSynchronizer().addExtender(this); // added so we can be informed of closes
- // to the project.
- startListeningToResourceSet();
- }
-
- public static String getCacheID(String editModelID, Map params) {
- return EditModelRegistry.getInstance().getCacheID(editModelID, params);
- }
-
- /**
- * This is the API that clients should use when they have an intent to modify a particular
- * resource. You should only access the resources through the J2EEEditModel that is returned by
- * this method if you have the intent to modify.
- *
- * @see J2EEEditModel
- */
- public final EditModel getEditModelForWrite(String editModelID, Object accessorKey, Map params) {
- EditModel editModel = getExistingEditModel(editModelID, params, false);
- if (null == editModel) {
- editModel = createEditModelForWrite(editModelID, params);
- synchronized (editModel) {
- cacheEditModel(editModel, params);
- editModel.access(accessorKey);
- }
- } else {
- if (editModel.isDisposed() || editModel.isDisposing()) {
- editModel = createEditModelForWrite(editModelID, params);
- cacheEditModel(editModel, params);
- }
- synchronized (editModel) {
- editModel.access(accessorKey);
- }
- }
- return editModel;
- }
-
- /**
- * This is the API that clients should use when they want to read a group of resources that are
- * normally managed by the edit model with
- *
- * @aKey. You should only access the resources through the J2EEEditModel that is returned by
- * this method. You must call releaseEditModel(...) when you are finished with the edit
- * model.
- * @see J2EEEditModel
- */
- public final EditModel getEditModelForRead(String editModelID, Object accessorKey, Map params) {
- try {
- EditModel editModel = getExistingEditModel(editModelID, params, true);
- if (null == editModel) {
- editModel = createEditModelForRead(editModelID, params);
- synchronized (editModel) {
- cacheEditModel(editModel, params);
- EditModelLeastUsedCache.getInstance().access(editModel);
- editModel.access(accessorKey);
- }
- } else {
- if (editModel.isDisposed() || editModel.isDisposing()) {
- editModel = createEditModelForRead(editModelID, params);
- cacheEditModel(editModel, params);
- }
- synchronized (editModel) {
- EditModelLeastUsedCache.getInstance().access(editModel);
- editModel.access(accessorKey);
- }
- }
- return editModel;
- } finally {
- EditModelLeastUsedCache.getInstance().optimizeLRUSizeIfNecessary();
- }
- }
-
- /**
- * This is the API that clients should use when they have an intent to modify a particular
- * resource. You should only access the resources through the J2EEEditModel that is returned by
- * this method if you have the intent to modify.
- *
- * @see J2EEEditModel
- */
- public final EditModel getEditModelForWrite(String editModelID, Object accessorKey) {
- return getEditModelForWrite(editModelID, accessorKey, null);
- }
-
- /**
- * This is the API that clients should use when they want to read a group of resources that are
- * normally managed by the edit model with
- *
- * @aKey. You should only access the resources through the J2EEEditModel that is returned by
- * this method. You must call releaseEditModel(...) when you are finished with the edit
- * model.
- * @see J2EEEditModel
- */
- public final EditModel getEditModelForRead(String editModelID, Object accessorKey) {
- return getEditModelForRead(editModelID, accessorKey, null);
- }
-
-
-
- public EditModel getExistingEditModel(String editModelID, Map params, boolean isReadOnly) {
- EditModel editModel = null;
- synchronized (readOnlyModels) {
- if (isReadOnly) {
- editModel = (EditModel) readOnlyModels.get(getCacheID(editModelID, params));
- } else {
- synchronized (editableModels) {
- editModel = (EditModel) editableModels.get(getCacheID(editModelID, params));
- }
- }
- }
- return editModel;
- }
-
- /**
- * Subclasses may override to return the appropriate read-only J2EEEditModel.
- */
- protected EditModel createEditModelForRead(String editModelID, Map params) {
- return EditModelRegistry.getInstance().createEditModelForRead(editModelID, this, params);
- }
-
- /**
- * Subclasses may override to return the appropriate J2EEEditModel.
- */
- protected EditModel createEditModelForWrite(String editModelID, Map params) {
- return EditModelRegistry.getInstance().createEditModelForWrite(editModelID, this, params);
- }
-
- /**
- * Insert the method's description here. Creation date: (4/16/2001 12:25:39 PM)
- *
- * @return java.util.List
- */
- public void cacheEditModel(EditModel editModel, Map params) {
- editModel.setParams(params);
- synchronized (readOnlyModels) {
- if (editModel.isReadOnly())
- readOnlyModels.put(getCacheID(editModel.getEditModelID(), params), editModel);
- else
- synchronized (editableModels) {
- editableModels.put(getCacheID(editModel.getEditModelID(), params), editModel);
- }
- }
- }
-
- protected void discardAllEditModels() {
- synchronized (readOnlyModels) {
- synchronized (editableModels) {
- Collection readOnly = readOnlyModels.values();
- EditModelLeastUsedCache.getInstance().removeAllCached(readOnly);
- discardModels(readOnly);
- discardModels(editableModels.values());
- }
- }
-
- }
-
- private void discardModels(Collection editModels) {
- if (editModels != null && !editModels.isEmpty()) {
- // Make a copy for safety against concurrent modification
- Iterator it = new ArrayList(editModels).iterator();
- while (it.hasNext()) {
- ((EditModel) it.next()).dispose();
- }
- }
- }
-
- public void removeEditModel(EditModel editModel, boolean readOnly) {
- // The best way would be to recompute the cache id, but we don't care
- // because the edit model should only be cached once anyway
- synchronized (readOnlyModels) {
- if (readOnly)
- readOnlyModels.values().remove(editModel);
- else
- synchronized (editableModels) {
- editableModels.values().remove(editModel);
- }
- }
- }
-
- /**
- * Notify all editModels of the change.
- */
- protected void notifyEditModels(EditModelEvent anEvent) {
- if (anEvent == null)
- return;
- List aList = new ArrayList();
- synchronized (readOnlyModels) {
- synchronized (editableModels) {
- aList.addAll(readOnlyModels.values());
- aList.addAll(editableModels.values());
- }
- }
- EditModel editModel;
- for (int i = 0; i < aList.size(); i++) {
- editModel = (EditModel) aList.get(i);
- try {
- editModel.resourceChanged(anEvent);
- } catch (Exception e) {
- Logger.getLogger().logError(e);
- }
- }
- }
-
- protected boolean shouldNotifyEditModels() {
- synchronized (readOnlyModels) {
- synchronized (editableModels) {
- return !this.readOnlyModels.isEmpty() || !this.editableModels.isEmpty();
- }
- }
- }
-
- protected Adapter getResourceSetListener() {
- if (resourceSetListener == null)
- resourceSetListener = new ResourceSetListener();
- return resourceSetListener;
- }
-
-
- protected class ResourceSetListener extends AdapterImpl {
- /*
- * @see Adapter#notifyChanged(new ENotificationImpl((InternalEObject)Notifier,
- * int,(EStructuralFeature) EObject, Object, Object, int))
- */
- public void notifyChanged(Notification notification) {
- switch (notification.getEventType()) {
- case Notification.ADD :
- addedResource((Resource) notification.getNewValue());
- break;
- case Notification.REMOVE :
- removedResource((Resource) notification.getOldValue());
- break;
- case Notification.REMOVE_MANY :
- removedResources((List) notification.getOldValue());
- break;
- }
- }
- }
-
- /**
- * Notify all editModels of the change.
- */
- public void addedResource(Resource addedResource) {
- if (defaultToMOF5Compatibility && (addedResource != null) && (addedResource instanceof CompatibilityXMIResource))
- ((CompatibilityXMIResource) addedResource).setFormat(CompatibilityXMIResource.FORMAT_MOF5);
- if (shouldNotifyEditModels()) {
- EditModelEvent event = new EditModelEvent(EditModelEvent.ADDED_RESOURCE, null);
- event.addResource(addedResource);
- notifyEditModels(event);
- }
- }
-
- /**
- * Notify all editModels of the change.
- */
- public void removedResource(Resource removedResource) {
- if (shouldNotifyEditModels()) {
- EditModelEvent event = new EditModelEvent(EditModelEvent.REMOVED_RESOURCE, null);
- event.addResource(removedResource);
- notifyEditModels(event);
- }
- }
-
- /**
- * Notify all editModels of the change.
- */
- public void removedResources(List removedResources) {
- if (shouldNotifyEditModels()) {
- EditModelEvent event = new EditModelEvent(EditModelEvent.REMOVED_RESOURCE, null);
- event.addResources(removedResources);
- notifyEditModels(event);
- }
- }
-
- protected void startListeningToResourceSet() {
- ResourceSet set = getResourceSet();
- if (set != null)
- set.eAdapters().add(getResourceSetListener());
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.wst.common.internal.emfworkbench.ISynchronizerExtender#projectChanged(org.eclipse.core.resources.IResourceDelta)
- */
- public void projectChanged(IResourceDelta delta) {
- // default nothing
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.wst.common.internal.emfworkbench.ISynchronizerExtender#projectClosed()
- */
- public void projectClosed() {
- discardAllEditModels();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContextBase#createURIConverter(org.eclipse.wst.common.internal.emfworkbench.ProjectResourceSet)
- */
- protected WorkbenchURIConverter createURIConverter(ProjectResourceSet aResourceSet) {
- return new CompatibilityWorkbenchURIConverterImpl(getProject(), aResourceSet.getSynchronizer());
- }
-
- protected ProjectResourceSet createResourceSet() {
- if (project == null)
- throw new IllegalStateException("Attempt to create resource set with null project"); //$NON-NLS-1$
- return new ProjectResourceSetEditImpl(project);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContextBase#deleteFile(org.eclipse.emf.ecore.resource.Resource)
- */
- public void deleteFile(Resource resource) {
- try {
- WorkbenchResourceHelper.deleteResource(resource);
- } catch (CoreException ex) {
- Logger.getLogger().logError(ex);
- }
-
- }
-
- /**
- * @return Returns the defaultToMOF5Compatibility.
- */
- public boolean isDefaultToMOF5Compatibility() {
- return defaultToMOF5Compatibility;
- }
-
- /**
- * @param defaultToMOF5Compatibility
- * The defaultToMOF5Compatibility to set.
- */
- public void setDefaultToMOF5Compatibility(boolean defaultToMOF5Compatibility) {
- this.defaultToMOF5Compatibility = defaultToMOF5Compatibility;
- }
-
-}

Back to the top