public void addAttributeSchema(InputStream xmlAttrSchema) throws SSOException, SMSException {
  SMSEntry.validateToken(ssm.getSSOToken());
  Document doc=SMSSchema.getXMLDocument(xmlAttrSchema,false);
  NodeList nl=doc.getElementsByTagName(SMSUtils.SCHEMA_ATTRIBUTE);
  CaseInsensitiveHashSet asNames=new CaseInsensitiveHashSet(ss.getAttributeSchemaNames());
  for (int i=0; i < nl.getLength(); i++) {
    Node node=nl.item(i);
    AttributeSchemaImpl as=new AttributeSchemaImpl(node);
    if (asNames.contains(as.getName())) {
      Object[] args={as.getName()};
      throw (new SMSException(IUMSConstants.UMS_BUNDLE_NAME,"sms-attributeschema-already-exists",args));
    }
  }
  appendAttributeSchema(nl);
}

public void addAttributeSchema ( InputStream xmlAttrSchema ) throws SSOException , SMSException { SMSEntry . validateToken ( ssm . getSSOToken ( ) ) ; Document doc = SMSSchema . getXMLDocument ( xmlAttrSchema , false ) ; NodeList nl = doc . getElementsByTagName ( SMSUtils . SCHEMA_ATTRIBUTE ) ; CaseInsensitiveHashSet asNames = new CaseInsensitiveHashSet ( ss . getAttributeSchemaNames ( ) ) ; for ( int i = 0 ; i < nl . getLength ( ) ; i ++ ) { Node node = nl . item ( i ) ; AttributeSchemaImpl as = new AttributeSchemaImpl ( node ) ; if ( asNames . contains ( as . getName ( ) ) ) { Object [ ] args = { as . getName ( ) } ; throw ( new SMSException ( IUMSConstants . UMS_BUNDLE_NAME , "sms-attributeschema-already-exists" , args ) ) ; } } appendAttributeSchema ( nl ) ; }
adds the attribute schema to this service . the schema is defined in xml input stream that follows the sms dtd .
