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