Cargo : Adding a container This page last changed on Dec 04, 2005 by vmassol. Before you start you might be interested in reading the Project Structure tutorial which shows the directory organization of the Cargo sources. The Building tutorial explains how to build Cargo from sources and the Contributing tutorial explains what rules to follow when contributing code. Here are some quick steps to follow if you wish to add support for a new container in Cargo: Subscribe to the cargo dev mailing list and ask as many question you'd like there! Create a JIRA issue on http://jira.codehaus.org (you'll need to register). I'll then add you to the cargo-developers group in JIRA and assign the issue to you Checkout Cargo from SVN trunk Understand the Cargo project's directory structure. Container implementations are located in `trunk/core/containers/ContainerName`. Have a look at existing container implementations (search for example for `Resin3xLocalContainer` or `Orion2xLocalContainer`). Create a `org.codehaus.cargo.container.containerName` package if it doesn't already exist. Create the following classes: A container implementation class named `_ServerNameNxContainerType_Container` where `ServerName` is the name of the container, `N` the version and `ContainerType` the type of container (Local or Remote). For example: `JBoss3xLocalContainer`. A configuration implementation class named `_ServerNameConfigurationType_Configuration` where `ConfigurationType` can be `StandaloneLocal` or `ExistingLocal`. For example `JBossStandaloneLocalConfiguration`. You may need to implement some ancillary classes but those are the main 2 required. Check how the other container are implemented to see how to implement them and what other classes you may need to implement. Cargo has an SPI that you should use and that should make it easy for you. Your container class should extend `org.codehaus.cargo.container.spi.Abstract_ContainerType_Container` and your configuration class should extend `org.codehaus.cargo.container.spi.configuration.Abstract_ConfigurationType_Configuration`. Register your new classes in the generic API in the Factory classes `trunk/core/api/generic` so that users can use your new container by using the generic API. Add your container to the tests in `trunk/samples/java`. This means editing the `*Test.java` classes and adding your container in the `suite()` method. Run the Cargo build to ensure everything is working. You'll probably find that you haven't followed the Cargo project's coding conventions... Fix those and build again until it passes! Register on Codehaus' confluence. Once this is done I'll add you to the cargo-developers user group so that you have the right to edit yourself the Cargo web site pages Document the new container on the Cargo web site Create a SVN patch and attach it to the JIRA issue you have created above Thanks and happy coding!

Document generated by Confluence on Mar 22, 2006 15:28