djencks 2005/11/22 23:04:14
Modified:
modules/openejb-builder/src/java/org/openejb/corba/security/config/css
CSSConfigEditor.java
Log:
GERONIMO-1122 Support 3 levels of principal wrapping. I did not change the
schema version.
Revision Changes Path
1.9 +21 -8
openejb/modules/openejb-builder/src/java/org/openejb/corba/security/config/css/CSSConfigEditor.java
Index: CSSConfigEditor.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/corba/security/config/css/CSSConfigEditor.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- CSSConfigEditor.java 28 Sep 2005 22:14:25 -0000 1.8
+++ CSSConfigEditor.java 23 Nov 2005 04:04:14 -0000 1.9
@@ -66,6 +66,7 @@
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.schema.SchemaConversionUtils;
+import org.apache.geronimo.kernel.ClassLoading;
import org.openejb.xbeans.csiv2.css.CSSCompoundSecMechType;
import org.openejb.xbeans.csiv2.css.CSSCssType;
@@ -83,7 +84,7 @@
* @version $Revision$ $Date$
*/
public class CSSConfigEditor implements XmlAttributeBuilder {
- private static final String NAMESPACE =
CSSCssDocument.type.getDocumentElementName().getNamespaceURI();
+ private static final String NAMESPACE =
CSSCssDocument.type.getDocumentElementName().getNamespaceURI();
public String getNamespace() {
return NAMESPACE;
@@ -110,14 +111,14 @@
CSSCompoundSecMechType[] mechList =
css.getCompoundSecMechTypeList().getCompoundSecMechArray();
for (int i = 0; i < mechList.length; i++) {
- mechListConfig.add(extractCompoundSecMech(mechList[i]));
+ mechListConfig.add(extractCompoundSecMech(mechList[i], cl));
}
}
return cssConfig;
}
- protected static CSSCompoundSecMechConfig
extractCompoundSecMech(CSSCompoundSecMechType mechType) {
+ protected static CSSCompoundSecMechConfig
extractCompoundSecMech(CSSCompoundSecMechType mechType, ClassLoader cl) throws
DeploymentException {
CSSCompoundSecMechConfig result = new CSSCompoundSecMechConfig();
@@ -137,7 +138,7 @@
result.setAs_mech(new CSSNULLASMechConfig());
}
- result.setSas_mech(extractSASMech(mechType.getSasMech()));
+ result.setSas_mech(extractSASMech(mechType.getSasMech(), cl));
return result;
}
@@ -159,7 +160,7 @@
return new CSSGSSUPMechConfigDynamic(gssupType.getDomain());
}
- protected static CSSSASMechConfig extractSASMech(CSSSasMechType
sasMechType) {
+ protected static CSSSASMechConfig extractSASMech(CSSSasMechType
sasMechType, ClassLoader cl) throws DeploymentException {
CSSSASMechConfig result = new CSSSASMechConfig();
if (sasMechType == null) {
@@ -173,7 +174,19 @@
result.setIdentityToken(new
CSSSASITTPrincipalNameStatic(principal.getOid(), principal.getName()));
} else if (sasMechType.isSetITTPrincipalNameDynamic()) {
CSSITTPrincipalNameDynamicType principal =
sasMechType.getITTPrincipalNameDynamic();
- result.setIdentityToken(new
CSSSASITTPrincipalNameDynamic(principal.getOid(), principal.getDomain()));
+ String principalClassName = principal.getPrincipalClass();
+ Class principalClass = null;
+ try {
+ principalClass = ClassLoading.loadClass(principalClassName,
cl);
+ } catch (ClassNotFoundException e) {
+ throw new DeploymentException("Could not load principal
class");
+ }
+ String domainName = principal.getDomain();
+ String realmName = null;
+ if (domainName != null) {
+ realmName = principal.getRealm();
+ }
+ result.setIdentityToken(new
CSSSASITTPrincipalNameDynamic(principal.getOid(), principalClass, domainName,
realmName));
}
return result;