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 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:
  • 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