Author: rsivaram
Date: Fri Mar 14 13:14:43 2008
New Revision: 637243

URL: http://svn.apache.org/viewvc?rev=637243&view=rev
Log:
Use model resolver to load Jaas callback class

Modified:
    
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySamplesUsingOldDomainTestCase.java
    
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiBundleActivator.java
    
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicy.java
    
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicyHandler.java
    
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicyProcessor.java
    
incubator/tuscany/java/sca/samples/calculator-implementation-policies/src/main/java/calculator/CalculatorClient.java
    
incubator/tuscany/java/sca/samples/calculator-implementation-policies/src/test/java/calculator/CalculatorTestCase.java

Modified: 
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySamplesUsingOldDomainTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySamplesUsingOldDomainTestCase.java?rev=637243&r1=637242&r2=637243&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySamplesUsingOldDomainTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySamplesUsingOldDomainTestCase.java
 Fri Mar 14 13:14:43 2008
@@ -36,7 +36,8 @@
         
         "binding-notification-consumer",
         "binding-notification-producer",
-        "calculator",           
+        "calculator",
+        "calculator-implementation-policies",
         "calculator-rmi-reference",
         "calculator-rmi-service",
         "helloworld-ws-service",
@@ -49,10 +50,6 @@
         "simple-callback",
         "simple-callback-ws",
         "supplychain"
-           
-
-        // FIXME: Policy security Jaas callback classloading
-        // "calculator-implementation-policies",  
         
         // FIXME: Groovy classloading TUSCANY-2083
         // "calculator-script",  

Modified: 
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiBundleActivator.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiBundleActivator.java?rev=637243&r1=637242&r2=637243&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiBundleActivator.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiBundleActivator.java
 Fri Mar 14 13:14:43 2008
@@ -176,16 +176,17 @@
                @Override
                public Class<?> loadClass(String className) throws 
