You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2009/12/13 23:17:20 UTC

svn commit: r890131 [2/2] - in /cayenne/main/trunk: framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/ framework/cayenne-jdk1.5-unpublished/sr...

Copied: cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/DataSourceInfoLoader_3_0_0_1.java (from r890067, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/XMLPoolingDataSourceFactory.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/DataSourceInfoLoader_3_0_0_1.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/DataSourceInfoLoader_3_0_0_1.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/XMLPoolingDataSourceFactory.java&r1=890067&r2=890131&rev=890131&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/XMLPoolingDataSourceFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/upgrade/DataSourceInfoLoader_3_0_0_1.java Sun Dec 13 22:17:19 2009
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.configuration;
+package org.apache.cayenne.project2.upgrade;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -24,56 +24,31 @@
 import java.io.InputStreamReader;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.Collection;
-
-import javax.sql.DataSource;
 
 import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.access.ConnectionLogger;
-import org.apache.cayenne.access.QueryLogger;
 import org.apache.cayenne.conf.PasswordEncoding;
+import org.apache.cayenne.configuration.SAXNestedTagHandler;
 import org.apache.cayenne.conn.DataSourceInfo;
-import org.apache.cayenne.conn.PoolManager;
-import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.resource.Resource;
-import org.apache.cayenne.resource.ResourceLocator;
 import org.apache.cayenne.util.Util;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
 
 /**
- * A {@link DataSourceFactory} that loads JDBC connection information from an XML resource
- * associated with the DataNodeDescriptor, returning a DataSource with simple connection
- * pooling.
+ * A loader of XML for the {@link DataSourceInfo} object. The loader is compatible with
+ * project version 3.0.0.1 and earlier.
  * 
  * @since 3.1
  */
-public class XMLPoolingDataSourceFactory implements DataSourceFactory {
-
-    private static final Log logger = LogFactory
-            .getLog(XMLPoolingDataSourceFactory.class);
-
-    @Inject
-    protected ResourceLocator resourceLocator;
-
-    public DataSource getDataSource(DataNodeDescriptor nodeDescriptor) throws Exception {
+// TODO: andrus 12.13.2009 - unused yet.. will be used in upgrade manager
+class DataSourceInfoLoader_3_0_0_1 {
 
-        logger.info("loading driver information from '"
-                + nodeDescriptor.getLocation()
-                + "'.");
+    public DataSourceInfo load(Resource configurationResource) throws Exception {
 
-        Resource resource = nodeDescriptor.getConfigurationSource();
-
-        if (resource == null) {
-            String message = "Null configuration resource for node descriptor with location '"
-                    + nodeDescriptor.getLocation()
-                    + "'";
-            logger.info(message);
-            throw new ConfigurationException(message);
+        if (configurationResource == null) {
+            throw new NullPointerException("Null configurationResource");
         }
 
         DataSourceInfo dataSourceDescriptor = new DataSourceInfo();
@@ -83,32 +58,9 @@
         DriverHandler handler = new DriverHandler(dataSourceDescriptor, parser);
         parser.setContentHandler(handler);
         parser.setErrorHandler(handler);
-        parser.parse(new InputSource(resource.getURL().openStream()));
-
-        return createDataSource(dataSourceDescriptor);
-    }
+        parser.parse(new InputSource(configurationResource.getURL().openStream()));
 
-    /**
-     * Returns an instance of {@link PoolManager}.
-     */
-    protected DataSource createDataSource(DataSourceInfo dataSourceDescriptor)
-            throws Exception {
-
-        ConnectionLogger logger = new ConnectionLogger();
-        try {
-            return new PoolManager(
-                    dataSourceDescriptor.getJdbcDriver(),
-                    dataSourceDescriptor.getDataSourceUrl(),
-                    dataSourceDescriptor.getMinConnections(),
-                    dataSourceDescriptor.getMaxConnections(),
-                    dataSourceDescriptor.getUserName(),
-                    dataSourceDescriptor.getPassword(),
-                    logger);
-        }
-        catch (Exception e) {
-            QueryLogger.logConnectFailure(e);
-            throw e;
-        }
+        return dataSourceDescriptor;
     }
 
     private static String passwordFromURL(URL url) {
@@ -120,9 +72,7 @@
             password = passwordFromInputStream(inputStream);
         }
         catch (IOException exception) {
-            // Log the error while trying to open the stream. A null
-            // password will be returned as a result.
-            logger.warn(exception);
+            // ignore
         }
 
         return password;
@@ -137,7 +87,7 @@
             password = bufferedReader.readLine();
         }
         catch (IOException exception) {
-            logger.warn(exception);
+            // ignoring...
         }
         finally {
             try {
@@ -176,7 +126,6 @@
 
             if (localName.equals("driver")) {
                 String className = attributes.getValue("", "class");
-                logger.info("loading driver " + className);
                 dataSourceDescriptor.setJdbcDriver(className);
                 return new DriverChildrenHandler(parser, this);
             }
@@ -203,8 +152,6 @@
 
             if (localName.equals("login")) {
 
-                logger.info("loading user name and password.");
-
                 String encoderClass = attributes.getValue("encoderClass");
 
                 String encoderKey = attributes.getValue("encoderKey");
@@ -239,14 +186,16 @@
                 if (passwordLocation != null) {
                     if (passwordLocation
                             .equals(DataSourceInfo.PASSWORD_LOCATION_CLASSPATH)) {
-                        Collection<Resource> urls = resourceLocator
-                                .findResources(passwordLocation);
-                        if (urls.size() > 0) {
-                            password = passwordFromURL(urls.iterator().next().getURL());
+
+                        ClassLoader classLoader = Thread
+                                .currentThread()
+                                .getContextClassLoader();
+                        URL url = classLoader.getResource(username);
+                        if (url != null) {
+                            password = passwordFromURL(url);
                         }
                         else {
-                            logger.error("Could not find resource in CLASSPATH: "
-                                    + passwordSource);
+                            // ignoring..
                         }
                     }
                     else if (passwordLocation
@@ -255,7 +204,7 @@
                             password = passwordFromURL(new URL(passwordSource));
                         }
                         catch (MalformedURLException exception) {
-                            logger.warn(exception);
+                            // ignoring...
                         }
                     }
                     else if (passwordLocation
@@ -269,10 +218,10 @@
                                 process.waitFor();
                             }
                             catch (IOException exception) {
-                                logger.warn(exception);
+                                // ignoring...
                             }
                             catch (InterruptedException exception) {
-                                logger.warn(exception);
+                                // ignoring...
                             }
                         }
                     }
@@ -294,7 +243,6 @@
                         dataSourceDescriptor.setMinConnections(Integer.parseInt(min));
                     }
                     catch (NumberFormatException nfex) {
-                        logger.info("Non-numeric 'min' attribute", nfex);
                         throw new ConfigurationException(
                                 "Non-numeric 'min' attribute '%s'",
                                 nfex,
@@ -308,7 +256,6 @@
                         dataSourceDescriptor.setMaxConnections(Integer.parseInt(max));
                     }
                     catch (NumberFormatException nfex) {
-                        logger.info("Non-numeric 'max' attribute", nfex);
                         throw new ConfigurationException(
                                 "Non-numeric 'max' attribute '%s'",
                                 nfex,
@@ -320,4 +267,5 @@
             return super.createChildTagHandler(namespaceURI, localName, name, attributes);
         }
     }
+
 }

Modified: cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/DataChannelProjectSaverTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/DataChannelProjectSaverTest.java?rev=890131&r1=890130&r2=890131&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/DataChannelProjectSaverTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/java/org/apache/cayenne/project2/DataChannelProjectSaverTest.java Sun Dec 13 22:17:19 2009
@@ -74,15 +74,15 @@
 
         File rootFile = new File(outFile, "cayenne-PROJECT2.xml");
         assertTrue(rootFile.exists());
+        assertTrue(rootFile.length() > 0);
 
         File map1File = new File(outFile, "testProjectMap2_1.map.xml");
         assertTrue(map1File.exists());
+        assertTrue(map1File.length() > 0);
 
         File map2File = new File(outFile, "testProjectMap2_2.map.xml");
         assertTrue(map2File.exists());
-
-        File node1File = new File(outFile, "testProjectNode2.driver.xml");
-        assertTrue(node1File.exists());
+        assertTrue(map2File.length() > 0);
     }
 
     public void testSaveAs_RecoverFromSaveError() throws Exception {

Modified: cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/cayenne-PROJECT1.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/cayenne-PROJECT1.xml?rev=890131&r1=890130&r2=890131&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/cayenne-PROJECT1.xml (original)
+++ cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/cayenne-PROJECT1.xml Sun Dec 13 22:17:19 2009
@@ -1,10 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <domain name="DefaultDomain" project-version="6">
-	<map name="testProjectMap1_1" location="testProjectMap1_1.map.xml" />
-	<map name="testProjectMap1_2" location="testProjectMap1_2.map.xml" />
 
-	<node name="testProjectNode1" datasource="testProjectNode1.driver.xml"
+	<map name="testProjectMap1_1" />
+	<map name="testProjectMap1_2" />
+
+	<node name="testProjectNode1"
 		adapter="org.example.test.Adapter" factory="org.example.test.DataSourceFactory">
+		<data-source>
+			<connectionPool min="1" max="1" />
+			<login />
+		</data-source>
 		<map-ref name="testProjectMap1_1" />
 	</node>
 </domain>

Modified: cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/cayenne-PROJECT2.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/cayenne-PROJECT2.xml?rev=890131&r1=890130&r2=890131&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/cayenne-PROJECT2.xml (original)
+++ cayenne/main/trunk/framework/cayenne-project-unpublished/src/test/resources/org/apache/cayenne/project2/cayenne-PROJECT2.xml Sun Dec 13 22:17:19 2009
@@ -1,10 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <domain name="DefaultDomain" project-version="6">
-	<map name="testProjectMap2_1" location="testProjectMap2_1.map.xml" />
-	<map name="testProjectMap2_2" location="testProjectMap2_2.map.xml" />
 
-	<node name="testProjectNode2" datasource="testProjectNode2.driver.xml"
-		adapter="org.example.test.Adapter" factory="org.apache.cayenne.configuration.XMLPoolingDataSourceFactory">
+	<map name="testProjectMap2_1" />
+	<map name="testProjectMap2_2" />
+
+	<node name="testProjectNode2" adapter="org.example.test.Adapter"
+		factory="org.apache.cayenne.configuration.XMLPoolingDataSourceFactory">
 		<map-ref name="testProjectMap2_1" />
+		<data-source>
+			<connectionPool min="1" max="1" />
+			<login />
+		</data-source>
 	</node>
 </domain>

Modified: cayenne/main/trunk/itests/cayenne-di-stack/src/main/resources/cayenne-DEFAULT.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/itests/cayenne-di-stack/src/main/resources/cayenne-DEFAULT.xml?rev=890131&r1=890130&r2=890131&view=diff
==============================================================================
--- cayenne/main/trunk/itests/cayenne-di-stack/src/main/resources/cayenne-DEFAULT.xml (original)
+++ cayenne/main/trunk/itests/cayenne-di-stack/src/main/resources/cayenne-DEFAULT.xml Sun Dec 13 22:17:19 2009
@@ -1,10 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <domain name="DefaultDomain" project-version="3.0.0.1">
-	<map name="DefaultMap" location="DefaultMap.map.xml"/>
 
-	<node name="PoolingDSNode"
-		 datasource="PoolingDSNode.driver.xml"
-		 factory="org.apache.cayenne.configuration.XMLPoolingDataSourceFactory">
-			<map-ref name="DefaultMap"/>
-	 </node>
+	<map name="DefaultMap" />
+
+	<node name="PoolingDSNode">
+		<map-ref name="DefaultMap" />
+		<data-source>
+			<driver value="org.hsqldb.jdbcDriver" />
+			<url value="jdbc:hsqldb:mem:DEFAULT" />
+			<connectionPool min="1" max="1" />
+			<login />
+		</data-source>
+	</node>
 </domain>