- private Reply performRequest(SimpleFieldSet fields, Bucket data, String... targetMessages) throws PluginException {
- @SuppressWarnings("synthetic-access")
- Reply reply = new Reply();
- for (String targetMessage : targetMessages) {
- replies.put(targetMessage, reply);
- }
- replies.put("Error", reply);
- synchronized (reply) {
- pluginConnector.sendRequest(WOT_PLUGIN_NAME, PLUGIN_CONNECTION_IDENTIFIER, fields, data);
- try {
- long now = System.currentTimeMillis();
- while ((reply.getFields() == null) && ((System.currentTimeMillis() - now) < 60000)) {
- reply.wait(60000 - (System.currentTimeMillis() - now));
- }
- if (reply.getFields() == null) {
- for (String targetMessage : targetMessages) {
- replies.remove(targetMessage);
- }
- replies.remove("Error");
- throw new PluginException("Timeout waiting for " + targetMessages[0] + "!");
- }
- } catch (InterruptedException ie1) {
- logger.log(Level.WARNING, "Got interrupted while waiting for reply on " + targetMessages[0] + ".", ie1);
- }
- }
- for (String targetMessage : targetMessages) {
- replies.remove(targetMessage);
- }
- replies.remove("Error");
- if ((reply.getFields() != null) && reply.getFields().get("Message").equals("Error")) {
- throw new PluginException("Could not perform request for " + targetMessages[0]);
- }
- return reply;
- }
-
- //
- // INTERFACE ConnectorListener
- //
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void receivedReply(PluginConnector pluginConnector, SimpleFieldSet fields, Bucket data) {
- String messageName = fields.get("Message");
- logger.log(Level.FINEST, "Received Reply from Plugin: " + messageName);
- Reply reply = replies.remove(messageName);
- if (reply == null) {
- logger.log(Level.FINE, "Not waiting for a “%s” message.", messageName);
- return;
- }
- synchronized (reply) {
- reply.setFields(fields);
- reply.setData(data);
- reply.notify();
+ private PluginReply performRequest(SimpleFieldSet fields, Bucket data) throws PluginException {
+ logger.log(Level.FINE, format("Sending FCP Request: %s", fields.get("Message")));
+ PluginReply pluginReply = pluginConnector.sendRequest(WOT_PLUGIN_NAME, "", fields, data);
+ logger.log(Level.FINEST, format("Received FCP Response for %s: %s", fields.get("Message"), pluginReply.getFields().get("Message")));
+ if ("Error".equals(pluginReply.getFields().get("Message"))) {
+ throw new PluginException("Could not perform request for " + fields.get("Message"));