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;