1 package org.votech.plastic.incoming.handlers.info;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5
6 import java.net.URI;
7 import java.net.URISyntaxException;
8 import java.util.List;
9
10 import org.votech.plastic.CommonMessageConstants;
11 import org.votech.plastic.incoming.messages.ArgProcessor;
12 import org.votech.plastic.incoming.messages.MessageInvoker;
13 import org.votech.plastic.managers.PlasticApplication;
14
15 public class MessageNameInfoInvoker implements MessageInvoker {
16 /**
17 * Logger for this class
18 */
19 private static final Log logger = LogFactory.getLog(MessageNameInfoInvoker.class);
20
21 private MessageActionDescriber namer;
22
23
24 public MessageNameInfoInvoker(MessageActionDescriber namer) {
25 this.namer=namer;
26 }
27
28 public Object execute(URI sender, List messageArguments) {
29 if (messageArguments.size()==0) {
30 logger.warn("Zero arguments received from "+sender+" for message "+getURI());
31 return CommonMessageConstants.RPCNULL;
32 }
33 String fullMessage = ArgProcessor.safeStringCast(messageArguments.get(0));
34 URI fullMessageURI;
35 try {
36 fullMessageURI = new URI(fullMessage);
37 String name = namer.getName(fullMessageURI);
38 return name;
39 } catch (URISyntaxException e) {
40 logger.warn("Sender "+sender+" supplied bad URI for message",e);
41 return CommonMessageConstants.RPCNULL;
42 }
43
44 }
45
46 public URI getURI() {
47 return PlasticApplication.MESSAGE_GET_NAME;
48 }
49 }