]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.lib.detached/src/main/java/org/argeo/slc/lib/detached/DetachedAdminTask.java
8fd0bcfd09bf5dedc8f8b1436c746fda24981799
[gpl/argeo-slc.git] / runtime / org.argeo.slc.lib.detached / src / main / java / org / argeo / slc / lib / detached / DetachedAdminTask.java
1 package org.argeo.slc.lib.detached;
2
3 import java.util.Map;
4 import java.util.Properties;
5 import java.util.UUID;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9 import org.argeo.slc.SlcException;
10 import org.argeo.slc.detached.DetachedAnswer;
11 import org.argeo.slc.detached.DetachedClient;
12 import org.argeo.slc.detached.DetachedRequest;
13 import org.argeo.slc.execution.Executable;
14
15 public class DetachedAdminTask implements Executable {
16 private final static Log log = LogFactory.getLog(DetachedAdminTask.class);
17
18 private String action;
19 private DetachedClient client;
20 private Properties properties;
21
22 public void execute() {
23 // Prepare and send request
24 DetachedRequest request = new DetachedRequest(UUID.randomUUID()
25 .toString());
26 request.setRef(action);
27
28 if (properties != null) {
29 request.setProperties(properties);
30 }
31
32 try {
33 client.sendRequest(request);
34 DetachedAnswer answer = client.receiveAnswer();
35 if (answer.getStatus() == DetachedAnswer.ERROR)
36 throw new SlcException("Error when executing request "
37 + answer.getUuid() + ": " + answer.getLog());
38 else
39 log.info("Admin answer: " + answer.getLog());
40 } catch (Exception e) {
41 throw new SlcException("Could not send request.", e);
42 }
43 }
44
45 public void setAction(String action) {
46 this.action = action;
47 }
48
49 public void setClient(DetachedClient detachedClient) {
50 this.client = detachedClient;
51 }
52
53 public void setProperties(Properties properties) {
54 this.properties = properties;
55 }
56
57 }