Author: aadamchik
Date: Sun Nov 24 13:27:36 2013
New Revision: 1544970
URL: http://svn.apache.org/r1544970
Log:
CAY-1882 Porting to OSGi environment
fixing passwordencoder loading
Modified:
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoader.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/conn/DataSourceInfo.java
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ManyToManyCandidateEntityTest.java
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoaderTest.java
Modified:
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoader.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoader.java?rev=1544970&r1=1544969&r2=1544970&view=diff
==============================================================================
---
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoader.java
(original)
+++
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoader.java
Sun Nov 24 13:27:36 2013
@@ -27,6 +27,7 @@ import java.net.URL;
import org.apache.cayenne.ConfigurationException;
import org.apache.cayenne.conn.DataSourceInfo;
+import org.apache.cayenne.di.AdhocObjectFactory;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.resource.Resource;
@@ -116,6 +117,9 @@ public class XMLDataChannelDescriptorLoa
@Inject
protected ConfigurationNameMapper nameMapper;
+
+ @Inject
+ protected AdhocObjectFactory objectFactory;
public ConfigurationTree<DataChannelDescriptor> load(Resource
configurationResource)
throws ConfigurationException {
@@ -359,8 +363,11 @@ public class XMLDataChannelDescriptorLoa
passwordSource = passwordSource.replaceAll("\\{\\}",
encoderKey);
}
- PasswordEncoding passwordEncoder = dataSourceDescriptor
- .getPasswordEncoder();
+ String encoderType =
dataSourceDescriptor.getPasswordEncoderClass();
+ PasswordEncoding passwordEncoder = null;
+ if (encoderType != null) {
+ passwordEncoder =
objectFactory.newInstance(PasswordEncoding.class, encoderType);
+ }
if (passwordLocation != null) {
if (passwordLocation
Modified:
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/conn/DataSourceInfo.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/conn/DataSourceInfo.java?rev=1544970&r1=1544969&r2=1544970&view=diff
==============================================================================
---
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/conn/DataSourceInfo.java
(original)
+++
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/conn/DataSourceInfo.java
Sun Nov 24 13:27:36 2013
@@ -23,6 +23,7 @@ import java.io.Serializable;
import org.apache.cayenne.configuration.PasswordEncoding;
import org.apache.cayenne.configuration.PlainTextPasswordEncoder;
+import org.apache.cayenne.di.DIRuntimeException;
import org.apache.cayenne.util.Util;
import org.apache.cayenne.util.XMLEncoder;
import org.apache.cayenne.util.XMLSerializable;
@@ -225,6 +226,10 @@ public class DataSourceInfo implements C
return dataSourceUrl;
}
+ /**
+ * @deprecated since 3.2 as class loading should not happen here.
+ */
+ @Deprecated
public PasswordEncoding getPasswordEncoder() {
try {
return (PasswordEncoding) Util
@@ -240,11 +245,11 @@ public class DataSourceInfo implements C
catch (ClassNotFoundException e) {
; // Swallow it -- no need to throw/etc.
}
+ catch (DIRuntimeException e) {
+ ; // Swallow it -- no need to throw/etc.
+ }
- logger.error("Failed to obtain specified Password Encoder '"
- + getPasswordEncoderClass()
- + "' -- please check CLASSPATH");
-
+ logger.error("Failed to obtain specified Password Encoder '" +
getPasswordEncoderClass() + "'");
return null;
}
Modified:
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ManyToManyCandidateEntityTest.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ManyToManyCandidateEntityTest.java?rev=1544970&r1=1544969&r2=1544970&view=diff
==============================================================================
---
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ManyToManyCandidateEntityTest.java
(original)
+++
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ManyToManyCandidateEntityTest.java
Sun Nov 24 13:27:36 2013
@@ -19,6 +19,7 @@
package org.apache.cayenne.access;
import junit.framework.TestCase;
+
import org.apache.cayenne.configuration.ConfigurationNameMapper;
import org.apache.cayenne.configuration.ConfigurationTree;
import org.apache.cayenne.configuration.DataChannelDescriptor;
@@ -26,10 +27,12 @@ import org.apache.cayenne.configuration.
import org.apache.cayenne.configuration.DefaultConfigurationNameMapper;
import org.apache.cayenne.configuration.XMLDataChannelDescriptorLoader;
import org.apache.cayenne.configuration.XMLDataMapLoader;
+import org.apache.cayenne.di.AdhocObjectFactory;
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.di.spi.DefaultAdhocObjectFactory;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.Relationship;
@@ -47,9 +50,9 @@ public class ManyToManyCandidateEntityTe
Module testModule = new Module() {
public void configure(Binder binder) {
+
binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
- binder.bind(ConfigurationNameMapper.class).to(
- DefaultConfigurationNameMapper.class);
+
binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
}
};
Modified:
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoaderTest.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoaderTest.java?rev=1544970&r1=1544969&r2=1544970&view=diff
==============================================================================
---
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoaderTest.java
(original)
+++
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoaderTest.java
Sun Nov 24 13:27:36 2013
@@ -25,29 +25,34 @@ import java.util.Iterator;
import junit.framework.TestCase;
import org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.di.AdhocObjectFactory;
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.di.spi.DefaultAdhocObjectFactory;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.resource.URLResource;
public class XMLDataChannelDescriptorLoaderTest extends TestCase {
- public void testLoadEmpty() {
-
- // create dependencies
+ private Injector injector;
+ @Override
+ protected void setUp() throws Exception {
Module testModule = new Module() {
public void configure(Binder binder) {
+
binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
- binder.bind(ConfigurationNameMapper.class).to(
- DefaultConfigurationNameMapper.class);
+
binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
}
};
- Injector injector = DIBootstrap.createInjector(testModule);
+ this.injector = DIBootstrap.createInjector(testModule);
+ }
+
+ public void testLoadEmpty() {
// create and initialize loader instance to test
XMLDataChannelDescriptorLoader loader = new
XMLDataChannelDescriptorLoader();
@@ -65,19 +70,6 @@ public class XMLDataChannelDescriptorLoa
public void testLoad_MissingConfig() throws Exception {
- // create dependencies
-
- Module testModule = new Module() {
-
- public void configure(Binder binder) {
- binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
- binder.bind(ConfigurationNameMapper.class).to(
- DefaultConfigurationNameMapper.class);
- }
- };
-
- Injector injector = DIBootstrap.createInjector(testModule);
-
// create and initialize loader instance to test
XMLDataChannelDescriptorLoader loader = new
XMLDataChannelDescriptorLoader();
injector.injectMembers(loader);
@@ -85,27 +77,13 @@ public class XMLDataChannelDescriptorLoa
try {
loader.load(new URLResource(new URL("file:///no_such_resource")));
fail("No exception was thrown on bad absent config name");
- }
- catch (ConfigurationException e) {
+ } catch (ConfigurationException e) {
// expected
}
}
public void testLoadDataMap() {
- // create dependencies
-
- Module testModule = new Module() {
-
- public void configure(Binder binder) {
- binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
- binder.bind(ConfigurationNameMapper.class).to(
- DefaultConfigurationNameMapper.class);
- }
- };
-
- Injector injector = DIBootstrap.createInjector(testModule);
-
// create and initialize loader instance to test
XMLDataChannelDescriptorLoader loader = new
XMLDataChannelDescriptorLoader();
injector.injectMembers(loader);
@@ -127,19 +105,6 @@ public class XMLDataChannelDescriptorLoa
public void testLoadDataEverything() {
- // create dependencies
-
- Module testModule = new Module() {
-
- public void configure(Binder binder) {
- binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
- binder.bind(ConfigurationNameMapper.class).to(
- DefaultConfigurationNameMapper.class);
- }
- };
-
- Injector injector = DIBootstrap.createInjector(testModule);
-
// create and initialize loader instance to test
XMLDataChannelDescriptorLoader loader = new
XMLDataChannelDescriptorLoader();
injector.injectMembers(loader);
@@ -177,10 +142,8 @@ public class XMLDataChannelDescriptorLoa
assertEquals(1, node1.getDataSourceDescriptor().getMaxConnections());
assertEquals("org.example.test.Adapter", node1.getAdapterType());
- assertEquals("org.example.test.DataSourceFactory", node1
- .getDataSourceFactoryType());
- assertEquals("org.example.test.SchemaUpdateStartegy", node1
- .getSchemaUpdateStrategyType());
+ assertEquals("org.example.test.DataSourceFactory",
node1.getDataSourceFactoryType());
+ assertEquals("org.example.test.SchemaUpdateStartegy",
node1.getSchemaUpdateStrategyType());
assertNotNull(node1.getDataMapNames());
assertEquals(1, node1.getDataMapNames().size());