![]() ![]() ![]() ![]() |
Object Factories |
The custom object exampleillustrates how an instance of a user-defined class Person is stored and subsequently looked up from the directory. When the Person object's attributes are looked up from the directory, the Context.lookup()
method turned these attributes into an instance of Person.
This was made possible because:Person john2 = (Person) ctx.lookup("cn=John Smith");PersonObjectFactory.getObjectInstance() first verifies that the object is intended for its factory. It does this by checking that the "objectclass" attribute has a value of "person". If this verification fails, it returns null. Otherwise, it constructs an instance of Person by supplying the constructor values obtained from the entry's other attributes, such as the "surname" and "commonname" attributes.
- The service provider being used (Sun's LDAP provider) invoked DirectoryManager.getObjectInstance()
and supplied to the method the object (an LDAP context object) and attributes the provider read from the directory for the entry "cn=John Smith".
- The client program identified the object factory (PersonObjectFactory) to use using an application resource file that named PersonObjectFactory as one of the object factories to try.
The definition of PersonObjectFactory.getObjectInstance() is as follows:
public Object getObjectInstance( Object obj, Name name, Context ctx, Hashtable env, Attributes attrs) throws Exception { // Only interested in Attributes with person objectclass // System.out.println("object factory: " + attrs); Attribute oc = (attrs != null ? attrs.get("objectclass") : null); if (oc != null && oc.contains("person")) { Attribute attr; Person per = new Person( (String)attrs.get("sn").get(), (String)attrs.get("cn").get(), (attr=attrs.get("userPassword")) != null ? (String)attr.get() : null, (attr=attrs.get("telephoneNumber")) != null ? (String)attr.get() : null, (attr=attrs.get("seealso")) != null ? (String)attr.get() : null, (attr=attrs.get("description")) != null ? (String)attr.get() : null); return per; } return null; }Object Factories: End of Lesson
![]()
![]()
What's next? Now you can:
- Continue on in this trail lesson to read about the physical representation of Java objects in the directory.
- Go to the Beyond the Basics
trail to learn about advanced JNDI topics.
![]() ![]() ![]() ![]() |
Object Factories |