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