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());


Reply via email to