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>
