private void execute() {
ConsoleErrorReporter receiver = new ConsoleErrorReporter();
Model model = ModelLoader.load(options, new JCodeModel(), receiver);
final ErrorReceiver errorReceiver = new ConsoleErrorReporter();
// final Model model = outline.getModel();
Map<String, PackageMapping> packageMappings = new HashMap<String, PackageMapping>();
{
List<CPluginCustomization> customizations = CustomizationUtils
.findCustomizations(model,
JsonixCustomizationsConstants.PACKAGE_MAPPING_NAME);
for (CPluginCustomization customization : customizations) {
try {
final PackageMapping packageMapping = JsonixCustomizationsConstants
.unmarshalPackageMapping(customization.element);
// TODO check parameters
packageMappings.put(packageMapping.getPackageName(),
packageMapping);
} catch (JAXBException jaxbex) {
errorReceiver.error(new SAXParseException(
"Could not unmarshal the customization element.",
customization.locator, jaxbex));
}
}
}
MModelInfo<NType, NClass> mModel = new XJCCMInfoFactory(model)
.createModel();
final JsonixCompiler<NType, NClass> compiler = new JsonixCompiler<NType, NClass>(
mModel, packageMappings);
final Map<String, JsonixModule> modules = compiler.compile();
for (JsonixModule module : modules.values()) {
try {
writePrograms(options.targetDir, module.directory,
module.fileName, module.declarations,
module.exportDeclarations);
} catch (IOException ioex) {
errorReceiver.error(new SAXParseException(MessageFormat.format(
"Could not create the code for the module [{0}].",
module.spaceName), null, ioex));
}
}