diff options
| author | Mickael LANOE | 2015-03-11 09:06:53 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2015-03-12 14:47:13 +0000 |
| commit | 3e7f5ad187ff0e6f42e37c317503ea8a21f4faae (patch) | |
| tree | 5c209a144661c9fbb5edfad77615d8cabd02ac11 | |
| parent | 687a082c604c66d1433c90d25734bec75a061f2d (diff) | |
| download | org.eclipse.sirius-3e7f5ad187ff0e6f42e37c317503ea8a21f4faae.tar.gz org.eclipse.sirius-3e7f5ad187ff0e6f42e37c317503ea8a21f4faae.tar.xz org.eclipse.sirius-3e7f5ad187ff0e6f42e37c317503ea8a21f4faae.zip | |
[449357] Remove dependency on GMF for org.eclipse.sirius
AirdResourceImpl now inherits from XMIResourceImpl instead of
GMFResource and AirdResourceXMILoad now inherits from XMILoadImpl
instead of GMFLoad in order to remove the dependency on GMF.
Move AirDResourceFactory, AirDResourceImpl and AirdResourceXMILoad
classes into the package org.eclipse.sirius.business.internal.resource
Bug: 449357
Change-Id: Iecefd3bf8571d07d976f13c7d61cc4deda7a3ba4
Signed-off-by: Mickael LANOE <mickael.lanoe@obeo.fr>
8 files changed, 144 insertions, 88 deletions
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/common/SaverTest.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/common/SaverTest.java index 8545dfd3cf..21e546ecab 100644 --- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/common/SaverTest.java +++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/common/SaverTest.java @@ -32,7 +32,7 @@ import org.eclipse.sirius.business.api.session.SavingPolicy; import org.eclipse.sirius.business.api.session.Session; import org.eclipse.sirius.business.api.session.SessionStatus; import org.eclipse.sirius.business.api.session.factory.SessionFactory; -import org.eclipse.sirius.business.internal.resource.parser.AirDResourceFactory; +import org.eclipse.sirius.business.internal.resource.AirDResourceFactory; import org.eclipse.sirius.business.internal.session.danalysis.DAnalysisSessionImpl; import org.eclipse.sirius.viewpoint.DAnalysis; diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/SetVersionTest.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/SetVersionTest.java index c66f9561ed..f7a522a897 100644 --- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/SetVersionTest.java +++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/SetVersionTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2014 THALES GLOBAL SERVICES. + * Copyright (c) 2010, 2015 THALES GLOBAL SERVICES. * 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 @@ -33,7 +33,7 @@ import org.eclipse.sirius.business.internal.migration.RepresentationsFileResourc import org.eclipse.sirius.business.internal.migration.description.VSMExtendedMetaData; import org.eclipse.sirius.business.internal.migration.description.VSMMigrationService; import org.eclipse.sirius.business.internal.migration.description.VSMResourceHandler; -import org.eclipse.sirius.business.internal.resource.parser.AirDResourceImpl; +import org.eclipse.sirius.business.internal.resource.AirDResourceImpl; import org.eclipse.sirius.business.internal.session.SessionFactoryImpl; import org.eclipse.sirius.common.tools.api.util.ReflectionHelper; import org.eclipse.sirius.diagram.tools.api.command.IDiagramCommandFactory; diff --git a/plugins/org.eclipse.sirius/META-INF/MANIFEST.MF b/plugins/org.eclipse.sirius/META-INF/MANIFEST.MF index 507b492693..6d29e15d31 100644 --- a/plugins/org.eclipse.sirius/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.sirius/META-INF/MANIFEST.MF @@ -121,8 +121,7 @@ Require-Bundle: org.eclipse.sirius.common;bundle-version="2.0.0", org.eclipse.core.runtime;bundle-version="3.8.0", org.eclipse.emf.ecore;bundle-version="2.8.3";visibility:=reexport, org.eclipse.emf.ecore.xmi;bundle-version="2.8.1";visibility:=reexport, - com.google.guava;bundle-version="[11.0.2,16.0)", - org.eclipse.gmf.runtime.emf.core;bundle-version="1.4.1" + com.google.guava;bundle-version="[11.0.2,16.0)" Import-Package: org.eclipse.sirius.ext.base;version="2.0.0", org.eclipse.sirius.ext.base.cache;version="2.0.0", org.eclipse.sirius.ext.base.collect;version="2.0.0", diff --git a/plugins/org.eclipse.sirius/plugin.xml b/plugins/org.eclipse.sirius/plugin.xml index 5517d684f1..d55cc12950 100644 --- a/plugins/org.eclipse.sirius/plugin.xml +++ b/plugins/org.eclipse.sirius/plugin.xml @@ -371,7 +371,7 @@ <?gmfgen generated="false"?> <parser type="aird" - class="org.eclipse.sirius.business.internal.resource.parser.AirDResourceFactory"> + class="org.eclipse.sirius.business.internal.resource.AirDResourceFactory"> </parser> </extension> diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/migration/AirdResourceXMILoad.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/migration/AirdResourceXMILoad.java deleted file mode 100644 index 50ddd4a24b..0000000000 --- a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/migration/AirdResourceXMILoad.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Obeo. - * 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: - * Obeo - initial API and implementation - *******************************************************************************/ -package org.eclipse.sirius.business.internal.migration; - -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.SAXWrapper; -import org.eclipse.gmf.runtime.emf.core.resources.GMFHandler; -import org.eclipse.gmf.runtime.emf.core.resources.GMFLoad; -import org.xml.sax.helpers.DefaultHandler; - -/** - * A specialization of {@link GMFLoad} to enable hooking into the XML parsing - * for modeling migration. - * - * @author Cedric Brun <cedric.brun@obeo.fr> - * - */ -public class AirdResourceXMILoad extends GMFLoad { - - private String loadedVersion; - - /** - * Create a new {@link AirdResourceXMILoad}, suitable for on the fly - * migration of .aird files. - * - * @param loadedVersion - * the original version of the .aird file which is currently - * being loaded. - * @param helper - * the xml helper to use during the load. - */ - public AirdResourceXMILoad(String loadedVersion, XMLHelper helper) { - super(helper); - this.loadedVersion = loadedVersion; - } - - /** - * {@inheritDoc} - */ - @Override - protected DefaultHandler makeDefaultHandler() { - return new SAXWrapper(new AirdHandler(resource, helper, options)); - } - - /** - * A specialization of the GMF handler to delegate to the file migration - * service. - * - * @author cedric - * - */ - class AirdHandler extends GMFHandler { - - public AirdHandler(XMLResource xmiResource, XMLHelper helper, Map<?, ?> options) { - super(xmiResource, helper, options); - } - - @Override - public void endElement(String uri, String localName, String name) { - super.endElement(uri, localName, name); - RepresentationsFileMigrationService.getInstance().postXMLEndElement(objects.peek(), attribs, uri, localName, name, loadedVersion); - } - } -} diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/parser/AirDResourceFactory.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/AirDResourceFactory.java index 8b1c3cd037..a72d9dad13 100644 --- a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/parser/AirDResourceFactory.java +++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/AirDResourceFactory.java @@ -10,7 +10,7 @@ * IBM Corporation and others - The code for default load/save options was lifted * from GMF's org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory. *******************************************************************************/ -package org.eclipse.sirius.business.internal.resource.parser; +package org.eclipse.sirius.business.internal.resource; import java.util.HashMap; import java.util.Map; diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/parser/AirDResourceImpl.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/AirDResourceImpl.java index ca75d6ebb9..f1657c40d3 100644 --- a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/parser/AirDResourceImpl.java +++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/AirDResourceImpl.java @@ -8,7 +8,7 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ -package org.eclipse.sirius.business.internal.resource.parser; +package org.eclipse.sirius.business.internal.resource; import java.io.IOException; import java.util.Map; @@ -17,12 +17,12 @@ import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.xmi.XMLHelper; import org.eclipse.emf.ecore.xmi.XMLLoad; -import org.eclipse.gmf.runtime.emf.core.resources.GMFResource; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; import org.eclipse.sirius.business.api.session.resource.AirdResource; import org.eclipse.sirius.business.api.session.resource.DResource; import org.eclipse.sirius.business.internal.migration.AbstractSiriusMigrationService; -import org.eclipse.sirius.business.internal.migration.AirdResourceXMILoad; import org.eclipse.sirius.business.internal.migration.RepresentationsFileMigrationService; +import org.eclipse.sirius.business.internal.resource.parser.RepresentationsFileXMIHelper; import org.eclipse.sirius.common.tools.DslCommonPlugin; import org.eclipse.sirius.ext.base.Option; import org.eclipse.sirius.tools.api.profiler.SiriusTasksKey; @@ -32,7 +32,14 @@ import org.eclipse.sirius.tools.api.profiler.SiriusTasksKey; * * @author mchauvin */ -public class AirDResourceImpl extends GMFResource implements DResource, AirdResource { +public class AirDResourceImpl extends XMIResourceImpl implements DResource, AirdResource { + + /** + * Use this option to abort loading a resource immediately when an error + * occurs. The default is <code>Boolean.FALSE</code> unless set to + * <code>Boolean.TRUE</code> explicitly. + */ + public static final String OPTION_ABORT_ON_ERROR = "ABORT_ON_ERROR"; //$NON-NLS-1$ /** * The number of current load in progress. Usefull for determine if the @@ -57,6 +64,16 @@ public class AirDResourceImpl extends GMFResource implements DResource, AirdReso super(uri); } + @Override + protected boolean useUUIDs() { + return true; + } + + @Override + protected boolean useIDAttributes() { + return false; + } + /** * Increment the number of load in progress. */ @@ -81,7 +98,7 @@ public class AirDResourceImpl extends GMFResource implements DResource, AirdReso } /** - * Overridden to not have {@link GMFResource} set to true in this + * Overridden to not have {@link XMIResourceImpl} set to true in this * constructor because now it is * {@link org.eclipse.sirius.business.internal.resource.ResourceModifiedFieldUpdater} * which manage {@link org.eclipse.emf.ecore.resource.Resource#isModified()} @@ -124,8 +141,8 @@ public class AirDResourceImpl extends GMFResource implements DResource, AirdReso } return new AirdResourceXMILoad(loadedVersion, createXMLHelper()); } - return createXMLLoad(); + return new AirdResourceXMILoad(createXMLHelper()); } /** diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/AirdResourceXMILoad.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/AirdResourceXMILoad.java new file mode 100644 index 0000000000..00b15a7140 --- /dev/null +++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/resource/AirdResourceXMILoad.java @@ -0,0 +1,115 @@ +/******************************************************************************* + * Copyright (c) 2015 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.sirius.business.internal.resource; + +import java.util.Map; + +import org.eclipse.emf.ecore.xmi.UnresolvedReferenceException; +import org.eclipse.emf.ecore.xmi.XMIException; +import org.eclipse.emf.ecore.xmi.XMLHelper; +import org.eclipse.emf.ecore.xmi.XMLResource; +import org.eclipse.emf.ecore.xmi.impl.SAXWrapper; +import org.eclipse.emf.ecore.xmi.impl.SAXXMIHandler; +import org.eclipse.emf.ecore.xmi.impl.XMILoadImpl; +import org.eclipse.sirius.business.internal.migration.RepresentationsFileMigrationService; +import org.xml.sax.helpers.DefaultHandler; + +/** + * A specialization of {@link XMILoadImpl} to enable hooking into the XML + * parsing for modeling migration. + * + * @author Cedric Brun <cedric.brun@obeo.fr> + * + */ +@SuppressWarnings("deprecation") +public class AirdResourceXMILoad extends XMILoadImpl { + + private String loadedVersion; + + private boolean doMigration; + + /** + * Create a new {@link AirdResourceXMILoad}, suitable for on the fly + * migration of .aird files. + * + * @param loadedVersion + * the original version of the .aird file which is currently + * being loaded. + * @param helper + * the xml helper to use during the load. + */ + public AirdResourceXMILoad(String loadedVersion, XMLHelper helper) { + super(helper); + this.loadedVersion = loadedVersion; + this.doMigration = true; + } + + /** + * Create a new {@link AirdResourceXMILoad}, suitable for on the fly + * migration of .aird files. + * + * @param helper + * the xml helper to use during the load. + */ + public AirdResourceXMILoad(XMLHelper helper) { + super(helper); + } + + @Override + protected DefaultHandler makeDefaultHandler() { + return new SAXWrapper(new AirdHandler(resource, helper, options)); + } + + /** + * A specialization of the SAX XMI handler to delegate to the file migration + * service. + * + * @author cedric + * + */ + class AirdHandler extends SAXXMIHandler { + private boolean abortOnError; + + public AirdHandler(XMLResource xmiResource, XMLHelper helper, Map<?, ?> options) { + super(xmiResource, helper, options); + + if (Boolean.TRUE.equals(options.get(AirDResourceImpl.OPTION_ABORT_ON_ERROR))) { + abortOnError = true; + } + } + + @Override + public void endElement(String uri, String localName, String name) { + super.endElement(uri, localName, name); + if (doMigration) { + RepresentationsFileMigrationService.getInstance().postXMLEndElement(objects.peek(), attribs, uri, localName, name, loadedVersion); + } + } + + @Override + public void error(XMIException e) { + // This part of code comes from + // org.eclipse.gmf.runtime.emf.core.resources.GMFHandler.error(XMIException) + super.error(e); + if (abortOnError) { + // Ignore UnresolvedReferenceException, since unresolved + // references are not a fatal error. We will continue to attempt + // to load the model and log UnresolvedReferenceException. + if (!(e instanceof UnresolvedReferenceException)) { + if (e.getCause() != null) { + throw new RuntimeException(e.getCause()); + } + throw new RuntimeException(e); + } + } + } + } +} |
