A quick cut at the client interface, based on DomainClient:
public interface StandaloneServerClient {
/**
* Get the current server model for the standalone server.
*
* @return The server model
*/
ServerModel getServerModel();
/**
* Apply an update to the server, using optional {@link UpdateResultHandler}
* to get a callback indicating the outcome of the update.
*
* @param <R> the type of result that is returned by this update type
* @param <P> the type of the parameter to pass to the handler instance
* @param update the update. Cannot be <code>null</code>
* @param resultHandler the update applier. May be <code>null</code>
* @param param the parameter to pass to the handler
*/
<R, P> void applyUpdate(AbstractServerModelUpdate<R> update, UpdateResultHandler<R, P> resultHandler, P param);
/**
* Add the content for a deployment to the server's deployment content repository. Note that this does not trigger deployment.
*
* @param name The deployment name
* @param runtimeName The runtime name
* @param stream The data stream for the deployment
* @return The unique hash for the deployment
*/
byte[] addDeploymentContent(String name, String runtimeName, InputStream stream);
/**
* Gets a {@link ServerDeploymentManager} that provides a convenience API
* for manipulating deployments.
*
* @return the deployment manager. Will not be {@code null}
*/
ServerDeploymentManager getDeploymentManager();
}
Initially, please focus on the ServerDeploymentManager getDeploymentManager() method. The way that is handled in DomainClientImpl should give a good picture as to how the analogous thing can be handled here.