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 2017/08/03 07:59:55 UTC
[4/5] cayenne git commit: CAY-2340 Save additional metadata as
separate files Support namespace-aware loading in DataChannelHandlers
CAY-2340 Save additional metadata as separate files
Support namespace-aware loading in DataChannelHandlers
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/13ead3f8
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/13ead3f8
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/13ead3f8
Branch: refs/heads/master
Commit: 13ead3f8180d213dd28b079fb29c11335425aa44
Parents: 3939efe
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Aug 1 18:26:02 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 2 16:23:56 2017 +0300
----------------------------------------------------------------------
.../src/test/resources/cayenne-lifecycle.xml | 3 +-
.../cayenne-relationship-optimisation.xml | 3 +-
.../cayenne/project/FileProjectSaver.java | 9 +++---
.../xml/DataChannelChildrenHandler.java | 2 +-
.../configuration/xml/DataChannelHandler.java | 5 ++--
.../xml/DataChannelLoaderListener.java | 29 ++++++++++++++++++++
.../xml/DataNodeChildrenHandler.java | 4 +--
.../xml/DataSourceChildrenHandler.java | 2 +-
.../configuration/xml/LoaderContext.java | 19 +++++++++++--
.../xml/XMLDataChannelDescriptorLoader.java | 2 ++
.../test/resources/cay743/cayenne-domain.xml | 2 +-
.../src/test/resources/cayenne-testmap.xml | 3 +-
.../configuration/xml/cayenne-testConfig1.xml | 2 +-
.../configuration/xml/cayenne-testConfig2.xml | 2 +-
.../configuration/xml/cayenne-testConfig3.xml | 2 +-
15 files changed, 69 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-cache-invalidation/src/test/resources/cayenne-lifecycle.xml
----------------------------------------------------------------------
diff --git a/cayenne-cache-invalidation/src/test/resources/cayenne-lifecycle.xml b/cayenne-cache-invalidation/src/test/resources/cayenne-lifecycle.xml
index 98ab346..6bbecc7 100644
--- a/cayenne-cache-invalidation/src/test/resources/cayenne-lifecycle.xml
+++ b/cayenne-cache-invalidation/src/test/resources/cayenne-lifecycle.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<domain project-version="10">
+<domain xmlns="http://cayenne.apache.org/schema/10/domain"
+ project-version="10">
<map name="lifecycle-map"/>
<node name="lifecycle-db"
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-dbsync/src/test/resources/org/apache/cayenne/dbsync/reverse/dbimport/cayenne-relationship-optimisation.xml
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/resources/org/apache/cayenne/dbsync/reverse/dbimport/cayenne-relationship-optimisation.xml b/cayenne-dbsync/src/test/resources/org/apache/cayenne/dbsync/reverse/dbimport/cayenne-relationship-optimisation.xml
index 166a67d..25f988a 100644
--- a/cayenne-dbsync/src/test/resources/org/apache/cayenne/dbsync/reverse/dbimport/cayenne-relationship-optimisation.xml
+++ b/cayenne-dbsync/src/test/resources/org/apache/cayenne/dbsync/reverse/dbimport/cayenne-relationship-optimisation.xml
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<domain project-version="10">
+<domain xmlns="http://cayenne.apache.org/schema/10/domain"
+ project-version="10">
<map name="relationship-optimisation"/>
</domain>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java b/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java
index e76022a..0d6af44 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/FileProjectSaver.java
@@ -142,16 +142,13 @@ public class FileProjectSaver implements ProjectSaver {
project.getUnusedResources().clear();
}
- SaveUnit createSaveUnit(ConfigurationNode node, Resource baseResource, SaverDelegate delegate) {
+ SaveUnit createSaveUnit(ConfigurationNode node, Resource targetResource, SaverDelegate delegate) {
SaveUnit unit = new SaveUnit();
unit.node = node;
unit.delegate = delegate;
unit.sourceConfiguration = node.acceptVisitor(resourceGetter);
- String targetLocation = nameMapper.configurationLocation(node);
- Resource targetResource = baseResource.getRelativeResource(targetLocation);
-
if (unit.sourceConfiguration == null) {
unit.sourceConfiguration = targetResource;
}
@@ -267,7 +264,9 @@ public class FileProjectSaver implements ProjectSaver {
unit.targetTempFile = null;
try {
- unit.node.acceptVisitor(new ConfigurationSourceSetter(new URLResource(targetFile.toURI().toURL())));
+ if(unit.delegate == null) {
+ unit.node.acceptVisitor(new ConfigurationSourceSetter(new URLResource(targetFile.toURI().toURL())));
+ }
} catch (MalformedURLException e) {
throw new CayenneRuntimeException("Malformed URL for file '%s'", e, targetFile.getAbsolutePath());
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelChildrenHandler.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelChildrenHandler.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelChildrenHandler.java
index 9dc65af..ddca060 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelChildrenHandler.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelChildrenHandler.java
@@ -32,7 +32,7 @@ import org.xml.sax.ContentHandler;
/**
* @since 4.1
*/
-final class DataChannelChildrenHandler extends SAXNestedTagHandler {
+final class DataChannelChildrenHandler extends NamespaceAwareNestedTagHandler {
private static Logger logger = LoggerFactory.getLogger(XMLDataChannelDescriptorLoader.class);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelHandler.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelHandler.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelHandler.java
index e5e4c71..476bb9c 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelHandler.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelHandler.java
@@ -31,7 +31,7 @@ import org.xml.sax.SAXException;
/**
* @since 4.1
*/
-final class DataChannelHandler extends SAXNestedTagHandler {
+final class DataChannelHandler extends NamespaceAwareNestedTagHandler {
private static Logger logger = LoggerFactory.getLogger(XMLDataChannelDescriptorLoader.class);
@@ -44,6 +44,7 @@ final class DataChannelHandler extends SAXNestedTagHandler {
super(loaderContext);
this.xmlDataChannelDescriptorLoader = xmlDataChannelDescriptorLoader;
this.descriptor = dataChannelDescriptor;
+ setTargetNamespace(DataChannelDescriptor.SCHEMA_XSD);
}
@Override
@@ -53,7 +54,7 @@ final class DataChannelHandler extends SAXNestedTagHandler {
validateVersion(attributes);
return true;
}
- return super.processElement(namespaceURI, localName, attributes);
+ return false;
}
protected void validateVersion(Attributes attributes) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelLoaderListener.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelLoaderListener.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelLoaderListener.java
new file mode 100644
index 0000000..065bc1f
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataChannelLoaderListener.java
@@ -0,0 +1,29 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.configuration.xml;
+
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+
+/**
+ * @since 4.1
+ */
+public interface DataChannelLoaderListener {
+ void onDataChannelLoaded(DataChannelDescriptor dataChannelDescriptor);
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataNodeChildrenHandler.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataNodeChildrenHandler.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataNodeChildrenHandler.java
index b98bd73..f6e2d1d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataNodeChildrenHandler.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataNodeChildrenHandler.java
@@ -27,7 +27,7 @@ import org.xml.sax.ContentHandler;
/**
* @since 4.1
*/
-final class DataNodeChildrenHandler extends SAXNestedTagHandler {
+final class DataNodeChildrenHandler extends NamespaceAwareNestedTagHandler {
static final String DATA_SOURCE_TAG = "data-source";
static final String MAP_REF_TAG = "map-ref";
@@ -37,7 +37,7 @@ final class DataNodeChildrenHandler extends SAXNestedTagHandler {
private DataSourceInfo dataSourceDescriptor;
- DataNodeChildrenHandler(XMLDataChannelDescriptorLoader xmlDataChannelDescriptorLoader, SAXNestedTagHandler parentHandler, DataNodeDescriptor nodeDescriptor) {
+ DataNodeChildrenHandler(XMLDataChannelDescriptorLoader xmlDataChannelDescriptorLoader, NamespaceAwareNestedTagHandler parentHandler, DataNodeDescriptor nodeDescriptor) {
super(parentHandler);
this.xmlDataChannelDescriptorLoader = xmlDataChannelDescriptorLoader;
this.nodeDescriptor = nodeDescriptor;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataSourceChildrenHandler.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataSourceChildrenHandler.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataSourceChildrenHandler.java
index b860b1f..066dd31 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataSourceChildrenHandler.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/DataSourceChildrenHandler.java
@@ -33,7 +33,7 @@ import org.xml.sax.Attributes;
/**
* @since 4.1
*/
-class DataSourceChildrenHandler extends SAXNestedTagHandler {
+class DataSourceChildrenHandler extends NamespaceAwareNestedTagHandler {
private static Logger logger = LoggerFactory.getLogger(XMLDataChannelDescriptorLoader.class);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/LoaderContext.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/LoaderContext.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/LoaderContext.java
index 9507e4f..4e70cf4 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/LoaderContext.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/LoaderContext.java
@@ -22,6 +22,8 @@ package org.apache.cayenne.configuration.xml;
import java.util.ArrayList;
import java.util.Collection;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.configuration.DataChannelDescriptorLoader;
import org.apache.cayenne.map.DataMap;
import org.xml.sax.XMLReader;
@@ -32,6 +34,8 @@ public class LoaderContext {
Collection<DataMapLoaderListener> dataMapListeners;
+ Collection<DataChannelLoaderListener> dataChannelListeners;
+
private XMLReader xmlReader;
private HandlerFactory factory;
@@ -40,6 +44,7 @@ public class LoaderContext {
this.xmlReader = reader;
this.factory = factory;
dataMapListeners = new ArrayList<>();
+ dataChannelListeners = new ArrayList<>();
}
public HandlerFactory getFactory() {
@@ -50,8 +55,8 @@ public class LoaderContext {
return xmlReader;
}
- public void addDataMapListener(DataMapLoaderListener dataMapLoaderListener) {
- dataMapListeners.add(dataMapLoaderListener);
+ public void addDataMapListener(DataMapLoaderListener listener) {
+ dataMapListeners.add(listener);
}
public void dataMapLoaded(DataMap dataMap) {
@@ -60,4 +65,14 @@ public class LoaderContext {
}
}
+ public void addDataChannelListener(DataChannelLoaderListener listener) {
+ dataChannelListeners.add(listener);
+ }
+
+ public void dataChannelLoaded(DataChannelDescriptor descriptor) {
+ for(DataChannelLoaderListener listener : dataChannelListeners) {
+ listener.onDataChannelLoaded(descriptor);
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
index a1de6c6..0682bb2 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
@@ -141,6 +141,8 @@ public class XMLDataChannelDescriptorLoader implements DataChannelDescriptorLoad
InputSource input = new InputSource(in);
input.setSystemId(configurationURL.toString());
parser.parse(input);
+
+ loaderContext.dataChannelLoaded(descriptor);
} catch (Exception e) {
throw new ConfigurationException("Error loading configuration from %s", e, configurationURL);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/test/resources/cay743/cayenne-domain.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/cay743/cayenne-domain.xml b/cayenne-server/src/test/resources/cay743/cayenne-domain.xml
index b69e50c..be87528 100644
--- a/cayenne-server/src/test/resources/cay743/cayenne-domain.xml
+++ b/cayenne-server/src/test/resources/cay743/cayenne-domain.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<domain project-version="10">
+<domain project-version="10" xmlns="http://cayenne.apache.org/schema/10/domain">
<map name="map1"/>
<map name="map2"/>
</domain>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/test/resources/cayenne-testmap.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/cayenne-testmap.xml b/cayenne-server/src/test/resources/cayenne-testmap.xml
index 9d8918c..3f269c0 100644
--- a/cayenne-server/src/test/resources/cayenne-testmap.xml
+++ b/cayenne-server/src/test/resources/cayenne-testmap.xml
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<domain project-version="10">
+<domain xmlns="http://cayenne.apache.org/schema/10/domain"
+ project-version="10">
<map name="testmap"/>
</domain>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig1.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig1.xml b/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig1.xml
index 0171ef2..e081f4c 100644
--- a/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig1.xml
+++ b/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-<domain project-version="10">
+<domain project-version="10" xmlns="http://cayenne.apache.org/schema/10/domain">
</domain>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig2.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig2.xml b/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig2.xml
index 8d841a5..bf4d451 100644
--- a/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig2.xml
+++ b/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig2.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-<domain project-version="10">
+<domain project-version="10" xmlns="http://cayenne.apache.org/schema/10/domain">
<map name="testConfigMap2" location="testConfigMap2.map.xml"/>
</domain>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/13ead3f8/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig3.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig3.xml b/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig3.xml
index 71f687a..9b626ce 100644
--- a/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig3.xml
+++ b/cayenne-server/src/test/resources/org/apache/cayenne/configuration/xml/cayenne-testConfig3.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<domain project-version="10">
+<domain project-version="10" xmlns="http://cayenne.apache.org/schema/10/domain">
<map name="testConfigMap3_1" location="testConfigMap3_1.map.xml" />
<map name="testConfigMap3_2" location="testConfigMap3_2.map.xml" />