Package org.astrogrid.samp.xmlrpc

# Class XmlRpcKit

java.lang.Object
org.astrogrid.samp.xmlrpc.XmlRpcKit

public abstract class XmlRpcKit extends Object
Encapsulates the provision of XML-RPC client and server capabilities. Two implementations are provided in the JSAMP package; the pluggable architecture allows others to be provided.

Since:
  27 Aug 2008
Author:
  Mark Taylor

## Field Summary

Fields
Modifier and Type
Field
Description
`static final XmlRpcKit`
`APACHE`
Implementation based on Apache XML-RPC.
`static final String`
`IMPL_PROP`
Property which is examined to determine which implementation to use by default.
`static final XmlRpcKit`
`INTERNAL`
Implementation which requires no external libraries.
`static XmlRpcKit[]`
`KNOWN_IMPLS`
Array of available known implementations of this class.
`static final XmlRpcKit`
`RPC_LOGGING`
Internal implementation variant with verbose logging of RPC calls.
`static final XmlRpcKit`
`XML_LOGGING`
Internal implementation variant with verbose logging of XML I/O.

## Constructor Summary

Constructors
Constructor
Description
`XmlRpcKit()`

## Method Summary

Modifier and Type
Method
Description
`static XmlRpcKit`
`createReflectionKit(String name, String clientFactoryClassName, String serverFactoryClassName)`
Returns a new XmlRpcKit given classnames for the client and server factory classes.
`abstract SampXmlRpcClientFactory`
`getClientFactory()`
Returns an XML-RPC client factory.
`static XmlRpcKit`
`getInstance()`
Returns the default instance of this class.
`static XmlRpcKit`
`getInstanceByName(String name)`
Returns an XmlRpcKit instance given its name.
`abstract String`
`getName()`
Returns the name of this kit.
`abstract SampXmlRpcServerFactory`
`getServerFactory()`
Returns an XML-RPC server factory.
`abstract boolean`
`isAvailable()`
Indicates whether this object is ready for use.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### APACHE

public static final XmlRpcKit APACHE
Implementation based on Apache XML-RPC.

### INTERNAL

public static final XmlRpcKit INTERNAL
Implementation which requires no external libraries.

### XML_LOGGING

public static final XmlRpcKit XML_LOGGING
Internal implementation variant with verbose logging of XML I/O.

### RPC_LOGGING

public static final XmlRpcKit RPC_LOGGING
Internal implementation variant with verbose logging of RPC calls.

### KNOWN_IMPLS

public static XmlRpcKit[] KNOWN_IMPLS
Array of available known implementations of this class.

### IMPL_PROP

public static final String IMPL_PROP
Property which is examined to determine which implementation to use by default. Property values may be one of the elements of `KNOWN_IMPLS`, currently:

- internal
- xml-log
- rpc-log
- apache

Alternatively, it may be the classname of a class which implements `XmlRpcKit` and has a no-arg constructor. The property name is "jsamp.xmlrpc.impl".

See Also:
  - Constant Field Values

## Constructor Details

### XmlRpcKit

public XmlRpcKit()

## Method Details

### getClientFactory

public abstract SampXmlRpcClientFactory getClientFactory()
Returns an XML-RPC client factory.

Returns:
  client factory

### getServerFactory

public abstract SampXmlRpcServerFactory getServerFactory()
Returns an XML-RPC server factory.

Returns:
  server factory

### isAvailable

public abstract boolean isAvailable()
Indicates whether this object is ready for use. If it returns false (perhaps because some classes are unavailable at runtime) then `getClientFactory()` and `getServerFactory()` may throw exceptions rather than behaving as documented.

Returns:
  true if this object works

### getName

public abstract String getName()
Returns the name of this kit.

Returns:
  implementation name

### getInstance

public static XmlRpcKit getInstance()
Returns the default instance of this class. What implementation this is normally depends on what classes are present at runtime. However, if the system property `IMPL_PROP` is set this will determine the implementation used. It may be one of:

- `apache`: implementation based on the Apache XML-RPC library
- `internal`: implementation which requires no libraries beyond JSAMP itself
- the classname of an implementation of this class which has a no-arg constructor

Returns:
  default instance of this class

### getInstanceByName

public static XmlRpcKit getInstanceByName(String name)
Returns an XmlRpcKit instance given its name.

Parameters:
  `name` - name of one of the known implementations, or classname of an XmlRpcKit implementatation with a no-arg constructor
Returns:
  named implementation object
Throws:
  `IllegalArgumentException` - if none by that name can be found

### createReflectionKit

public static XmlRpcKit createReflectionKit(String name, String clientFactoryClassName, String serverFactoryClassName)
Returns a new XmlRpcKit given classnames for the client and server factory classes. If the classes are not available, a kit which returns `isAvailable()`()=false will be returned.

Parameters:
  `name` - kit name
  `clientFactoryClassName` - name of class implementing SampXmlRpcClientFactory which has a no-arg constructor
  `serverFactoryClassName` - name of class implementing SampXmlRpcServerFactory which has a no-arg constructor
Returns:
  new XmlRpcKit constructed using reflection