ClassNotFoundException {
                        Class<?> clazz = null;
-                       for (Bundle bundle : bundles) {
-                               try {
-                                       clazz = bundle.loadClass(className);
-                                       break;
-                               } catch (ClassNotFoundException e) {
-                               } catch (NoClassDefFoundError e) {
+                       synchronized (this) {
+                               for (Bundle bundle : bundles) {
+                                       try {
+                                               clazz = 
bundle.loadClass(className);
+                                               break;
+                                       } catch (ClassNotFoundException e) {
+                                       } catch (NoClassDefFoundError e) {
+                                       }
+
                                }
-                               
-                       }       
-                       
+                       }                       
                        if (clazz != null) {
                            return clazz;
                        }
@@ -199,14 +200,16 @@
                public Enumeration<URL> getResources(String resName) throws 
IOException {
                        HashSet<URL> urlSet = new HashSet<URL>();
                        Enumeration<URL> urls = null;
-                       for (Bundle bundle : bundles) {
-                           urls = bundle.getResources(resName);                
            
-                           if (urls != null) {
-                               while (urls.hasMoreElements()) {
-                                   urlSet.add(urls.nextElement());
-                               }
-                           }
-                       }
+                       synchronized (this) {
+                               for (Bundle bundle : bundles) {
+                                       urls = bundle.getResources(resName);
+                                       if (urls != null) {
+                                               while (urls.hasMoreElements()) {
+                                                       
urlSet.add(urls.nextElement());
+                                               }
+                                       }
+                               }
+                       }                       
                        if (urlSet.size() > 0)
                                return Collections.enumeration(urlSet);
                        return super.getResources(resName);
@@ -215,11 +218,13 @@
                @Override
                public URL getResource(String resName) {
                        URL url = null;
-                       for (Bundle bundle : bundles) {
-                           url = bundle.getResource(resName);
-                           if (url != null)
-                               return url;
-                       }       
+                       synchronized (this) {
+                               for (Bundle bundle : bundles) {
+                                       url = bundle.getResource(resName);
+                                       if (url != null)
+                                               return url;
+                               }
+                       }                       
                        return super.getResource(resName);
                }
 

Modified: 
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicy.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicy.java?rev=637243&r1=637242&r2=637243&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicy.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicy.java
 Fri Mar 14 13:14:43 2008
@@ -29,6 +29,7 @@
 
     private String configurationName = "other";
     private String callbackHandlerClassName;
+    private Class<?> callbackHandlerClass;
 
     public String getCallbackHandlerClassName() {
         return callbackHandlerClassName;
@@ -38,6 +39,14 @@
         this.callbackHandlerClassName = callbackHandlerClassName;
     }
 
+    public Class<?> getCallbackHandlerClass() {
+        return callbackHandlerClass;
+    }
+
+    public void setCallbackHandlerClass(Class<?> callbackHandlerClass) {
+        this.callbackHandlerClass = callbackHandlerClass;
+    }
+    
     public QName getSchemaName() {
         return NAME;
     }

Modified: 
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicyHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicyHandler.java?rev=637243&r1=637242&r2=637243&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicyHandler.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicyHandler.java
 Fri Mar 14 13:14:43 2008
@@ -47,7 +47,7 @@
         try {
             JaasAuthenticationPolicy policy = 
(JaasAuthenticationPolicy)applicablePolicySet.getPolicies().get(0);
             CallbackHandler callbackHandler =
-                
(CallbackHandler)Class.forName(policy.getCallbackHandlerClassName()).newInstance();
+                
(CallbackHandler)policy.getCallbackHandlerClass().newInstance();
             LoginContext lc = new LoginContext(policy.getConfigurationName(), 
callbackHandler);
             lc.login();
         } catch (Exception e) {

Modified: 
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicyProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicyProcessor.java?rev=637243&r1=637242&r2=637243&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicyProcessor.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/security/jaas/JaasAuthenticationPolicyProcessor.java
 Fri Mar 14 13:14:43 2008
@@ -29,6 +29,7 @@
 import org.apache.tuscany.sca.assembly.xml.Constants;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import 
org.apache.tuscany.sca.contribution.service.ContributionResolveException;
@@ -111,8 +112,17 @@
         return JaasAuthenticationPolicy.class;
     }
 
-    public void resolve(JaasAuthenticationPolicy arg0, ModelResolver arg1) 
throws ContributionResolveException {
+    public void resolve(JaasAuthenticationPolicy policy, ModelResolver 
resolver) throws ContributionResolveException {
 
+         if (policy.getCallbackHandlerClassName() != null) {
+             ClassReference classReference = new 
ClassReference(policy.getCallbackHandlerClassName());
+             classReference = resolver.resolveModel(ClassReference.class, 
classReference);
+             Class callbackClass = classReference.getJavaClass();
+             if (callbackClass == null) {
+                 throw new ContributionResolveException(new 
ClassNotFoundException(policy.getCallbackHandlerClassName()));
+             }
+             policy.setCallbackHandlerClass(callbackClass);
+         }
     }
     
 }

Modified: 
incubator/tuscany/java/sca/samples/calculator-implementation-policies/src/main/java/calculator/CalculatorClient.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-implementation-policies/src/main/java/calculator/CalculatorClient.java?rev=637243&r1=637242&r2=637243&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/samples/calculator-implementation-policies/src/main/java/calculator/CalculatorClient.java
 (original)
+++ 
incubator/tuscany/java/sca/samples/calculator-implementation-policies/src/main/java/calculator/CalculatorClient.java
 Fri Mar 14 13:14:43 2008
@@ -33,7 +33,8 @@
             Configuration secConf = Configuration.getConfiguration();
         } catch ( java.lang.SecurityException e ) {
             if ( e.getMessage().equals("Unable to locate a login 
configuration") ) {
-                System.setProperty("java.security.auth.login.config", 
"target/classes/CalculatorJass.config");
+                System.setProperty("java.security.auth.login.config", 
+                       
CalculatorClient.class.getClassLoader().getResource("CalculatorJass.config").toString());
             } else {
                 throw e;
             }

Modified: 
incubator/tuscany/java/sca/samples/calculator-implementation-policies/src/test/java/calculator/CalculatorTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-implementation-policies/src/test/java/calculator/CalculatorTestCase.java?rev=637243&r1=637242&r2=637243&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/samples/calculator-implementation-policies/src/test/java/calculator/CalculatorTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/samples/calculator-implementation-policies/src/test/java/calculator/CalculatorTestCase.java
 Fri Mar 14 13:14:43 2008
@@ -40,7 +40,8 @@
         } catch ( java.lang.SecurityException e ) {
                //FIXME: We should not compare exception strings as they are 
localized in various languages
             //if ( e.getMessage().equals("Unable to locate a login 
configuration") ) {
-                System.setProperty("java.security.auth.login.config", 
"target/classes/CalculatorJass.config");
+                System.setProperty("java.security.auth.login.config", 
+                       
this.getClass().getClassLoader().getResource("CalculatorJass.config").toString());
             //} else {
             //    throw e;
             //}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to