Author: mattes3 Date: 2007-03-27 17:03:18 +0200 (Tue, 27 Mar 2007) New Revision: 376 Modified: andromda4/trunk/framework/cartridges/java/pom.xml andromda4/trunk/framework/transformers/mofscript-compiler/src/main/java/org/andromda/transformers/mofscript/MofScriptCompilerMojo.java andromda4/trunk/framework/transformers/mofscript-compiler/src/test/java/org/andromda/transformers/mofscript/MofScriptCompilerMojoTest.java Log: The MOFScript compiler Mojo can now deal with several metamodels at once. Modified: andromda4/trunk/framework/cartridges/java/pom.xml =================================================================== --- andromda4/trunk/framework/cartridges/java/pom.xml 2007-03-26 08:16:47 UTC (rev 375) +++ andromda4/trunk/framework/cartridges/java/pom.xml 2007-03-27 15:03:18 UTC (rev 376) @@ -83,7 +83,9 @@ </goals> <configuration> <inputFileURL>file:${basedir}/src/main/transformations/OOP2Java.m2t</inputFileURL> - <metamodelURL>classpath:models/OOPMetamodel.ecore</metamodelURL> + <metamodelURLs> + <param>classpath:models/OOPMetamodel.ecore</param> + </metamodelURLs> <outputFileName> ${project.build.directory}/transformations/OOP2Java.m2t.model.mofscript </outputFileName> </configuration> Modified: andromda4/trunk/framework/transformers/mofscript-compiler/src/main/java/org/andromda/transformers/mofscript/MofScriptCompilerMojo.java =================================================================== --- andromda4/trunk/framework/transformers/mofscript-compiler/src/main/java/org/andromda/transformers/mofscript/MofScriptCompilerMojo.java 2007-03-26 08:16:47 UTC (rev 375) +++ andromda4/trunk/framework/transformers/mofscript-compiler/src/main/java/org/andromda/transformers/mofscript/MofScriptCompilerMojo.java 2007-03-27 15:03:18 UTC (rev 376) @@ -4,8 +4,10 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; +import java.util.List; import org.andromda.utils.ResourceFinder; import org.apache.maven.plugin.AbstractMojo; @@ -45,10 +47,10 @@ * so that the MOFScript compiler can check the script against these * metamodels. * - * @parameter expression="${andromda.mofscriptcompiler.metamodelURL}" + * @parameter expression="${andromda.mofscriptcompiler.metamodelURLs}" * @required */ - private String metamodelURL; + private ArrayList<String> metamodelURLs; /** * The file name of the compiled *.model.mofscript file. @@ -66,7 +68,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("inputFileURL=" + inputFileURL); - getLog().info("metamodelURL=" + metamodelURL); + getLog().info("metamodelURLs=" + metamodelURLs); getLog().info("outputFileName=" + outputFileName); loadMetamodels(); @@ -89,6 +91,18 @@ } /** + * Load one single metamodel. + * @param rSet the resource set into which the metamodel should be loaded + * @param metamodelURL the URL where the metamodel can be found + */ + private void loadMetamodel(ResourceSet rSet, String metamodelURL) + { + Resource metamodel = rSet.getResource(URI.createURI(ResourceFinder.normalizeURL(metamodelURL).toString()), true); + EPackage topLevelPackage = (EPackage)metamodel.getContents().get(0); + EPackage.Registry.INSTANCE.put(topLevelPackage.getNsURI(), topLevelPackage); + } + + /** * Loads the input metamodels for the transformation so that the * parser knows the metaclasses which are referenced in the script. */ @@ -96,9 +110,10 @@ { ResourceSet rSet = new ResourceSetImpl(); rSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()); - Resource metamodel = rSet.getResource(URI.createURI(ResourceFinder.normalizeURL(metamodelURL).toString()), true); - EPackage topLevelPackage = (EPackage)metamodel.getContents().get(0); - EPackage.Registry.INSTANCE.put(topLevelPackage.getNsURI(), topLevelPackage); + for (String metamodelURL : this.metamodelURLs) + { + loadMetamodel(rSet, metamodelURL); + } } /** @@ -182,13 +197,13 @@ this.outputFileName = outputFileName; } - public String getMetamodelURL() + public ArrayList<String> getMetamodelURLs() { - return metamodelURL; + return metamodelURLs; } - public void setMetamodelURL(String metamodelURL) + public void setMetamodelURLs(ArrayList<String> metamodelURLs) { - this.metamodelURL = metamodelURL; + this.metamodelURLs = metamodelURLs; } } Modified: andromda4/trunk/framework/transformers/mofscript-compiler/src/test/java/org/andromda/transformers/mofscript/MofScriptCompilerMojoTest.java =================================================================== --- andromda4/trunk/framework/transformers/mofscript-compiler/src/test/java/org/andromda/transformers/mofscript/MofScriptCompilerMojoTest.java 2007-03-26 08:16:47 UTC (rev 375) +++ andromda4/trunk/framework/transformers/mofscript-compiler/src/test/java/org/andromda/transformers/mofscript/MofScriptCompilerMojoTest.java 2007-03-27 15:03:18 UTC (rev 376) @@ -1,6 +1,8 @@ package org.andromda.transformers.mofscript; import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; import junit.framework.TestCase; @@ -12,7 +14,9 @@ final String OUTPUT_FILE_NAME = "target/test-classes/Something2Java.model.mofscript"; MofScriptCompilerMojo mojo = new MofScriptCompilerMojo(); mojo.setInputFileURL(MofScriptCompilerMojoTest.class.getResource("Something2Java.m2test")); - mojo.setMetamodelURL(MofScriptCompilerMojoTest.class.getResource("SomeTestMetamodel.ecore").toString()); + ArrayList<String> metamodelList = new ArrayList<String>(Arrays.asList(new String[] { MofScriptCompilerMojoTest.class.getResource( + "SomeTestMetamodel.ecore").toString() })); + mojo.setMetamodelURLs(metamodelList); mojo.setOutputFileName(OUTPUT_FILE_NAME); mojo.execute(); assertTrue("Output file must be there.", new File(OUTPUT_FILE_NAME).length() > 500); |