package org.kevoree.tools.annotator; import org.kevoree.ContainerRoot; import org.kevoree.DeployUnit; import org.kevoree.factory.DefaultKevoreeFactory; import org.kevoree.factory.KevoreeFactory; import org.kevoree.log.Log; import org.kevoree.modeling.api.json.JSONModelSerializer; import java.io.File; import java.io.FileOutputStream; import java.lang.reflect.Method; import java.util.ArrayList; /** * Created by duke on 23/01/2014. */ public class App { public static void main(String[] args) throws Exception { if (args.length != 1 && args.length != 2) { throw new Exception("Bad number of argument ! " + args.length); } else { long before = System.currentTimeMillis(); Annotations2Model annotations2Model = new Annotations2Model(); KevoreeFactory factory = new DefaultKevoreeFactory(); String directoryTargets = args[0]; String[] directoryTargetList = directoryTargets.split(File.pathSeparator); for (String directoryTarget : directoryTargetList) { File directoryTargetFile = new File(directoryTarget); if (!(directoryTargetFile.exists() && directoryTargetFile.isDirectory())) { //throw new Exception("Bad target dir argument !" + directoryTarget); } else { ContainerRoot model = factory.createContainerRoot(); DeployUnit fakeDeployUnit = factory.createDeployUnit(); fakeDeployUnit.setGroupName("org.kevoree"); fakeDeployUnit.setName("org.kevoree.model"); fakeDeployUnit.setVersion(factory.getVersion()); model.addDeployUnits(fakeDeployUnit); DeployUnit mainDu = MinimalPomParser.lookupLocalDeployUnit(directoryTargetFile); if (mainDu != null) { model.addDeployUnits(mainDu); mainDu.addRequiredLibs(fakeDeployUnit); } else { mainDu = fakeDeployUnit; } ArrayList<String> classPaths = new ArrayList<String>(); annotations2Model.fillModel(directoryTargetFile, model, mainDu, classPaths); //generate the file if (model.getTypeDefinitions().size() > 0) { File targetFile = new File(directoryTarget + File.separator + "KEV-INF" + File.separator + "lib.json"); JSONModelSerializer saver = new JSONModelSerializer(); targetFile.getParentFile().mkdirs(); targetFile.createNewFile(); FileOutputStream fop = new FileOutputStream(targetFile); saver.serializeToStream(model, fop); fop.flush(); fop.close(); } } } long time = System.currentTimeMillis() - before; Log.info("Generation of KEV-INF/lib.json done in {} ms ", time); if (args.length == 2) { String subMain = args[1]; Class subMainClazz = App.class.getClassLoader().loadClass(subMain); Method meth = subMainClazz.getMethod("main", String[].class); String[] params = new String[0]; meth.invoke(null, (Object) params); } } } }