djencks     2005/04/18 15:05:16

  Modified:    modules/openejb-builder/src/java/org/openejb/deployment
                        AbstractContainerBuilder.java CMPEntityBuilder.java
                        ContainerSecurityBuilder.java EntityBuilder.java
                        MDBContainerBuilder.java MdbBuilder.java
                        OpenEJBModuleBuilder.java SecureBuilder.java
                        SessionBuilder.java
  Log:

  GERONIMO-634 Policy context per ejb module, not per ejb
  
  Revision  Changes    Path
  1.12      +11 -1     
openejb/modules/openejb-builder/src/java/org/openejb/deployment/AbstractContainerBuilder.java
  
  Index: AbstractContainerBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/AbstractContainerBuilder.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- AbstractContainerBuilder.java     15 Apr 2005 05:36:53 -0000      1.11
  +++ AbstractContainerBuilder.java     18 Apr 2005 19:05:14 -0000      1.12
  @@ -100,6 +100,7 @@
       private boolean doAsCurrentCaller = false;
       private boolean securityEnabled = false;
       private boolean useContextHandler = false;
  +    private String policycontextId;
       private Map componentContext;
       private Set unshareableResources;
       private Set applicationManagedSecurityResources;
  @@ -238,6 +239,14 @@
           this.useContextHandler = useContextHandler;
       }
   
  +    public void setPolicyContextID(String policyContextID) {
  +        this.policycontextId = policyContextID;
  +    }
  +
  +    public String getPolicycontextId() {
  +        return policycontextId;
  +    }
  +
       public Map getComponentContext() {
           return componentContext;
       }
  @@ -355,6 +364,7 @@
           interceptorBuilder.setDoAsCurrentCaller(doAsCurrentCaller);
           interceptorBuilder.setSecurityEnabled(securityEnabled);
           interceptorBuilder.setUseContextHandler(useContextHandler);
  +        interceptorBuilder.setPolicyContextId(policycontextId);
           interceptorBuilder.setTransactionPolicyManager(new 
TransactionPolicyManager(buildTransactionPolicies(transactionPolicySource, 
signatures)));
           interceptorBuilder.setPermissionManager(new 
PermissionManager(ejbName, signatures));
           return interceptorBuilder;
  
  
  
  1.28      +6 -5      
