Skip to Content.
Sympa Menu

perfsonar-dev - r1334 - trunk/perfsonar/src/org/perfsonar/commons/messages

Subject: perfsonar development work

List archive

r1334 - trunk/perfsonar/src/org/perfsonar/commons/messages


Chronological Thread 
  • From:
  • To:
  • Subject: r1334 - trunk/perfsonar/src/org/perfsonar/commons/messages
  • Date: Tue, 27 Jun 2006 07:02:23 -0400

Author: mac
Date: 2006-06-27 07:02:22 -0400 (Tue, 27 Jun 2006)
New Revision: 1334

Modified:
trunk/perfsonar/src/org/perfsonar/commons/messages/LSRegisterRequest.java
Log:
New Message Handler for LSRegisterRequest.

Now it doesn't use Request (generic Message Handler)
class because of not clear use data triggers in LSRegisterRequest.

Generic Request class splits message into separate
"requests" by data triggers. LSRegisterRequest has always one
metadata and a lot of data elements belonging to it. They're not
actually data triggers, and the message shouldn't be splitted
into separate requests!

It's not a bug or wrong idea, but rather different use: one metadata with
group of data elements.

So, the LSRegisterRequest now only copies the oryginal Message object and
runs service engine.

Maciej



Modified:
trunk/perfsonar/src/org/perfsonar/commons/messages/LSRegisterRequest.java
===================================================================
--- trunk/perfsonar/src/org/perfsonar/commons/messages/LSRegisterRequest.java
2006-06-27 10:45:17 UTC (rev 1333)
+++ trunk/perfsonar/src/org/perfsonar/commons/messages/LSRegisterRequest.java
2006-06-27 11:02:22 UTC (rev 1334)
@@ -4,9 +4,21 @@
*/
package org.perfsonar.commons.messages;

+import org.perfsonar.commons.auxiliary.AuxiliaryComponentManager;
+import org.perfsonar.commons.auxiliary.ComponentNames;
+import
org.perfsonar.commons.auxiliary.components.configuration.ConfigurationComponent;
+import org.perfsonar.commons.auxiliary.components.logger.LoggerComponent;
import org.perfsonar.service.commons.engine.ActionType;
+import org.perfsonar.service.commons.engine.ServiceEngine;
+import org.perfsonar.service.commons.engine.ServiceEngineFactory;
+import org.perfsonar.service.commons.exceptions.DataFormatException;
+import org.perfsonar.service.commons.exceptions.PerfSONARException;
+import org.perfsonar.service.commons.exceptions.RequestException;
+import org.perfsonar.service.commons.exceptions.ResourceException;
import org.perfsonar.service.commons.exceptions.SystemException;
+import org.perfsonar.service.commons.util.ResultCodesUtil;

+import org.ggf.ns.nmwg.base.v2_0.Message;
import org.ggf.ns.nmwg.base.v2_0.Metadata;

import java.util.Map;
@@ -15,22 +27,91 @@
/**
* @author Maciej Glowiak
* MessageHandler for LS Regiser Request
+ *
+ * Note: It doesn't use Request class because of not clear use data
+ * triggers. Generic Request class splits message into separate
+ * "requests" by data triggers. LSRegisterRequest has always one
+ * metadata and a lot of data elements belonging to it. They're not
+ * actually data triggers, and the message shouldn't be splitted
+ * into separate requests!
+ *
*
*/
-public class LSRegisterRequest extends LSRequest {
+public class LSRegisterRequest implements MessageHandler {

+ protected String type = null;
+ protected LoggerComponent logger = null;
+ protected ConfigurationComponent configManager = null;
+ protected String serviceType = null;
+ protected String serviceEngineClassName = null;
+ protected ServiceEngine serviceEngine = null;

+
/**
* @throws SystemException
*/
public LSRegisterRequest() throws SystemException {
+
+ // get a logger
+ logger = (LoggerComponent)AuxiliaryComponentManager.
+ getInstance().getComponent(ComponentNames.LOGGER);
+
+ // Config manager used to determine MA type
+ configManager = (ConfigurationComponent)AuxiliaryComponentManager.
+ getInstance().getComponent(ComponentNames.CONFIG);

- super();
logger.debug("LSRegisterRequest: MessageHandler created");
- setType(ActionType.LS_REGISTER);
+ setType(ActionType.LS_REGISTER);
+
+
+ serviceType = configManager.getProperty("service.r.type");
+ serviceEngineClassName = configManager.getProperty("service."
+ + serviceType
+ + ".class_name");
+
+ // Fetch ServiceEngine from ServiceEngineFactory
+ serviceEngine =
+ ServiceEngineFactory.getServiceEngine(serviceEngineClassName);

}

+ public String getType() {

+ return type;

+ }
+
+
+ public void setType(String type) {
+
+ this.type = type;
+
+ }
+
+ public Message execute(Message reqMessage) throws SystemException,
ResourceException, DataFormatException, RequestException {
+
+ Message respMessage = null;
+
+ try {
+
+ //run service engine and add result to output list
+ respMessage = serviceEngine.takeAction(getType(), reqMessage);
+
+ } catch (PerfSONARException e) {
+
+ //if an exception was thrown, convert it to result code
+ //and add as a new message (to be joined) to array
+
+ respMessage = ResultCodesUtil.createResultCodeMetadata(null, e) ;
+
+ }
+
+ respMessage.setId(reqMessage.getId() + "_resp");
+ respMessage.setType(reqMessage.getType().replaceFirst("Request",
"Response"));
+ respMessage.setMessageIdRef(reqMessage.getId());
+
+ return respMessage;
+
+ }
+
}



  • r1334 - trunk/perfsonar/src/org/perfsonar/commons/messages, svnlog, 06/27/2006

Archive powered by MHonArc 2.6.16.

Top of Page