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;
  
  
  

Reply via email to