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>