Author: aadamchik
Date: Thu Dec 17 15:32:53 2009
New Revision: 891768
URL: http://svn.apache.org/viewvc?rev=891768&view=rev
Log:
CAY-1329 DI-based cayenne-project module
* FileProjectSaver tests
* fixing save ordering
* more upgrade unit tests
* stop saving domain name in the cayenne-XYZ.xml files
* scrubbing the domain names
Added:
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/FileProjectSaverTest.java
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/upgrade/v6/XMLDataChannelDescriptorLoader_V3_0_0_1Test.java
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DataChannelDescriptor.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DataNodeDescriptor.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/DataMap.java
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/v6/XMLDataChannelDescriptorLoader_V3_0_0_1.java
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/v6/XMLDataSourceInfoLoader_V3_0_0_1.java
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/upgrade/v6/ProjectUpgrader_V6Test.java
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/upgrade/v6/6a/cayenne-PROJECT1.xml
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DataChannelDescriptor.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DataChannelDescriptor.java?rev=891768&r1=891767&r2=891768&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DataChannelDescriptor.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DataChannelDescriptor.java
Thu Dec 17 15:32:53 2009
@@ -20,9 +20,10 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.resource.Resource;
@@ -51,7 +52,6 @@
public void encodeAsXML(XMLEncoder encoder) {
encoder.print("<domain");
- encoder.printAttribute("name", name);
encoder.printProjectVersion();
encoder.println(">");
@@ -61,10 +61,12 @@
if (!properties.isEmpty()) {
breakNeeded = true;
- for (Entry<String, String> property : properties.entrySet()) {
- encoder.printProperty(property.getKey(), property.getValue());
- }
+ List<String> keys = new ArrayList<String>(properties.keySet());
+ Collections.sort(keys);
+ for (String key : keys) {
+ encoder.printProperty(key, properties.get(key));
+ }
}
if (!dataMaps.isEmpty()) {
@@ -75,7 +77,10 @@
breakNeeded = true;
}
- for (DataMap dataMap : dataMaps) {
+ List<DataMap> maps = new ArrayList<DataMap>(this.dataMaps);
+ Collections.sort(maps);
+
+ for (DataMap dataMap : maps) {
encoder.print("<map");
encoder.printAttribute("name", dataMap.getName().trim());
@@ -91,7 +96,10 @@
breakNeeded = true;
}
- encoder.print(nodeDescriptors);
+ List<DataNodeDescriptor> nodes = new ArrayList<DataNodeDescriptor>(
+ nodeDescriptors);
+ Collections.sort(nodes);
+ encoder.print(nodes);
}
encoder.indent(-1);
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DataNodeDescriptor.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DataNodeDescriptor.java?rev=891768&r1=891767&r2=891768&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DataNodeDescriptor.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DataNodeDescriptor.java
Thu Dec 17 15:32:53 2009
@@ -20,6 +20,8 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.conn.DataSourceInfo;
@@ -32,7 +34,8 @@
*
* @since 3.1
*/
-public class DataNodeDescriptor implements XMLSerializable {
+public class DataNodeDescriptor implements XMLSerializable,
+ Comparable<DataNodeDescriptor> {
protected String name;
protected Collection<String> dataMapNames;
@@ -49,7 +52,27 @@
protected Resource configurationSource;
public DataNodeDescriptor() {
+ this(null);
+ }
+
+ public DataNodeDescriptor(String name) {
this.dataMapNames = new ArrayList<String>();
+ this.name = name;
+ }
+
+ public int compareTo(DataNodeDescriptor o) {
+ String o1 = getName();
+ String o2 = o.getName();
+
+ if (o1 == null) {
+ return (o2 != null) ? -1 : 0;
+ }
+ else if (o2 == null) {
+ return 1;
+ }
+ else {
+ return o1.compareTo(o2);
+ }
}
public void encodeAsXML(XMLEncoder encoder) {
@@ -63,10 +86,16 @@
encoder.printlnAttribute("schema-update-strategy",
schemaUpdateStrategyType);
encoder.println(">");
- for (String mapName : dataMapNames) {
- encoder.print("<map-ref");
- encoder.printAttribute("name", mapName);
- encoder.println("/>");
+ if (!dataMapNames.isEmpty()) {
+
+ List<String> names = new ArrayList<String>(dataMapNames);
+ Collections.sort(names);
+
+ for (String mapName : names) {
+ encoder.print("<map-ref");
+ encoder.printAttribute("name", mapName);
+ encoder.println("/>");
+ }
}
if (dataSourceDescriptor != null) {
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/DataMap.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/DataMap.java?rev=891768&r1=891767&r2=891768&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/DataMap.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/DataMap.java
Thu Dec 17 15:32:53 2009
@@ -50,7 +50,7 @@
* mapping persistent Java classes, Procedures - mapping database stored
procedures.
*/
public class DataMap implements Serializable, ConfigurationNode,
XMLSerializable,
- MappingNamespace, DbEntityListener, ObjEntityListener {
+ MappingNamespace, DbEntityListener, ObjEntityListener,
Comparable<DataMap> {
/**
* Defines whether a DataMap supports client entities.
@@ -171,6 +171,24 @@
public <T> T acceptVisitor(ConfigurationNodeVisitor<T> visitor) {
return visitor.visitDataMap(this);
}
+
+ /**
+ * @since 3.1
+ */
+ public int compareTo(DataMap o) {
+ String o1 = getName();
+ String o2 = o.getName();
+
+ if (o1 == null) {
+ return (o2 != null) ? -1 : 0;
+ }
+ else if (o2 == null) {
+ return 1;
+ }
+ else {
+ return o1.compareTo(o2);
+ }
+ }
/**
* @since 3.0
Modified:
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/v6/XMLDataChannelDescriptorLoader_V3_0_0_1.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/v6/XMLDataChannelDescriptorLoader_V3_0_0_1.java?rev=891768&r1=891767&r2=891768&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/v6/XMLDataChannelDescriptorLoader_V3_0_0_1.java
(original)
+++
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/v6/XMLDataChannelDescriptorLoader_V3_0_0_1.java
Thu Dec 17 15:32:53 2009
@@ -131,6 +131,32 @@
}
/**
+ * Make sure the domain name is only made up of Java-identifier-safe
characters.
+ */
+ protected String scrubDomainName(String name) {
+ if (name == null || name.length() == 0) {
+ return name;
+ }
+
+ StringBuilder buffer = new StringBuilder(name.length());
+
+ for (int i = 0; i < name.length(); i++) {
+ char c = name.charAt(i);
+ if (i == 0 && !Character.isJavaIdentifierStart(c)) {
+ buffer.append('_');
+ }
+ else if (i > 0 && !Character.isJavaIdentifierPart(c)) {
+ buffer.append('_');
+ }
+ else {
+ buffer.append(c);
+ }
+ }
+
+ return buffer.toString();
+ }
+
+ /**
* Converts the names of standard Cayenne-supplied DataSourceFactories
from the legacy
* names to the current names.
*/
@@ -194,7 +220,7 @@
String domainName = attributes.getValue("", "name");
DataChannelDescriptor descriptor = new DataChannelDescriptor();
- descriptor.setName(domainName);
+ descriptor.setName(scrubDomainName(domainName));
descriptor.setConfigurationSource(configurationSource);
domains.add(descriptor);
Modified:
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/v6/XMLDataSourceInfoLoader_V3_0_0_1.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/v6/XMLDataSourceInfoLoader_V3_0_0_1.java?rev=891768&r1=891767&r2=891768&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/v6/XMLDataSourceInfoLoader_V3_0_0_1.java
(original)
+++
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/v6/XMLDataSourceInfoLoader_V3_0_0_1.java
Thu Dec 17 15:32:53 2009
@@ -153,7 +153,7 @@
if (localName.equals("driver")) {
String className = attributes.getValue("", "class");
dataSourceDescriptor.setJdbcDriver(className);
-
+
return new DataSourceChildrenHandler(parser, this);
}
@@ -179,8 +179,6 @@
if (localName.equals("login")) {
- logger.info("loading user name and password.");
-
String encoderClass = attributes.getValue("encoderClass");
String encoderKey = attributes.getValue("encoderKey");
Added:
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/FileProjectSaverTest.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/FileProjectSaverTest.java?rev=891768&view=auto
==============================================================================
---
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/FileProjectSaverTest.java
(added)
+++
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/FileProjectSaverTest.java
Thu Dec 17 15:32:53 2009
@@ -0,0 +1,126 @@
+/*****************************************************************
+ * 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.project2;
+
+import java.io.File;
+import java.util.Arrays;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathFactory;
+
+import org.apache.cayenne.configuration.ConfigurationNameMapper;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
+import org.apache.cayenne.configuration.DefaultConfigurationNameMapper;
+import org.apache.cayenne.di.Binder;
+import org.apache.cayenne.di.DIBootstrap;
+import org.apache.cayenne.di.Injector;
+import org.apache.cayenne.di.Module;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.project2.unit.Project2Case;
+import org.apache.cayenne.resource.URLResource;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+
+public class FileProjectSaverTest extends Project2Case {
+
+ public void testSaveAs_Sorted() throws Exception {
+
+ File testFolder = setupTestDirectory("testSaveAs_Sorted");
+
+ Module testModule = new Module() {
+
+ public void configure(Binder binder) {
+ binder.bind(ConfigurationNameMapper.class).to(
+ DefaultConfigurationNameMapper.class);
+ }
+ };
+
+ FileProjectSaver saver = new FileProjectSaver();
+ Injector injector = DIBootstrap.createInjector(testModule);
+ injector.injectMembers(saver);
+
+ DataChannelDescriptor rootNode = new DataChannelDescriptor();
+ rootNode.setName("test");
+
+ // add maps and nodes in reverse alpha order. Check that they are
saved in alpha
+ // order
+ rootNode.getDataMaps().add(new DataMap("C"));
+ rootNode.getDataMaps().add(new DataMap("B"));
+ rootNode.getDataMaps().add(new DataMap("A"));
+
+ DataNodeDescriptor[] nodes = new DataNodeDescriptor[3];
+ nodes[0] = new DataNodeDescriptor("Z");
+ nodes[1] = new DataNodeDescriptor("Y");
+ nodes[2] = new DataNodeDescriptor("X");
+
+ nodes[0].getDataMapNames().add("C");
+ nodes[0].getDataMapNames().add("B");
+ nodes[0].getDataMapNames().add("A");
+
+ rootNode.getNodeDescriptors().addAll(Arrays.asList(nodes));
+
+ Project project = new Project(rootNode);
+
+ saver.saveAs(project, new URLResource(testFolder.toURL()));
+
+ File target = new File(testFolder, "cayenne-test.xml");
+ assertTrue(target.isFile());
+ assertSaveAs_Sorted(target);
+ }
+
+ private void assertSaveAs_Sorted(File file) throws Exception {
+ Document document = toDOMTree(file);
+
+ XPath xpath = XPathFactory.newInstance().newXPath();
+ assertEquals("", xpath.evaluate("/domain/@name", document));
+
+ NodeList maps = (NodeList) xpath.evaluate(
+ "/domain/map",
+ document,
+ XPathConstants.NODESET);
+ assertEquals(3, maps.getLength());
+
+ assertEquals("A", xpath.evaluate("@name", maps.item(0)));
+ assertEquals("B", xpath.evaluate("@name", maps.item(1)));
+ assertEquals("C", xpath.evaluate("@name", maps.item(2)));
+
+ NodeList nodes = (NodeList) xpath.evaluate(
+ "/domain/node",
+ document,
+ XPathConstants.NODESET);
+ assertEquals(3, nodes.getLength());
+
+ assertEquals("X", xpath.evaluate("@name", nodes.item(0)));
+ assertEquals("Y", xpath.evaluate("@name", nodes.item(1)));
+ assertEquals("Z", xpath.evaluate("@name", nodes.item(2)));
+
+ NodeList mapRefs = (NodeList) xpath.evaluate(
+ "map-ref",
+ nodes.item(2),
+ XPathConstants.NODESET);
+ assertEquals(3, mapRefs.getLength());
+
+ assertEquals("A", xpath.evaluate("@name", mapRefs.item(0)));
+ assertEquals("B", xpath.evaluate("@name", mapRefs.item(1)));
+ assertEquals("C", xpath.evaluate("@name", mapRefs.item(2)));
+
+ }
+}
Modified:
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/upgrade/v6/ProjectUpgrader_V6Test.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/upgrade/v6/ProjectUpgrader_V6Test.java?rev=891768&r1=891767&r2=891768&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/upgrade/v6/ProjectUpgrader_V6Test.java
(original)
+++
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/upgrade/v6/ProjectUpgrader_V6Test.java
Thu Dec 17 15:32:53 2009
@@ -28,7 +28,9 @@
import javax.xml.xpath.XPathFactory;
import org.apache.cayenne.configuration.ConfigurationNameMapper;
+import org.apache.cayenne.configuration.DBCPDataSourceFactory;
import org.apache.cayenne.configuration.DefaultConfigurationNameMapper;
+import org.apache.cayenne.configuration.JNDIDataSourceFactory;
import org.apache.cayenne.configuration.XMLPoolingDataSourceFactory;
import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.DIBootstrap;
@@ -221,13 +223,16 @@
// assert XML structure of the generated files
assertPerformUpgrade_3_0_0_1_cayenne_d1(targetsAfter[0]);
+ assertPerformUpgrade_3_0_0_1_cayenne_d2(targetsAfter[1]);
+ assertPerformUpgrade_3_0_0_1_d1Map1(targetsAfter[2]);
+ assertPerformUpgrade_3_0_0_1_d1Map2(targetsAfter[3]);
}
private void assertPerformUpgrade_3_0_0_1_cayenne_d1(File file) throws
Exception {
Document document = toDOMTree(file);
XPath xpath = XPathFactory.newInstance().newXPath();
- assertEquals("d1", xpath.evaluate("/domain/@name", document));
+ assertEquals("", xpath.evaluate("/domain/@name", document));
assertEquals("6", xpath.evaluate("/domain/@project-version",
document));
NodeList maps = (NodeList) xpath.evaluate(
@@ -273,9 +278,75 @@
XPathConstants.NODESET);
assertNotNull(dataSources);
assertEquals(1, dataSources.getLength());
-
+
Node ds = dataSources.item(0);
assertEquals("org.hsqldb.jdbcDriver", xpath.evaluate("driver/@value",
ds));
assertEquals("jdbc:hsqldb:mem:xdb", xpath.evaluate("url/@value", ds));
}
+
+ private void assertPerformUpgrade_3_0_0_1_cayenne_d2(File file) throws
Exception {
+ Document document = toDOMTree(file);
+
+ XPath xpath = XPathFactory.newInstance().newXPath();
+ assertEquals("", xpath.evaluate("/domain/@name", document));
+ assertEquals("6", xpath.evaluate("/domain/@project-version",
document));
+
+ NodeList maps = (NodeList) xpath.evaluate(
+ "/domain/map",
+ document,
+ XPathConstants.NODESET);
+ assertNotNull(maps);
+ assertEquals(0, maps.getLength());
+
+ NodeList nodes = (NodeList) xpath.evaluate(
+ "/domain/node",
+ document,
+ XPathConstants.NODESET);
+ assertNotNull(nodes);
+ assertEquals(2, nodes.getLength());
+
+ Node node1 = nodes.item(0);
+ Node node2 = nodes.item(1);
+
+ assertEquals("d2NodeDBCP", xpath.evaluate("@name", node1));
+ assertEquals("dbcpx", xpath.evaluate("@parameters", node1));
+ assertEquals(DBCPDataSourceFactory.class.getName(), xpath.evaluate(
+ "@factory",
+ node1));
+
+ NodeList dataSources1 = (NodeList) xpath.evaluate(
+ "data-source",
+ node1,
+ XPathConstants.NODESET);
+ assertNotNull(dataSources1);
+ assertEquals(0, dataSources1.getLength());
+
+ assertEquals("d2NodeJNDI", xpath.evaluate("@name", node2));
+ assertEquals("jndi/x", xpath.evaluate("@parameters", node2));
+ assertEquals(JNDIDataSourceFactory.class.getName(), xpath.evaluate(
+ "@factory",
+ node2));
+
+ NodeList dataSources2 = (NodeList) xpath.evaluate(
+ "data-source",
+ node2,
+ XPathConstants.NODESET);
+ assertNotNull(dataSources2);
+ assertEquals(0, dataSources2.getLength());
+ }
+
+ private void assertPerformUpgrade_3_0_0_1_d1Map1(File file) throws
Exception {
+ Document document = toDOMTree(file);
+
+ XPath xpath = XPathFactory.newInstance().newXPath();
+ assertEquals("6", xpath.evaluate("/data-map/@project-version",
document));
+ }
+
+ private void assertPerformUpgrade_3_0_0_1_d1Map2(File file) throws
Exception {
+ Document document = toDOMTree(file);
+
+ XPath xpath = XPathFactory.newInstance().newXPath();
+ assertEquals("6", xpath.evaluate("/data-map/@project-version",
document));
+ }
+
}
Added:
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/upgrade/v6/XMLDataChannelDescriptorLoader_V3_0_0_1Test.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/upgrade/v6/XMLDataChannelDescriptorLoader_V3_0_0_1Test.java?rev=891768&view=auto
==============================================================================
---
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/upgrade/v6/XMLDataChannelDescriptorLoader_V3_0_0_1Test.java
(added)
+++
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/upgrade/v6/XMLDataChannelDescriptorLoader_V3_0_0_1Test.java
Thu Dec 17 15:32:53 2009
@@ -0,0 +1,31 @@
+/*****************************************************************
+ * 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.project2.upgrade.v6;
+
+import junit.framework.TestCase;
+
+public class XMLDataChannelDescriptorLoader_V3_0_0_1Test extends TestCase {
+
+ public void testScrubDomainName() {
+ XMLDataChannelDescriptorLoader_V3_0_0_1 loader = new
XMLDataChannelDescriptorLoader_V3_0_0_1();
+
+ assertEquals("abc123_N", loader.scrubDomainName("abc123_N"));
+ assertEquals("____$abc123_N", loader.scrubDomainName("1...@!
$abc123_N"));
+ }
+}
Modified:
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/upgrade/v6/6a/cayenne-PROJECT1.xml
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/upgrade/v6/6a/cayenne-PROJECT1.xml?rev=891768&r1=891767&r2=891768&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/upgrade/v6/6a/cayenne-PROJECT1.xml
(original)
+++
cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/upgrade/v6/6a/cayenne-PROJECT1.xml
Thu Dec 17 15:32:53 2009
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<domain name="DefaultDomain" project-version="6">
+<domain project-version="6">
<map name="testProjectMap1_1" />
<map name="testProjectMap1_2" />