This project just holds your service interface’s BSIDL and RESCRIPT extensions documents. Anything that needs to generate code to connect to this service will depend on this project. Look in the files located in src/main/resources for documentation on BSIDL and RESCRIPT.
Whenever you make a change to your BSIDL or RESCRIPT documents you need to re-install this artifact, then amend the interface implementation in the ‘application’ and ‘rescript-client’ projects accordingly.
Maven:
Install locally for use by ‘application’ and ‘rescript-client’ projects | mvn clean install |
Files:
/src/main/resources/<serviceName>Service.xml |
The BSIDL definition of the service interface |
/src/main/resources/<serviceName>Service-Extensions.xml |
The RESCRIPT mappings file for the service interface |
This project contains an Cougar application module that includes an implementation of the interface defined in the ‘idd’ project. This project generates a lot of Cougar framework code from the ‘idd’ resources using the (inhouse) maven-idl2ds-plugin (see pom.xml). Put your service’s unit tests in this project. The example implementation uses a synchronous interface, but an asynchronous interface is also available if you prefer (note that the async interface has ZERO performance benefit, it only offers a different programming style that is suitable for users who enqueue jobs internally). Contact the Cougar support team if you need help with asynchronous interface implementation.
Whenever you make a change to your application’s code, you need to re-install this artifact so that the ‘launcher’ project picks those changes up.
Maven:
Unit test | mvn clean test |
Install locally for use by ‘launcher’ project | mvn clean install |
Files:
/src/main/java |
Application code |
/src/test/java |
Unit tests |
/src/main/resources/conf |
Spring assembly files, default properties, other configuration |
/target/generated-sources |
Java sources generated from your idd project. This folder needs to be included in your IDE as a source root |
/target/generated-sources |
Non-source files generated from your idd project. This folder needs to be included in your IDE as a source root |
/target/generated-resources |
Your service’s IDD (a merge of services’ BSIDL and RESCRIPT mappings) plus WSDLs |
This project is responsible for integration testing and packaging the Cougar ‘application’ module into a component ZIP. The integration tests are transport-neutral and co-located within the same Cougar instance. However, these really are integration tests, since requests and responses traverse the entire ‘Execution Venue’ stack.
Maven:
Run tests | mvn clean test |
Run up a Cougar than will contain your application module (in test mode) | mvn exec:java |
Debug (connect a debugger on port 8000) | mvnDebug exec:java |
Build distributable | mvn assembly:assembly |
Files:
src/main/java/<package>/Launcher |
Main class |
src/main/resources/etc |
configuration |
src/main/resources/conf/overrides.properties |
Cougar property overrides |
src/test/java |
Integration tests |
src/test/resources/conf |
Cougar config to use in test mode |
src/main/assembly |
Maven assembly descriptors that will build distributables |
This project is an example of how you’d write a Cougar service interface client application in Java, using the RESCRIPT transport. The application just asks for input on stdin and invokes the ‘echoMessage’ operation on the remote interface. If you run this application or enable its integration tests, a remote Cougar must exist for it to connect to. By default, it expects that interface to be available on http://localhost:8080. You can change this by modding the ‘cougar.client.rescript.remoteaddress’ in src/test/resources/overrides.properties.
Maven:
Run application in test mode | mvn exec:java (you must have built everything first) |
Debug (connect a debugger on port 8000) | mvnDebug exec:java |
Run integration tests (requires Cougar on localhost:8080) | mvn -P integration test |
Note: You can run your service on http://localhost:8080 for use in the tests by going to the ‘launcher’ project and doing ‘mvn exec:java’.
Files:
src/main/java/<package> |
Main class and the sample Application |
src/main/resources/etc |
configuration |
/src/main/resources/conf |
Spring assembly files, default properties, other configuration |
src/tes/java |
Integration tests |
src/test/resources/conf |
Cougar config to use in test mode |
src/main/assembly |
Maven assembly descriptors that will build distributables |