package org.easysoa.registry.rest.integration;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
/**
* Development-time application registry service interface.
* Meant to be called by development platforms, such as
* FraSCAti Studio and Talend Studio.
*
* Architecture : see https://github.com/easysoa/EasySOA/wiki/Easysoa-integration-architecture---development-platform
*
* TODO jguillemotte
*
* @author mdutoo, jguillemotte
*
*/
@Path("easysoa/devAppRegistryService")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface DevAppRegistryService {
/**
* Registers given development-time application.
*
* NB. to register services, use discovery while refering to a registered dev app
*
* Its implementation will create a
* TaggingFolder / top-level Deliverable / Application System / Component
* in the given subproject with the given properties, that service discovery
* will be able to refer to.
*
* @param name
* @param description also documentation : how it's done & meant to be used
* @param subProjectId where it is registered ; required
* @return created application(Id)
* @throws Exception If a problem occurs
*/
//@param platformServiceStandard (ex : SOAP[1.1]) (LATER)
//@param wsBindingTransport (ex : http://schemas.xmlsoap.org/soap/http) (LATER)
//@param platform (ex : fraSCAtiStudioPlatformId) (LATER)
@POST
@Path("/register")
public Object register(
String subProjectId,
String name,
String description,
String platformId/*TODO or criteria*/) throws Exception;
/**
* Returns registered development applications that match
*
* @param search looked up in name, description, TODO
* @param subProjectId if null, looks up in all subprojects
* OPT in the configured entreprise-wide environment(s)
* & version strategy (ex. "staging : latest published, integration : latest")
* @return found applications
* @throws Exception If a problem occurs
*/
//@param platformServiceStandard (ex : SOAP[1.1]) (LATER)
//@param wsBindingTransport (ex : http://schemas.xmlsoap.org/soap/http) (LATER)
//@param platform (ex : fraSCAtiStudioPlatformId) (LATER)
@GET
@Path("/query")
public Object query(
@QueryParam("search") String search,
@QueryParam("subProjectId") String subProjectId/*,
@QueryParam("platformServiceStandard") String platformServiceStandard,
@QueryParam("wsBindingTransport") String wsBindingTransport,
@QueryParam("platform") String platform*/ ) throws Exception;
}