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" />


Reply via email to