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 2022/07/20 15:30:11 UTC
[cayenne] 02/03: CAY-2752 Rename queryTemplate to dataMapTemplate in the cgen config - update schema
This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 3925135ca430a98b285da2832421e199603696d1
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed Jul 20 18:10:35 2022 +0300
CAY-2752 Rename queryTemplate to dataMapTemplate in the cgen config
- update schema
---
.../org/apache/cayenne/gen/CgenConfiguration.java | 4 +-
.../apache/cayenne/gen/xml/CgenConfigHandler.java | 16 ++++----
.../upgrade/handlers/UpgradeHandler_V11.java | 33 ++++++++++++++++-
.../upgrade/handlers/UpgradeHandler_V11Test.java | 43 +++++++++++++++++++---
.../project/upgrade/handlers/test-map-v10.map.xml | 2 +
.../org/apache/cayenne/schema/11/cgen.xsd | 4 +-
6 files changed, 83 insertions(+), 19 deletions(-)
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java
index 8731b1a8a..af4062701 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java
@@ -416,8 +416,8 @@ public class CgenConfiguration implements Serializable, XMLSerializable {
.simpleTag("superTemplate", separatorsToUnix(this.superTemplate))
.simpleTag("embeddableTemplate", separatorsToUnix(this.embeddableTemplate))
.simpleTag("embeddableSuperTemplate", separatorsToUnix(this.embeddableSuperTemplate))
- .simpleTag("queryTemplate", separatorsToUnix(this.dataMapTemplate))
- .simpleTag("querySuperTemplate", separatorsToUnix(this.dataMapSuperTemplate))
+ .simpleTag("dataMapTemplate", separatorsToUnix(this.dataMapTemplate))
+ .simpleTag("dataMapSuperTemplate", separatorsToUnix(this.dataMapSuperTemplate))
.simpleTag("outputPattern", this.outputPattern)
.simpleTag("makePairs", Boolean.toString(this.makePairs))
.simpleTag("usePkgPath", Boolean.toString(this.usePkgPath))
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 3dea5e115..599c2959a 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
@@ -45,8 +45,8 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{
private static final String SUPERCLASS_TEMPLATE_TAG = "superTemplate";
private static final String EMBEDDABLE_TEMPLATE_TAG = "embeddableTemplate";
private static final String EMBEDDABLE_SUPER_TEMPLATE_TAG = "embeddableSuperTemplate";
- private static final String QUERY_TEMPLATE_TAG = "queryTemplate";
- private static final String QUERY_SUPER_TEMPLATE_TAG = "querySuperTemplate";
+ private static final String DATAMAP_TEMPLATE_TAG = "dataMapTemplate";
+ private static final String DATAMAP_SUPER_TEMPLATE_TAG = "dataMapSuperTemplate";
private static final String OUTPUT_PATTERN_TAG = "outputPattern";
private static final String MAKE_PAIRS_TAG = "makePairs";
private static final String USE_PKG_PATH_TAG = "usePkgPath";
@@ -105,11 +105,11 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{
break;
case EMBEDDABLE_SUPER_TEMPLATE_TAG:
createEmbeddableSuperTemplate(data);
- case QUERY_TEMPLATE_TAG:
- createQueryTemplate(data);
+ case DATAMAP_TEMPLATE_TAG:
+ createDataMapTemplate(data);
break;
- case QUERY_SUPER_TEMPLATE_TAG:
- createQuerySuperTemplate(data);
+ case DATAMAP_SUPER_TEMPLATE_TAG:
+ createDataMapSuperTemplate(data);
break;
case OUTPUT_PATTERN_TAG:
createOutputPattern(data);
@@ -191,14 +191,14 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler{
configuration.setEmbeddableSuperTemplate(template);
}
- private void createQueryTemplate(String template) {
+ private void createDataMapTemplate(String template) {
if(template.trim().length() == 0) {
return;
}
configuration.setDataMapTemplate(template);
}
- private void createQuerySuperTemplate(String template) {
+ private void createDataMapSuperTemplate(String template) {
if(template.trim().length() == 0) {
return;
}
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java b/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
index 6e17c6ad2..0cd39e24b 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
@@ -25,6 +25,7 @@ import javax.xml.xpath.XPathFactory;
import org.apache.cayenne.project.upgrade.UpgradeUnit;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
@@ -32,6 +33,7 @@ import org.w3c.dom.NodeList;
* Changes highlight:
* - schemas version update
* - ROP removal
+ * - cgen schema changes
*
* @since 4.3
*/
@@ -57,7 +59,7 @@ public class UpgradeHandler_V11 implements UpgradeHandler {
dropROPProperties(upgradeUnit);
dropObjEntityClientInfo(upgradeUnit);
- dropCgenClientConfig(upgradeUnit);
+ updateCgenConfig(upgradeUnit);
}
private void upgradeComments(UpgradeUnit upgradeUnit) {
@@ -119,6 +121,35 @@ public class UpgradeHandler_V11 implements UpgradeHandler {
}
}
+ private void updateCgenConfig(UpgradeUnit upgradeUnit) {
+ renameQueryTemplates(upgradeUnit);
+ dropCgenClientConfig(upgradeUnit);
+ }
+
+ private void renameQueryTemplates(UpgradeUnit upgradeUnit) {
+ XPath xpath = XPathFactory.newInstance().newXPath();
+ NodeList queryTemplates;
+ NodeList querySuperTemplates;
+ try {
+ queryTemplates = (NodeList) xpath.evaluate("/data-map/*[local-name()='cgen']/*[local-name()='queryTemplate']",
+ upgradeUnit.getDocument(), XPathConstants.NODESET);
+ querySuperTemplates = (NodeList) xpath.evaluate("/data-map/*[local-name()='cgen']/*[local-name()='querySuperTemplate']",
+ upgradeUnit.getDocument(), XPathConstants.NODESET);
+ } catch (Exception e) {
+ return;
+ }
+
+ for (int j = 0; j < queryTemplates.getLength(); j++) {
+ Node element = queryTemplates.item(j);
+ upgradeUnit.getDocument().renameNode(element, null, "dataMapTemplate");
+ }
+
+ for (int j = 0; j < querySuperTemplates.getLength(); j++) {
+ Node element = querySuperTemplates.item(j);
+ upgradeUnit.getDocument().renameNode(element, null, "dataMapSuperTemplate");
+ }
+ }
+
private void dropCgenClientConfig(UpgradeUnit upgradeUnit) {
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodes;
diff --git a/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11Test.java b/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11Test.java
index dcc8f5349..4a2d7d5b4 100644
--- a/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11Test.java
+++ b/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11Test.java
@@ -28,6 +28,7 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verifyZeroInteractions;
@@ -74,21 +75,51 @@ public class UpgradeHandler_V11Test extends BaseUpgradeHandlerTest{
assertEquals("http://cayenne.apache.org/schema/11/info", objEntity.getFirstChild().getNextSibling().getAttributes().getNamedItem("xmlns:info").getNodeValue());
assertEquals(2, root.getElementsByTagName("db-attribute").getLength());
+ }
+
+ @Test
+ public void testCgenDomUpgrade() throws Exception {
+ Document document = processDataMapDom("test-map-v10.map.xml");
+ Element root = document.getDocumentElement();
+ // check cgen config is updated
NodeList cgens = root.getElementsByTagName("cgen");
- assertEquals(1, objEntities.getLength());
+ assertEquals(1, cgens.getLength());
Node cgenConfig = cgens.item(0);
assertEquals("http://cayenne.apache.org/schema/11/cgen", cgenConfig.getAttributes().getNamedItem("xmlns").getNodeValue());
- for(int i=0; i<cgenConfig.getChildNodes().getLength(); i++) {
- Node node = cgenConfig.getChildNodes().item(i);
- if(node.getNodeType() == Node.ELEMENT_NODE && node.getNodeName().equals("client")) {
- fail("<client> tag is still present in the <cgen> config");
+
+ NodeList childNodes = cgenConfig.getChildNodes();
+ boolean dataMapTemplateSeen = false;
+ boolean dataMapSuperTemplateSeen = false;
+ int elements = 0;
+ for(int i = 0; i< childNodes.getLength(); i++) {
+ Node node = childNodes.item(i);
+ if(node.getNodeType() == Node.ELEMENT_NODE) {
+ elements++;
+ switch (node.getNodeName()) {
+ case "client":
+ fail("<client> tag is still present in the <cgen> config");
+ case "queryTemplate":
+ fail("<queryTemplate> tag is still present in the <cgen> config");
+ case "querySuperTemplate":
+ fail("<querySuperTemplate> tag is still present in the <cgen> config");
+ case "dataMapTemplate":
+ dataMapTemplateSeen = true;
+ break;
+ case "dataMapSuperTemplate":
+ dataMapSuperTemplateSeen = true;
+ break;
+ }
}
}
+
+ assertEquals(4, elements);
+ assertTrue(dataMapTemplateSeen);
+ assertTrue(dataMapSuperTemplateSeen);
}
@Test
- public void testModelUpgrade() throws Exception {
+ public void testModelUpgrade() {
DataChannelDescriptor descriptor = mock(DataChannelDescriptor.class);
handler.processModel(descriptor);
verifyZeroInteractions(descriptor);
diff --git a/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/test-map-v10.map.xml b/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/test-map-v10.map.xml
index bafd4987f..e2db08d71 100644
--- a/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/test-map-v10.map.xml
+++ b/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/test-map-v10.map.xml
@@ -17,6 +17,8 @@
<cgen xmlns="http://cayenne.apache.org/schema/10/cgen">
<destDir>../../../../target/cgenClasses</destDir>
<mode>entity</mode>
+ <queryTemplate>test_query_template</queryTemplate>
+ <querySuperTemplate>test_query_super_template</querySuperTemplate>
<client>true</client>
</cgen>
<dbimport xmlns="http://cayenne.apache.org/schema/10/dbimport">
diff --git a/cayenne-server/src/main/resources/org/apache/cayenne/schema/11/cgen.xsd b/cayenne-server/src/main/resources/org/apache/cayenne/schema/11/cgen.xsd
index 2fe707089..f41e23c9a 100644
--- a/cayenne-server/src/main/resources/org/apache/cayenne/schema/11/cgen.xsd
+++ b/cayenne-server/src/main/resources/org/apache/cayenne/schema/11/cgen.xsd
@@ -34,8 +34,8 @@
<xs:element name="superTemplate" minOccurs="0" type="xs:string"/>
<xs:element name="embeddableTemplate" minOccurs="0" type="xs:string"/>
<xs:element name="embeddableSuperTemplate" minOccurs="0" type="xs:string"/>
- <xs:element name="queryTemplate" minOccurs="0" type="xs:string"/>
- <xs:element name="querySuperTemplate" minOccurs="0" type="xs:string"/>
+ <xs:element name="dataMapTemplate" minOccurs="0" type="xs:string"/>
+ <xs:element name="dataMapSuperTemplate" minOccurs="0" type="xs:string"/>
<xs:element name="outputPattern" minOccurs="0" type="xs:string"/>
<xs:element name="makePairs" minOccurs="0" type="xs:boolean"/>
<xs:element name="skipRelationshipsLoading" minOccurs="0" type="xs:boolean"/>