URIConverter converter = new ExtensibleURIConverterImpl();
logger.info("Dealing with genmodel ini: "+myEmfModel.getGenModel());
URI genModelURI = URI.createURI(myEmfModel.getGenModel());
logger.info("Dealing with genmodel uri ini: "+genModelURI);
URI genmodelNormalized = converter.normalize(genModelURI);
logger.info("Dealing with genmodel normalized: "+genmodelNormalized);
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getPackageRegistry().put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE);
resourceSet.getPackageRegistry().put(GenModelPackage.eNS_URI, GenModelPackage.eINSTANCE);
URI outdir = URI.createFileURI(outputDirectory);
logger.info("outdir: "+outdir);
URI outdirNormalized = converter.normalize(outdir);
logger.info("outdir normalized: "+outdirNormalized);
resourceSet.getURIConverter().getURIMap().put(URI.createURI("platform:/resource/"), outdirNormalized);
try {
Resource resource = resourceSet.getResource(genmodelNormalized, true);
resource.load(null);
URI ecoreUri = URI.createURI(myEmfModel.getEcore());
logger.info("ecoreUri: "+ecoreUri);
URI ecoreUriNormalized = converter.normalize(ecoreUri);
logger.info("ecoreUri normalized: "+ecoreUriNormalized);
Resource ecoreResource = resourceSet.getResource(ecoreUriNormalized, true);
ecoreResource.load(null);
logger.info("resource.getContents().size() : "+resource.getContents().size() );
if (resource.getContents().size() != 1) {
System.out.println("Resource has " +
resource.getContents().size()
+ " loaded objects");
} else {
Object o = resource.getContents().get(0);
logger.info("o: "+o.getClass() );
GenModel genModel = (GenModel) resource.getContents().get(0);
genModel.validate();
genModel.reconcile();
genModel.setValidateModel(true); // The more checks the better
genModel.setCodeFormatting(true); // Normalize layout
genModel.setForceOverwrite(false); // Don't overwrite read-only files
genModel.setCanGenerate(true);
// genModel.setFacadeHelperClass(null); // Non-null gives JDT default NPEs
//genModel.setFacadeHelperClass(StandaloneASTFacadeHelper.class.getName()); // Bug 308069
genModel.setBundleManifest(false); // New manifests should be generated manually
genModel.setUpdateClasspath(false); // New class-paths should be generated manually
if (genModel.getComplianceLevel().compareTo(GenJDKLevel.JDK50_LITERAL) < 0) {
genModel.setComplianceLevel(GenJDKLevel.JDK50_LITERAL);
}
Diagnostic diagnostic = genModel.diagnose();
// Globally register the default generator adapter factory for
// GenModel
// elements (only needed in standalone).
//
GeneratorAdapterFactory.Descriptor.Registry.INSTANCE.addDescriptor(
GenModelPackage.eNS_URI,
GenModelGeneratorAdapterFactory.DESCRIPTOR);
Generator generator = new Generator();
// Create the generator and set the model-level input object.
//
generator.setInput(genModel);
// Generator model code.
generator.generate(genModel,
GenBaseGeneratorAdapter.MODEL_PROJECT_TYPE,
new BasicMonitor.Printing(System.out));
System.out.println("diagnostic="+diagnostic.getMessage());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
java.lang.NullPointerException: null
at org.eclipse.emf.codegen.ecore.genmodel.impl.GenPackageImpl$DependencyHelper.handle(GenPackageImpl.java:2471)
at org.eclipse.emf.codegen.ecore.genmodel.impl.GenPackageImpl$DependencyHelper.handle(GenPackageImpl.java:2460)
at org.eclipse.emf.codegen.ecore.genmodel.impl.GenPackageImpl$DependencyHelper.<init>(GenPackageImpl.java:2400)
at org.eclipse.emf.codegen.ecore.genmodel.impl.GenPackageImpl.prepareCache(GenPackageImpl.java:3201)
at org.eclipse.emf.codegen.ecore.genmodel.generator.GenPackageGeneratorAdapter.doPreGenerate(GenPackageGeneratorAdapter.java:177)
at org.eclipse.emf.codegen.ecore.generator.AbstractGeneratorAdapter.preGenerate(AbstractGeneratorAdapter.java:283)
at org.eclipse.emf.codegen.ecore.generator.Generator.generate(Generator.java:700)
at org.eclipse.emf.codegen.ecore.generator.Generator.generate(Generator.java:619)
at fr.cea.list.lise.emfgen.core.EmfGenerator.execute(EmfGenerator.java:169)
at fr.cea.list.lise.emfgen.core.test.EmfGenCoreTest.testApp(EmfGenCoreTest.java:37)
]]>