[Lutinutil-commits] r918 - trunk/commandline/maven-plugin/src/main/java/org/codelutin/option/generate
Author: tchemit Date: 2008-07-25 22:30:53 +0000 (Fri, 25 Jul 2008) New Revision: 918 Modified: trunk/commandline/maven-plugin/src/main/java/org/codelutin/option/generate/JavaGeneratorContext.java trunk/commandline/maven-plugin/src/main/java/org/codelutin/option/generate/JavaGeneratorGoal.java Log: add ContextProvider service declaration generation in commandline plugin : need parameter : concreteContextFQN Modified: trunk/commandline/maven-plugin/src/main/java/org/codelutin/option/generate/JavaGeneratorContext.java =================================================================== --- trunk/commandline/maven-plugin/src/main/java/org/codelutin/option/generate/JavaGeneratorContext.java 2008-07-25 22:28:50 UTC (rev 917) +++ trunk/commandline/maven-plugin/src/main/java/org/codelutin/option/generate/JavaGeneratorContext.java 2008-07-25 22:30:53 UTC (rev 918) @@ -19,9 +19,9 @@ import org.codelutin.option.Option; import org.codelutin.option.OptionParser; import org.codelutin.option.def.DefinitionParser; -import org.codelutin.option.def.MandatoryConfigProperty; import org.codelutin.option.def.DefinitionParserContexts.ConfigContext; import org.codelutin.option.def.DefinitionParserContexts.OptionContext; +import org.codelutin.option.def.MandatoryConfigProperty; import org.codelutin.option.generate.util.AbstractGeneratorContext; import java.io.File; @@ -71,12 +71,11 @@ } public String getActionSuperClass() { - return getGoal().getActionSuperClass(); + return goal.getActionSuperClass(); } - public boolean isConcreteConfig() { - return getGoal().isConcreteConfig(); + return goal.isConcreteConfig(); } public String getConfigPackageName() { @@ -96,7 +95,7 @@ } public String getConfigSuperClass() { - return getGoal().getConfigSuperClass(); + return goal.getConfigSuperClass(); } @@ -120,6 +119,9 @@ return goal.getContextSuperClass(); } + public String getConcreteContextFQN() { + return goal.getConcreteContextFQN(); + } public String getOptionPackageName() { return optionPackageName; @@ -252,11 +254,11 @@ // do parse definitions and return parser Map<String, String> injects = new HashMap<String, String>(); - injects.put(MandatoryConfigProperty.configFileName.name(),goal._configFileName); - injects.put(MandatoryConfigProperty.projectName.name(),goal._projectName); - injects.put(MandatoryConfigProperty.encoding.name(),goal._encoding); - injects.put(MandatoryConfigProperty.locale.name(),goal._locale); - injects.put(MandatoryConfigProperty.version.name(),goal._version.endsWith("-SNAPSHOT")?goal._version.substring(0,goal._version.indexOf("-SNAPSHOT")):goal._version); + injects.put(MandatoryConfigProperty.configFileName.name(), goal._configFileName); + injects.put(MandatoryConfigProperty.projectName.name(), goal._projectName); + injects.put(MandatoryConfigProperty.encoding.name(), goal._encoding); + injects.put(MandatoryConfigProperty.locale.name(), goal._locale); + injects.put(MandatoryConfigProperty.version.name(), goal._version.endsWith("-SNAPSHOT") ? goal._version.substring(0, goal._version.indexOf("-SNAPSHOT")) : goal._version); parser = DefinitionParser.doParse(parserClass, source, injects); Modified: trunk/commandline/maven-plugin/src/main/java/org/codelutin/option/generate/JavaGeneratorGoal.java =================================================================== --- trunk/commandline/maven-plugin/src/main/java/org/codelutin/option/generate/JavaGeneratorGoal.java 2008-07-25 22:28:50 UTC (rev 917) +++ trunk/commandline/maven-plugin/src/main/java/org/codelutin/option/generate/JavaGeneratorGoal.java 2008-07-25 22:30:53 UTC (rev 918) @@ -32,8 +32,10 @@ import org.codelutin.option.generate.java.OptionKeyJavaGenerator; import org.codelutin.option.generate.java.OptionParserJavaGenerator; import org.codelutin.option.generate.util.AbstractGeneratorGoal; +import org.codelutin.util.FileUtil; import java.io.File; +import java.io.IOException; import java.util.Map; import java.util.TreeMap; @@ -48,6 +50,24 @@ public class JavaGeneratorGoal extends AbstractGeneratorGoal<JavaGeneratorContext> { /** + * @description chemin du répertoire de génération des resources. + * @parameter expression="${jaxx.outResource}" default-value="${basedir}/target/generated-sources/resources" + */ + protected File outResource; + + /** + * @description chemin du répertoire de compilation des resources. + * @parameter expression="${jaxx.outClass}" default-value="${basedir}/target/classes" + */ + protected File outClass; + + /** + * @description flag to copy generated resource files to outClass + * @parameter expression="${jaxx.copyToCP}" default-value="true" + */ + protected boolean copyToCP; + + /** * @description Chemin du fichier de propriétés contenant les définitions d'options à utiliser pour générer la factory de définitions d'options. * @parameter expression="${commandline.source}" * @required @@ -62,6 +82,13 @@ protected File out; /** + * @description le FQN de la classe concrete du Context + * @parameter expression="${commandline.concreteContextFQN}" + * @required + */ + protected String concreteContextFQN; + + /** * @description le parser a utiliser * @parameter expression="${commandline.parserFQN}" default-value="org.codelutin.option.def.DefinitionParserFromProperties" */ @@ -211,6 +238,9 @@ ); } map.clear(); + + // generate ConcreteContext serivce declaration + generateConcreteContextDeclaration(); } public File getOut() { @@ -261,6 +291,10 @@ return parserFQN; } + public String getConcreteContextFQN() { + return concreteContextFQN; + } + public void setConfigSuperClass(String configSuperClass) { this.configSuperClass = configSuperClass; } @@ -301,4 +335,37 @@ this.parserFQN = parserFQN; } + public void setConcreteContextFQN(String concreteContextFQN) { + this.concreteContextFQN = concreteContextFQN; + } + + protected void generateConcreteContextDeclaration() throws IOException { + File generatedProviderDeclaration = new File(outResource, "META-INF/services/" + org.codelutin.option.Context.class.getName()); + File parent = generatedProviderDeclaration.getParentFile(); + if (!parent.exists()) { + parent.mkdirs(); + } + + // just add the fqn inside the file :) + FileUtil.writeString(generatedProviderDeclaration, concreteContextFQN); + + if (copyToCP) { + // save it also in classes (since we are in process-resources phase and resources has already been copied) + copyResourceToCP(generatedProviderDeclaration); + } + } + + protected void copyResourceToCP(File file) throws IOException { + + String path = file.getAbsolutePath().substring(outResource.getAbsolutePath().length() + 1); + File compiledFile = new File(outClass, path); + if (verbose) { + getLog().info("copy to classapth generated file " + compiledFile); + } + File parent = compiledFile.getParentFile(); + if (!parent.exists()) { + parent.mkdirs(); + } + FileUtil.copy(file, compiledFile); + } } \ No newline at end of file
participants (1)
-
tchemit@users.labs.libre-entreprise.org