Constructs a new exception with the specified cause and a detail
message of (cause==null ? null : cause.toString()) (which
typically contains the class and detail message of cause).
This is the primary interceptor for the framework; as the name implies, this InvocationRouter caches
a reference to the Service and will refresh that reference in response to Service Graph reshaping activity.
This is a very important constructor since it includes code that performs an initial service
lookup which will be a cached reference to the invocation target.
This method will allow external threads to build their own compound versionedProviderImplementationName
that identifies a versioned implementation class and get a reference to that impl class.
Recognizing the difficulties in making the distinction between identical class objects loaded in
conflicting loader contexts, we simply asking for the service based on the fully-qualified string
where the internal directory will resolve the FQN to the correct class instance.
Recognizing the difficulties in making the distinction between identical class objects loaded in
conflicting loader contexts, we simply asking for the service based on the fully-qualified string
where the internal directory will resolve the FQN to the correct class instance.
Recognizing the difficulties in making the distinction between identical class objects loaded in
conflicting loader contexts, we simply asking for the service based on the fully-qualified string
where the internal directory will resolve the FQN to the correct class instance.
Recognizing the difficulties in making the distinction between identical class objects loaded in
conflicting loader contexts, we simply asking for the service based on the fully-qualified string
where the internal directory will resolve the FQN to the correct class instance.
Because fully-qualified class names also include loader information, Class objects from different loaders
are not the same, in some circumstances, class loader problems can be the result of a polluted runtime
environment, it is recommended that you acquire a class reference directly from the Finder itself
since it will return the exact reference that the Service Block is using.
Because fully-qualified class names also include loader information, Class objects from different loaders
are not the same, in some circumstances, class loader problems can be the result of a polluted runtime
environment, it is recommended that you acquire a class reference directly from the Finder itself
since it will return the exact reference that the Service Block is using.
For those times when a client might want to query the directory for more than simply asking for
implementations, we allow clients to hold references to the service directory.
Once you have a Service Block, you can acquire a Service Finder which will help acquire
proper references to Entry Points (from outside the SB) and services from inside the SB
(if you are writing a service).
Like a 'staff only' doorway in a business, this is a "special case" accessor for a Managed Service
in that it only throws an exception if the service is unknown.
Service implementations are versioned, and therefore must provide an appropriate object that allows the
framework to discriminate between different versions of the same service class.
Initialization (Initial Setup) provides the opportunity to perform initial activities in the
service as it is not yet registered as a viable organization implementation.
This asks the specific boolean question (because we will ask it a lot), whether or not the impl
is 'Service Enabled' which means it is ready to handle requests.
iterator() -
Method in class com.codemonster.surinam.parser.XPath
This is a generic command object that designates a contract to be found and an operation that should
be invoked, along with the parameters to be passed along for the operation.
Annotations are a primary way that service information is captured by service developers and
passed along to the framework; if a required annotation is missing, the framework will not know
what to do with the service.
This is a simplified method that allows for the registration of just the contract definition
which will be backed by a non-functional default implementation.
This method is a primary format since the XML it delivers is actually a valid Action Document that can be
fed back into a Service Block via a ServiceBlockCommander.
This method is a primary format since the XML it delivers is actually a valid Action Document that can be
fed back into a Service Block via a ServiceBlockCommander.
Retiring a contract means that it is removed from the directory, including releasing the organization
implementation if there was one and it is not servicing any other contracts.
This will strike the contract from the Service Directory, clients will begin to receive
UnknownServiceExceptions and this action will also free the organization implementation that was servicing
the contract if there was one.
This will strike the contract from the Service Directory, clients will begin to receive
UnknownServiceExceptions and this action will also free the organization implementation that was servicing
the contract if there was one.
This will remove the contract from the Service Directory, clients will begin to receive
UnknownServiceExceptions and this action will also free the implementation that was servicing
the contract if there is one.
This will remove the contract from the Service Directory, clients will begin to receive
UnknownServiceExceptions and this action will also free the implementation that was servicing
the contract if there is one.
By extending MappedCommand and impementing Runnable, it is possible to turn the command pattern around
and take advantage of Java's Executor model which will allow thread scheduling and reuse.
User: Samuel Provencher
Date: Jun 6, 2006
Time: 8:24:01 PM
This Adapter class is here simply to provide a convenient implementation for those who might only want
to implement a subset of the lifecycle methods and safely ignore the others (the default implementations are
used).
Additionally, this adapter will provide some housekeeping code for managing the impl's availability state.
The Service Directory API is the primary high-level interface for general access, although 'general'
is a relative term in this context since most developers may never need to work with the
Service Directory directly.
All properties in object form here are the counterpart of the XML definitions, and as such, straddle the
space between pure typesafe objects and raw XML.
This is a request to set the availability flag to the given value, which will tell the framework that this
implementation is now ready to accept calls.
Rather than try to maintain synchronization with the Service Directory for every change to the block
(made even more complicated by implementation binding changes), we take the administrative interface
for the Service Block and reconcile the service directory state with the blueprints from the BPM,
bringing the meta-model into parity with the Service Graph and the Service Block.
This administrative process causes the BlueprintManager to clear out its implementation bindings
and rebuild them all so that the BPM and the Service Directory are in synch with each other.
This administrative process causes the BlueprintManager to clear out its implementation bindings
and rebuild them all so that the BPM and the Service Directory are in synch with each other.
toXML() -
Method in class com.codemonster.surinam.core.framework.injection.PropertyBase
Putting this method here will make it clear that while it is required by the interface, we expect
subclasses to provide the appropriate implementations.
toXML() -
Method in interface com.codemonster.surinam.core.framework.injection.ServiceProperty
This will unbind the Provider Implementation from the given Service Contract, clients will begin to receive
ServiceUnavailableExceptions as the Contract will be assigned the default implementation.
This will unbind the Provider Implementation from the given Service Contract, clients will begin to receive
ServiceUnavailableExceptions as the Contract will be assigned the default implementation.