public abstract class AbstractMapBasedEndpointMapping extends AbstractEndpointMapping
Map
. Provides mappings of application
context beans as well as a settable map.
Subclasses determine the exact nature of the key in the enpoint map; this can be a qualified name, a SOAP Header, the result of a XPath validation. The values are always endpoint objects, or bean names of endpoint objects.
Constructor and Description |
---|
AbstractMapBasedEndpointMapping() |
Modifier and Type | Method and Description |
---|---|
protected Object |
getEndpointInternal(MessageContext messageContext)
Lookup an endpoint for the given message.
|
protected abstract String |
getLookupKeyForMessage(MessageContext messageContext)
Returns the the endpoint key for the given message context.
|
protected void |
initApplicationContext()
Registers annd checks the set endpoints.
|
protected Object |
lookupEndpoint(String key)
Looks up an endpoint instance for the given keys.
|
protected void |
registerEndpoint(String key,
Object endpoint)
Register the given endpoint instance under the registration key.
|
void |
setEndpointMap(Map<String,Object> endpointMap)
Sets a Map with keys and endpoint beans as values.
|
void |
setLazyInitEndpoints(boolean lazyInitEndpoints)
Set whether to lazily initialize endpoints.
|
void |
setMappings(Properties mappings)
Maps keys to endpoint bean names.
|
void |
setRegisterBeanNames(boolean registerBeanNames)
Set whether to register bean names found in the application context.
|
protected abstract boolean |
validateLookupKey(String key)
Validates the given endpoint key.
|
createEndpointInvocationChain, getDefaultEndpoint, getEndpoint, getInterceptors, getOrder, initInterceptors, resolveStringEndpoint, setDefaultEndpoint, setInterceptors, setOrder
public void setLazyInitEndpoints(boolean lazyInitEndpoints)
false
, as eager initialization allows for more efficiency through
referencing the controller objects directly.
If you want to allow your endpoints to be lazily initialized, make them "lazy-init" and set this flag to
true
. Just making them "lazy-init" will not work, as they are initialized through the references
from the endpoint mapping in this case.
public final void setRegisterBeanNames(boolean registerBeanNames)
true
will
register all beans found in the application context under their name. Default is false
.public final void setEndpointMap(Map<String,Object> endpointMap)
IllegalArgumentException
- if the endpoint is invalidpublic void setMappings(Properties mappings)
protected abstract boolean validateLookupKey(String key)
true
is the given string is valid.protected abstract String getLookupKeyForMessage(MessageContext messageContext) throws Exception
null
if a key cannot be found.null
Exception
protected final Object getEndpointInternal(MessageContext messageContext) throws Exception
getEndpointInternal
in class AbstractEndpointMapping
null
Exception
- if there is an errorprotected Object lookupEndpoint(String key)
key
- key the beans are mapped tonull
if not foundprotected void registerEndpoint(String key, Object endpoint) throws org.springframework.beans.BeansException
key
- the string representation of the registration keyendpoint
- the endpoint instanceorg.springframework.beans.BeansException
- if the endpoint could not be registeredprotected final void initApplicationContext() throws org.springframework.beans.BeansException
setEndpointMap
and
setMappings
, and registers the bean names found in the application context, if
registerBeanNames
is set to true
.initApplicationContext
in class AbstractEndpointMapping
org.springframework.context.ApplicationContextException
- if either of the endpoints defined via setEndpointMap
or
setMappings
is invalidorg.springframework.beans.BeansException
setEndpointMap(java.util.Map)
,
setMappings(java.util.Properties)
,
setRegisterBeanNames(boolean)