You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ab...@apache.org on 2019/04/24 11:55:39 UTC
[cayenne] 01/02: CAY-2568 Class Generation: Superclass Package
setting persistence
This is an automated email from the ASF dual-hosted git repository.
abulatski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 305611267b9bdb6870b3d3f794341f277c6f2d8a
Author: Arseni Bulatski <an...@gmail.com>
AuthorDate: Wed Apr 24 13:17:24 2019 +0300
CAY-2568 Class Generation: Superclass Package setting persistence
---
RELEASE-NOTES.txt | 1 +
.../apache/cayenne/gen/ClassGenerationAction.java | 2 +-
.../apache/cayenne/gen/xml/CgenConfigHandler.java | 21 ++++++++++++----
.../org/apache/cayenne/schema/10/cgen.xsd | 1 +
.../src/test/resources/cgen/testCgen.map.xml | 1 +
.../editor/cgen/CodeGeneratorController.java | 7 +++---
.../modeler/editor/cgen/CustomModeController.java | 1 +
.../modeler/editor/cgen/CustomModePanel.java | 29 +++++++++++++++++++---
8 files changed, 51 insertions(+), 12 deletions(-)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 357de43..f0aacf0 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -29,6 +29,7 @@ CAY-2543 Move ResultSetMapping generation from metadata to translator
CAY-2549 Modeler: Redesign ObjAttribute editor dialog
CAY-2555 Use explicit ArcId in GraphChangeHandler methods
CAY-2563 Deprecate old scalarQuery methods in SQLSelect
+CAY-2568 Class Generation: Superclass Package setting persistence
Bug Fixes:
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 e149b34..b52fe42 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
@@ -145,7 +145,7 @@ public class ClassGenerationAction {
String superClassName = SUPERCLASS_PREFIX + stringUtils.stripPackageName(qualifiedClassName);
String superPackageName = cgenConfiguration.getSuperPkg();
- if (superPackageName == null) {
+ if (superPackageName == null || superPackageName.isEmpty()) {
superPackageName = packageName + ".auto";
}
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
index c73e24b..612ffb4 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
@@ -18,6 +18,11 @@
****************************************************************/
package org.apache.cayenne.gen.xml;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
import org.apache.cayenne.configuration.xml.DataChannelMetaData;
import org.apache.cayenne.configuration.xml.NamespaceAwareNestedTagHandler;
import org.apache.cayenne.gen.CgenConfiguration;
@@ -25,11 +30,6 @@ import org.apache.cayenne.map.DataMap;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
-import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
/**
* @since 4.1
*/
@@ -50,6 +50,7 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{
private static final String EXCLUDE_EMBEDDABLES_TAG = "excludeEmbeddables";
private static final String CREATE_PK_PROPERTIES = "createPKProperties";
private static final String CLIENT_TAG = "client";
+ private static final String SUPER_PKG_TAG = "superPkg";
public static final String TRUE = "true";
@@ -115,6 +116,9 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{
case CLIENT_TAG:
createClient(data);
break;
+ case SUPER_PKG_TAG:
+ createSuperPkg(data);
+ break;
}
}
@@ -236,6 +240,13 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{
}
}
+ private void createSuperPkg(String data) {
+ if(data.trim().length() == 0) {
+ return;
+ }
+ configuration.setSuperPkg(data);
+ }
+
private void createConfig() {
loaderContext.addDataMapListener(dataMap -> {
configuration.setDataMap(dataMap);
diff --git a/cayenne-server/src/main/resources/org/apache/cayenne/schema/10/cgen.xsd b/cayenne-server/src/main/resources/org/apache/cayenne/schema/10/cgen.xsd
index 7b26e92..b24afb9 100644
--- a/cayenne-server/src/main/resources/org/apache/cayenne/schema/10/cgen.xsd
+++ b/cayenne-server/src/main/resources/org/apache/cayenne/schema/10/cgen.xsd
@@ -38,6 +38,7 @@
<xs:element name="usePkgPath" minOccurs="0" type="xs:boolean"/>
<xs:element name="overwrite" minOccurs="0" type="xs:boolean"/>
<xs:element name="createPropertyNames" minOccurs="0" type="xs:boolean"/>
+ <xs:element name="superPkg" minOccurs="0" type="xs:string"/>
<xs:element name="createPKProperties" minOccurs="0" type="xs:boolean"/>
<xs:element name="client" minOccurs="0" type="xs:boolean"/>
</xs:sequence>
diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/testCgen.map.xml b/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/testCgen.map.xml
index 6986022..9374713 100644
--- a/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/testCgen.map.xml
+++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/testCgen.map.xml
@@ -16,6 +16,7 @@
<outputPattern>*.txt</outputPattern>
<makePairs>true</makePairs>
<usePkgPath>true</usePkgPath>
+ <superPkg>test</superPkg>
<overwrite>false</overwrite>
<createPropertyNames>false</createPropertyNames>
</cgen>
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
index ba6ab60..eb20df9 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
@@ -19,8 +19,8 @@
package org.apache.cayenne.modeler.editor.cgen;
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.JOptionPane;
+import java.awt.Component;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.function.Predicate;
@@ -90,7 +90,8 @@ public class CodeGeneratorController extends CodeGeneratorControllerBase impleme
!cgenConfiguration.isCreatePKProperties() && !cgenConfiguration.isCreatePropertyNames() &&
cgenConfiguration.getOutputPattern().equals("*.java") &&
cgenConfiguration.getTemplate().equals(ClassGenerationAction.SUBCLASS_TEMPLATE) &&
- cgenConfiguration.getSuperTemplate().equals(ClassGenerationAction.SUPERCLASS_TEMPLATE);
+ cgenConfiguration.getSuperTemplate().equals(ClassGenerationAction.SUPERCLASS_TEMPLATE) &&
+ (cgenConfiguration.getSuperPkg() == null || cgenConfiguration.getSuperPkg().isEmpty());
}
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 f1d807b..f1a8a65 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
@@ -177,6 +177,7 @@ public class CustomModeController extends GeneratorController {
view.getOverwrite().setSelected(cgenConfiguration.isOverwrite());
view.getCreatePropertyNames().setSelected(cgenConfiguration.isCreatePropertyNames());
view.getPkProperties().setSelected(cgenConfiguration.isCreatePKProperties());
+ view.getSuperPkg().setText(cgenConfiguration.getSuperPkg());
updateComboBoxes();
getParentController().setInitFromModel(false);
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
index d29c3c4..cb2cb25 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
@@ -19,6 +19,14 @@
package org.apache.cayenne.modeler.editor.cgen;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;
import org.apache.cayenne.gen.CgenConfiguration;
@@ -29,9 +37,6 @@ import org.apache.cayenne.modeler.util.TextAdapter;
import org.apache.cayenne.swing.components.JCayenneCheckBox;
import org.apache.cayenne.validation.ValidationException;
-import javax.swing.*;
-import java.awt.*;
-
/**
* @since 4.1
*/
@@ -45,6 +50,7 @@ public class CustomModePanel extends GeneratorControllerPanel {
private TextAdapter outputPattern;
private JCheckBox createPropertyNames;
private JCheckBox pkProperties;
+ private TextAdapter superPkg;
private JButton manageTemplatesLink;
@@ -90,6 +96,17 @@ public class CustomModePanel extends GeneratorControllerPanel {
}
};
+ JTextField superPkgField = new JTextField();
+ this.superPkg = new TextAdapter(superPkgField) {
+ @Override
+ protected void updateModel(String text) throws ValidationException {
+ getCgenByDataMap().setSuperPkg(text);
+ if(!codeGeneratorControllerBase.isInitFromModel()) {
+ projectController.setDirty(true);
+ }
+ }
+ };
+
this.createPropertyNames = new JCayenneCheckBox();
this.pkProperties = new JCayenneCheckBox();
this.manageTemplatesLink = new JButton("Customize Templates...");
@@ -133,6 +150,8 @@ public class CustomModePanel extends GeneratorControllerPanel {
builder.append("Create PK properties:", pkProperties);
builder.nextLine();
+ builder.append("Superclass package:", superPkg.getComponent());
+
setLayout(new BorderLayout());
add(builder.getPanel(), BorderLayout.CENTER);
@@ -178,4 +197,8 @@ public class CustomModePanel extends GeneratorControllerPanel {
public JCheckBox getPkProperties() {
return pkProperties;
}
+
+ public TextAdapter getSuperPkg() {
+ return superPkg;
+ }
}