The loaded implementation classes are instantiated and deliver their implementation profiles to the repository. The context awareness can download the implementation profiles from the repository for resolving the implementation class.
This construction implies that the implementation profiles are coded into the implementation class. The implementation class Configuration_UX_NETSCAPE contains the function getProfile() which describes the suitable environment for the implementation (s. figure ).
The function getProfile() is declared by the interface IImplementationClass which must be implemented by all implementation classes in addition to the functionality interface, in this case IConfiguration. The association function in this concept is limited to the association of profile values by the logical and operator. The profile values are objects which contain the following three pieces of information:
System.getProperty("os.name");
, i.e. the generating function
Figure shows how the implementation profile for the implementation class Configuration_UX_NETSCAPE is specified within the implementation class. The profile values Unix and Netscape are classes, which contain both the generating function and the matching function.
In this proposal the profile values are associated with and . This association is very strict, because an implementation class may be suitable for mor than one environment, e.g. for Linux or AIX . But because of mapping profile values to classes a further relation can be assigned to the profile values. The generalization can be constructed by building super- and subclasses. figure shows the hierarchy of profile values of the type operating system as the mapped class hierarchy.
The matching function between profile values can then be expressed in terms of super- and subclasses:
If the profile value of the environment is the same class or a subclass of the profile value of the implementation class, the implementation class is suitable for the environment
If in the above example an implementation class has the implementation profile value UNIX , e.g. Configuration_UX_NETSCAPE, it can run on all hosts which can build an environment profile value that is a subclass of UNIX , like e.g. Linux or Solaris .
This is an universal rule, which does not rely on the type of the profile value, and can be implemented by the universal superclass ProfileValue for all profile values. The mapping of profile values to classes also offers the possibility to implement more complex expressions than a set of profile values which are evaluated by connecting with and.
A set of commonly used types of profile values can be provided as part of the adaptation framework, but application specific types, e.g. default web browser, must be added by the application programmer. A new type of profile class can be created, by extending the ProfileValue superclass. In the application specific profile values the generating function must be implemented in order to retrieve the value of an environment property from the system. The same applies to the matching function which matches two values of this type of profile value.