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 <ancars...@gmail.com>
Authored: Tue Jun 26 13:45:41 2018 +0300
Committer: Arseni Bulatski <ancars...@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 &quot;*.java&quot;)
         */
-       @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 &quot;destDir&quot;
         * 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;
     }

Reply via email to