If you ever find yourself thinking things are going "just swell" on a PoC you should try using an API you've never seen before on a product you've barely used, but wait until the last day to start.
yes, my own fault. And yes it's humbling.
What I hope to save you from discovering the hard way is that OVD's class com.octetstring.vde.Entry can't be shared across calls into the directory.
What I mean is that I wrote a method that looks something like:
public void myCache.insert( Entry entry) {
myMap.put( entry.getName().toString(), entry );
}and called it during the first search of the directory that found the user. Then later on I tried to retrieve it by doing:
public Entry myCache.get( String key ) {
if ( !myMap.contains( key ) )
return null;
Entry e =myMap.get( key );
logger.debug( "Got entry with name " + e.getName().toString() );
return e;
}And I'd get back an entry and even get its name. But the Entry was always empty.
I really thought I was losing it.
My epiphany came at Zero-Dark-hundred when I changed my insert to
myMap.put( entry.getName().toString(), entry.getAsByteArray() );
and my retrieval to
Entry e = new Entry( myMap.get( key ) );and suddenly everything started working.
I haven't gone and looked into the actual OVD code for Entry, but I'm guessing it does something super clever that I'm too dense understand at 3 in the morning.

No comments:
Post a Comment
Note: Only a member of this blog may post a comment.