You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/11/14 14:27:38 UTC
[07/32] cayenne git commit: Add merge pom config with dataMap config
Add merge pom config with dataMap config
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/b10cd803
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/b10cd803
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/b10cd803
Branch: refs/heads/master
Commit: b10cd803a005065ed55f07ba57eb9dce3b5addbf
Parents: e41f1e4
Author: Arseni Bulatski <an...@gmail.com>
Authored: Tue Jun 26 13:45:41 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Wed Oct 24 13:42:16 2018 +0300
----------------------------------------------------------------------
.../java/org/apache/cayenne/gen/CgenModule.java | 13 ++++
.../cayenne/gen/ClassGenerationAction.java | 46 ++++++++-----
.../cayenne/tools/CayenneGeneratorMojo.java | 69 +++++++++++---------
.../editor/cgen/CustomModeController.java | 1 +
4 files changed, 82 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b10cd803/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenModule.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenModule.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenModule.java
new file mode 100644
index 0000000..79e411e
--- /dev/null
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenModule.java
@@ -0,0 +1,13 @@
+package org.apache.cayenne.gen;
+
+import org.apache.cayenne.di.Binder;
+import org.apache.cayenne.di.Module;
+import org.apache.cayenne.gen.xml.CgenExtension;
+import org.apache.cayenne.project.ProjectModule;
+
+public class CgenModule implements Module{
+ @Override
+ public void configure(Binder binder) {
+ ProjectModule.contributeExtensions(binder).add(CgenExtension.class);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b10cd803/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
index 5b10a07..afd58e0 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
@@ -91,29 +91,39 @@ public class ClassGenerationAction implements Serializable, XMLSerializable {
protected VelocityContext context;
protected Map<String, Template> templateCache;
+
public ClassGenerationAction() {
- this.outputPattern = "*.java";
- this.timestamp = 0L;
- this.usePkgPath = true;
- this.makePairs = true;
- this.context = new VelocityContext();
- this.templateCache = new HashMap<>(5);
+ this.outputPattern = "*.java";
+ this.timestamp = 0L;
+ this.usePkgPath = true;
+ this.makePairs = true;
+ this.context = new VelocityContext();
+ this.templateCache = new HashMap<>(5);
- this.template = SUBCLASS_TEMPLATE;
- this.superTemplate = SUPERCLASS_TEMPLATE;
+ this.artifacts = new ArrayList<>();
+ this.entityArtifacts = new ArrayList<>();
+ this.embeddableArtifacts = new ArrayList<>();
+ }
- this.embeddableTemplate = EMBEDDABLE_SUBCLASS_TEMPLATE;
- this.embeddableSuperTemplate = EMBEDDABLE_SUPERCLASS_TEMPLATE;
+ public void setDefaults() {
+ this.outputPattern = "*.java";
+ this.timestamp = 0L;
+ this.usePkgPath = true;
+ this.makePairs = true;
+ this.context = new VelocityContext();
+ this.templateCache = new HashMap<>(5);
- this.queryTemplate = DATAMAP_SUBCLASS_TEMPLATE;
- this.querySuperTemplate = DATAMAP_SUPERCLASS_TEMPLATE;
+ this.template = SUBCLASS_TEMPLATE;
+ this.superTemplate = SUPERCLASS_TEMPLATE;
- this.artifactsGenerationMode = ArtifactsGenerationMode.ENTITY;
+ this.embeddableTemplate = EMBEDDABLE_SUBCLASS_TEMPLATE;
+ this.embeddableSuperTemplate = EMBEDDABLE_SUPERCLASS_TEMPLATE;
- this.artifacts = new ArrayList<>();
- this.entityArtifacts = new ArrayList<>();
- this.embeddableArtifacts = new ArrayList<>();
- }
+ this.queryTemplate = DATAMAP_SUBCLASS_TEMPLATE;
+ this.querySuperTemplate = DATAMAP_SUPERCLASS_TEMPLATE;
+
+ this.artifactsGenerationMode = ArtifactsGenerationMode.ENTITY;
+ }
protected String defaultTemplateName(TemplateType type) {
switch (type) {
@@ -704,6 +714,8 @@ public class ClassGenerationAction implements Serializable, XMLSerializable {
return destDir.getAbsolutePath();
}
+ public File getDestDir() { return destDir; }
+
public String getTemplate() {
return template;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b10cd803/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
index d043c30..42a2e8d 100644
--- a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
+++ b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
@@ -19,10 +19,12 @@
package org.apache.cayenne.tools;
+import org.apache.cayenne.configuration.xml.DataChannelMetaData;
import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
import org.apache.cayenne.dbsync.reverse.configuration.ToolsModule;
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
+import org.apache.cayenne.gen.CgenModule;
import org.apache.cayenne.gen.ClassGenerationAction;
import org.apache.cayenne.gen.ClientClassGenerationAction;
import org.apache.cayenne.map.DataMap;
@@ -96,8 +98,8 @@ public class CayenneGeneratorMojo extends AbstractMojo {
* with all generated code included in superclass (default is
* <code>true</code>).
*/
- @Parameter(defaultValue = "true")
- private boolean makePairs;
+ @Parameter
+ private String makePairs;
/**
* DataMap XML file to use as a base for class generation.
@@ -117,15 +119,15 @@ public class CayenneGeneratorMojo extends AbstractMojo {
/**
* Name of file for generated output. (Default is "*.java")
*/
- @Parameter(defaultValue = "*.java")
+ @Parameter
private String outputPattern;
/**
* If set to <code>true</code>, will overwrite older versions of generated
* classes. Ignored unless makepairs is set to <code>false</code>.
*/
- @Parameter(defaultValue = "false")
- private boolean overwrite;
+ @Parameter
+ private String overwrite;
/**
* Java package name of generated superclasses. Ignored unless
@@ -174,15 +176,15 @@ public class CayenneGeneratorMojo extends AbstractMojo {
* <code>false</code>, classes will be generated in "destDir"
* ignoring their package.
*/
- @Parameter(defaultValue = "true")
- private boolean usePkgPath;
+ @Parameter
+ private String usePkgPath;
/**
* If set to <code>true</code>, will generate String Property names.
* Default is <code>false</code>.
*/
- @Parameter(defaultValue = "false")
- private boolean createPropertyNames;
+ @Parameter
+ private String createPropertyNames;
/**
* If set to <code>true</code>, will skip file modification time validation and regenerate all.
@@ -203,6 +205,8 @@ public class CayenneGeneratorMojo extends AbstractMojo {
private transient Injector injector;
+ private static final Logger logger = LoggerFactory.getLogger(CayenneGeneratorMojo.class);
+
public void execute() throws MojoExecutionException, MojoFailureException {
// Create the destination directory if necessary.
// TODO: (KJM 11/2/06) The destDir really should be added as a
@@ -211,7 +215,7 @@ public class CayenneGeneratorMojo extends AbstractMojo {
destDir.mkdirs();
}
- injector = DIBootstrap.createInjector(new ToolsModule(LoggerFactory.getLogger(CayenneGeneratorMojo.class)));
+ injector = DIBootstrap.createInjector(new CgenModule(), new ToolsModule(LoggerFactory.getLogger(CayenneGeneratorMojo.class)));
Logger logger = new MavenLogger(this);
CayenneGeneratorMapLoaderAction loaderAction = new CayenneGeneratorMapLoaderAction(injector);
@@ -226,7 +230,7 @@ public class CayenneGeneratorMojo extends AbstractMojo {
DataMap dataMap = loaderAction.getMainDataMap();
- ClassGenerationAction generator = createGenerator();
+ ClassGenerationAction generator = createGenerator(dataMap);
generator.setLogger(logger);
if(force) {
// will (re-)generate all files
@@ -234,9 +238,13 @@ public class CayenneGeneratorMojo extends AbstractMojo {
}
generator.setTimestamp(map.lastModified());
generator.setDataMap(dataMap);
- generator.addEntities(filterAction.getFilteredEntities(dataMap));
- generator.addEmbeddables(dataMap.getEmbeddables());
- generator.addQueries(dataMap.getQueryDescriptors());
+ if(!generator.getEntities().isEmpty() || !generator.getEmbeddables().isEmpty()){
+ generator.prepareArtifacts();
+ } else {
+ generator.addEntities(filterAction.getFilteredEntities(dataMap));
+ generator.addEmbeddables(dataMap.getEmbeddables());
+ generator.addQueries(dataMap.getQueryDescriptors());
+ }
generator.execute();
} catch (Exception e) {
throw new MojoExecutionException("Error generating classes: ", e);
@@ -265,32 +273,33 @@ public class CayenneGeneratorMojo extends AbstractMojo {
* Factory method to create internal class generator. Called from
* constructor.
*/
- protected ClassGenerationAction createGenerator() {
+ protected ClassGenerationAction createGenerator(DataMap dataMap) {
+
+ ClassGenerationAction action = injector.getInstance(DataChannelMetaData.class).get(dataMap, ClassGenerationAction.class);
- ClassGenerationAction action;
if (client) {
action = new ClientClassGenerationAction();
} else {
- action = new ClassGenerationAction();
+ if(action == null) {
+ action = new ClassGenerationAction();
+ }
}
injector.injectMembers(action);
action.setDestDir(destDir);
- action.setEncoding(encoding);
- action.setMakePairs(makePairs);
+ action.setEncoding(encoding != null ? encoding : action.getEncoding());
+ action.setMakePairs(makePairs != null ? Boolean.valueOf(makePairs) : action.isMakePairs());
action.setArtifactsGenerationMode(mode);
- action.setOutputPattern(outputPattern);
- action.setOverwrite(overwrite);
- action.setSuperPkg(superPkg);
- action.setSuperTemplate(superTemplate);
- action.setTemplate(template);
- action.setEmbeddableSuperTemplate(embeddableSuperTemplate);
- action.setEmbeddableTemplate(embeddableTemplate);
- action.setUsePkgPath(usePkgPath);
- action.setCreatePropertyNames(createPropertyNames);
- action.setCreatePKProperties(createPKProperties);
-
+ action.setOutputPattern(outputPattern != null ? outputPattern : action.getOutputPattern());
+ action.setOverwrite(overwrite != null ? Boolean.valueOf(overwrite) : action.isOverwrite());
+ action.setSuperPkg(superPkg != null ? superPkg : action.getSuperPkg());
+ action.setSuperTemplate(superTemplate != null ? superTemplate : action.getSuperclassTemplate());
+ action.setTemplate(template != null ? template : action.getTemplate());
+ action.setEmbeddableSuperTemplate(embeddableSuperTemplate != null ? embeddableSuperTemplate : action.getEmbeddableSuperTemplate());
+ action.setEmbeddableTemplate(embeddableTemplate != null ? embeddableTemplate : action.getEmbeddableTemplate());
+ action.setUsePkgPath(usePkgPath != null ? Boolean.valueOf(usePkgPath) : action.isUsePkgPath());
+ action.setCreatePropertyNames(createPropertyNames != null ? Boolean.valueOf(createPropertyNames) : action.isCreatePropertyNames());
return action;
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b10cd803/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
index 2559657..5666355 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
@@ -143,6 +143,7 @@ public class CustomModeController extends GeneratorController {
@Override
protected ClassGenerationAction newGenerator() {
ClassGenerationAction action = new ClassGenerationAction();
+ action.setDefaults();
getApplication().getInjector().injectMembers(action);
return action;
}