diff --git a/bundles/tools.vitruv.domains.java/META-INF/MANIFEST.MF b/bundles/tools.vitruv.domains.java/META-INF/MANIFEST.MF index ec001ee8a7..e181507126 100644 --- a/bundles/tools.vitruv.domains.java/META-INF/MANIFEST.MF +++ b/bundles/tools.vitruv.domains.java/META-INF/MANIFEST.MF @@ -9,12 +9,11 @@ Bundle-RequiredExecutionEnvironment: JavaSE-11 Require-Bundle: org.eclipse.xtend.lib, edu.kit.ipd.sdq.activextendannotations, tools.vitruv.framework.domains;visibility:=reexport, - org.emftext.language.java;visibility:=reexport, - org.emftext.language.java.resource, - org.emftext.language.java.resource.java, org.apache.log4j, org.eclipse.emf.ecore.xmi, - org.eclipse.core.runtime + org.eclipse.core.runtime, + org.emftext.language.java;bundle-version="5.1.0", + jamopp.resource;bundle-version="5.1.0" Export-Package: tools.vitruv.domains.java, tools.vitruv.domains.java.tuid;x-internal:=true, tools.vitruv.domains.java.util, diff --git a/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/JamoppLibraryHelper.xtend b/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/JamoppLibraryHelper.xtend deleted file mode 100644 index dca2b9fd3a..0000000000 --- a/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/JamoppLibraryHelper.xtend +++ /dev/null @@ -1,40 +0,0 @@ -package tools.vitruv.domains.java - -import org.emftext.language.java.JavaClasspath -import org.emftext.language.java.JavaClasspath.Initializer -import org.eclipse.emf.ecore.resource.Resource -import org.eclipse.emf.common.util.URI - -/** - * This helper class allows to load the Java standard library in JaMoPP also with - * Java versions 9 and above. - * In Java 9 the boot classpath was removed and the standard library is packaged - * differently, which is corrected by this patch. - */ -class JamoppLibraryHelper { - public static String STANDARD_LIBRARY_PATH_IN_HOME = "/jmods/java.base.jmod"; - - static def void registerStdLib() { - val String javaVersion = System.getProperty("java.version"); - - // Until Java 1.8 we can use the mechanism of JaMoPP - if (javaVersion.startsWith("1.")) { - JavaClasspath.get().registerStdLib(); - // From Java 9 on, we have to search for the Java base module instead of the rt.jar file. - // To do so, we disable automatic initialization of the standard library using the classpath - // (where library cannot be found in Java 9 and above) and manually load the base Java module - } else { - JavaClasspath.initializers.add(new Initializer() { - override initialize(Resource resource) {} - override requiresLocalClasspath() { false } - override requiresStdLib() { false } - }) - val String classpath = System.getProperty("java.home") + STANDARD_LIBRARY_PATH_IN_HOME; - val uri = URI.createFileURI(classpath); - // From java 9, the module files do not directly contain the classes in the package structure - // but are placed in the "classes" folder, so that prefix has to be removed. - JavaClasspath.get().registerClassifierJar(uri, "classes/"); - } - } - -} diff --git a/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/JavaDomain.xtend b/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/JavaDomain.xtend index 7b7e72725c..a4c7109c9e 100644 --- a/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/JavaDomain.xtend +++ b/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/JavaDomain.xtend @@ -2,11 +2,11 @@ package tools.vitruv.domains.java import static tools.vitruv.domains.java.JavaNamespace.* import org.eclipse.emf.ecore.resource.Resource -import org.emftext.language.java.resource.JavaSourceOrClassFileResourceFactoryImpl -import java.util.Map -import org.emftext.language.java.resource.java.IJavaOptions +import jamopp.resource.JavaResource2Factory import java.util.List import tools.vitruv.framework.domains.AbstractVitruvDomain +import org.emftext.language.java.JavaClasspath +import jamopp.resource.JavaResource2 class JavaDomain extends AbstractVitruvDomain { static final String METAMODEL_NAME = "Java" @@ -17,12 +17,14 @@ class JavaDomain extends AbstractVitruvDomain { } protected new(String name) { - super(name, ROOT_PACKAGE, List.of(FILE_EXTENSION)) + super(name, ROOT_PACKAGE, List.of(FILE_EXTENSION, JavaResource2.JAVAXMI_FILE_EXTENSION)) // Register factory for class and Java files in case of not running as plugin - Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("java", new JavaSourceOrClassFileResourceFactoryImpl()) - Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("class", new JavaSourceOrClassFileResourceFactoryImpl()) - // This is necessary to resolve classes from standard library (e.g. Object, List etc.) - JamoppLibraryHelper.registerStdLib + val factory = new JavaResource2Factory + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(FILE_EXTENSION, factory) + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("class", factory) + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put( + JavaResource2.JAVAXMI_FILE_EXTENSION, factory) + JavaClasspath.get.registerStdLib } override shouldTransitivelyPropagateChanges() { @@ -36,20 +38,4 @@ class JavaDomain extends AbstractVitruvDomain { def enableTransitiveChangePropagation() { shouldTransitivelyPropagateChanges = true } - - override getDefaultLoadOptions() { - Map.of( - /** - * FIXME Layout information currently breaks Vitruv: Because it is created dynamically - * when a resource is loaded into a view, there are no create changes for layout information. - * Hence, layout information has not UUIDs, and even if it had, it could not be resolved - * correctly in the VSUM. Eventually, layout information should be recorded by Vitruv - * just like all other model elements. To get there, we should have a mechanism that - * creates the correct changes for layout information as well, preferably directly - * when the corresponding model objects are created. For the time being, we disable - * layout information - */ - IJavaOptions.DISABLE_LAYOUT_INFORMATION_RECORDING, true - ) - } } \ No newline at end of file diff --git a/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/tuid/JamoppStringOperations.xtend b/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/tuid/JamoppStringOperations.xtend index be5d21a2df..db8c485e47 100644 --- a/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/tuid/JamoppStringOperations.xtend +++ b/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/tuid/JamoppStringOperations.xtend @@ -48,10 +48,10 @@ class JamoppStringOperations { static def dispatch String getStringRepresentation(Method javaMethod) { val javaIdentifier = new StringBuilder(); - javaIdentifier.append(javaMethod.typeReference.getStringRepresentation(javaMethod.arrayDimension)) + javaIdentifier.append(javaMethod.typeReference.getStringRepresentation(javaMethod.typeReference.arrayDimension)) javaIdentifier.append(javaMethod.name) javaMethod.parameters.forEach[ - javaIdentifier.append(typeReference.getStringRepresentation(arrayDimension))] + javaIdentifier.append(typeReference.getStringRepresentation(typeReference.arrayDimension))] return javaIdentifier.toString } @@ -71,11 +71,11 @@ class JamoppStringOperations { } static def dispatch String getStringRepresentation(OrdinaryParameter param) { - return param.typeReference.target.getStringRepresentation(param.arrayDimension) + return param.typeReference.target.getStringRepresentation(param.typeReference.arrayDimension) } static def dispatch String getStringRepresentation(VariableLengthParameter param) { - return param.typeReference.target.getStringRepresentation(param.arrayDimension) + "..." + return param.typeReference.target.getStringRepresentation(param.typeReference.arrayDimension) + "..." } static def String getNamespaceAsString(Iterable namespaces) { diff --git a/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/util/JavaModificationUtil.xtend b/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/util/JavaModificationUtil.xtend index ffcf016ce5..7658381d6d 100644 --- a/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/util/JavaModificationUtil.xtend +++ b/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/util/JavaModificationUtil.xtend @@ -192,7 +192,7 @@ class JavaModificationUtil { def static ConcreteClassifier getClassifier(String qualifiedName) { // To resolve classifiers from the Java standard library, this requires the Java standard library to be // registered (JavaClasspath.get().registerStdLib). Should be done by the domain by default. - JavaClasspath.get().getClassifier(qualifiedName) as ConcreteClassifier + JavaClasspath.get().getConcreteClassifier(qualifiedName) } def static addAnnotationToAnnotableAndModifiable(AnnotableAndModifiable annotableAndModifiable, diff --git a/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/util/jamoppparser/Jamopp.java b/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/util/jamoppparser/Jamopp.java index c2d8fbe9bd..67c60bb9ce 100644 --- a/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/util/jamoppparser/Jamopp.java +++ b/bundles/tools.vitruv.domains.java/src/tools/vitruv/domains/java/util/jamoppparser/Jamopp.java @@ -26,11 +26,11 @@ import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import org.emftext.language.java.JavaPackage; -import org.emftext.language.java.resource.JavaSourceOrClassFileResourceFactoryImpl; -import org.emftext.language.java.resource.java.IJavaOptions; + +import jamopp.resource.JavaResource2Factory; /** - * Registers the {@link JavaSourceOrClassFileResourceFactoryImpl} to load JaMoPP resources from + * Registers the {@link JavaResource2Factory} to load JaMoPP resources from * .java files or java content-type InputStreams. */ public class Jamopp { @@ -47,12 +47,11 @@ public ResourceSet getResourceSet() { } protected void setUp() { - this.rs.getLoadOptions().put(IJavaOptions.DISABLE_LOCATION_MAP, Boolean.TRUE); EPackage.Registry.INSTANCE.put("http://www.emftext.org/java", JavaPackage.eINSTANCE); Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("java", - new JavaSourceOrClassFileResourceFactoryImpl()); + new JavaResource2Factory()); Resource.Factory.Registry.INSTANCE.getContentTypeToFactoryMap().put("java", - new JavaSourceOrClassFileResourceFactoryImpl()); + new JavaResource2Factory()); Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl()); } diff --git a/features/tools.vitruv.domains.java.feature/feature.xml b/features/tools.vitruv.domains.java.feature/feature.xml index a56a6d436e..bdfe943150 100644 --- a/features/tools.vitruv.domains.java.feature/feature.xml +++ b/features/tools.vitruv.domains.java.feature/feature.xml @@ -29,8 +29,6 @@ - - diff --git a/releng/tools.vitruv.domains.cbs.parent/pom.xml b/releng/tools.vitruv.domains.cbs.parent/pom.xml index f8cd841d7b..c495834b4d 100644 --- a/releng/tools.vitruv.domains.cbs.parent/pom.xml +++ b/releng/tools.vitruv.domains.cbs.parent/pom.xml @@ -31,9 +31,9 @@ http://update.emftext.org/release --> - EMFText and JaMoPP (P2 Wrapper) + Palladio Supporting Eclipse Java Development Tools Core p2 - https://kit-sdq.github.io/updatesite/release/p2-wrapper/ + https://updatesite.palladio-simulator.com/palladio-supporting-eclipsejavadevelopmenttools/nightly/ Palladiosimulator diff --git a/releng/tools.vitruv.domains.cbs.updatesite.aggregated/updatesite.aggr b/releng/tools.vitruv.domains.cbs.updatesite.aggregated/updatesite.aggr index 891d82b2a5..c828500230 100644 --- a/releng/tools.vitruv.domains.cbs.updatesite.aggregated/updatesite.aggr +++ b/releng/tools.vitruv.domains.cbs.updatesite.aggregated/updatesite.aggr @@ -9,14 +9,10 @@ - - - - - - - - + + + +