Skip to Content.
Sympa Menu

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 &gt; = ">", &lt; = "<".
- //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;
-
- //&lt;
- output = input.replaceAll("\\&lt\\;", "<");
- //&gt;
- output = output.replaceAll("\\&gt\\;", ">");
- //&amp;
- output = output.replaceAll("\\&amp\\;", "&");
- //&apos;
- output = output.replaceAll("\\&apos\\;", "'");
- //&quot;
- output = output.replaceAll("\\&quot\\;", "\"");
-
- 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.

Top of Page