question: 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" ) ; } }
target:  Reads in the object from persistent store, assuming that the guid and the SSOToken are valid