}}}
----
'''XML-RPC Delight is meant for''': All users that want to have their java components connected using a web-based protocol but don't want to waste time with defining the interfaces a second time in another language-independend description format and then generate stubs and skeletons and so on.[[BR]]
'''XML-RPC Delight is an addon''' to the XML-RPC specification ([http://www.xmlrpc.com/spec]) and builds on apache's implementation ([http://ws.apache.org/xmlrpc/]), version 1.1 (Download [https://delight.opendfki.de/repos/trunk/XmlRpcDelight/import/xmlrpc-1.1_all.jar here]).
----
== Design Objectives ==
- have java components interact over internet wire with a minimum of programming and
configuration effort
- preserve XML-RPC compliance
- make '''EVERY''' type XML-RPC transportable with '''minimal coding effort''' (ideally, not a single line of extra code!)
- do not interfere with design of remote interfaces. Within the remote calls, one should be able to use any
type or interface he wants.
- neither the client nor the server has to be forced to load configuration files
or register factories programmatically in order to use non XML-RPC compliant types in remote calls.
== Overview ==
XML-RPC Delight creates remote clients to java APIs that are supposed to be used remotely. XML-RPC Delight does this at runtime, not at compile time! [[BR]]
In case the API uses types which are not XML-RPC compliant, '''java annotations''' and user-defined conversion methods allow for '''automatic transformation of types''' to and from a XML-RPC compliant representation. Optimally, one can use non-compliant java classes in XML-RPC calls without having to code a single line of code!!
While all the automatic conversion is done, communication with the server is still XML-RPC compliant so that remote methods can still be called by non-java languages.
----
== How does it Work? ==
== Examples ==
[wiki:ExampleUsingXmlRpcCompliantTypes Getting started -- Using XML-RPC compliant types in your API]
[wiki:ExampleUsingOwnConceteTypes Using own concrete types in your API]
[wiki:ExampleUsingOwnInterfaceTypes Using interface or abstract types in your API]
[wiki:ExampleUsingThirdPartyTypes Using third party types in your API] -- When you cannot annotate or modify classes you want to use remotely ...
[wiki:ExampleUsingXmlRpcBeans For lazy programmers: using XmlRpcBeans] -- Own types '''without''' conversion coding ...
[wiki:ExampleUsingConverterRegistry Using the Parameter Converter Registry] -- Enabling converters even without @ConverterMappings annotation ...
== Author ==
This library was developed by [http://www.dfki.de/web/kontakt/mitarbeiter/base_view?uid=anla00 Andreas Lauer].
It is used in several projects of the [http://www.dfki.de/km DFKI's Knowledge Management] Lab including [http://www.dfki.de/mymory Mymory],
[http://nepomuk.semanticdesktop.org Nepomuk], [http://www.dfki.uni-kl.de/perspecting Perspecting] and [http://projects.dfki.uni-kl.de/epiphany Epiphany].
== License ==
The library is published under [http://www.gnu.org/licenses/lgpl.html LGPL].
== Download ==
Latest Version 2.6
[http://www.dfki.uni-kl.de/artifactory2/libs-releases-local/dfki/km/delight/xmlrpc-delight/2.6/xmlrpc-delight-2.6-dist-all.zip]
(Login: guest/guest, or opendfki-accout if available)
Maven repository
{{{
http://www.dfki.uni-kl.de/artifactory2/libs-releases
}}}
Artifact coordinate
{{{
dfki.km.delightxmlrpc-delight2.6
}}}
'''Changes'''
- added enum support
- fixed: Bug in xml-rpc:1.1 (strings containing only spaces were discarded in method call)
----
Version 2.5.1
'''Changes'''
- mavenized project
- added support to plugin a default Converter
- XmlRpc clients can now be classes (even abstract classes). They don't have to be instances anymore. Needs [http://www.javassist.org/ javassist]
- created a Converter using XStream [http://www.dfki.uni-kl.de/artifactory2/libs-releases/dfki/km/delight/xstream-converter/1.0.0/xstream-converter-1.0.0.jar]
----
Latest Version: 2.2.1
[http://delight.opendfki.de/repos/trunk/XmlRpcDelight/dist/XmlRpcDelight-2.2.1_04.03.2009.zip]
'''Changes'''
- minor fixes (method typos), no new features
- added URL c'tor to XmlRpcConnection
- added FileConverter
Version 2.2:
'''Changes'''
- added new feature: unknown, xml-rpc unaware types without annotations are treated as !XmlRpcBeans
enable with: {{{XmlRpc.treatUnkownTypesAsBeans( true )}}}
- added support for types ''Float'' and ''float''
- support for sets added
- new automatic null-value masking feature: {{{XmlRpc.useAutomaticNullMasking( true )}}} enables the feature [[BR]]
values for all standard XML-RPC types (except BASE64), arrays and ''Convertable'' parameters can now be null-values. !XmlRpcBeans can have null-valued properties. !ParameterConverters can handle null-values separately, but also can rely on the new masking feature.
- Note: this version is java 1.5 compliant
Version 2.0:
'''Changes'''
- Contains annotation not needed anymore
- Array support added (also supported: primitive type arrays)
- Nested parameters and return types for collections, maps and arrays possible
- 'null'-parameters can be used together with !ParameterConverters
- Better logging support
v 1.0: [https://delight.opendfki.de/repos/trunk/XmlRpcDelight/dist/XmlRpcDelight-1.0_17.11.2006.zip]
== SVN Repository ==
A subversion repository is setup at [https://delight.opendfki.de/repos/]. Use the repository to checkout the latest version of XML-RPC Delight.
== Documentation ==
http://delight.opendfki.de/repos/trunk/XmlRpcDelight/apidoc/index.html
Also see some slides on XML-RPC Delight (for version 1.0)
available in [http://delight.opendfki.de/repos/tags/v1.0/XmlRpcDelight/doc/presentations/XmlRpcDelight_10.10.06.ppt ppt] or [http://delight.opendfki.de/repos/tags/v1.0/XmlRpcDelight/doc/presentations/XmlRpcDelight_10.10.06.pdf pdf] format.
== Feature Requests ==
- support automatic conversion of enums
- add an example how to run delight through a servlet