net.jini.lookup.entry
Class UIDescriptor

java.lang.Object
  |
  +--net.jini.entry.AbstractEntry
        |
        +--net.jini.lookup.entry.UIDescriptor
All Implemented Interfaces:
net.jini.core.entry.Entry, java.io.Serializable

public class UIDescriptor
extends net.jini.entry.AbstractEntry

Entry that enables a UI for a service to be associated with the service in the attribute sets of the service item. UIDescriptor holds a marshalled UI factory object, as well as a role string, a sub-role string, and set of attributes that describe the UI generated by the factory.

See Also:
Serialized Form

Field Summary
 java.util.Set attributes
          A set of objects that describe the UI generated by the marshalled UI factory.
 java.rmi.MarshalledObject factory
          The get() method of this MarshalledObject must return an object that implements one or more UI factory interfaces.
 java.lang.String role
          Gives the fully qualified name of the interface that represents the role of the UI generated by the marshalled UI factory.
 java.lang.String toolkit
          A String to facilitate searching whose value represents the main UI toolkit (for example Swing or AWT) which the produced UI makes use of.
 
Constructor Summary
UIDescriptor()
          Constructs a UIDescriptor with all fields set to null.
UIDescriptor(java.lang.String role, java.lang.String toolkit, java.util.Set attributes, java.rmi.MarshalledObject factory)
          Constructs a UIDescriptor with the fields set to passed values.
 
Method Summary
 java.lang.Object getUIFactory(java.lang.ClassLoader parentLoader)
          A convenience method for unmarshalling the UI factory stored in the MarshalledObject referenced from the factory field.
 
Methods inherited from class net.jini.entry.AbstractEntry
equals, equals, hashCode, hashCode, toString, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

role

public java.lang.String role
Gives the fully qualified name of the interface that represents the role of the UI generated by the marshalled UI factory. If the client program unmarshals the UI factory and invokes a factory method, the UI returned by the factory method must implement the role the interface specified by role.

For a client program to be able to use a UI, the client has to have prior knowledge of the UI semantics, which is defined by the UI's role type. Thus, for a client to be able to use a UI, the client must understand the semantics of the type whose fully qualified name is given in the String referenced from the role field of that UI's UIDescriptor.

For example, two role types that are defined in the net.jini.lookup.ui package by the Jini Service UI Specification are MainUI, for a main UI to a Jini service, and AdminUI, for an administration UI. Other role types may be defined by the Jini Service UI Specification and by individual Jini service API specifications.

As the strings referenced from the role field are Java type names, they are intended to be manipulated by client programs only. They should not be shown to a user.


toolkit

public java.lang.String toolkit
A String to facilitate searching whose value represents the main UI toolkit (for example Swing or AWT) which the produced UI makes use of. The value to which this field should be set is defined by the semantics of the factory type. (This field is intended to facilitate searches. For example, a client can search for all blender services that have Swing MainUI's.)

attributes

public java.util.Set attributes
A set of objects that describe the UI generated by the marshalled UI factory.

factory

public java.rmi.MarshalledObject factory
The get() method of this MarshalledObject must return an object that implements one or more UI factory interfaces. The actual UI factory type or types implemented by the returned object must be described by a UIFactoryTypes attribute placed in the attributes set of this UIDescriptor.
Constructor Detail

UIDescriptor

public UIDescriptor()
Constructs a UIDescriptor with all fields set to null.

UIDescriptor

public UIDescriptor(java.lang.String role,
                    java.lang.String toolkit,
                    java.util.Set attributes,
                    java.rmi.MarshalledObject factory)
Constructs a UIDescriptor with the fields set to passed values. This constructor copies the contents of the passed attributes Set into a serializable read-only Set that has a consistent serialized form across all VMs, and initializes the attributes field with the consistent Set.
Parameters:
role - the role
toolkit - the toolkit
attributes - the attributes
factory - the factory
Method Detail

getUIFactory

public final java.lang.Object getUIFactory(java.lang.ClassLoader parentLoader)
                                    throws java.io.IOException,
                                           java.lang.ClassNotFoundException
A convenience method for unmarshalling the UI factory stored in the MarshalledObject referenced from the factory field. This method saves a reference to the current context class loader, sets the context class loader to the class loader passed as parentLoader, invokes get() on the marshalled object, then resets the context class loader to the saved reference before returning the object produced by get().

The class loader passed in parentLoader should be able to load classes needed when the UI interacts with the roleObject passed as the first parameter to the factory method. For example, if the roleObject is the service item (as it is for the MainUI and AdminUI roles), the class loader passed in parentLoader could be the class loader with which the service proxy object referenced from the service item's service field was loaded. For example:

 Object uiFactory = uiDescriptor.getUIFactory(
     serviceItem.service.getClass().getClassLoader());
 
Returns:
the unmarshalled UI factory
Throws:
NullPointerException - if parentLoader is null.