openejb/modules/openejb-builder/src/java/org/openejb/deployment/CMPEntityBuilder.java
  
  Index: CMPEntityBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/CMPEntityBuilder.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- CMPEntityBuilder.java     15 Apr 2005 05:36:53 -0000      1.27
  +++ CMPEntityBuilder.java     18 Apr 2005 19:05:15 -0000      1.28
  @@ -75,6 +75,7 @@
   import org.apache.geronimo.xbeans.j2ee.EntityBeanType;
   import org.apache.geronimo.xbeans.j2ee.JavaTypeType;
   import org.apache.geronimo.xbeans.j2ee.QueryType;
  +import org.apache.geronimo.security.jacc.ComponentPermissions;
   import org.openejb.entity.cmp.PrimaryKeyGeneratorWrapper;
   import org.openejb.proxy.EJBProxyFactory;
   import org.openejb.transaction.TransactionPolicySource;
  @@ -117,7 +118,7 @@
           super(builder);
       }
   
  -    protected void buildBeans(EARContext earContext, J2eeContext 
moduleJ2eeContext, ClassLoader cl, EJBModule ejbModule, EJBSchema ejbSchema, 
SQLSchema sqlSchema, GlobalSchema globalSchema, Map openejbBeans, 
TransactionPolicyHelper transactionPolicyHelper, EnterpriseBeansType 
enterpriseBeans, TransactionManagerDelegate tmDelegate) throws 
DeploymentException {
  +    protected void buildBeans(EARContext earContext, J2eeContext 
moduleJ2eeContext, ClassLoader cl, EJBModule ejbModule, EJBSchema ejbSchema, 
SQLSchema sqlSchema, GlobalSchema globalSchema, Map openejbBeans, 
TransactionPolicyHelper transactionPolicyHelper, EnterpriseBeansType 
enterpriseBeans, TransactionManagerDelegate tmDelegate, ComponentPermissions 
componentPermissions, String policyContextID) throws DeploymentException {
           // CMP Entity Beans
           EntityBeanType[] entityBeans = enterpriseBeans.getEntityArray();
           for (int i = 0; i < entityBeans.length; i++) {
  @@ -130,7 +131,7 @@
               OpenejbEntityBeanType openejbEntityBean = 
(OpenejbEntityBeanType) openejbBeans.get(getString(entityBean.getEjbName()));
               ObjectName entityObjectName = 
super.createEJBObjectName(moduleJ2eeContext, entityBean);
   
  -            GBeanData entityGBean = createBean(earContext, ejbModule, 
entityObjectName, entityBean, openejbEntityBean, ejbSchema, sqlSchema, 
globalSchema, transactionPolicyHelper, cl, tmDelegate);
  +            GBeanData entityGBean = createBean(earContext, ejbModule, 
entityObjectName, entityBean, openejbEntityBean, ejbSchema, sqlSchema, 
globalSchema, transactionPolicyHelper, cl, tmDelegate, componentPermissions, 
policyContextID);
   
               earContext.addGBean(entityGBean);
           }
  @@ -693,7 +694,7 @@
       }
   
   
  -    public GBeanData createBean(EARContext earContext, EJBModule ejbModule, 
ObjectName containerObjectName, EntityBeanType entityBean, 
OpenejbEntityBeanType openejbEntityBean, EJBSchema ejbSchema, SQLSchema 
sqlSchema, GlobalSchema globalSchema, TransactionPolicyHelper 
transactionPolicyHelper, ClassLoader cl, TransactionManagerDelegate tmDelegate) 
throws DeploymentException {
  +    public GBeanData createBean(EARContext earContext, EJBModule ejbModule, 
ObjectName containerObjectName, EntityBeanType entityBean, 
OpenejbEntityBeanType openejbEntityBean, EJBSchema ejbSchema, SQLSchema 
sqlSchema, GlobalSchema globalSchema, TransactionPolicyHelper 
transactionPolicyHelper, ClassLoader cl, TransactionManagerDelegate tmDelegate, 
ComponentPermissions componentPermissions, String policyContextID) throws 
DeploymentException {
           String ejbName = getString(entityBean.getEjbName());
           CMPContainerBuilder builder = new CMPContainerBuilder();
           builder.setClassLoader(cl);
  @@ -713,7 +714,7 @@
           
builder.setNonTransactedTimerName(earContext.getNonTransactedTimerName());
           builder.setReentrant(entityBean.getReentrant().getBooleanValue());
   
  -        addSecurity(earContext, ejbName, builder, cl, ejbModule, entityBean);
  +        addSecurity(earContext, ejbName, builder, cl, ejbModule, entityBean, 
componentPermissions, policyContextID);
   
           processEnvironmentRefs(builder, earContext, ejbModule, entityBean, 
openejbEntityBean, null, cl);
   
  
  
  
  1.15      +12 -12    
openejb/modules/openejb-builder/src/java/org/openejb/deployment/ContainerSecurityBuilder.java
  
  Index: ContainerSecurityBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/ContainerSecurityBuilder.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ContainerSecurityBuilder.java     15 Apr 2005 05:36:53 -0000      1.14
  +++ ContainerSecurityBuilder.java     18 Apr 2005 19:05:15 -0000      1.15
  @@ -52,7 +52,6 @@
   import java.security.PermissionCollection;
   import java.security.Permissions;
   import java.util.Enumeration;
  -import java.util.HashMap;
   import java.util.Map;
   import javax.security.auth.Subject;
   import javax.security.jacc.EJBMethodPermission;
  @@ -73,7 +72,7 @@
   
   class ContainerSecurityBuilder {
   
  -    public void setDetails(SecurityIdentityType securityIdentity, 
SecurityConfiguration securityConfiguration, SecureBuilder builder) throws 
DeploymentException {
  +    public void setDetails(SecurityIdentityType securityIdentity, 
SecurityConfiguration securityConfiguration, String policyContextID, 
SecureBuilder builder) throws DeploymentException {
           builder.setSecurityEnabled(true);
           
builder.setDoAsCurrentCaller(securityConfiguration.isDoAsCurrentCaller());
           
builder.setUseContextHandler(securityConfiguration.isUseContextHandler());
  @@ -90,6 +89,7 @@
            * Add the default subject
            */
           
builder.setDefaultPrincipal(securityConfiguration.getDefaultPrincipal());
  +        builder.setPolicyContextID(policyContextID);
       }
   
       /**
  @@ -104,18 +104,20 @@
        * @param assemblyDescriptor the assembly descriptor
        * @param EJBName            the name of the EJB
        * @param roleReferences     the EJB's role references
  +     * @param componentPermissions
        * @throws DeploymentException if any constraints are violated
        */
  -    public ComponentPermissions fillContainerBuilderSecurity(String 
defaultRole,
  -                                                Permissions notAssigned,
  -                                                AssemblyDescriptorType 
assemblyDescriptor,
  -                                                String EJBName,
  -                                                SecurityRoleRefType[] 
roleReferences)
  +    public void addComponentPermissions(String defaultRole,
  +                                        Permissions notAssigned,
  +                                        AssemblyDescriptorType 
assemblyDescriptor,
  +                                        String EJBName,
  +                                        SecurityRoleRefType[] roleReferences,
  +                                        ComponentPermissions 
componentPermissions)
               throws DeploymentException {
   
  -        PermissionCollection uncheckedPermissions = new Permissions();
  -        PermissionCollection excludedPermissions = new Permissions();
  -        Map rolePermissions = new HashMap();
  +        PermissionCollection uncheckedPermissions = 
componentPermissions.getUncheckedPermissions();
  +        PermissionCollection excludedPermissions = 
componentPermissions.getExcludedPermissions();
  +        Map rolePermissions = componentPermissions.getRolePermissions();
   
           /**
            * JACC v1.0 section 3.1.5.1
  @@ -230,8 +232,6 @@
               permissions.add(p);
           }
   
  -        ComponentPermissions componentPermissions = new 
ComponentPermissions(excludedPermissions, uncheckedPermissions, 
rolePermissions);
  -        return componentPermissions;
       }
   
       /**
  
  
  
  1.17      +12 -16    
openejb/modules/openejb-builder/src/java/org/openejb/deployment/EntityBuilder.java
  
  Index: EntityBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/EntityBuilder.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- EntityBuilder.java        16 Apr 2005 19:01:54 -0000      1.16
  +++ EntityBuilder.java        18 Apr 2005 19:05:15 -0000      1.17
  @@ -59,6 +59,7 @@
   import org.apache.geronimo.gbean.GBeanData;
   import org.apache.geronimo.j2ee.deployment.EARContext;
   import org.apache.geronimo.j2ee.deployment.EJBModule;
  +import org.apache.geronimo.j2ee.deployment.RefContext;
   import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
   import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
   import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
  @@ -88,7 +89,7 @@
           super(builder);
       }
   
  -    public void buildBeans(EARContext earContext, J2eeContext 
moduleJ2eeContext, ClassLoader cl, EJBModule ejbModule, Map openejbBeans, 
TransactionPolicyHelper transactionPolicyHelper, EnterpriseBeansType 
enterpriseBeans) throws DeploymentException {
  +    public void buildBeans(EARContext earContext, J2eeContext 
moduleJ2eeContext, ClassLoader cl, EJBModule ejbModule, Map openejbBeans, 
ComponentPermissions componentPermissions, TransactionPolicyHelper 
transactionPolicyHelper, EnterpriseBeansType enterpriseBeans, String 
policyContextID) throws DeploymentException {
           // BMP Entity Beans
           EntityBeanType[] bmpEntityBeans = enterpriseBeans.getEntityArray();
           for (int i = 0; i < bmpEntityBeans.length; i++) {
  @@ -101,12 +102,12 @@
               OpenejbEntityBeanType openejbEntityBean = 
(OpenejbEntityBeanType) 
openejbBeans.get(entityBean.getEjbName().getStringValue());
               ObjectName entityObjectName = 
createEJBObjectName(moduleJ2eeContext, entityBean);
   
  -            GBeanData entityGBean = createBean(earContext, ejbModule, 
entityObjectName, entityBean, openejbEntityBean, transactionPolicyHelper, cl);
  +            GBeanData entityGBean = createBean(earContext, ejbModule, 
entityObjectName, entityBean, openejbEntityBean, componentPermissions, 
transactionPolicyHelper, cl, policyContextID);
               earContext.addGBean(entityGBean);
           }
       }
   
  -    public GBeanData createBean(EARContext earContext, EJBModule ejbModule, 
ObjectName containerObjectName, EntityBeanType entityBean, 
OpenejbEntityBeanType openejbEntityBean, TransactionPolicyHelper 
transactionPolicyHelper, ClassLoader cl) throws DeploymentException {
  +    public GBeanData createBean(EARContext earContext, EJBModule ejbModule, 
ObjectName containerObjectName, EntityBeanType entityBean, 
OpenejbEntityBeanType openejbEntityBean, ComponentPermissions 
componentPermissions, TransactionPolicyHelper transactionPolicyHelper, 
ClassLoader cl, String policyContextID) throws DeploymentException {
           String ejbName = entityBean.getEjbName().getStringValue();
   
           BMPContainerBuilder builder = new BMPContainerBuilder();
  @@ -126,7 +127,7 @@
           
builder.setNonTransactedTimerName(earContext.getNonTransactedTimerName());
           builder.setReentrant(entityBean.getReentrant().getBooleanValue());
   
  -        addSecurity(earContext, ejbName, builder, cl, ejbModule, entityBean);
  +        addSecurity(earContext, ejbName, builder, cl, ejbModule, entityBean, 
componentPermissions, policyContextID);
   
           processEnvironmentRefs(builder, earContext, ejbModule, entityBean, 
openejbEntityBean, null, cl);
   
  @@ -193,7 +194,7 @@
           ENCConfigBuilder.setResourceEnvironment(earContext, 
ejbModule.getModuleURI(), builder, resourceRefs, openejbResourceRefs);
       }
   
  -    public void initContext(EARContext earContext, J2eeContext 
moduleJ2eeContext, URI moduleUri, ClassLoader cl, EnterpriseBeansType 
enterpriseBeans, Set interfaces) throws DeploymentException {
  +    public void initContext(RefContext refContext, J2eeContext 
moduleJ2eeContext, URI moduleUri, ClassLoader cl, EnterpriseBeansType 
enterpriseBeans, Set interfaces) throws DeploymentException {
           // Entity Beans
           EntityBeanType[] entityBeans = enterpriseBeans.getEntityArray();
           for (int i = 0; i < entityBeans.length; i++) {
  @@ -214,7 +215,7 @@
                   interfaces.add(home);
   
                   String objectName = entityObjectName.getCanonicalName();
  -                earContext.getRefContext().addEJBRemoteId(moduleUri, 
ejbName, objectName, false, home, remote);
  +                refContext.addEJBRemoteId(moduleUri, ejbName, objectName, 
false, home, remote);
               }
   
               // ejb-local-ref
  @@ -226,12 +227,12 @@
                   ENCConfigBuilder.assureEJBLocalHomeInterface(localHome, cl);
   
                   String objectName = entityObjectName.getCanonicalName();
  -                earContext.getRefContext().addEJBLocalId(moduleUri, ejbName, 
objectName, false, localHome, local);
  +                refContext.addEJBLocalId(moduleUri, ejbName, objectName, 
false, localHome, local);
               }
           }
       }
   
  -    protected void addSecurity(EARContext earContext, String ejbName, 
ContainerBuilder builder, ClassLoader cl, EJBModule ejbModule, EntityBeanType 
entityBean) throws DeploymentException {
  +    protected void addSecurity(EARContext earContext, String ejbName, 
ContainerBuilder builder, ClassLoader cl, EJBModule ejbModule, EntityBeanType 
entityBean, ComponentPermissions componentPermissions, String policyContextID) 
throws DeploymentException {
           SecurityConfiguration securityConfiguration = 
earContext.getSecurityConfiguration();
           if (securityConfiguration != null) {
               Permissions toBeChecked = new Permissions();
  @@ -241,18 +242,13 @@
               containerSecurityBuilder.addToPermissions(toBeChecked, ejbName, 
"Remote", builder.getRemoteInterfaceName(), cl);
               containerSecurityBuilder.addToPermissions(toBeChecked, ejbName, 
"Local", builder.getLocalInterfaceName(), cl);
               String defaultRole = securityConfiguration.getDefaultRole();
  -            ComponentPermissions componentPermissions = 
containerSecurityBuilder.fillContainerBuilderSecurity(defaultRole,
  +            containerSecurityBuilder.addComponentPermissions(defaultRole,
                       toBeChecked,
                       ((EjbJarType) 
ejbModule.getSpecDD()).getAssemblyDescriptor(),
                       ejbName,
  -                    entityBean.getSecurityRoleRefArray());
  +                    entityBean.getSecurityRoleRefArray(), 
componentPermissions);
   
  -            //TODO go back to the commented version when possible
  -//        String contextID = builder.getContainerId();
  -            String contextID = builder.getContainerId().replaceAll("[,: ]", 
"_");
  -            earContext.addSecurityContext(contextID, componentPermissions);
  -
  -            
containerSecurityBuilder.setDetails(entityBean.getSecurityIdentity(), 
securityConfiguration, builder);
  +            
containerSecurityBuilder.setDetails(entityBean.getSecurityIdentity(), 
securityConfiguration, policyContextID, builder);
           }
       }
   }
  
  
  
  1.9       +10 -1     
openejb/modules/openejb-builder/src/java/org/openejb/deployment/MDBContainerBuilder.java
  
  Index: MDBContainerBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/MDBContainerBuilder.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- MDBContainerBuilder.java  15 Apr 2005 05:36:53 -0000      1.8
  +++ MDBContainerBuilder.java  18 Apr 2005 19:05:15 -0000      1.9
  @@ -93,6 +93,7 @@
       private boolean doAsCurrentCaller = false;
       private boolean securityEnabled = false;
       private boolean useContextHandler = false;
  +    private String policyContextID;
       private Map componentContext;
       private Set unshareableResources;
       private Set applicationManagedSecurityResources;
  @@ -181,6 +182,14 @@
   
       public void setUseContextHandler(boolean useContextHandler) {
           this.useContextHandler = useContextHandler;
  +    }
  +
  +    public void setPolicyContextID(String policyContextID) {
  +        this.policyContextID = policyContextID;
  +    }
  +
  +    public String getPolicyContextID() {
  +        return policyContextID;
       }
   
       public Map getComponentContext() {
  
  
  
  1.19      +8 -11     
openejb/modules/openejb-builder/src/java/org/openejb/deployment/MdbBuilder.java
  
  Index: MdbBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/MdbBuilder.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- MdbBuilder.java   16 Apr 2005 19:01:54 -0000      1.18
  +++ MdbBuilder.java   18 Apr 2005 19:05:15 -0000      1.19
  @@ -95,7 +95,7 @@
           super(builder);
       }
   
  -    protected void buildBeans(EARContext earContext, J2eeContext 
moduleJ2eeContext, ClassLoader cl, EJBModule ejbModule, Map openejbBeans, 
TransactionPolicyHelper transactionPolicyHelper, EnterpriseBeansType 
enterpriseBeans) throws DeploymentException {
  +    protected void buildBeans(EARContext earContext, J2eeContext 
moduleJ2eeContext, ClassLoader cl, EJBModule ejbModule, Map openejbBeans, 
TransactionPolicyHelper transactionPolicyHelper, EnterpriseBeansType 
enterpriseBeans, ComponentPermissions componentPermissions, String 
policyContextID) throws DeploymentException {
           // Message Driven Beans
           MessageDrivenBeanType[] messageDrivenBeans = 
enterpriseBeans.getMessageDrivenArray();
           for (int i = 0; i < messageDrivenBeans.length; i++) {
  @@ -125,7 +125,7 @@
                       openejbMessageDrivenBean.getResourceAdapter(),
                       
messageDrivenBean.getMessagingType().getStringValue().trim(),
                       containerId);
  -            GBeanData messageDrivenGBean = createBean(earContext, ejbModule, 
containerId, messageDrivenBean, openejbMessageDrivenBean, activationSpecName, 
transactionPolicyHelper, cl);
  +            GBeanData messageDrivenGBean = createBean(earContext, ejbModule, 
containerId, messageDrivenBean, openejbMessageDrivenBean, activationSpecName, 
transactionPolicyHelper, cl, componentPermissions, policyContextID);
               messageDrivenGBean.setName(messageDrivenObjectName);
               earContext.addGBean(messageDrivenGBean);
           }
  @@ -153,7 +153,9 @@
                                    OpenejbMessageDrivenBeanType 
openejbMessageDrivenBean,
                                    ObjectName activationSpecWrapperName,
                                    TransactionPolicyHelper 
transactionPolicyHelper,
  -                                 ClassLoader cl) throws DeploymentException {
  +                                 ClassLoader cl,
  +                                 ComponentPermissions componentPermissions,
  +                                 String policyContextID) throws 
DeploymentException {
   
           if (openejbMessageDrivenBean == null) {
               throw new DeploymentException("openejb-jar.xml required to 
deploy an mdb");
  @@ -175,18 +177,13 @@
               Permissions toBeChecked = new Permissions();
               ContainerSecurityBuilder containerSecurityBuilder = new 
ContainerSecurityBuilder();
               String defaultRole = securityConfiguration.getDefaultRole();
  -            ComponentPermissions componentPermissions = 
containerSecurityBuilder.fillContainerBuilderSecurity(defaultRole,
  +            containerSecurityBuilder.addComponentPermissions(defaultRole,
                       toBeChecked,
                       ((EjbJarType) 
ejbModule.getSpecDD()).getAssemblyDescriptor(),
                       ejbName,
  -                    null);
  +                    null, componentPermissions);
   
  -            //TODO go back to the commented version when possible
  -//        String contextID = builder.getContainerId();
  -            String contextID = builder.getContainerId().replaceAll("[,: ]", 
"_");
  -            earContext.addSecurityContext(contextID, componentPermissions);
  -
  -            
containerSecurityBuilder.setDetails(messageDrivenBean.getSecurityIdentity(), 
securityConfiguration, builder);
  +            
containerSecurityBuilder.setDetails(messageDrivenBean.getSecurityIdentity(), 
securityConfiguration, policyContextID, builder);
           }
   
           UserTransactionImpl userTransaction;
  
  
  
  1.37      +16 -19    
openejb/modules/openejb-builder/src/java/org/openejb/deployment/OpenEJBModuleBuilder.java
  
  Index: OpenEJBModuleBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/OpenEJBModuleBuilder.java,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- OpenEJBModuleBuilder.java 15 Apr 2005 05:36:53 -0000      1.36
  +++ OpenEJBModuleBuilder.java 18 Apr 2005 19:05:16 -0000      1.37
  @@ -54,6 +54,7 @@
   import java.net.URI;
   import java.net.URISyntaxException;
   import java.net.URL;
  +import java.security.Permissions;
   import java.util.HashMap;
   import java.util.HashSet;
   import java.util.Map;
  @@ -84,11 +85,11 @@
   import org.apache.geronimo.schema.SchemaConversionUtils;
   import org.apache.geronimo.security.deployment.SecurityBuilder;
   import org.apache.geronimo.security.deployment.SecurityConfiguration;
  +import org.apache.geronimo.security.jacc.ComponentPermissions;
   import org.apache.geronimo.xbeans.geronimo.naming.GerResourceLocatorType;
   import org.apache.geronimo.xbeans.j2ee.EjbJarDocument;
   import org.apache.geronimo.xbeans.j2ee.EjbJarType;
   import org.apache.geronimo.xbeans.j2ee.EnterpriseBeansType;
  -import org.apache.geronimo.xbeans.j2ee.SecurityRoleType;
   import org.apache.xmlbeans.XmlException;
   import org.apache.xmlbeans.XmlObject;
   import org.openejb.EJBModuleImpl;
  @@ -309,8 +310,9 @@
           EnterpriseBeansType enterpriseBeans = ejbJar.getEnterpriseBeans();
   
           Set interfaces = new HashSet();
  -        sessionBuilder.initContext(earContext, moduleJ2eeContext, moduleUri, 
cl, enterpriseBeans, interfaces);
  -        entityBuilder.initContext(earContext, moduleJ2eeContext, moduleUri, 
cl, enterpriseBeans, interfaces);
  +        RefContext refContext = earContext.getRefContext();
  +        sessionBuilder.initContext(refContext, moduleJ2eeContext, moduleUri, 
cl, enterpriseBeans, interfaces);
  +        entityBuilder.initContext(refContext, moduleJ2eeContext, moduleUri, 
cl, enterpriseBeans, interfaces);
           mdbBuilder.initContext(cl, enterpriseBeans);
   
           if (skeletonGenerator != null) {
  @@ -498,28 +500,23 @@
   
           EnterpriseBeansType enterpriseBeans = ejbJar.getEnterpriseBeans();
   
  -        sessionBuilder.buildBeans(earContext, moduleJ2eeContext, cl, 
ejbModule, openejbBeans, transactionPolicyHelper, enterpriseBeans, listener);
  +        ComponentPermissions componentPermissions = new 
ComponentPermissions(new Permissions(), new Permissions(), new HashMap());
  +        //TODO go back to the commented version when possible
  +//          String contextID = ejbModuleObjectName.getCanonicalName();
  +        String policyContextID = 
ejbModuleObjectName.getCanonicalName().replaceAll("[,: ]", "_");
   
  -        entityBuilder.buildBeans(earContext, moduleJ2eeContext, cl, 
ejbModule, openejbBeans, transactionPolicyHelper, enterpriseBeans);
   
  -        cmpEntityBuilder.buildBeans(earContext, moduleJ2eeContext, cl, 
ejbModule, ejbSchema, sqlSchema, globalSchema, openejbBeans, 
transactionPolicyHelper, enterpriseBeans, tmDelegate);
  +        sessionBuilder.buildBeans(earContext, moduleJ2eeContext, cl, 
ejbModule, componentPermissions, openejbBeans, transactionPolicyHelper, 
enterpriseBeans, listener, policyContextID);
   
  -        mdbBuilder.buildBeans(earContext, moduleJ2eeContext, cl, ejbModule, 
openejbBeans, transactionPolicyHelper, enterpriseBeans);
  +        entityBuilder.buildBeans(earContext, moduleJ2eeContext, cl, 
ejbModule, openejbBeans, componentPermissions, transactionPolicyHelper, 
enterpriseBeans, policyContextID);
   
  -        return null;
  -    }
  +        cmpEntityBuilder.buildBeans(earContext, moduleJ2eeContext, cl, 
ejbModule, ejbSchema, sqlSchema, globalSchema, openejbBeans, 
transactionPolicyHelper, enterpriseBeans, tmDelegate, componentPermissions, 
policyContextID);
   
  -    private static Set collectRoleNames(EjbJarType ejbJar) {
  -        Set roleNames = new HashSet();
  +        mdbBuilder.buildBeans(earContext, moduleJ2eeContext, cl, ejbModule, 
openejbBeans, transactionPolicyHelper, enterpriseBeans, componentPermissions, 
policyContextID);
   
  -        if (ejbJar.isSetAssemblyDescriptor()) {
  -            SecurityRoleType[] securityRoles = 
ejbJar.getAssemblyDescriptor().getSecurityRoleArray();
  -            for (int i = 0; i < securityRoles.length; i++) {
  -                
roleNames.add(securityRoles[i].getRoleName().getStringValue());
  -            }
  -        }
  +        earContext.addSecurityContext(policyContextID, componentPermissions);
   
  -        return roleNames;
  +        return null;
       }
   
       private static ObjectName getResourceContainerId(URI uri, 
GerResourceLocatorType resourceLocator, EARContext earContext) throws 
DeploymentException {
  
  
  
  1.4       +2 -1      
openejb/modules/openejb-builder/src/java/org/openejb/deployment/SecureBuilder.java
  
  Index: SecureBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/SecureBuilder.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SecureBuilder.java        15 Apr 2005 05:36:53 -0000      1.3
  +++ SecureBuilder.java        18 Apr 2005 19:05:16 -0000      1.4
  @@ -85,4 +85,5 @@
   
       void setUseContextHandler(boolean useContextHandler);
   
  +    void setPolicyContextID(String policyContextID);
   }
  
  
  
  1.23      +11 -16    
openejb/modules/openejb-builder/src/java/org/openejb/deployment/SessionBuilder.java
  
  Index: SessionBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/SessionBuilder.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- SessionBuilder.java       16 Apr 2005 21:15:59 -0000      1.22
  +++ SessionBuilder.java       18 Apr 2005 19:05:16 -0000      1.23
  @@ -47,7 +47,6 @@
    */
   package org.openejb.deployment;
   
  -import java.net.MalformedURLException;
   import java.net.URI;
   import java.net.URL;
   import java.security.Permissions;
  @@ -65,6 +64,7 @@
   import org.apache.geronimo.gbean.GBeanData;
   import org.apache.geronimo.j2ee.deployment.EARContext;
   import org.apache.geronimo.j2ee.deployment.EJBModule;
  +import org.apache.geronimo.j2ee.deployment.RefContext;
   import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
   import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
   import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
  @@ -77,6 +77,7 @@
   import org.apache.geronimo.xbeans.geronimo.naming.GerResourceRefType;
   import org.apache.geronimo.xbeans.geronimo.naming.GerServiceRefType;
   import org.apache.geronimo.xbeans.j2ee.EjbJarType;
  +import org.apache.geronimo.xbeans.j2ee.EjbLinkType;
   import org.apache.geronimo.xbeans.j2ee.EjbLocalRefType;
   import org.apache.geronimo.xbeans.j2ee.EjbRefType;
   import org.apache.geronimo.xbeans.j2ee.EnterpriseBeansType;
  @@ -90,7 +91,6 @@
   import org.apache.geronimo.xbeans.j2ee.SessionBeanType;
   import org.apache.geronimo.xbeans.j2ee.WebserviceDescriptionType;
   import org.apache.geronimo.xbeans.j2ee.WebservicesDocument;
  -import org.apache.geronimo.xbeans.j2ee.EjbLinkType;
   import org.apache.xmlbeans.XmlException;
   import org.openejb.dispatch.InterfaceMethodSignature;
   import org.openejb.slsb.HandlerChainConfiguration;
  @@ -159,7 +159,7 @@
   
       }
   
  -    protected void buildBeans(EARContext earContext, J2eeContext 
moduleJ2eeContext, ClassLoader cl, EJBModule ejbModule, Map openejbBeans, 
TransactionPolicyHelper transactionPolicyHelper, EnterpriseBeansType 
enterpriseBeans, ObjectName listener) throws DeploymentException {
  +    protected void buildBeans(EARContext earContext, J2eeContext 
moduleJ2eeContext, ClassLoader cl, EJBModule ejbModule, ComponentPermissions 
componentPermissions, Map openejbBeans, TransactionPolicyHelper 
transactionPolicyHelper, EnterpriseBeansType enterpriseBeans, ObjectName 
listener, String policyContextID) throws DeploymentException {
           // Session Beans
           SessionBeanType[] sessionBeans = enterpriseBeans.getSessionArray();
           for (int i = 0; i < sessionBeans.length; i++) {
  @@ -168,7 +168,7 @@
               OpenejbSessionBeanType openejbSessionBean = 
(OpenejbSessionBeanType) 
openejbBeans.get(sessionBean.getEjbName().getStringValue());
               ObjectName sessionObjectName = 
createEJBObjectName(moduleJ2eeContext, sessionBean);
               assert sessionObjectName != null: "StatelesSessionBean object 
name is null";
  -            addEJBContainerGBean(earContext, ejbModule, cl, 
sessionObjectName, sessionBean, openejbSessionBean, transactionPolicyHelper);
  +            addEJBContainerGBean(earContext, ejbModule, 
componentPermissions, cl, sessionObjectName, sessionBean, openejbSessionBean, 
transactionPolicyHelper, policyContextID);
               addWSContainerGBean(earContext, ejbModule, cl, 
sessionObjectName, sessionBean, openejbSessionBean, transactionPolicyHelper, 
listener);
   
           }
  @@ -182,7 +182,7 @@
           axisWebServiceContainerBuilder.addGbean(earContext, ejbModule, cl, 
sessionObjectName, listener, sessionBean, openejbSessionBean, 
transactionPolicyHelper);
       }
   
  -    private void addEJBContainerGBean(EARContext earContext, EJBModule 
ejbModule, ClassLoader cl, ObjectName sessionObjectName, SessionBeanType 
sessionBean, OpenejbSessionBeanType openejbSessionBean, TransactionPolicyHelper 
transactionPolicyHelper) throws DeploymentException {
  +    private void addEJBContainerGBean(EARContext earContext, EJBModule 
ejbModule, ComponentPermissions componentPermissions, ClassLoader cl, 
ObjectName sessionObjectName, SessionBeanType sessionBean, 
OpenejbSessionBeanType openejbSessionBean, TransactionPolicyHelper 
transactionPolicyHelper, String policyContextID) throws DeploymentException {
           String ejbName = sessionBean.getEjbName().getStringValue();
   
           GBeanData result;
  @@ -217,18 +217,13 @@
               containerSecurityBuilder.addToPermissions(toBeChecked, ejbName, 
"Local", builder.getLocalInterfaceName(), cl);
   
               String defaultRole = securityConfiguration.getDefaultRole();
  -            ComponentPermissions componentPermissions = 
containerSecurityBuilder.fillContainerBuilderSecurity(defaultRole,
  +            containerSecurityBuilder.addComponentPermissions(defaultRole,
                       toBeChecked,
                       ((EjbJarType) 
ejbModule.getSpecDD()).getAssemblyDescriptor(),
                       ejbName,
  -                    sessionBean.getSecurityRoleRefArray());
  -
  -            //TODO go back to the commented version when possible
  -//          String contextID = builder.getContainerId();
  -            String contextID = builder.getContainerId().replaceAll("[,: ]", 
"_");
  -            earContext.addSecurityContext(contextID, componentPermissions);
  +                    sessionBean.getSecurityRoleRefArray(), 
componentPermissions);
   
  -            
containerSecurityBuilder.setDetails(sessionBean.getSecurityIdentity(), 
securityConfiguration, builder);
  +            
containerSecurityBuilder.setDetails(sessionBean.getSecurityIdentity(), 
securityConfiguration, policyContextID, builder);
           }
   
           UserTransactionImpl userTransaction;
  @@ -303,7 +298,7 @@
           }
       }
   
  -    public void initContext(EARContext earContext, J2eeContext 
moduleJ2eeContext, URI moduleUri, ClassLoader cl, EnterpriseBeansType 
enterpriseBeans, Set interfaces) throws DeploymentException {
  +    public void initContext(RefContext refContext, J2eeContext 
moduleJ2eeContext, URI moduleUri, ClassLoader cl, EnterpriseBeansType 
enterpriseBeans, Set interfaces) throws DeploymentException {
           // Session Beans
           SessionBeanType[] sessionBeans = enterpriseBeans.getSessionArray();
           for (int i = 0; i < sessionBeans.length; i++) {
  @@ -324,7 +319,7 @@
                   interfaces.add(home);
   
                   String objectName = sessionObjectName.getCanonicalName();
  -                earContext.getRefContext().addEJBRemoteId(moduleUri, 
ejbName, objectName, true, home, remote);
  +                refContext.addEJBRemoteId(moduleUri, ejbName, objectName, 
true, home, remote);
               }
   
               // ejb-local-ref
  @@ -336,7 +331,7 @@
                   ENCConfigBuilder.assureEJBLocalHomeInterface(localHome, cl);
   
                   String objectName = sessionObjectName.getCanonicalName();
  -                earContext.getRefContext().addEJBLocalId(moduleUri, ejbName, 
objectName, true, localHome, local);
  +                refContext.addEJBLocalId(moduleUri, ejbName, objectName, 
true, localHome, local);
               }
           }
       }
  
  
  

Reply via email to