/*
 * Copyright  1999-2004 The Apache Software Foundation.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 */
package org.apache.xml.security.keys.content.x509;



import java.io.IOException;
import java.security.cert.X509Certificate;

import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.utils.Constants;
import org.apache.xml.security.utils.RFC2253Parser;
import org.apache.xml.security.utils.SignatureElementProxy;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

import sun.security.x509.X500Name;


/**
 *
 * @author $Author$
 */
public class XMLX509SubjectName extends SignatureElementProxy
        implements XMLX509DataContent {

   /** {@link org.apache.commons.logging} logging facility */
    static org.apache.commons.logging.Log log = 
        org.apache.commons.logging.LogFactory.getLog(XMLX509SubjectName.class.getName());

   /**
    * Constructor X509SubjectName
    *
    * @param element
    * @param BaseURI
    * @throws XMLSecurityException
    */
   public XMLX509SubjectName(Element element, String BaseURI)
           throws XMLSecurityException {
      super(element, BaseURI);
   }

   /**
    * Constructor X509SubjectName
    *
    * @param doc
    * @param X509SubjectNameString
    */
   public XMLX509SubjectName(Document doc, String X509SubjectNameString) {

      super(doc);

      this.addText(X509SubjectNameString);
   }

   /**
    * Constructor XMLX509SubjectName
    *
    * @param doc
    * @param x509certificate
    */
   public XMLX509SubjectName(Document doc, X509Certificate x509certificate) {
      this(doc,
           RFC2253Parser.normalize(x509certificate.getSubjectDN().getName()));
   }

   /**
    * Method getSubjectName
    *
    *
    * @return
    */
   public String getSubjectName() {
      return RFC2253Parser.normalize(this.getTextFromTextChild());
   }

   /**
    * Method createX500Name
    *
    * @param common
    * @param orgUnit
    * @param org
    * @param country
    * @return
    *
    * @throws IOException
    */
   public static X500Name createX500Name(
           String common, String orgUnit, String org, String country)
              throws IOException {
      return new X500Name(common, orgUnit, org, country);
   }

   /**
    * Method createX500Name
    *
    * @param common
    * @param orgUnit
    * @param org
    * @param locality
    * @param state
    * @param country
    * @return
    *
    * @throws IOException
    */
   public static X500Name createX500Name(
           String common, String orgUnit, String org, String locality, String state, String country)
              throws IOException {
      return new X500Name(common, orgUnit, org, locality, state, country);
   }

   /** @inheritDoc */
   public boolean equals(Object obj) {

      if (!obj.getClass().getName().equals(this.getClass().getName())) {
         return false;
      }

      XMLX509SubjectName other = (XMLX509SubjectName) obj;
      String otherSubject = other.getSubjectName();
      String thisSubject = this.getSubjectName();

      if (otherSubject.equals(thisSubject)) {
            return true;
      }

       return false;
      
   }
   
   /** @inheritDoc */
   public String getBaseLocalName() {
      return Constants._TAG_X509SUBJECTNAME;
   }
}

@@ -1038,45 +1038,8 @@
 t;%0A%0A
-import sun.security.x509.X500Name;%0A%0A%0A
 /**%0A
@@ -2354,865 +2354,8 @@
  %7D%0A%0A
-   /**%0A    * Method createX500Name%0A    *%0A    * @param common%0A    * @param orgUnit%0A    * @param org%0A    * @param country%0A    * @return%0A    *%0A    * @throws IOException%0A    */%0A   public static X500Name createX500Name(%0A           String common, String orgUnit, String org, String country)%0A              throws IOException %7B%0A      return new X500Name(common, orgUnit, org, country);%0A   %7D%0A%0A   /**%0A    * Method createX500Name%0A    *%0A    * @param common%0A    * @param orgUnit%0A    * @param org%0A    * @param locality%0A    * @param state%0A    * @param country%0A    * @return%0A    *%0A    * @throws IOException%0A    */%0A   public static X500Name createX500Name(%0A           String common, String orgUnit, String org, String locality, String state, String country)%0A              throws IOException %7B%0A      return new X500Name(common, orgUnit, org, locality, state, country);%0A   %7D%0A%0A
    /

Fix for Bug 32681 - can't build with Kaffe because it uses com.sun. classes directly