You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ch...@apache.org on 2013/03/12 19:23:01 UTC
svn commit: r1455662 [2/2] - in /uima/sandbox/uima-ducc/trunk:
uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/
uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/
uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ uima-ducc-sm/src/main...
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java Tue Mar 12 18:23:00 2013
@@ -715,7 +715,7 @@ public class ServiceHandler
if ( sset == null ) {
reply.setMessage("Unrecognized service ID[" + friendly + "] Endpoint[" + epname + "]");
reply.setEndpoint(epname);
- reply.setReturnCode(ServiceCode.NOTOK);
+ reply.setReturnCode(false);
} else {
IServiceDescription sd = sset.query();
updateServiceQuery(sd, sset);
@@ -736,7 +736,7 @@ public class ServiceHandler
ServiceSet sset = serviceStateHandler.getServiceForApi(friendly, epname);
if ( sset == null ) {
- return new ServiceReplyEvent(ServiceCode.NOTOK, "Service " + serviceIdString + " does not exist.", null, null);
+ return new ServiceReplyEvent(false, "Service " + serviceIdString + " does not exist.", null, null);
}
if ( sset.isRegistered() ) {
@@ -751,8 +751,8 @@ public class ServiceHandler
wanted = instances;
}
if ( wanted == 0 ) {
- return new ServiceReplyEvent(ServiceCode.NOTOK,
- "Service " + serviceIdString + " is started, instances[" + running + "]: ",
+ return new ServiceReplyEvent(true,
+ "Service " + serviceIdString + " instances[" + running + "], no additional instances started. ",
sset.getKey(),
sset.getId());
}
@@ -764,12 +764,12 @@ public class ServiceHandler
// Thread t = new Thread(apih);
// t.start();
- return new ServiceReplyEvent(ServiceCode.OK,
+ return new ServiceReplyEvent(true,
"Service " + serviceIdString + " start request accepted, new instances[" + wanted + "]",
sset.getKey(),
sset.getId());
} else {
- return new ServiceReplyEvent(ServiceCode.NOTOK,
+ return new ServiceReplyEvent(false,
"Service " + serviceIdString + " is not a registered service.",
sset.getKey(),
null);
@@ -821,12 +821,12 @@ public class ServiceHandler
ServiceSet sset = serviceStateHandler.getServiceForApi(friendly, epname);
if ( sset == null ) {
- return new ServiceReplyEvent(ServiceCode.NOTOK, "Service " + serviceIdString + " does not exist.", null, null);
+ return new ServiceReplyEvent(false, "Service " + serviceIdString + " does not exist.", null, null);
}
if ( sset.isRegistered() ) {
if ( (sset.countImplementors() == 0) && ( sset.isUimaAs()) ) {
- return new ServiceReplyEvent(ServiceCode.NOTOK, "Service " + serviceIdString + " is already stopped.", sset.getKey(), sset.getId());
+ return new ServiceReplyEvent(false, "Service " + serviceIdString + " is already stopped.", sset.getKey(), sset.getId());
}
int running = sset.countImplementors();
@@ -846,9 +846,9 @@ public class ServiceHandler
// t.start();
}
- return new ServiceReplyEvent(ServiceCode.OK, "Service " + serviceIdString + " stop request accepted for [" + tolose + "] instances.", sset.getKey(), sset.getId());
+ return new ServiceReplyEvent(true, "Service " + serviceIdString + " stop request accepted for [" + tolose + "] instances.", sset.getKey(), sset.getId());
} else {
- return new ServiceReplyEvent(ServiceCode.NOTOK, "Service " + friendly + " is not a registered service.", sset.getKey(), null);
+ return new ServiceReplyEvent(false, "Service " + friendly + " is not a registered service.", sset.getKey(), null);
}
}
@@ -897,7 +897,7 @@ public class ServiceHandler
sset = new ServiceSet(id, props_filename, meta_filename, props, meta);
} catch (Throwable t) {
error = t.getMessage();
- return new ServiceReplyEvent(ServiceCode.NOTOK, t.getMessage(), "New Service", id);
+ return new ServiceReplyEvent(false, t.getMessage(), "New Service", id);
}
String key = sset.getKey();
@@ -936,14 +936,14 @@ public class ServiceHandler
if ( error == null ) {
serviceStateHandler.putServiceByName(sset.getKey(), sset);
- return new ServiceReplyEvent(ServiceCode.OK, "Registered service.", key, id);
+ return new ServiceReplyEvent(true, "Registered service.", key, id);
} else {
File mf = new File(meta_filename);
mf.delete();
File pf = new File(props_filename);
pf.delete();
- return new ServiceReplyEvent(ServiceCode.NOTOK, error, key, id);
+ return new ServiceReplyEvent(false, error, key, id);
}
}
@@ -955,7 +955,7 @@ public class ServiceHandler
ServiceSet sset = serviceStateHandler.getServiceForApi(friendly, epname);
if ( sset == null ) {
- return new ServiceReplyEvent(ServiceCode.NOTOK, "Unrecognized service ID[" + friendly + "] Endpoint[" + epname + "]", "?", null);
+ return new ServiceReplyEvent(false, "Unrecognized service ID[" + friendly + "] Endpoint[" + epname + "]", "?", null);
}
if ( sset.isRegistered() ) {
@@ -963,9 +963,9 @@ public class ServiceHandler
// ApiHandler apih = new ApiHandler(ev, this);
// Thread t = new Thread(apih);
// t.start();
- return new ServiceReplyEvent(ServiceCode.OK, "Service " + serviceIdString + " modify request accepted.", sset.getKey(), sset.getId());
+ return new ServiceReplyEvent(true, "Service " + serviceIdString + " modify request accepted.", sset.getKey(), sset.getId());
} else {
- return new ServiceReplyEvent(ServiceCode.NOTOK, "Service " + friendly + " is not a known service.", sset.getKey(), null);
+ return new ServiceReplyEvent(false, "Service " + friendly + " is not a known service.", sset.getKey(), null);
}
}
@@ -1008,7 +1008,7 @@ public class ServiceHandler
ServiceSet sset = serviceStateHandler.getServiceForApi(friendly, epname);
if ( sset == null ) {
- return new ServiceReplyEvent(ServiceCode.NOTOK, "Service " + serviceIdString + " does not exist.", serviceIdString, null);
+ return new ServiceReplyEvent(false, "Service " + serviceIdString + " does not exist.", serviceIdString, null);
}
if ( sset.isRegistered() ) {
@@ -1017,9 +1017,9 @@ public class ServiceHandler
// ApiHandler apih = new ApiHandler(ev, this);
// Thread t = new Thread(apih);
// t.start();
- return new ServiceReplyEvent(ServiceCode.OK, "Service " + serviceIdString + " unregistered. Shutting down implementors.", sset.getKey(), sset.getId());
+ return new ServiceReplyEvent(true, "Service " + serviceIdString + " unregistered. Shutting down implementors.", sset.getKey(), sset.getId());
} else {
- return new ServiceReplyEvent(ServiceCode.NOTOK, "Service " + serviceIdString + " is not a registered service.", sset.getKey(), null);
+ return new ServiceReplyEvent(false, "Service " + serviceIdString + " is not a registered service.", sset.getKey(), null);
}
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceManagerComponent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceManagerComponent.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceManagerComponent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceManagerComponent.java Tue Mar 12 18:23:00 2013
@@ -29,18 +29,22 @@ import org.apache.camel.CamelContext;
import org.apache.uima.ducc.common.boot.DuccDaemonRuntimeProperties;
import org.apache.uima.ducc.common.boot.DuccDaemonRuntimeProperties.DaemonName;
import org.apache.uima.ducc.common.component.AbstractDuccComponent;
+import org.apache.uima.ducc.common.crypto.Crypto;
+import org.apache.uima.ducc.common.crypto.Crypto.AccessType;
import org.apache.uima.ducc.common.main.DuccService;
import org.apache.uima.ducc.common.utils.DuccCollectionUtils;
import org.apache.uima.ducc.common.utils.DuccCollectionUtils.DuccMapDifference;
import org.apache.uima.ducc.common.utils.DuccCollectionUtils.DuccMapValueDifference;
import org.apache.uima.ducc.common.utils.DuccLogger;
import org.apache.uima.ducc.common.utils.DuccProperties;
+import org.apache.uima.ducc.common.utils.LinuxUtils;
import org.apache.uima.ducc.common.utils.MissingPropertyException;
import org.apache.uima.ducc.common.utils.SystemPropertyResolver;
import org.apache.uima.ducc.common.utils.Version;
import org.apache.uima.ducc.common.utils.id.DuccId;
import org.apache.uima.ducc.common.utils.id.DuccIdFactory;
import org.apache.uima.ducc.transport.dispatcher.DuccEventDispatcher;
+import org.apache.uima.ducc.transport.event.AServiceRequest;
import org.apache.uima.ducc.transport.event.ServiceModifyEvent;
import org.apache.uima.ducc.transport.event.ServiceQueryEvent;
import org.apache.uima.ducc.transport.event.ServiceQueryReplyEvent;
@@ -97,8 +101,10 @@ public class ServiceManagerComponent
private DuccProperties sm_props = null;
private String service_seqno = "service.seqno";
private DuccIdFactory idFactory = new DuccIdFactory();
-
+
+ private boolean signature_required = true;
private boolean initialized = false;
+ private boolean testmode = false;
public ServiceManagerComponent(CamelContext context)
{
@@ -231,6 +237,17 @@ public class ServiceManagerComponent
meta_ping_timeout = SystemPropertyResolver.getIntProperty("ducc.sm.meta.ping.timeout", meta_ping_timeout);
meta_ping_stability = SystemPropertyResolver.getIntProperty("ducc.sm.meta.ping.stability", meta_ping_stability);
default_ping_class = SystemPropertyResolver.getStringProperty("ducc.sm.default.uima-as.ping.class", UimaAsPing.class.getName());
+ String rm = SystemPropertyResolver.getStringProperty("ducc.runmode", "");
+ if ( rm.equals("Test") ) testmode = true;
+
+ // yuck
+ String sig = SystemPropertyResolver.getStringProperty("ducc.signature.required", "on");
+ signature_required = true;
+ if ( sig.equals("on") ) signature_required = true;
+ else if ( sig.equals("off") ) signature_required = false;
+ else {
+ logger.warn(methodName, null, "Incorrect value for property ducc.signature.required: " + sig + ". Setting to default of \"on\"");
+ }
logger.info(methodName, null, "------------------------------------------------------------------------------------");
logger.info(methodName, null, "Service Manager starting:");
@@ -242,6 +259,8 @@ public class ServiceManagerComponent
logger.info(methodName, null, " JVM Path : ", System.getProperty("ducc.jvm"));
logger.info(methodName, null, " JMX URL : ", System.getProperty("ducc.jmx.url"));
logger.info(methodName, null, " OS Architecture : ", System.getProperty("os.arch"));
+ logger.info(methodName, null, " Crypto enabled : ", signature_required);
+ logger.info(methodName, null, " Test mode enabled : ", testmode);
logger.info(methodName, null, " Service ping rate : ", meta_ping_rate);
logger.info(methodName, null, " Service ping timeout : ", meta_ping_timeout);
logger.info(methodName, null, " Service ping stability : ", meta_ping_stability);
@@ -460,176 +479,6 @@ public class ServiceManagerComponent
}
}
- /**
- public void processIncomingOld(DuccWorkMap workMap)
- {
- String methodName = "evaluateServiceRequirements";
- logger.debug(methodName, null, "---Received Orchestrator State---");
- synchronized(serviceMap) {
- jobDisappeared(workMap);
- jobNotActive(workMap);
- servicesUpdate(workMap);
- }
- }
-
- private int jobDisappeared(DuccWorkMap workMap)
- {
- String methodName = "jobDisappeared";
- int count = 0;
- Iterator<DuccId> serviceMapIterator = serviceMap.keySet().iterator();
- while(serviceMapIterator.hasNext()) {
- DuccId duccId = serviceMapIterator.next();
- if(!workMap.containsKey(duccId)) {
- count++;
- serviceMap.removeService(duccId);
- logger.info(methodName, duccId, "Job removed (disappeared)");
- }
- }
- return count;
- }
-
- private int jobNotActive(DuccWorkMap workMap)
- {
- String methodName = "jobNotActive";
- int count = 0;
- Iterator<DuccId> workMapIterator = workMap.keySet().iterator();
- while(workMapIterator.hasNext()) {
- DuccId duccId = workMapIterator.next();
- IDuccWork duccWork = workMap.findDuccWork(duccId);
- switch(duccWork.getDuccType()) {
- case Job:
- case Service:
- DuccWorkJob duccWorkJob = (DuccWorkJob) duccWork;
- if(!duccWorkJob.isActive() && serviceMap.containsKey(duccId)) {
- count++;
- serviceMap.removeService(duccId);
- logger.info(methodName, duccId, "Job removed");
- }
- break;
- default:
- break;
- }
- }
- return count;
- }
-
- private int servicesUpdate(DuccWorkMap workMap)
- {
- String methodName = "servicesUpdate";
- int count = 0;
- Iterator<DuccId> workMapIterator = workMap.keySet().iterator();
- while(workMapIterator.hasNext()) {
- DuccId duccId = workMapIterator.next();
- IDuccWork duccWork = workMap.findDuccWork(duccId);
- switch(duccWork.getDuccType())
- {
- case Job:
- case Service:
- DuccWorkJob job = (DuccWorkJob) duccWork;
- if ( job.isActive() ) {
-
- count++;
- Services jobServices = new Services();
- if( !serviceMap.containsKey(duccId) ) {
- serviceMap.addService(duccId, jobServices);
- }
-
- //
- // TODO: For now this always sets Running
- //
- boolean enabled = true;
- if ( !enabled ) {
- logger.info(methodName, job.getDuccId(), "Service check bypassed: return ServiceState.Running");
- jobServices.setState(ServiceState.Running);
- } else {
-
- // TODO: Service manager will do this once it's ready.
- // Will track state of service from OR state as a submitted POP. Once
- // state Running is reached a ping is needed.
- // TODO: jobServices needs space for a collection of service states.
- //
- if ( dependenciesSatisfied(job) ) {
- jobServices.setState(ServiceState.Running);
- } else {
- jobServices.setState(ServiceState.NotAvailable);
- }
- }
-
- logger.info(methodName, duccId, "Job updated. State:", jobServices.getState());
- }
- break;
- default:
- break;
- }
- }
- return count;
- }
-*/
-//
-// /**
-// * Returns true if job service dependencies are satisfied. False otherwise.
-// *
-// * @param duccWorkJob - Job with (possible) dependencies on remote services
-// * @return - true if job's dependencies are satisfied. False otherwise
-// */
-// private boolean dependenciesSatisfied(DuccWorkJob duccWorkJob)
-// {
-// String methodName = "dependenciesSatisfied";
-// try {
-// String[] deps = duccWorkJob.getServiceDependencies();
-// if ( deps == null ) {
-// logger.info(methodName, duccWorkJob.getDuccId(), "No service dependencies, returns satisfied.");
-// return true;
-// }
-//
-// List<ServiceSpecifier> remoteDependencies = new ArrayList<ServiceSpecifier>();
-// for ( String dep : deps ) {
-// remoteDependencies.add(new ServiceSpecifier(dep));
-// }
-// return validDependencies(duccWorkJob.getDuccId(),remoteDependencies);
-// } catch( Exception e) {
-// logger.error(methodName, duccWorkJob.getDuccId(), e);
-// }
-// return false;
-// }
-
- /**
- * Validates availability of remote services. Reads given deployment descriptor,
- * extracts AE descriptor and parses it to get ResourceSpecifier. The code then
- * iterates over delegates looking for CustomResourceSpecifier type. If found,
- * a delegate is a remote service which must be tested for availability. An instance
- * of UIMA AS client is created for each remote service to test GetMeta response. If
- * a remote service does not respond, the client times out and service is considered
- * as not available.
- *
- * @param ddFile - deployment descriptor file
- * @param duccId - job ducc id
- * @return - true is dependent services are available. False, otherwise.
- * @throws Exception
- */
-// private boolean validDependencies(DuccId duccId, List<ServiceSpecifier> remotes) throws Exception
-// {
-// String methodName = "validDependencies";
-// boolean answer = true;
-//
-// // iterate over remotes. Send GetMeta request to each one and wait for reply.
-// // If the remote is available it will respond. Otherwise, either a
-// // broker is down or service is not available and we time out.
-// for( ServiceSpecifier remote : remotes ) {
-// BaseUimaAsService sd = services.get(remote.key());
-// if ( sd == null ) { // make sure its registered
-// logger.info(methodName, duccId, "Service not registered:", remote.key());
-// answer = false;
-// } else {
-// boolean p = ping(sd); // use a tmp so we can log
-// answer &= p;
-// logger.info(methodName, duccId, "Dependency available for", remote.key, ":", p);
-// }
-// }
-// return answer;
-// }
-
-
public void setTransportConfiguration(DuccEventDispatcher eventDispatcher, String endpoint)
{
this.eventDispatcher = eventDispatcher;
@@ -677,26 +526,6 @@ public class ServiceManagerComponent
notify();
}
- /**
- * Every ping needs to update state if it changes
- */
-// private boolean ping(BaseUimaAsService sd)
-// {
-// String methodName = "ping";
-// boolean answer = false;
-// ServiceState oldState = sd.getState();
-// answer = sd.ping();
-// if ( sd.getState() != oldState ) {
-// try {
-// writeProps(sd);
-// } catch ( Throwable t ) {
-// // log the problem but this isn't a good reason to crash anything.
-// logger.error(methodName, null, "Cannot update state file after ping:", t.getMessage());
-// }
-// }
-// return answer;
-// }
-
private String serviceFileLocation()
{
return System.getProperty("DUCC_HOME") + "/state/services";
@@ -707,15 +536,42 @@ public class ServiceManagerComponent
return serviceFileLocation() + "/" + fn;
}
-// public void writeProps(BaseUimaAsService sd)
-// throws Throwable
-// {
-// DuccProperties props = sd.getProperties();
-// String fn = serviceFileKey(sd.getStringProperty("service-file-key"));
-// FileOutputStream fos = new FileOutputStream(fn);
-// props.store(fos, "Service Descriptor for " + sd.getKey());
-// fos.close();
-// }
+ private boolean check_signature(String user, byte[] auth_block)
+ throws Throwable
+ {
+ String userHome = null;
+ if ( testmode ) {
+ userHome = System.getProperty("user.home");
+ } else {
+ userHome = LinuxUtils.getUserHome(user);
+ }
+
+ Crypto crypto = new Crypto(userHome,AccessType.READER);
+ String signature = (String)crypto.decrypt(auth_block);
+
+ return user.equals(signature);
+ }
+
+ private boolean validate_user(String action, AServiceRequest req)
+ {
+ String methodName = "validate_user";
+ String user = req.getUser();
+ byte[] auth_block= req.getAuth();
+ boolean validated = false;
+
+ try {
+ validated = signature_required && check_signature(user, auth_block);
+ } catch ( Throwable t ) {
+ logger.error(methodName, null, "Crypto failure:", t.toString());
+ }
+
+ if ( ! validated ) {
+ logger.warn(methodName, null, "User", user, "cannot be validated.", action, "rejected.");
+ req.setReply(new ServiceReplyEvent(false, "User " + user + " cannot be validated. " + action + " rejected.", "NONE", null));
+ return false;
+ }
+ return true;
+ }
public synchronized void register(ServiceRegisterEvent ev)
{
@@ -724,15 +580,16 @@ public class ServiceManagerComponent
String endpoint = ev.getEndpoint();
int instances = ev.getNinstances();
Trinary autostart = ev.getAutostart();
- String user = ev.getUser();
-
+ String user = ev.getUser();
+
+ if ( ! validate_user("Register", ev) ) return; // necessary messages emitted in here
DuccId id = null;
try {
id = newId();
} catch ( Exception e ) {
logger.error(methodName, null, e);
- ev.setReply(new ServiceReplyEvent(ServiceCode.NOTOK, "Internal error; unable to generate id", endpoint, null));
+ ev.setReply(new ServiceReplyEvent(false, "Internal error; unable to generate id", endpoint, null));
return;
}
logger.debug(methodName, id, "Unique:", id.getUnique());
@@ -756,14 +613,10 @@ public class ServiceManagerComponent
ev.setReply(reply);
// Draw attentipn in the log on registration failures
- switch ( reply.getReturnCode() ) {
- case OK:
- logger.info(methodName, id, ev.toString());
- break;
-
- case NOTOK:
- logger.warn(methodName, id, ev.toString());
- break;
+ if ( reply.getReturnCode() ) {
+ logger.info(methodName, id, ev.toString());
+ } else {
+ logger.warn(methodName, id, ev.toString());
}
}
@@ -771,6 +624,9 @@ public class ServiceManagerComponent
{
String methodName = "unregister";
long id = ev.getFriendly();
+
+ if ( ! validate_user("Unregister", ev) ) return; // necessary messages emitted in here
+
logger.info(methodName, null, "De-registering service", id);
ServiceReplyEvent reply = handler.unregister(ev);
ev.setReply(reply);
@@ -779,6 +635,9 @@ public class ServiceManagerComponent
public synchronized void start(ServiceStartEvent ev)
{
String methodName = "startService";
+
+ if ( ! validate_user("Start", ev) ) return; // necessary messages emitted in here
+
logger.info(methodName, null, "Starting service", ev.toString());
ServiceReplyEvent reply = handler.start(ev);
ev.setReply(reply);
@@ -788,6 +647,9 @@ public class ServiceManagerComponent
public synchronized void stop(ServiceStopEvent ev)
{
String methodName = "stopService";
+
+ if ( ! validate_user("Stop", ev) ) return; // necessary messages emitted in here
+
logger.info(methodName, null, "Stopping service", ev.toString());
ServiceReplyEvent reply = handler.stop(ev);
ev.setReply(reply);
@@ -797,6 +659,9 @@ public class ServiceManagerComponent
public synchronized void query(ServiceQueryEvent ev)
{
String methodName = "query";
+
+ if ( ! validate_user("Query", ev) ) return; // necessary messages emitted in here
+
logger.info(methodName, null, "Query", ev.toString());
ServiceQueryReplyEvent reply = handler.query(ev);
ev.setReply(reply);
@@ -806,6 +671,9 @@ public class ServiceManagerComponent
public synchronized void modify(ServiceModifyEvent ev)
{
String methodName = "modify";
+
+ if ( ! validate_user("Modify", ev) ) return; // necessary messages emitted in here
+
logger.info(methodName, null, "Modify", ev.toString());
ServiceReplyEvent reply = handler.modify(ev);
ev.setReply(reply);
@@ -822,18 +690,4 @@ public class ServiceManagerComponent
fos.close();
return id;
}
-
- /**
- public static void main(String[] args)
- {
- try {
- ServiceManagerComponent sm = new ServiceManagerComponent(new DefaultCamelContext());
- if ( sm.validDependencies( new DuccId(100), new ArrayList<RemoteService>()) ) {
- }
-
- } catch( Exception e) {
- e.printStackTrace();
- }
- }
- */
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/event/ServiceManagerEventListener.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/event/ServiceManagerEventListener.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/event/ServiceManagerEventListener.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/event/ServiceManagerEventListener.java Tue Mar 12 18:23:00 2013
@@ -75,7 +75,7 @@ public class ServiceManagerEventListener
private ServiceReplyEvent failureEvent(String message)
{
- return new ServiceReplyEvent(ServiceCode.NOTOK, message, "no.endpoint", null);
+ return new ServiceReplyEvent(false, message, "no.endpoint", null);
}
private ServiceReplyEvent failureEvent()
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/AServiceRequest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/AServiceRequest.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/AServiceRequest.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/AServiceRequest.java Tue Mar 12 18:23:00 2013
@@ -18,31 +18,46 @@
*/
package org.apache.uima.ducc.transport.event;
-import org.apache.uima.ducc.transport.event.sm.IService;
-
/**
* Common service constants.
*/
@SuppressWarnings("serial")
public abstract class AServiceRequest
extends AbstractDuccEvent
- implements IService
+ //implements IService
{
+
+ String user;
+ byte[] auth_block;
+
ServiceReplyEvent reply;
- public AServiceRequest(EventType eventType)
+ public AServiceRequest(EventType eventType, String user, byte[] auth_block)
{
super(eventType);
+ this.user = user;
+ this.auth_block = auth_block;
}
public ServiceReplyEvent getReply()
{
return reply;
}
+
public void setReply(ServiceReplyEvent reply)
{
this.reply = reply;
}
+ public String getUser()
+ {
+ return user;
+ }
+
+ public byte[] getAuth()
+ {
+ return auth_block;
+ }
+
@Override
public String toString() {
return "AServiceRequest [reply=" + reply + "]";
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceModifyEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceModifyEvent.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceModifyEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceModifyEvent.java Tue Mar 12 18:23:00 2013
@@ -18,26 +18,23 @@
*/
package org.apache.uima.ducc.transport.event;
-import org.apache.uima.ducc.transport.event.sm.IService;
+import org.apache.uima.ducc.transport.event.sm.IService.Trinary;
@SuppressWarnings("serial")
public class ServiceModifyEvent
extends AServiceRequest
- implements IService
{
private long friendly; // the "friendly" part of a DuccId
private String epname;
- private String user;
private int instances; // 0 ==> don't modify instances
private Trinary autostart;
private boolean activate;
- public ServiceModifyEvent(String user, long friendly, String epname)
+ public ServiceModifyEvent(String user, long friendly, String epname, byte[] auth_block)
{
- super(EventType.SERVICE_STOP);
+ super(EventType.SERVICE_STOP, user, auth_block);
this.friendly = friendly;
this.epname = epname;
- this.user = user;
this.instances = -1; // default, instances aren't changed
this.autostart = Trinary.Unset;
this.activate = false;
@@ -82,10 +79,6 @@ public class ServiceModifyEvent
return epname;
}
- public String getUser() {
- return user;
- }
-
@Override
public String toString() {
return "ServiceModifyEvent [friendly=" + friendly + ", user=" + user + ", instances=" + instances
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceQueryEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceQueryEvent.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceQueryEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceQueryEvent.java Tue Mar 12 18:23:00 2013
@@ -22,14 +22,12 @@ package org.apache.uima.ducc.transport.e
public class ServiceQueryEvent
extends AServiceRequest
{
- String user;
long friendly;
String epname;
- public ServiceQueryEvent(String user, long friendly, String epname)
+ public ServiceQueryEvent(String user, long friendly, String epname, byte[] auth_block)
{
- super(EventType.SERVICE_QUERY);
- this.user = user;
+ super(EventType.SERVICE_QUERY, user, auth_block);
this.friendly = friendly;
this.epname = epname;
}
@@ -41,9 +39,4 @@ public class ServiceQueryEvent
public String getEndpoint() {
return epname;
}
-
- public String getUser()
- {
- return user;
- }
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceQueryReplyEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceQueryReplyEvent.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceQueryReplyEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceQueryReplyEvent.java Tue Mar 12 18:23:00 2013
@@ -19,6 +19,7 @@
package org.apache.uima.ducc.transport.event;
import java.util.ArrayList;
+import java.util.List;
import org.apache.uima.ducc.transport.event.sm.IServiceDescription;
@@ -29,10 +30,10 @@ public class ServiceQueryReplyEvent
{
// same as a ServiceReply Event plus it has a collection of info about services.
- ArrayList<IServiceDescription> services = new ArrayList<IServiceDescription>();
+ List<IServiceDescription> services = new ArrayList<IServiceDescription>();
public ServiceQueryReplyEvent()
{
- super(ServiceCode.OK, "Query Reply", "No Endpoint", null);
+ super(true, "Query Reply", "No Endpoint", null);
}
public void addService(IServiceDescription s)
@@ -40,7 +41,7 @@ public class ServiceQueryReplyEvent
this.services.add(s);
}
- public ArrayList<IServiceDescription> getServices()
+ public List<IServiceDescription> getServices()
{
return services;
}
@@ -49,7 +50,7 @@ public class ServiceQueryReplyEvent
{
StringBuilder sb = new StringBuilder();
if ( services.size() == 0 ) {
- if ( this.getReturnCode() == ServiceCode.NOTOK ) {
+ if ( this.getReturnCode() == false ) {
return super.getMessage();
} else {
return "No Services";
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceRegisterEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceRegisterEvent.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceRegisterEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceRegisterEvent.java Tue Mar 12 18:23:00 2013
@@ -19,6 +19,7 @@
package org.apache.uima.ducc.transport.event;
import org.apache.uima.ducc.common.utils.DuccProperties;
+import org.apache.uima.ducc.transport.event.sm.IService.Trinary;
@SuppressWarnings("serial")
public class ServiceRegisterEvent
@@ -28,13 +29,11 @@ public class ServiceRegisterEvent
private int ninstances;
private Trinary autostart;
private String endpoint;
- private String user;
private DuccProperties descriptor;
- public ServiceRegisterEvent(String user, int ninstances, Trinary autostart, String endpoint, DuccProperties descriptor)
+ public ServiceRegisterEvent(String user, int ninstances, Trinary autostart, String endpoint, DuccProperties descriptor, byte[] auth_block)
{
- super(EventType.SERVICE_REGISTER);
- this.user = user;
+ super(EventType.SERVICE_REGISTER, user, auth_block);
this.ninstances = ninstances;
this.autostart = autostart;
this.endpoint = endpoint;
@@ -54,11 +53,6 @@ public class ServiceRegisterEvent
}
- public String getUser() {
- return user;
- }
-
-
public DuccProperties getDescriptor() {
return descriptor;
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceReplyEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceReplyEvent.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceReplyEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceReplyEvent.java Tue Mar 12 18:23:00 2013
@@ -18,21 +18,24 @@
*/
package org.apache.uima.ducc.transport.event;
+import java.util.List;
+
import org.apache.uima.ducc.common.utils.id.DuccId;
-import org.apache.uima.ducc.transport.event.sm.IService;
+import org.apache.uima.ducc.transport.event.sm.IServiceDescription;
+import org.apache.uima.ducc.transport.event.sm.IServiceReply;
@SuppressWarnings("serial")
public class ServiceReplyEvent
extends AbstractDuccEvent
- implements IService
+ implements IServiceReply
{
- private ServiceCode return_code;
+ private boolean return_code;
private String message = "N/A";
private String endpoint;
private DuccId id;
- public ServiceReplyEvent(ServiceCode rc, String message, String endpoint, DuccId id)
+ public ServiceReplyEvent(boolean rc, String message, String endpoint, DuccId id)
{
super(EventType.SERVICE_REPLY);
this.return_code = rc;
@@ -41,11 +44,11 @@ public class ServiceReplyEvent
this.id = id;
}
- public ServiceCode getReturnCode() {
+ public boolean getReturnCode() {
return return_code;
}
- public void setReturnCode(ServiceCode return_code) {
+ public void setReturnCode(boolean return_code) {
this.return_code = return_code;
}
@@ -65,17 +68,27 @@ public class ServiceReplyEvent
this.endpoint = endpoint;
}
- public DuccId getId() {
+ public DuccId getDuccId() {
return id;
}
+ public long getId()
+ {
+ return (id == null ) ? -1 : id.getFriendly();
+ }
+
public void setId(DuccId id) {
this.id = id;
}
+ public List<IServiceDescription> getServiceDescriptions()
+ {
+ return null;
+ }
+
@Override
public String toString() {
- return "ServiceReplyEvent [return_code=" + return_code + ", message="
+ return "ServiceReplyEvent [return_code=" + (return_code ? "OK" : "NOTOK") + ", message="
+ message + ", endpoint=" + endpoint + ", id=" + id + "]";
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStartEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStartEvent.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStartEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStartEvent.java Tue Mar 12 18:23:00 2013
@@ -26,12 +26,10 @@ public class ServiceStartEvent
private String epname;
private int instances;
private boolean update;
- private String user;
- public ServiceStartEvent(String user, int friendly, String epname)
+ public ServiceStartEvent(String user, int friendly, String epname, byte[] auth_block)
{
- super(EventType.SERVICE_START);
- this.user = user;
+ super(EventType.SERVICE_START, user, auth_block);
this.friendly = friendly;
this.epname = epname;
this.instances = -1; // default, don't change number of instances
@@ -65,10 +63,6 @@ public class ServiceStartEvent
this.update = update;
}
- public String getUser() {
- return user;
- }
-
public String toString() {
return "ServiceStartEvent [friendly=" + friendly + ", user=" + user + ", instances=" + instances + ", update=" + update
+ "]";
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStopEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStopEvent.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStopEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStopEvent.java Tue Mar 12 18:23:00 2013
@@ -18,25 +18,21 @@
*/
package org.apache.uima.ducc.transport.event;
-import org.apache.uima.ducc.transport.event.sm.IService;
@SuppressWarnings("serial")
public class ServiceStopEvent
extends AServiceRequest
- implements IService
{
private long friendly;
private String epname;
- private String user;
private int instances;
private boolean update;
- public ServiceStopEvent(String user, long friendly, String epname)
+ public ServiceStopEvent(String user, long friendly, String epname, byte[] auth_block)
{
- super(EventType.SERVICE_STOP);
+ super(EventType.SERVICE_STOP, user, auth_block);
this.friendly = friendly;
this.epname = epname;
- this.user = user;
this.instances = -1;
}
@@ -49,10 +45,6 @@ public class ServiceStopEvent
return epname;
}
- public String getUser() {
- return user;
- }
-
public int getInstances() {
return instances;
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceUnregisterEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceUnregisterEvent.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceUnregisterEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceUnregisterEvent.java Tue Mar 12 18:23:00 2013
@@ -18,27 +18,23 @@
*/
package org.apache.uima.ducc.transport.event;
-import org.apache.uima.ducc.transport.event.sm.IService;
-
@SuppressWarnings("serial")
public class ServiceUnregisterEvent
extends AServiceRequest
- implements IService
{
private long friendly;
private String epname;
- private String user;
- public ServiceUnregisterEvent(String user, long friendly, String epname)
+ public ServiceUnregisterEvent(String user, long friendly, String epname, byte[] auth_block)
{
- super(EventType.SERVICE_UNREGISTER);
+ super(EventType.SERVICE_UNREGISTER, user, auth_block);
this.friendly = friendly;
this.epname = epname;
- this.user = user;
}
- public long getFriendly() {
+ public long getFriendly()
+ {
return friendly;
}
@@ -47,10 +43,6 @@ public class ServiceUnregisterEvent
return epname;
}
- public String getUser() {
- return user;
- }
-
@Override
public String toString() {
return "ServiceUnregisterEvent [friendly=" + friendly + ", user="
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IService.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IService.java?rev=1455662&r1=1455661&r2=1455662&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IService.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IService.java Tue Mar 12 18:23:00 2013
@@ -29,11 +29,6 @@ public interface IService
extends Serializable
{
static final String NULL = "<none>";
- public static enum ServiceCode
- {
- OK, // API: The requested action succeeded
- NOTOK // API: the Requested action did not succeed.
- };
//
// For boolean options, we want a trinary: true, false, unset
@@ -53,79 +48,79 @@ public interface IService
}
};
- public enum ServiceVerb
- {
- //
- // I want to expose these things to the API with the ugly upper-case notation but don't
- // want that ugliness in the variables, so we have encode and decode routines to do the
- // correct translation.
- //
- Register {
- public String decode() { return "register"; }
- public String description() { return "Register a service."; }
- public String argname() { return "service-DD-specification."; }
- },
- Unregister {
- public String decode() { return "unregister" ; }
- public String description() { return "Unregister a service." ; }
- public String argname() { return "service-id-or-endpoint" ; }
- },
- Start {
- public String decode() { return "start"; }
- public String description() { return "Start a registered service." ; }
- public String argname() { return "service-id-or-endpoint" ; }
- },
- Stop {
- public String decode() { return "stop"; }
- public String description() { return "Stop a registered service." ; }
- public String argname() { return "service-id-or-endpoint [--instances number-to-stop]" ; }
- },
- Modify {
- public String decode() { return "modify"; }
- public String description() { return "Modify meta properties for a registered service." ; }
- public String argname() { return "modify-parameters" ; }
- },
- Query {
- public String decode() { return "query"; }
- public String description() { return "Query registered services." ; }
- public String argname() { return "none" ; }
- },
- Help {
- public String decode() { return "help"; }
- public String description() { return "This help message." ; }
- public String argname() { return "none" ; }
- },
- Debug {
- public String decode() { return "debug"; }
- public String description() { return "Debug cli" ; }
- public String argname() { return "none" ; }
- },
- Unknown {
- public String decode() { return "unknown"; }
- public String description() { return "unknown" ; }
- public String argname() { return "unknown" ; }
- },
- ;
-
- public abstract String decode();
- public abstract String description();
- public abstract String argname();
+// public enum ServiceVerb
+// {
+// //
+// // I want to expose these things to the API with the ugly upper-case notation but don't
+// // want that ugliness in the variables, so we have encode and decode routines to do the
+// // correct translation.
+// //
+// Register {
+// public String decode() { return "register"; }
+// public String description() { return "Register a service."; }
+// public String argname() { return "service-DD-specification."; }
+// },
+// Unregister {
+// public String decode() { return "unregister" ; }
+// public String description() { return "Unregister a service." ; }
+// public String argname() { return "service-id-or-endpoint" ; }
+// },
+// Start {
+// public String decode() { return "start"; }
+// public String description() { return "Start a registered service." ; }
+// public String argname() { return "service-id-or-endpoint" ; }
+// },
+// Stop {
+// public String decode() { return "stop"; }
+// public String description() { return "Stop a registered service." ; }
+// public String argname() { return "service-id-or-endpoint [--instances number-to-stop]" ; }
+// },
+// Modify {
+// public String decode() { return "modify"; }
+// public String description() { return "Modify meta properties for a registered service." ; }
+// public String argname() { return "modify-parameters" ; }
+// },
+// Query {
+// public String decode() { return "query"; }
+// public String description() { return "Query registered services." ; }
+// public String argname() { return "none" ; }
+// },
+// Help {
+// public String decode() { return "help"; }
+// public String description() { return "This help message." ; }
+// public String argname() { return "none" ; }
+// },
+// Debug {
+// public String decode() { return "debug"; }
+// public String description() { return "Debug cli" ; }
+// public String argname() { return "none" ; }
+// },
+// Unknown {
+// public String decode() { return "unknown"; }
+// public String description() { return "unknown" ; }
+// public String argname() { return "unknown" ; }
+// },
+// ;
+
+// public abstract String decode();
+// public abstract String description();
+// public abstract String argname();
- public static ServiceVerb encode(String value)
- {
- if ( value.equals("register") ) return Register;
- if ( value.equals("unregister") ) return Unregister;
- if ( value.equals("start") ) return Start;
- if ( value.equals("stop") ) return Stop;
- if ( value.equals("modify") ) return Modify;
- if ( value.equals("query") ) return Query;
- if ( value.equals("help") ) return Help;
- if ( value.equals("debug") ) return Debug;
+// public static ServiceVerb encode(String value)
+// {
+// if ( value.equals("register") ) return Register;
+// if ( value.equals("unregister") ) return Unregister;
+// if ( value.equals("start") ) return Start;
+// if ( value.equals("stop") ) return Stop;
+// if ( value.equals("modify") ) return Modify;
+// if ( value.equals("query") ) return Query;
+// if ( value.equals("help") ) return Help;
+// if ( value.equals("debug") ) return Debug;
- return Unknown;
- }
+// return Unknown;
+// }
- };
+// };
public enum ServiceType
{
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java?rev=1455662&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java Tue Mar 12 18:23:00 2013
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.transport.event.sm;
+
+import java.util.ArrayList;
+import java.util.Map;
+
+import org.apache.uima.ducc.common.ServiceStatistics;
+import org.apache.uima.ducc.common.utils.id.DuccId;
+import org.apache.uima.ducc.transport.event.common.IDuccState.JobState;
+
+public interface IServiceDescription
+ extends IService
+{
+
+ public DuccId getId();
+ public void setId(DuccId id);
+
+ public ArrayList<DuccId> getImplementors();
+ public void setImplementors(ArrayList<DuccId> implementors);
+
+ public ArrayList<DuccId> getReferences();
+ public void setReferences(ArrayList<DuccId> references);
+
+ public ServiceType getType();
+ public void setType(ServiceType type);
+
+ public ServiceClass getSubclass();
+ public void setSubclass(ServiceClass subclass);
+
+ public String getEndpoint();
+ public void setEndpoint(String endpoint);
+
+ public String getBroker();
+ public void setBroker(String broker);
+
+ public ServiceState getServiceState();
+ public void setServiceState(ServiceState serviceState);
+
+ public JobState getJobState();
+ public void setJobState(JobState jobState);
+
+ public boolean isActive();
+ public void setActive(boolean active);
+
+ public void setDeregistered(boolean d);
+ public void setQueueStatistics(ServiceStatistics qstats);
+
+ public ServiceStatistics getQueueStatistics();
+ public void setAutostart(boolean autostart);
+
+ public boolean isStopped();
+ public void setStopped(boolean stopped);
+
+ public ServiceStatistics getQstats();
+ public void setQstats(ServiceStatistics qstats);
+
+ public boolean isDeregistered();
+
+ public void setInstances(int instances);
+ public int getInstances();
+
+ public void setLinger(long linger);
+ public long getLinger();
+
+ public void addDependency(String endpoint, String msg);
+ public Map<String, String> getDependencies();
+
+}
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceReply.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceReply.java?rev=1455662&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceReply.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceReply.java Tue Mar 12 18:23:00 2013
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.transport.event.sm;
+
+import java.util.List;
+
+public interface IServiceReply
+{
+ public boolean getReturnCode();
+ public String getMessage();
+ public String getEndpoint();
+ public long getId();
+
+ public List<IServiceDescription> getServiceDescriptions();
+}
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/ServiceDescription.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/ServiceDescription.java?rev=1455662&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/ServiceDescription.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/ServiceDescription.java Tue Mar 12 18:23:00 2013
@@ -0,0 +1,333 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.transport.event.sm;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.uima.ducc.common.ServiceStatistics;
+import org.apache.uima.ducc.common.utils.id.DuccId;
+import org.apache.uima.ducc.transport.event.common.IDuccState.JobState;
+
+
+
+public class ServiceDescription
+ implements IServiceDescription
+{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ // For submitted and registered services
+ private ArrayList<DuccId> implementors;
+
+ // key is job/service id, value is same. it's a map for fast existence check
+ private ArrayList<DuccId> references;
+
+ // UIMA-AS or CUSTOM
+ private ServiceType type;
+
+ // Implicit, Submitted, Registered
+ private ServiceClass subclass;
+
+ // for uima-as
+ private String endpoint;
+ private String broker;
+
+ // The state we give OR - indicates availability of the service
+ private ServiceState serviceState = ServiceState.Undefined;
+
+ // The state of the service as a DUCC job
+ private JobState jobState;
+
+ // ping thread alive
+ private boolean active;
+
+ // current autorstart state
+ private boolean autostart = true;
+
+ // manual stop?
+ private boolean stopped = false;
+
+ // for submitted service, the registered service id
+ private DuccId id;
+ private boolean deregistered; // still known but trying to shutdown
+
+ // number of registered instances
+ private int instances;
+
+ private long linger;
+ private Map<String, String> dependencies;
+
+ private ServiceStatistics qstats;
+
+ public DuccId getId() {
+ return id;
+ }
+
+ public void setId(DuccId id) {
+ this.id = id;
+ }
+
+ public ArrayList<DuccId> getImplementors() {
+ return implementors;
+ }
+
+ public void setImplementors(ArrayList<DuccId> implementors) {
+ this.implementors = implementors;
+ }
+
+ public ArrayList<DuccId> getReferences() {
+ return references;
+ }
+
+ public void setReferences(ArrayList<DuccId> references) {
+ this.references = references;
+ }
+
+ public ServiceType getType() {
+ return type;
+ }
+
+ public void setType(ServiceType type) {
+ this.type = type;
+ }
+
+ public ServiceClass getSubclass() {
+ return subclass;
+ }
+
+ public void setSubclass(ServiceClass subclass) {
+ this.subclass = subclass;
+ }
+
+ public String getEndpoint() {
+ return endpoint;
+ }
+
+ public void setEndpoint(String endpoint) {
+ this.endpoint = endpoint;
+ }
+
+ public String getBroker() {
+ return broker;
+ }
+
+ public void setBroker(String broker) {
+ this.broker = broker;
+ }
+
+ public ServiceState getServiceState() {
+ return serviceState;
+ }
+
+ public void setServiceState(ServiceState serviceState) {
+ this.serviceState = serviceState;
+ }
+
+ public JobState getJobState() {
+ return jobState;
+ }
+
+ public void setJobState(JobState jobState) {
+ this.jobState = jobState;
+ }
+
+ public boolean isActive() {
+ return active;
+ }
+
+ public void setActive(boolean active) {
+ this.active = active;
+ }
+
+ public void setDeregistered(boolean d)
+ {
+ this.deregistered = d;
+ }
+
+ public void setQueueStatistics(ServiceStatistics qstats)
+ {
+ this.qstats = qstats;
+ }
+
+ public ServiceStatistics getQueueStatistics()
+ {
+ return qstats;
+ }
+
+
+ public boolean isAutostart() {
+ return autostart;
+ }
+
+ public void setAutostart(boolean autostart) {
+ this.autostart = autostart;
+ }
+
+ public boolean isStopped() {
+ return stopped;
+ }
+
+ public void setStopped(boolean stopped) {
+ this.stopped = stopped;
+ }
+
+ public ServiceStatistics getQstats() {
+ return qstats;
+ }
+
+ public void setQstats(ServiceStatistics qstats) {
+ this.qstats = qstats;
+ }
+
+ public boolean isDeregistered() {
+ return deregistered;
+ }
+
+ public void setInstances(int instances)
+ {
+ this.instances = instances;
+ }
+
+ public int getInstances()
+ {
+ return instances;
+ }
+
+ public void setLinger(long linger)
+ {
+ this.linger = linger;
+ }
+
+ public long getLinger()
+ {
+ return this.linger;
+ }
+
+ public void addDependency(String endpoint, String msg)
+ {
+ if ( this.dependencies == null ) {
+ this.dependencies = new HashMap<String, String>();
+ }
+ this.dependencies.put(endpoint, msg);
+ }
+
+ public Map<String, String> getDependencies()
+ {
+ return this.dependencies;
+ }
+
+ public String toString()
+ {
+ StringBuffer sb = new StringBuffer();
+ sb.append("Service: ");
+ sb.append(type.decode());
+ sb.append(":");
+ sb.append(endpoint);
+
+ if ( type == ServiceType.UimaAs ) {
+ sb.append(":");
+ sb.append(broker);
+ }
+ sb.append("\n");
+
+ sb.append(" Service Class : ");
+ sb.append(subclass.decode());
+ switch ( subclass ) {
+ case Registered:
+ sb.append(" as ID ");
+ sb.append(id);
+ sb.append(" instances[");
+ sb.append(Integer.toString(instances));
+ sb.append("] linger[");
+ sb.append(Long.toString(linger));
+ sb.append("]");
+ break;
+ case Submitted:
+ case Implicit:
+ default:
+ }
+ sb.append("\n");
+
+ sb.append(" Implementors : ");
+ if ( implementors.size() > 0 ) {
+ for (DuccId id : implementors) {
+ sb.append(id);
+ sb.append(" ");
+ }
+ } else {
+ sb.append("(N/A)");
+ }
+ sb.append("\n");
+
+ sb.append(" References : ");
+ if ( references.size() > 0 ) {
+ for ( DuccId id : references ) {
+ sb.append(id);
+ sb.append(" ");
+ }
+ } else {
+ sb.append("None");
+ }
+ sb.append("\n");
+
+ sb.append(" Dependencies : ");
+ if ( dependencies == null ) {
+ sb.append("none\n");
+ } else {
+ sb.append("\n");
+ for ( String s : dependencies.keySet() ) {
+ sb.append(" ");
+ sb.append(s);
+ sb.append(": ");
+ sb.append(dependencies.get(s));
+ sb.append("\n");
+ }
+ }
+
+ sb.append(" Service State : ");
+ sb.append(serviceState);
+ sb.append("\n");
+
+ sb.append(" Ping Active : ");
+ sb.append(active);
+ sb.append("\n");
+
+ sb.append(" Autostart : ");
+ sb.append(autostart);
+ sb.append("\n");
+
+ sb.append(" Manual Stop : ");
+ sb.append(stopped);
+ sb.append("\n");
+
+ sb.append(" Service Statistics: ");
+ if ( qstats == null ) {
+ sb.append("None\n");
+ } else {
+ sb.append("\n ");
+ sb.append(qstats.toString());
+ }
+ return sb.toString();
+ }
+
+}