En esta página: Objeto Personalizado El ejemplo de objeto personalizado ilustra cómo un ejemplar de una clase definida por el usuario, Person es almacenado y recuperado desde el directorio. Cuando se buscan los atributos de un objeto Person desde el directorio, el método Context.lookup() convierte estos atributos en un ejemplar de Person. Person john2 = (Person) ctx.lookup("cn=John Smith"); Esto es posible porque.
PersonObjectFactory.getObjectInstance() primero verifica que el objeto está pensado para su factoría. Lo hace chequeando que el atributo "objectclass" tiene un valor de "person". Si esta verificación falla, el método devuelve null. De otro modo, construye un ejemplar de Person suministrandole al constructor los valores obtenidos de las otras entradas de atriutos, como "surname" y "commonname". Aquí tenemos la definición de PersonObjectFactory.getObjectInstance(). 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; String passwd = null; // Extract the password attr = attrs.get("userPassword"); if (attr != null) { passwd = new String((byte[])attr.get()); } Person per = new Person( (String)attrs.get("sn").get(), (String)attrs.get("cn").get(), passwd, (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; }
|