perfsonar-dev - perfsonar: r4934 - branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice
Subject: perfsonar development work
List archive
perfsonar: r4934 - branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice
Chronological Thread
- From:
- To:
- Subject: perfsonar: r4934 - branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice
- Date: Mon, 2 Feb 2009 09:38:37 -0500
Author: mac
Date: 2009-02-02 09:38:37 -0500 (Mon, 02 Feb 2009)
New Revision: 4934
Added:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/DiscoveryQueryGenerator.java
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSDiscoveryAction.java
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSQueryAction.java
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSRegisterAction_test.java
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSRegistrationMessageHandler.java
Modified:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
Log:
some of LS functionality working with a new base2
Added:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/DiscoveryQueryGenerator.java
Property changes on:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/DiscoveryQueryGenerator.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSDiscoveryAction.java
Property changes on:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSDiscoveryAction.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSQueryAction.java
Property changes on:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSQueryAction.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
===================================================================
---
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
2009-02-02 14:37:00 UTC (rev 4933)
+++
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
2009-02-02 14:38:37 UTC (rev 4934)
@@ -1,19 +1,14 @@
package org.perfsonar.service.lookupservice;
+import org.apache.log4j.Logger;
import org.perfsonar.base2.service.exceptions.PerfSONARException;
import org.perfsonar.base2.service.requesthandler.ServiceEngine;
import org.perfsonar.base2.service.requesthandler.ServiceMessage;
-import org.perfsonar.base2.service.storage.xml.XMLDBResult;
import org.perfsonar.base2.xml.Element;
-import org.perfsonar.base2.xml.nmwg.Data;
import org.perfsonar.base2.xml.nmwg.Message;
import org.perfsonar.base2.xml.nmwg.Metadata;
-import org.perfsonar.service.lookupservice.storage.LookupServiceDAO;
-import org.perfsonar.service.lookupservice.storage.LookupServiceDAOFactory;
-import org.apache.log4j.Logger;
-
/**
* LS Query Action
*
@@ -28,12 +23,29 @@
private static final Logger logger =
Logger.getLogger(LSQueryServiceEngine.class.getName());
- private final static String XPATH_QUERY_TYPE = "service.lookup.xpath";
+ /**
+ * Supported query types, eventType (e.g. "xquery")
+ */
+ private String[] queryEventTypes = {
+ "service.lookup.xpath", //DEPRECATED
+ "service.lookup.xquery", //DEPRECATED
+
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/xquery/1.0",
+
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/xquery/1.0/",
+
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/xpath/1.0",
+
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/xpath/1.0/",
+
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/xquery/2.0",
+
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/xquery/2.0/",
+
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/query/xquery/2.0",
+
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/query/xquery/2.0/",
+ };
- private final static String XQUERY_QUERY_TYPE = "service.lookup.xquery";
+ private String[] discoveryEventTypes = {
+
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0",
+
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0/",
+ };
+
-
- protected LSQueryServiceEngine() throws PerfSONARException {
+ public LSQueryServiceEngine() throws PerfSONARException {
super();
}
@@ -41,15 +53,8 @@
// ----------------------------------------------------- instance
variables
- /**
- * Supported query types, eventType (e.g. "xquery")
- */
- private String[] acceptedQueryTypes = {
- XPATH_QUERY_TYPE,
- XQUERY_QUERY_TYPE
- };
+
-
// -----------------------------------------------------------
Constructor
@@ -58,139 +63,84 @@
public void takeAction(ServiceMessage serviceRequest, ServiceMessage
serviceResponse) throws PerfSONARException {
-
- //extract message
- Message request = serviceRequest.getMessageElement();
- logger.debug(
- "LS lookup - action LOOKUP started");
+ logger.debug("Action LOOKUP started");
- String queryType = null;
- String query = null;
+ //extract message
+ Message requestMessage = serviceRequest.getMessageElement();
+ logger.debug("got message"+requestMessage);
- //Get metadata from request
- for (Element e : request.getChildren("metadata")) {
+ String eventType = null;
+ String lsOutput = null;
+ Element subject = null;
+
+ //Process metadata
+ for (Element e : requestMessage.getChildren("metadata")) {
+
+ //convert generic element to Metadata if possible
if (e instanceof Metadata) {
- //convert generic element to Metadata if possible
+
Metadata m = (Metadata)e;
- //try to get query type (event type)
+
+ //try to get event type
try {
- queryType = m.getFirstEventType().getEventType();
+ eventType = m.getFirstEventType().getEventType();
+ logger.debug("Found eventType [+eventType+]");
} catch (Exception ex) {}
- //try to get query content (subject)
+
+ //try to get subject
try {
- query = m.getSubject().getText();
+ subject = m.getSubject();
+ logger.debug("Found subject");
} catch (Exception ex) {}
+
+ //try to get parameters
+ try {
+ lsOutput =
m.getParameters().getFirstParameter("lsOutput").getValue();
+ logger.debug("Found lsOutput parameter ["+lsOutput+"]");
+ } catch (Exception ex) {}
}
}
-
- if (queryType == null)
- throwError("ls/no_querytype", "No eventType in metadata (type of
query)");
- else logger.debug("Query type (EventType) is ["+queryType +"]");
-
- // check if the query type can be satisfied
- boolean queryTypeCanBeSatisfied = false;
- for (int itr=0; itr<acceptedQueryTypes.length; itr++) {
- if (acceptedQueryTypes[itr].equals(queryType)) {
- queryTypeCanBeSatisfied = true;
- break;
- }
- }
- if (!queryTypeCanBeSatisfied) {
throwError("ls/querytype_not_supported",
- "Query Type specified: ["
- + queryType + "] is not supported");
- } else
- logger.debug("Query type [" + queryType
- + "] is supported");
-
- //If query type is supported
- if (query == null) throwError("ls/no_query", "No subject (query
content) in metadata");
-
- logger.debug("query=["+query+"]");
- //convert query, change > = ">", < = "<".
- //query = convertEntitiesToCharacters(query);
-
- //Performing XQuery operation on the database
- logger.debug("perform query");
-
- /* XQuery */
- LookupServiceDAO dao = LookupServiceDAOFactory.getDAO();
-
- XMLDBResult results = dao.performXQuery(query);
-
- logger.debug("Got ["+results.getElementsCount()+"] results from DB");
-
- //create ServiceEngineResponse and put there the results
- Message response = new Message();
+ //check eventType
+ if (isLookupQuery(eventType)) {
+ logger.debug("EventType ["+eventType+"] accepted, taking RAW
LSQuery action");
- // XXX: Should response have different type? -- will be done by
MessageHandler
- //response.setType("LSQueryResponse");
-
- //add empty metadata block to ServiceEngineResponse
- Metadata responseMetadata = new Metadata();
-
- String metadataId = "LSQueryResponseMetadata";
- responseMetadata.setId(metadataId);
- response.addChild(responseMetadata);
-
- //add data elements to ServiceEngineResponse
- Data responseData = new Data();
- String dataId = "LSQueryResponseData";
- responseData.setId(dataId);
- responseData.setMetadataIdRef(metadataId);
-
- //iterate results, create Datum for them and put all
- //these Datum into Data
-
- for (Element e : results.getResults()) {
+ LSQueryAction queryAction = new LSQueryAction(dao); //process
QUERY
+ queryAction.performQuery(
+ serviceRequest, serviceResponse,
+ requestMessage, subject, lsOutput);
- //create new datum
- Element datum = new Element(
- "datum",
- "psservice",
-
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
+ } else if (isLookupDiscovery(eventType)) {
+ logger.debug("EventType ["+eventType+"] accepted, taking
LSDiscovery action");
+// LSDiscoveryAction discovery = new LSDiscoveryAction(dao);
//process DISCOVERY
+// discovery.performAction(
+// serviceRequest, serviceResponse,
+// requestMessage, subject);
- //put result into datum
- //if it's textual value (exist:value) extract text and put as
text
- if (e.hasName("exist", "value")) datum.setText(e.getText());
- else datum.addChild(e);
-
- responseData.addChild(datum);
+ } else {
+ String m = "Event Type ["+eventType+"] not found, unknown or not
supported";
+ logger.error(m);
+ throw new PerfSONARException("error/no_event_type", m);
}
- //Encapsulate Data in Response Message
- response.addChild(responseData);
-
- serviceResponse.setElement(response);
-
}
+ private boolean inArray(String needle, String[] haystack) {
+ for (String h : haystack)
+ if (h.equals(needle)) return true;
+ return false;
+ }
- private void throwError(String code, String desc) throws
PerfSONARException {
- logger.error("LS error code: ["+code+"], description: ["+desc+"]");
- throw new PerfSONARException("error/"+code, desc);
+ private boolean isLookupDiscovery(String queryType) {
+ return inArray(queryType, discoveryEventTypes);
}
- public String convertEntitiesToCharacters(String input) {
-
- String output = input;
-
- //<
- output = input.replaceAll("\\<\\;", "<");
- //>
- output = output.replaceAll("\\>\\;", ">");
- //&
- output = output.replaceAll("\\&\\;", "&");
- //'
- output = output.replaceAll("\\&apos\\;", "'");
- //"
- output = output.replaceAll("\\"\\;", "\"");
-
- return output;
-
+ private boolean isLookupQuery(String queryType) {
+ return inArray(queryType, queryEventTypes);
}
+
} //LSLookupAction
Added:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSRegisterAction_test.java
Property changes on:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSRegisterAction_test.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSRegistrationMessageHandler.java
Property changes on:
branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice/LSRegistrationMessageHandler.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
- perfsonar: r4934 - branches/simple-service-with-base2/src/main/java/org/perfsonar/service/lookupservice, svnlog, 02/02/2009
Archive powered by MHonArc 2.6.16.