Using the remote RHPAM API in 100 ways ====================================== This project contains essentially two completely different things: - a fairly complete curl-based REST client for RHPAM - a number of JAX-RS implementations of various RHPAM clients The first one is called ```curl-client.sh``` and (optionally) loads its configuration from ```curl-client.conf``` (or some other file, as might be specified by command-line options. Run with ```--help``` to learn more about it. The other are three implementations RHPAM clients, each of which exposes two endpoints, one that will start a process, and one that will send a process a signal. They are all designed to work with the ```StartStopStart``` process model from the ```pam-simple-process``` project. They all use CDI to inject an instance of a corresponding WS-client into the implementation class, using CDI __qualifier annotations__ to tell the CDI container which of the producer methods in ```WebTargetProducer``` need to be invoked to instantiate the client. In turn, the CDI producer class uses ```ConfigProducer``` to get access to configuration settings from ```rhpam-rest-client.properties``` that tell it what endpoint to use when talking to RHPAM and how to authenticate. More detail on the implementations: - ```ManualInvocationClient``` is much like the ```UseRestEasyManualClient``` class from ```kie-rules-processes``` project; it talks to the RHPAM REST endpoints using an instance of ```WebTarget``` and does the response "unmarshalling" with the help of a simple class called ```ManualRhpamResponse``` - ```ProxyInvocationClient``` is alike to ```UseRestEasyProxyClient``` from the ```kie-rules-processes``` project, and uses a made-up JAX-RS interface defined in ```RhpamEndpoints``` to generate the RestEasy proxy client - ```SwaggerInvocationClient``` uses Java code generated by the ```swagger-codegen``` Maven plugin, which is still configured in ```pom.xml```, but disabled (that is, disconnected from Maven lifecycle); only the minimum amount of code needed to perform basic ```ProcessInstanceApi``` operations was added to the project, and some of the low-level ```ApiClient``` and ```ProcessInstanceApi``` code had to be modified to support basic HTTP authentication (see comments), thanks to the missing authentication data in ```swagger.json``` from RHPAM The exposed endpoints just forward the various parameters to the actual JAX-RS clients: - Kie Container ID - Process Model ID - Process Instance ID - Signal Name See the code for more information in the comments.