public Map read(SSOToken token,String dn) throws SMSException, SSOException {
  if (dn == null || dn.length() == 0) {
    debug.error("SMSEmbeddedLdapObject.read: Null or Empty DN=" + dn);
    throw new SMSException("","sms-NO_SUCH_OBJECT");
  }
  if (!LDAPUtils.isDN(dn)) {
    debug.warning("SMSEmbeddedLdapObject: Invalid DN=" + dn);
    String[] args={dn};
    throw new SMSException(IUMSConstants.UMS_BUNDLE_NAME,"sms-INVALID_DN",args);
  }
  if (SMSNotificationManager.isCacheEnabled() && entriesNotPresent.contains(dn)) {
    if (debug.messageEnabled()) {
      debug.message("SMSEmbeddedLdapObject:read Entry not present: " + dn + " (checked in cached)");
    }
    return (null);
  }
  SearchRequest request=Requests.newSearchRequest(DN.valueOf(dn),SearchScope.BASE_OBJECT,SearchFilter.objectClassPresent(),smsAttributes.toArray(new String[smsAttributes.size()]));
  InternalSearchOperation iso=icConn.processSearch(request);
  ResultCode resultCode=iso.getResultCode();
  if (resultCode == ResultCode.SUCCESS) {
    LinkedList searchResult=iso.getSearchEntries();
    if (!searchResult.isEmpty()) {
      SearchResultEntry entry=(SearchResultEntry)searchResult.get(0);
      List attributes=entry.getAttributes();
      return EmbeddedSearchResultIterator.convertLDAPAttributeSetToMap(attributes);
    }
 else {
      return null;
    }
  }
 else   if (resultCode == ResultCode.NO_SUCH_OBJECT) {
    objectChanged(dn,DELETE);
    if (debug.messageEnabled()) {
      debug.message("SMSEmbeddedLdapObject.read: " + "entry not present:" + dn);
    }
    return null;
  }
 else {
    if (debug.warningEnabled()) {
      debug.warning("SMSEmbeddedLdapObject.read: " + "Error in accessing entry DN: " + dn + ", error code = "+ resultCode);
    }
    throw new SMSException("","sms-entry-cannot-access");
  }
}

public Map read ( SSOToken token , String dn ) throws SMSException , SSOException { if ( dn == null || dn . length ( ) == 0 ) { debug . error ( "SMSEmbeddedLdapObject.read: Null or Empty DN=" + dn ) ; throw new SMSException ( "" , "sms-NO_SUCH_OBJECT" ) ; } if ( ! LDAPUtils . isDN ( dn ) ) { debug . warning ( "SMSEmbeddedLdapObject: Invalid DN=" + dn ) ; String [ ] args = { dn } ; throw new SMSException ( IUMSConstants . UMS_BUNDLE_NAME , "sms-INVALID_DN" , args ) ; } if ( SMSNotificationManager . isCacheEnabled ( ) && entriesNotPresent . contains ( dn ) ) { if ( debug . messageEnabled ( ) ) { debug . message ( "SMSEmbeddedLdapObject:read Entry not present: " + dn + " (checked in cached)" ) ; } return ( null ) ; } SearchRequest request = Requests . newSearchRequest ( DN . valueOf ( dn ) , SearchScope . BASE_OBJECT , SearchFilter . objectClassPresent ( ) , smsAttributes . toArray ( new String [ smsAttributes . size ( ) ] ) ) ; InternalSearchOperation iso = icConn . processSearch ( request ) ; ResultCode resultCode = iso . getResultCode ( ) ; if ( resultCode == ResultCode . SUCCESS ) { LinkedList searchResult = iso . getSearchEntries ( ) ; if ( ! searchResult . isEmpty ( ) ) { SearchResultEntry entry = ( SearchResultEntry ) searchResult . get ( 0 ) ; List attributes = entry . getAttributes ( ) ; return EmbeddedSearchResultIterator . convertLDAPAttributeSetToMap ( attributes ) ; } else { return null ; } } else if ( resultCode == ResultCode . NO_SUCH_OBJECT ) { objectChanged ( dn , DELETE ) ; if ( debug . messageEnabled ( ) ) { debug . message ( "SMSEmbeddedLdapObject.read: " + "entry not present:" + dn ) ; } return null ; } else { if ( debug . warningEnabled ( ) ) { debug . warning ( "SMSEmbeddedLdapObject.read: " + "Error in accessing entry DN: " + dn + ", error code = " + resultCode ) ; } throw new SMSException ( "" , "sms-entry-cannot-access" ) ; } }
reads in the object from persistent store , assuming that the guid and the ssotoken are valid
