Author: dblevins
Date: Tue Apr 21 18:18:24 2009
New Revision: 767242

URL: http://svn.apache.org/viewvc?rev=767242&view=rev
Log:
Fix for OPENEJB-1021: NPE in AppInfoBuilder.configureWebserviceSecurity()
Not sure if it's a good fix

Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java?rev=767242&r1=767241&r2=767242&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
 Tue Apr 21 18:18:24 2009
@@ -76,6 +76,7 @@
 import java.util.ArrayList;
 import java.util.Set;
 import java.util.LinkedHashSet;
+import java.util.HashMap;
 import java.net.URL;
 import java.io.File;
 import java.io.IOException;
@@ -250,29 +251,40 @@
 
         OpenejbJarType openejbJarType = (OpenejbJarType) altDD;
 
+
+        Map<String, org.apache.openejb.jee.oejb2.EnterpriseBean> beans = new 
HashMap<String, org.apache.openejb.jee.oejb2.EnterpriseBean>();
+        for (org.apache.openejb.jee.oejb2.EnterpriseBean enterpriseBean : 
openejbJarType.getEnterpriseBeans()) {
+            beans.put(enterpriseBean.getEjbName(), enterpriseBean);
+        }
+
         List<PortInfo> infoList = ejbJarInfo.portInfos;
         for (PortInfo portInfo : infoList) {
-            String link = portInfo.serviceLink;
 
-            List<org.apache.openejb.jee.oejb2.EnterpriseBean> enterpriseBeans 
= openejbJarType.getEnterpriseBeans();
-            for (org.apache.openejb.jee.oejb2.EnterpriseBean enterpriseBean : 
enterpriseBeans) {
-                if (link.equals(enterpriseBean.getEjbName()) && enterpriseBean 
instanceof SessionBeanType) {
-                    SessionBeanType sessionBean = (SessionBeanType) 
enterpriseBean;
-                    WebServiceSecurityType webServiceSecurityType = 
sessionBean.getWebServiceSecurity();
-                    portInfo.realmName = webServiceSecurityType.getRealmName();
-                    portInfo.securityRealmName = 
webServiceSecurityType.getSecurityRealmName();
-                    if (webServiceSecurityType.getTransportGuarantee() != 
null) {
-                        portInfo.transportGuarantee = 
webServiceSecurityType.getTransportGuarantee().value();
-                    } else {
-                        portInfo.transportGuarantee = "NONE";
-                    }
+            org.apache.openejb.jee.oejb2.EnterpriseBean bean = 
beans.get(portInfo.serviceLink);
 
-                    if (webServiceSecurityType.getAuthMethod() != null) {
-                        portInfo.authMethod = 
webServiceSecurityType.getAuthMethod().value();
-                    } else {
-                        portInfo.authMethod = "NONE";
-                    }
-                }
+            if (bean == null) continue; /* TODO: throw something? */
+            if (!(bean instanceof SessionBeanType)) continue; /* TODO: throw 
something? */
+
+            SessionBeanType sessionBean = (SessionBeanType) bean;
+            WebServiceSecurityType webServiceSecurityType = 
sessionBean.getWebServiceSecurity();
+
+            if (webServiceSecurityType == null) {
+                //TODO: this ok?
+                continue;
+            }
+
+            portInfo.realmName = webServiceSecurityType.getRealmName();
+            portInfo.securityRealmName = 
webServiceSecurityType.getSecurityRealmName();
+            if (webServiceSecurityType.getTransportGuarantee() != null) {
+                portInfo.transportGuarantee = 
webServiceSecurityType.getTransportGuarantee().value();
+            } else {
+                portInfo.transportGuarantee = "NONE";
+            }
+
+            if (webServiceSecurityType.getAuthMethod() != null) {
+                portInfo.authMethod = 
webServiceSecurityType.getAuthMethod().value();
+            } else {
+                portInfo.authMethod = "NONE";
             }
         }
     }


Reply via email to