perfsonar-dev - [pS-dev] [GEANT/SA2/ps-java-services] r6079 - in trunk: . nmwg-sql-converter perfsonar-java-base2 pe rfsonar-java-base2/src/main/java/org/perfsonar/base2/servi ce/axis2interface perfsonar-java-base2/src/main/java/org/p erfsonar/base2/service/registration perfsonar-java-rrd-ma/ conf perfsonar-java-rrd-ma-SQL_backend perfsonar-java-rr d-ma-SQL_backend/src/main perfsonar-java-rrd-sql-ma/conf perfsonar-java-xml-ls perfsonar-java-xml-ls/src perfsonar -java-xml-ls/src/checkstyle perfsonar-java-xml-ls/src/main /java/org/perfsonar/service/lookupservice perfsonar-java-x ml-ls/src/main/java/org/perfsonar/service/lookupservice/co mponents perfsonar-java-xml-ls/src/main/java/org/perfsonar /service/lookupservice/dls/client perfsonar-java-xml-ls/sr c/main/java/org/perfsonar/service/lookupservice/registerSe rvice perfsonar-java-xml-ls/src/main/java/org/perfsonar/se rvice/lookupservice/registration perfsonar-java-xml-ls/src /main/java/org/perfsonar/service/lookupservice/registratio n/summarization perfsona r-java-xml-ls/src/main/java/org/p erfsonar/service/lookupservice/schedulerActions perfsonar- java-xml-ls/src/main/java/org/perfsonar/service/lookupserv ice/servlets perfsonar-java-xml-ls/src/main/java/org/perfs onar/service/lookupservice/storage perfsonar-java-xml-ls/s rc/main/java/org/perfsonar/service/lookupservice/storage/e xist perfsonar-java-xml-ls/src/main/java/org/perfsonar/ser vice/lookupservice/storage/exist/dao perfsonar-java-xml-ls /src/main/java/org/perfsonar/service/lookupservice/summari zation perfsonar-java-xml-ls/src/main/java/org/perfsonar/s ervice/utilities perfsonar-java-xml-ls/src/main/webapp/vie ws perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests /actions perfsonar-java-xml-ls/src/test/java/org/perfsonar /tests/components perfsonar-java-xml-ls/src/test/java/org/ perfsonar/tests/dao perfsonar-java-xml-ls/src/test/java/or g/perfsonar/tests/suite perfsonar-java-xml-ls/src/test/jav a/org/perfsonar/tests/summarization perfsonar-java-xml-ls/ src/test/java/org/perfsonar/ tests/utilities
Subject: perfsonar development work
List archive
[pS-dev] [GEANT/SA2/ps-java-services] r6079 - in trunk: . nmwg-sql-converter perfsonar-java-base2 pe rfsonar-java-base2/src/main/java/org/perfsonar/base2/servi ce/axis2interface perfsonar-java-base2/src/main/java/org/p erfsonar/base2/service/registration perfsonar-java-rrd-ma/ conf perfsonar-java-rrd-ma-SQL_backend perfsonar-java-rr d-ma-SQL_backend/src/main perfsonar-java-rrd-sql-ma/conf perfsonar-java-xml-ls perfsonar-java-xml-ls/src perfsonar -java-xml-ls/src/checkstyle perfsonar-java-xml-ls/src/main /java/org/perfsonar/service/lookupservice perfsonar-java-x ml-ls/src/main/java/org/perfsonar/service/lookupservice/co mponents perfsonar-java-xml-ls/src/main/java/org/perfsonar /service/lookupservice/dls/client perfsonar-java-xml-ls/sr c/main/java/org/perfsonar/service/lookupservice/registerSe rvice perfsonar-java-xml-ls/src/main/java/org/perfsonar/se rvice/lookupservice/registration perfsonar-java-xml-ls/src /main/java/org/perfsonar/service/lookupservice/registratio n/summarization perfsona r-java-xml-ls/src/main/java/org/p erfsonar/service/lookupservice/schedulerActions perfsonar- java-xml-ls/src/main/java/org/perfsonar/service/lookupserv ice/servlets perfsonar-java-xml-ls/src/main/java/org/perfs onar/service/lookupservice/storage perfsonar-java-xml-ls/s rc/main/java/org/perfsonar/service/lookupservice/storage/e xist perfsonar-java-xml-ls/src/main/java/org/perfsonar/ser vice/lookupservice/storage/exist/dao perfsonar-java-xml-ls /src/main/java/org/perfsonar/service/lookupservice/summari zation perfsonar-java-xml-ls/src/main/java/org/perfsonar/s ervice/utilities perfsonar-java-xml-ls/src/main/webapp/vie ws perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests /actions perfsonar-java-xml-ls/src/test/java/org/perfsonar /tests/components perfsonar-java-xml-ls/src/test/java/org/ perfsonar/tests/dao perfsonar-java-xml-ls/src/test/java/or g/perfsonar/tests/suite perfsonar-java-xml-ls/src/test/jav a/org/perfsonar/tests/summarization perfsonar-java-xml-ls/ src/test/java/org/perfsonar/ tests/utilities
Chronological Thread
- From:
- To:
- Subject: [pS-dev] [GEANT/SA2/ps-java-services] r6079 - in trunk: . nmwg-sql-converter perfsonar-java-base2 pe rfsonar-java-base2/src/main/java/org/perfsonar/base2/servi ce/axis2interface perfsonar-java-base2/src/main/java/org/p erfsonar/base2/service/registration perfsonar-java-rrd-ma/ conf perfsonar-java-rrd-ma-SQL_backend perfsonar-java-rr d-ma-SQL_backend/src/main perfsonar-java-rrd-sql-ma/conf perfsonar-java-xml-ls perfsonar-java-xml-ls/src perfsonar -java-xml-ls/src/checkstyle perfsonar-java-xml-ls/src/main /java/org/perfsonar/service/lookupservice perfsonar-java-x ml-ls/src/main/java/org/perfsonar/service/lookupservice/co mponents perfsonar-java-xml-ls/src/main/java/org/perfsonar /service/lookupservice/dls/client perfsonar-java-xml-ls/sr c/main/java/org/perfsonar/service/lookupservice/registerSe rvice perfsonar-java-xml-ls/src/main/java/org/perfsonar/se rvice/lookupservice/registration perfsonar-java-xml-ls/src /main/java/org/perfsonar/service/lookupservice/registratio n/summarization perfsona r-java-xml-ls/src/main/java/org/p erfsonar/service/lookupservice/schedulerActions perfsonar- java-xml-ls/src/main/java/org/perfsonar/service/lookupserv ice/servlets perfsonar-java-xml-ls/src/main/java/org/perfs onar/service/lookupservice/storage perfsonar-java-xml-ls/s rc/main/java/org/perfsonar/service/lookupservice/storage/e xist perfsonar-java-xml-ls/src/main/java/org/perfsonar/ser vice/lookupservice/storage/exist/dao perfsonar-java-xml-ls /src/main/java/org/perfsonar/service/lookupservice/summari zation perfsonar-java-xml-ls/src/main/java/org/perfsonar/s ervice/utilities perfsonar-java-xml-ls/src/main/webapp/vie ws perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests /actions perfsonar-java-xml-ls/src/test/java/org/perfsonar /tests/components perfsonar-java-xml-ls/src/test/java/org/ perfsonar/tests/dao perfsonar-java-xml-ls/src/test/java/or g/perfsonar/tests/suite perfsonar-java-xml-ls/src/test/jav a/org/perfsonar/tests/summarization perfsonar-java-xml-ls/ src/test/java/org/perfsonar/ tests/utilities
- Date: Thu, 27 Dec 2012 18:40:41 +0000 (GMT)
Author: dante.delvaux
Date: 2012-12-27 18:40:41 +0000 (Thu, 27 Dec 2012)
New Revision: 6079
Added:
trunk/perfsonar-java-rrd-ma-SQL_backend/src/main/webapp/
trunk/perfsonar-java-xml-ls/src/checkstyle/
trunk/perfsonar-java-xml-ls/src/checkstyle/checkstyle.xml
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizationConstants.java
trunk/perfsonar-java-xml-ls/src/main/webapp/views/dbInit.jsp
Removed:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/Constants.java
trunk/perfsonar-java-xml-ls/src/main/webapp/views/DbInit.jsp
trunk/perfsonar-java-xml-ls/src/main/webapp/views/dbInit.jsp
Modified:
trunk/
trunk/BUILDING.txt
trunk/README.txt
trunk/nmwg-sql-converter/
trunk/perfsonar-java-base2/
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/axis2interface/PerfsonarService.java
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/registration/AbstractRegistrationAction.java
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/registration/DumbRegisterDataSource.java
trunk/perfsonar-java-rrd-ma-SQL_backend/
trunk/perfsonar-java-rrd-ma-SQL_backend/pom.xml
trunk/perfsonar-java-rrd-ma/conf/
trunk/perfsonar-java-rrd-sql-ma/conf/
trunk/perfsonar-java-xml-ls/
trunk/perfsonar-java-xml-ls/pom.xml
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/AbstractRegisterServiceEngine.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/DiscoveryQueryGenerator.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/EchoServiceEngine.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/GenericLSServiceEngine.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/GenericLSServiceROEngine.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSDeregisterServiceEngine.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSDiscoveryAction.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSKeepaliveServiceEngine.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryAction.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSRegisterServiceEngine.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSRegistrationMessageHandler.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/DataSourceComponent.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/ModificationCounterComponent.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/XMLDBComponent.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/JoinRequestGenerator.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/UpdateTokenRequestGenerator.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registerService/LSRegisterServiceHelper.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/DiscoveryRequestGenerator.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LSSummaryRegisterDataSource.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LsTTLParameterStatus.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/DomainSummarizator.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IPAddress.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/InvalidIPAddressException.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IpTrie.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IpTrieNode.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizationHelper.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizeIpAddrs.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/Trie.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/TrieNode.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/CleanupSchedulerAction.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/GLSRegistrationAction.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/SummarySynchronizationAction.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/servlets/ExistDbInitializerServlet.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAO.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAOFactory.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/SummarizationDAO.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/XQueryDAOSupport.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryDAOSupportImpl.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/dao/MultipleFilesDAOImpl.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/dao/SummarizationDAOImpl.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/summarization/ServiceSummaryBean.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/summarization/SummarizationBuilder.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/utilities/ResourceBundle.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DeregistrationActionTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryActionTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryQueryGeneratorTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/EchoActionTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/QueryActionTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/RegistrationActionTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/DataSourceComponentTest.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/ModificationCounterComponentTest.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/XMLDBComponentTest.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/MultipleFilesDAOImplTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/SummarizationDaoTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/XQueryExistDAOImplTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/suite/LSTestSuite.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/summarization/SummarizationTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/utilities/AsynchTester.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/utilities/ExistDBInitializerTests.java
trunk/pom.xml
Log:
Moving perfsonar-java-xml-ls into the Maven agreggator.
Adding checkstyle configuration to check perfsonar-java-xml-ls and correcting
all code style issues reported (while ignoring some minor ones).
Adding IDE (Eclipse) usage notes to the project README file.
Property changes on: trunk
___________________________________________________________________
Added: svn:ignore
+ .settings
.project
Modified: trunk/BUILDING.txt
===================================================================
--- trunk/BUILDING.txt 2012-12-27 18:21:02 UTC (rev 6078)
+++ trunk/BUILDING.txt 2012-12-27 18:40:41 UTC (rev 6079)
@@ -1,7 +1,7 @@
-Building PerfSONAR Java Services
+Building perfSONAR Java Services
--------------------------------
-PerfSONAR Java Services use Maven as a build system and as a
+perfSONAR Java Services use Maven as a build system and as a
repository of Maven artifacts. A top level aggregator project allows
services to be build in one operation:
@@ -26,8 +26,8 @@
It is not immediately possible to just cd into a subdirectory and
execute Maven on a single project only. Such an attempt would fail
-because dependencies like PerfSONAR Base 1 would be unavailable (this
-is only partially true as we use GÉANT's continious integration
+because dependencies like perfSONAR Base 1 would be unavailable (this
+is only partially true as we use GÉANT's continuous integration
service, Jenkins, to build the latest version and publish artifacts in
the GÉANT Artifactory repository - you would however be using the
latest committed version of the base package rather than the code in
@@ -101,18 +101,18 @@
Note that we deliberately build these artifacts as secondary
artifacts. The main artifact type is typically JAR (for libraries like
-PerfSONAR Base) or WAR for subproducts (these are deployable to common
+perfSONAR Base) or WAR for subproducts (these are deployable to common
servlet containers like Tomcat and Jetty).
Continous Integration
---------------------
-PerfSONAR uses GÉANTs continious integration platform, Jenkins, at
+perfSONAR uses GÉANTs continuous integration platform, Jenkins, at
https://ci.geant.net/.
-The PerfSONAR-CI job monitors the SVN repository and any commit
-triggers a new build. If the build is successfull, all artifacts are
+The perfSONAR-CI job monitors the SVN repository and any commit
+triggers a new build. If the build is successful, all artifacts are
published at http://artifactory.geant.net/.
Statistics from static analysis are kept, and the output of Unit
@@ -120,7 +120,7 @@
-Releasing PerfSONAR
+Releasing perfSONAR
-------------------
There is currently no procedure for branching, tagging, and producing
@@ -132,7 +132,7 @@
------------
There is still plenty of legacy code in the subversion
-repository. Originally, PerfSONAR was build using custom Ant scripts
+repository. Originally, perfSONAR was build using custom Ant scripts
and plenty of shell scripts. Bits and pieces of these are still used,
eg to package eXist as DEB and RPM packages. The intent is to get rid
of these pieces and no attempt is made at documenting those legacy
Modified: trunk/README.txt
===================================================================
--- trunk/README.txt 2012-12-27 18:21:02 UTC (rev 6078)
+++ trunk/README.txt 2012-12-27 18:40:41 UTC (rev 6079)
@@ -1,15 +1,15 @@
-PerfSONAR Java Services
+perfSONAR Java Services
=======================
-PerfSONAR consists of several subproducts, such as the Measurement
+perfSONAR consists of several subproducts, such as the Measurement
Archives (MA) SQL MA and RRD MA, the Measurement Points (MP) OWAMP MP
and BWCTL MP, and the Lookup Service (LS). Some of these are written
-in Java, collectively called the PerfSONAR Java Services. These
+in Java, collectively called the perfSONAR Java Services. These
include the MAs and the LS.
Notably, the MPs are not written in Java and are hosted outside of
this repository. The UI is written in Java, but still not considered
-part of the PerfSONAR Java Services and not hosted in this repository.
+part of the perfSONAR Java Services and not hosted in this repository.
@@ -20,8 +20,8 @@
checkstyle. Please consult the checkstyle configuration, e.g., in
perfsona_base/src/checkstyle/checkstyle.xml.
-Due to plenty of legacy code, some modules use a slightly relaxe set
-of rules. This is only to accomodate legacy code and any checkstyle
+Due to plenty of legacy code, some modules use a slightly relaxed set
+of rules. This is only to accommodate legacy code and any checkstyle
warning should be considered a violation in new code.
@@ -29,7 +29,7 @@
Programming methodology
-----------------------
-PerfSONAR does not follow a formally defined programming methodology.
+perfSONAR does not follow a formally defined programming methodology.
Some rules do apply, though:
@@ -100,7 +100,7 @@
our code with library code when applicable.
When using a third party library, use the library for the intended
- purpose. Do not import a big library provinding unrelated
+ purpose. Do not import a big library providing unrelated
functionality just to gain access to a small utility class that
happens to be part of the library (besides introducing bloat, the
utility class is unlikely to survive if it isn't the main purpose of
@@ -132,4 +132,14 @@
patterns.
+Maven and IDE
+-------------
+Maven is the primary build tool and it's better all its conventions are
+carefully followed (see BUILDING.txt). When using an IDE, you should adapt
+your IDE to configuration to Maven configuration rather than the opposite.
+
+For Eclipse, the easiest way is to checkout the whole perfsonar-java-services
+repository and then import the whole directory as Maven projects into the
+Eclipse. Eclipse should then automatically discover each enclosed projects
+and Maven dependencies.
Property changes on: trunk/nmwg-sql-converter
___________________________________________________________________
Added: svn:ignore
+ target
.settings
.project
Property changes on: trunk/perfsonar-java-base2
___________________________________________________________________
Modified: svn:ignore
- .settings
build
.classpath
.project
+ .settings
build
.classpath
.project
target
.checkstyle
Modified:
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/axis2interface/PerfsonarService.java
===================================================================
---
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/axis2interface/PerfsonarService.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/axis2interface/PerfsonarService.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -46,9 +46,10 @@
*/
public void init(ServiceContext sc) {
//runs while starting
+ // TODO: Does perfSONAR services work with Java 7?
final JREVersion jreVersion = new JREVersion();
if (!jreVersion.isJRECompatibleWith(1, 6)) {
- LoggerFactory.getLogger(PerfsonarService.class).error("In
order to run perfSONAR service JRE version must be >= 1.6.0. "
+ LoggerFactory.getLogger(PerfsonarService.class).error("In
order to run the perfSONAR service, the JRE version must be from the 1.6.0
series."
+ "JRE version is " + jreVersion.getJREVersion() + "."
+ "The application will terminate the servlet
container.");
System.exit(1);
Modified:
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/registration/AbstractRegistrationAction.java
===================================================================
---
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/registration/AbstractRegistrationAction.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/registration/AbstractRegistrationAction.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -252,7 +252,10 @@
for (String optName : options.keySet()) {
- // handles lsAddress-1, lsAddress-2, lsAddress-3, ...
+ // TODO: Shouldn't we allow using both types of
option at the same time: lsAddress-n *and* lsList-n?
+ // Or can we use the file:/// URL with a local list?
(idea is to permit having both a globally defined list and a local one)
+
+ // First, handles lsAddress-1, lsAddress-2,
lsAddress-3, ...
if (optName.startsWith("lsAddress")) {
try {
@@ -264,7 +267,7 @@
+ ex.getMessage());
}
- // handles lsList-1, lsList-2, ...
+ // Then handles lsList-1, lsList-2, ...
} else if (optName.startsWith("lsList")) {
try {
Modified:
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/registration/DumbRegisterDataSource.java
===================================================================
---
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/registration/DumbRegisterDataSource.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-base2/src/main/java/org/perfsonar/base2/service/registration/DumbRegisterDataSource.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -12,10 +12,6 @@
import org.perfsonar.base2.xml.nmwg.Metadata;
import org.perfsonar.base2.xml.nmwg.Data;
-//import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
public class DumbRegisterDataSource implements RegisterDataSource {
Property changes on: trunk/perfsonar-java-rrd-ma/conf
___________________________________________________________________
Deleted: svn:externals
- base2 -r5046
https://svn.perfsonar.net/svn/perfsonar/branches/new-structure-with-base2/ps-mdm-base2/conf/
Property changes on: trunk/perfsonar-java-rrd-ma-SQL_backend
___________________________________________________________________
Added: svn:ignore
+ .settings
.classpath
.project
build
target
Modified: trunk/perfsonar-java-rrd-ma-SQL_backend/pom.xml
===================================================================
--- trunk/perfsonar-java-rrd-ma-SQL_backend/pom.xml 2012-12-27 18:21:02
UTC (rev 6078)
+++ trunk/perfsonar-java-rrd-ma-SQL_backend/pom.xml 2012-12-27 18:40:41
UTC (rev 6079)
@@ -180,6 +180,7 @@
<configuration>
<webApp>${project.build.directory}/${project.artifactId}</webApp>
</configuration>
+ <version>6.1.26</version>
</plugin>
</plugins>
Property changes on: trunk/perfsonar-java-rrd-sql-ma/conf
___________________________________________________________________
Deleted: svn:externals
- base2 -r5046
https://svn.perfsonar.net/svn/perfsonar/branches/new-structure-with-base2/ps-mdm-base2/conf/
Property changes on: trunk/perfsonar-java-xml-ls
___________________________________________________________________
Modified: svn:ignore
- target
.classpath
.project
.settings
.gitignore
.externalToolBuilders
logs
.idea
+ target
.classpath
.project
.settings
.gitignore
.externalToolBuilders
logs
.idea
build
.checkstyle
Modified: trunk/perfsonar-java-xml-ls/pom.xml
===================================================================
--- trunk/perfsonar-java-xml-ls/pom.xml 2012-12-27 18:21:02 UTC (rev 6078)
+++ trunk/perfsonar-java-xml-ls/pom.xml 2012-12-27 18:40:41 UTC (rev 6079)
@@ -1,22 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>net.geant.perfsonar</groupId>
+ <artifactId>parent</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../parent/pom.xml</relativePath>
+ </parent>
+
<modelVersion>4.0.0</modelVersion>
- <groupId>net.geant.perfsonar</groupId>
<artifactId>perfsonar-java-xml-ls</artifactId>
- <packaging>war</packaging>
<version>1.7-SNAPSHOT</version>
+ <packaging>war</packaging>
+
<name>perfSONAR Java XML LS</name>
<description>perfSONAR GEANT Lookup Service</description>
- <url>http://perfsonar.forge.geant.net</url>
- <licenses>
- <license>
- <name>GÉANT Standard Open Source Software Outward
Licence</name>
-
<url>https://intranet.geant.net/sites/Management/Coordination/IPR/Documents/GÉANT%20Standard%20Open%20Source%20Software%20Outward%20Licence.txt</url>
- <comments>See included License.txt file</comments>
- </license>
- </licenses>
- <developers>
+ <scm>
+
<connection>scm:svn:http://svn.geant.net/GEANT/SA2/ps-java-services/trunk/perfsonar-java-xml-ls/</connection>
+
<developerConnection>scm:svn:svn+ssh:///GEANT/SA2/ps-java-services/trunk/perfsonar-java-xml-ls</developerConnection>
+ </scm>
+ <developers>
<developer>
<id>antoine.delvaux</id>
<name>Antoine Delvaux</name>
@@ -44,36 +48,21 @@
<junit.version>4.8.1</junit.version>
<datadir>data</datadir>
<port>8080</port>
- </properties>
+ <maven-compiler-plugin.source>1.6</maven-compiler-plugin.source>
+ </properties>
- <scm>
-
<connection>scm:svn:http://svn.geant.net/GEANT/SA2/ps-java-services</connection>
-
<developerConnection>scm:svn:svn+ssh:///GEANT/SA2/ps-java-services</developerConnection>
- </scm>
-
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <includes>
-
<include>**/LSTestSuite.java</include>
- </includes>
- <argLine>-Xmx512m</argLine>
-
<encoding>${project.build.sourceEncoding}</encoding>
-
<outputEncoding>${project.build.sourceEncoding}</outputEncoding>
- <additionalClasspathElements>
-
<additionalClasspathElement>target/test-classes</additionalClasspathElement>
- </additionalClasspathElements>
- </configuration>
- <version>2.7.2</version>
- </plugin>
- <plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ </plugin>
+
+ <plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<overlays>
@@ -100,30 +89,45 @@
</resource>
</webResources>
</configuration>
- <version>2.1.1</version>
</plugin>
-
+
<plugin>
<groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-pmd-plugin</artifactId>
- <version>2.6</version>
+ <artifactId>maven-surefire-plugin</artifactId>
<configuration>
-
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
- <minimumTokens>100</minimumTokens>
- <targetJdk>1.6</targetJdk>
+ <includes>
+
<include>**/LSTestSuite.java</include>
+ </includes>
+ <argLine>-Xmx512m</argLine>
+
<encoding>${project.build.sourceEncoding}</encoding>
+
<outputEncoding>${project.build.sourceEncoding}</outputEncoding>
+ <additionalClasspathElements>
+
<additionalClasspathElement>target/test-classes</additionalClasspathElement>
+ </additionalClasspathElements>
</configuration>
- <executions>
- <execution>
- <goals>
- <goal>pmd</goal>
- <goal>cpd</goal>
- </goals>
- <phase>verify</phase>
- </execution>
- </executions>
</plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-checkstyle-plugin</artifactId>
+ </plugin>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-pmd-plugin</artifactId>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>findbugs-maven-plugin</artifactId>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-site-plugin</artifactId>
+ </plugin>
+
+ <plugin>
<artifactId>cobertura-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<version>2.5.1</version>
@@ -181,39 +185,8 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.1</version>
- <configuration>
- <source>1.6</source>
- <target>1.6</target>
-
<encoding>${project.build.sourceEncoding}</encoding>
- </configuration>
- </plugin>
<plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-site-plugin</artifactId>
- <version>3.0</version>
- <configuration>
-
<generateReports>true</generateReports>
-
<generateSitemap>true</generateSitemap>
- <reportPlugins>
- <plugin>
-
<groupId>org.apache.maven.plugins</groupId>
-
<artifactId>maven-project-info-reports-plugin</artifactId>
- <version>2.2</version>
- <configuration>
-
<dependencyDetailsEnabled>false</dependencyDetailsEnabled>
-
<dependencyLocationsEnabled>false</dependencyLocationsEnabled>
- </configuration>
- </plugin>
- </reportPlugins>
- </configuration>
- </plugin>
-
- <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
@@ -286,51 +259,14 @@
</resource>
</resources>
</build>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-project-info-reports-plugin
- </artifactId>
- <reportSets>
- <reportSet>
- <reports>
- <report>index</report>
- <report>cim</report>
- </reports>
- </reportSet>
- </reportSets>
- <version>2.4</version>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- <version>2.2</version>
- <configuration>
- <xmlOutput>true</xmlOutput>
-
<xmlOutputDirectory>target/site</xmlOutputDirectory>
- </configuration>
- </plugin>
- </plugins>
- </reporting>
-
+<!--
<repositories>
<repository>
<id>ibiblio</id>
<name>ibiblio repository</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</repository>
- <repository>
- <id>geant-repository</id>
- <name>GEANT repository</name>
-
<url>https://artifactory.geant.net/artifactory/geant-repo/</url>
- </repository>
- <repository>
- <id>geant-repository-3rdparty</id>
- <name>GEANT repository 3rd party products</name>
-
<url>https://artifactory.geant.net/artifactory/geant-repo/net/geant/3rdparty</url>
- </repository>
</repositories>
<pluginRepositories>
@@ -346,20 +282,8 @@
</snapshots>
</pluginRepository>
</pluginRepositories>
+ -->
- <distributionManagement>
- <repository>
- <id>GEANT Artifactory</id>
- <name>GEANT Artifactory perfSONAR-release</name>
-
<url>https://artifactory.geant.net/artifactory/perfsonar-release-local</url>
- </repository>
- <snapshotRepository>
- <id>GEANT Artifactory</id>
- <name>GEANT Artifactory perfSONAR-snapshots</name>
-
<url>https://artifactory.geant.net/artifactory/perfsonar-snapshot-local</url>
- </snapshotRepository>
- </distributionManagement>
-
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
@@ -622,18 +546,6 @@
</profile>
</profiles>
- <organization>
- <name>GEANT</name>
- <url>http://www.geant.net</url>
- </organization>
- <issueManagement>
-
<url>https://forge.geant.net/forge/display/perfsonar/Contact</url>
- <system>Jira</system>
- </issueManagement>
- <ciManagement>
- <system>Jenkins</system>
- <url>https://ci.geant.net/jenkins/job/perfSONAR%20LS/</url>
- </ciManagement>
<dependencyManagement>
<dependencies>
<dependency>
Added: trunk/perfsonar-java-xml-ls/src/checkstyle/checkstyle.xml
===================================================================
--- trunk/perfsonar-java-xml-ls/src/checkstyle/checkstyle.xml
(rev 0)
+++ trunk/perfsonar-java-xml-ls/src/checkstyle/checkstyle.xml 2012-12-27
18:40:41 UTC (rev 6079)
@@ -0,0 +1,201 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+ "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
+ "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+
+<!--
+ Based on the default checkstyle configuration, but with minor
+ modifications based on established conventions in existing
+ perfSONAR (XML-LS) code.
+-->
+
+<!--
+
+ Checkstyle configuration that checks the sun coding conventions from:
+
+ - the Java Language Specification at
+ http://java.sun.com/docs/books/jls/second_edition/html/index.html
+
+ - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+
+ - the Javadoc guidelines at
+ http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+
+ - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+
+ - some best practices
+
+ Checkstyle is very configurable. Be sure to read the documentation at
+ http://checkstyle.sf.net (or in your downloaded distribution).
+
+ Most Checks are configurable, be sure to consult the documentation.
+
+ To completely disable a check, just comment it out or delete it from the
file.
+
+ Finally, it is worth reading the documentation.
+
+-->
+
+<module name="Checker">
+ <!--
+ If you set the basedir property below, then all reported file
+ names will be relative to the specified directory. See
+ http://checkstyle.sourceforge.net/5.x/config.html#Checker
+
+ <property name="basedir" value="${basedir}"/>
+ -->
+
+ <!-- Checks that a package-info.java file exists for each package.
-->
+ <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
+ <!--module name="JavadocPackage"/-->
+
+ <!-- Checks whether files end with a new line. -->
+ <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+ <module name="NewlineAtEndOfFile"/>
+
+ <!-- Checks that property files contain the same keys. -->
+ <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+ <module name="Translation"/>
+
+ <!-- Checks for Size Violations. -->
+ <!-- See http://checkstyle.sf.net/config_sizes.html -->
+ <module name="FileLength"/>
+
+ <!-- Checks for whitespace -->
+ <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+ <module name="FileTabCharacter"/>
+
+ <!-- Miscellaneous other checks. -->
+ <!-- See http://checkstyle.sf.net/config_misc.html -->
+ <module name="RegexpSingleline">
+ <!-- I only want lines with *code* reported with trailing spaces, not
for empty ones or empty comment lines -->
+ <property name="format" value="[^[:space:]\*]+\s+$"/>
+ <property name="minimum" value="0"/>
+ <property name="maximum" value="0"/>
+ <property name="message" value="Line has trailing spaces."/>
+ </module>
+
+ <!-- Checks for Headers -->
+ <!-- See http://checkstyle.sf.net/config_header.html -->
+ <!-- <module name="Header"> -->
+ <!-- <property name="headerFile" value="${checkstyle.header.file}"/>
-->
+ <!-- <property name="fileExtensions" value="java"/> -->
+ <!-- </module> -->
+
+ <module name="TreeWalker">
+
+ <!-- Checks for Javadoc comments. -->
+ <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+ <!--module name="JavadocMethod"/>
+ <module name="JavadocType"/>
+ <module name="JavadocVariable"/-->
+ <module name="JavadocStyle">
+ <property name="checkFirstSentence" value="false"/>
+ </module>
+
+ <!-- Checks for Naming Conventions. -->
+ <!-- See http://checkstyle.sf.net/config_naming.html -->
+ <module name="ConstantName"/>
+ <module name="LocalFinalVariableName"/>
+ <module name="LocalVariableName"/>
+ <module name="MemberName"/>
+ <module name="MethodName"/>
+ <module name="PackageName"/>
+ <module name="ParameterName"/>
+ <module name="StaticVariableName"/>
+ <module name="TypeName"/>
+
+
+ <!-- Checks for imports -->
+ <!-- See http://checkstyle.sf.net/config_import.html -->
+ <module name="AvoidStarImport"/>
+ <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+ <module name="RedundantImport"/>
+ <module name="UnusedImports"/>
+
+
+ <!-- Checks for Size Violations. -->
+ <!-- See http://checkstyle.sf.net/config_sizes.html -->
+ <module name="LineLength">
+ <!-- 80 is waaaayyyyy too short on current screens standards, HD
you know? -->
+ <property name="max" value="150"/>
+ </module>
+ <module name="MethodLength">
+ <!-- We have one method too long for the default value -->
+ <property name="max" value="190"/>
+ </module>
+ <module name="ParameterNumber"/>
+
+
+ <!-- Checks for whitespace -->
+ <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+ <module name="EmptyForIteratorPad"/>
+ <module name="GenericWhitespace"/>
+ <module name="MethodParamPad"/>
+ <module name="NoWhitespaceAfter"/>
+ <module name="NoWhitespaceBefore"/>
+ <module name="OperatorWrap"/>
+ <module name="ParenPad"/>
+ <module name="TypecastParenPad"/>
+ <module name="WhitespaceAfter"/>
+ <module name="WhitespaceAround"/>
+
+
+ <!-- Modifier Checks -->
+ <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+ <module name="ModifierOrder"/>
+ <module name="RedundantModifier"/>
+
+
+ <!-- Checks for blocks. You know, those {}'s -->
+ <!-- See http://checkstyle.sf.net/config_blocks.html -->
+ <module name="AvoidNestedBlocks"/>
+ <module name="EmptyBlock">
+ <property name="tokens"
+
value="LITERAL_DO,LITERAL_FINALLY,LITERAL_ELSE,LITERAL_FOR,LITERAL_TRY,LITERAL_WHILE,INSTANCE_INIT,STATIC_INIT"/>
+ </module>
+ <module name="NeedBraces"/>
+ <module name="RightCurly"/>
+
+
+ <!-- Checks for common coding problems -->
+ <!-- See http://checkstyle.sf.net/config_coding.html -->
+ <!--<module name="AvoidInlineConditionals"/>-->
+ <module name="EmptyStatement"/>
+ <module name="EqualsHashCode"/>
+ <module name="HiddenField">
+ <property name="tokens" value="VARIABLE_DEF"/>
+ </module>
+ <module name="IllegalInstantiation"/>
+ <module name="InnerAssignment"/>
+ <!-- I'm not interested in defining constants for every other
number that appears in my code -->
+ <!--<module name="MagicNumber"/>-->
+ <module name="MissingSwitchDefault"/>
+ <module name="RedundantThrows">
+ <property name="suppressLoadErrors" value="true"/>
+ </module>
+ <module name="SimplifyBooleanExpression"/>
+ <module name="SimplifyBooleanReturn"/>
+
+ <!-- Checks for class design -->
+ <!-- See http://checkstyle.sf.net/config_design.html -->
+ <!--module name="DesignForExtension"/-->
+ <module name="FinalClass"/>
+ <module name="HideUtilityClassConstructor"/>
+ <module name="InterfaceIsType"/>
+ <module name="VisibilityModifier">
+ <property name="protectedAllowed" value="true"/>
+ </module>
+
+
+ <!-- Miscellaneous other checks. -->
+ <!-- See http://checkstyle.sf.net/config_misc.html -->
+ <module name="ArrayTypeStyle"/>
+ <!-- <module name="FinalParameters"/> -->
+ <!-- I don't want the TODO comments being reported by CheckStyle -->
+ <!--<module name="TodoComment"/>-->
+ <module name="UpperEll"/>
+
+ </module>
+
+</module>
Property changes on: trunk/perfsonar-java-xml-ls/src/checkstyle/checkstyle.xml
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/AbstractRegisterServiceEngine.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/AbstractRegisterServiceEngine.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/AbstractRegisterServiceEngine.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -10,21 +10,21 @@
* @author Antoine Delvaux - DANTE
*
*/
-public abstract class AbstractRegisterServiceEngine
- extends GenericLSServiceEngine implements ServiceEngine {
+public abstract class AbstractRegisterServiceEngine
+ extends GenericLSServiceEngine implements ServiceEngine {
- public final static String SERVICE_EVENT_TYPE =
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/registration/service/2.0";
- public final static String SUMMARY_EVENT_TYPE =
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/registration/summary/2.0";
+ public static final String SERVICE_EVENT_TYPE =
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/registration/service/2.0";
+ public static final String SUMMARY_EVENT_TYPE =
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/registration/summary/2.0";
protected AbstractRegisterServiceEngine() throws PerfSONARException {
super();
- }
+ }
/**
* Updates timestamp parameter in LSStorage-control schema
* Sets it to current timestamp (System.currentTimeMillis() / 1000)
*/
- protected long updateTime(String key)
+ protected long updateTime(String key)
throws PerfSONARException {
// Updating to the current time in seconds
@@ -32,7 +32,7 @@
logger.debug("Update time... [" + now + " sec]");
//run setControlParameter, modify control schema of the LS
- dao.setControlParameter(key, "timestamp", Long.toString(now));
+ dao.setControlParameter(key, "timestamp", Long.toString(now));
return now;
}
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/DiscoveryQueryGenerator.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/DiscoveryQueryGenerator.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/DiscoveryQueryGenerator.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -11,14 +11,14 @@
import org.perfsonar.base2.xml.Element;
/**
- * The Discovery Query is built from a subject Element containing all the
search conditions.</br>
+ * The Discovery Query is built from a subject Element containing all the
search conditions.
* Search conditions can be any number of the followings:<ul>
* <li> IP addresses (address Elements)
* <li> Domains (domain Elements)
* <li> Event Types (eventType Elements)
* <li> Parameters (pair of parameters/parameter Elements containing keyword
and eventType Elements)
* </ul>
- * The last two search Elements can be grouped inside a parameters/parameter
Element.</br>
+ * The last two search Elements can be grouped inside a parameters/parameter
Element.
* Subject Element syntax and namespaces are checked.
*
* @author Maciej Glowiak
@@ -27,290 +27,291 @@
*/
public class DiscoveryQueryGenerator {
- public static final String nmtbUri =
"http://ogf.org/schema/network/topology/base/20070828/";
+ public static final String NMTB_URI =
"http://ogf.org/schema/network/topology/base/20070828/";
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private Element discoverySubject = null;
- private boolean extracted = false;
- private Set<String> nmwgUris = new HashSet<String>();
- private HashSet<String> ipAddresses = new HashSet<String>();
- private HashSet<String> domains = new HashSet<String>();
- private HashSet<String> eventTypes = new HashSet<String>();
- private HashSet<String> keywords = new HashSet<String>();
- private String query = null;
+ private Element discoverySubject = null;
+ private boolean extracted = false;
+ private Set<String> nmwgUris = new HashSet<String>();
+ private HashSet<String> ipAddresses = new HashSet<String>();
+ private HashSet<String> domains = new HashSet<String>();
+ private HashSet<String> eventTypes = new HashSet<String>();
+ private HashSet<String> keywords = new HashSet<String>();
+ private String query = null;
- public DiscoveryQueryGenerator(Element subject) {
- setSubject(subject);
- nmwgUris.add("http://ggf.org/ns/nmwg/base/2.0/");
- nmwgUris.add("http://ggf.org/ns/nmwg/base/1.0/");
- }
+ public DiscoveryQueryGenerator(Element subject) {
+ setSubject(subject);
+ nmwgUris.add("http://ggf.org/ns/nmwg/base/2.0/");
+ nmwgUris.add("http://ggf.org/ns/nmwg/base/1.0/");
+ }
- /**
- * Sets the subject Element of the query and clears any other property
- *
- * @param discoverySubject
- */
- public void setSubject(Element discoverySubject) {
- this.discoverySubject = discoverySubject;
- extracted = false;
- ipAddresses.clear();
- domains.clear();
- eventTypes.clear();
- keywords.clear();
- query = null;
- }
-
- /**
- * Explodes the subject Element and extracts:<ul>
- * <li> address
- * <li> domain
- * <li> eventType
- * <li> parameters (each with name, keyword and eventType)
- * </ul>
- * Check the syntax of the subject Element and throws an exception
in case the inside elements are not supported or the namespace is wrong.
- *
- * @throws PerfSONARException
- */
- private void extractSubject() throws PerfSONARException {
- if (discoverySubject == null) {
- logger.warn("No subject for the Discovery Query");
- throw new PerfSONARException("No subject");
- }
+ /**
+ * Sets the subject Element of the query and clears any other property
+ *
+ * @param discoverySubject
+ */
+ public void setSubject(Element discoverySubject) {
+ this.discoverySubject = discoverySubject;
+ extracted = false;
+ ipAddresses.clear();
+ domains.clear();
+ eventTypes.clear();
+ keywords.clear();
+ query = null;
+ }
- // Explodes the subject Element if not already done
- if (!extracted) {
- logger.debug("Explodes the subject Element into
instance variables");
- // Go through all search Elements
- for (Element e : discoverySubject.getChildren()) {
- String elementName = e.getName();
- String namespaceUri = e.getNamespaceUri();
+ /**
+ * Explodes the subject Element and extracts:<ul>
+ * <li> address
+ * <li> domain
+ * <li> eventType
+ * <li> parameters (each with name, keyword and eventType)
+ * </ul>
+ * Check the syntax of the subject Element and throws an exception in
case the inside elements are not supported or the namespace is wrong.
+ *
+ * @throws PerfSONARException
+ */
+ private void extractSubject() throws PerfSONARException {
+ if (discoverySubject == null) {
+ logger.warn("No subject for the Discovery Query");
+ throw new PerfSONARException("No subject");
+ }
- // Check the contained elements against the
subject namespace
- if (namespaceUri != null &&
namespaceUri.equals(nmtbUri)) {
- // The topology namespace contains
address and domain elements only
- if (elementName.equals("address")) {
- addIpAddress(e);
- } else if
(elementName.equals("domain")) {
- addDomain(e);
- } else {
- throw new
PerfSONARException("error.ls.query", "Unsupported element: " + elementName);
- }
-
- } else if (nmwgUris.contains(namespaceUri)) {
- // NMWG base namespace contains
eventType and parameters elements only
- if (elementName.equals("eventType")) {
- addEventType(e);
- } else if
(elementName.equals("parameters")) {
- Collection<Element> params =
e.getChildren("parameter");
- if (params != null) {
- // Go through all
parameters
- for (Element p :
params) {
- String name =
p.getAttribute("name");
- String value
= p.getText();
- if (value !=
null) {
- value
= value.trim();
- if
("keyword".equals(name)) {
-
addKeyword(value);
- }
else if ("eventType".equals(name)) {
-
addEventType(value);
- }
else {
-
logger.info("Unrecognized and ignored parameter: " + p.toString());
- }
- }
- }
- }
- } else {
- logger.warn("Unsupported
element in the query subject: " + elementName);
- throw new
PerfSONARException("error.ls.query", "Unsupported element: " + elementName);
- }
- } else {
- logger.warn("Unsupported namespace
for the query subject: " + namespaceUri);
- throw new
PerfSONARException("error.ls.query", "Unsupported namespace: " +
namespaceUri);
- }
- }
- }
- extracted = true;
- }
+ // Explodes the subject Element if not already done
+ if (!extracted) {
+ logger.debug("Explodes the subject Element into instance
variables");
+ // Go through all search Elements
+ for (Element e : discoverySubject.getChildren()) {
+ String elementName = e.getName();
+ String namespaceUri = e.getNamespaceUri();
- /**
- * eventType setter from Element
- * @param eventType
- */
- private void addEventType(Element eventType) {
- String evt = eventType.getText();
- addEventType(evt);
- }
+ // Check the contained elements against the subject namespace
+ if (namespaceUri != null && namespaceUri.equals(NMTB_URI)) {
+ // The topology namespace contains address and domain
elements only
+ if (elementName.equals("address")) {
+ addIpAddress(e);
+ } else if (elementName.equals("domain")) {
+ addDomain(e);
+ } else {
+ throw new PerfSONARException("error.ls.query",
"Unsupported element: " + elementName);
+ }
- /**
- * eventType setter from String
- * @param eventType
- */
- private void addEventType(String eventType) {
- if (eventType != null) {
- logger.trace(" we add an eventType: " + eventType);
- eventTypes.add(eventType.trim());
- }
- }
+ } else if (nmwgUris.contains(namespaceUri)) {
+ // NMWG base namespace contains eventType and parameters
elements only
+ if (elementName.equals("eventType")) {
+ addEventType(e);
+ } else if (elementName.equals("parameters")) {
+ Collection<Element> params =
e.getChildren("parameter");
+ if (params != null) {
+ // Go through all parameters
+ for (Element p : params) {
+ String name = p.getAttribute("name");
+ String value = p.getText();
+ if (value != null) {
+ value = value.trim();
+ if ("keyword".equals(name)) {
+ addKeyword(value);
+ } else if ("eventType".equals(name)) {
+ addEventType(value);
+ } else {
+ logger.info("Unrecognized and
ignored parameter: " + p.toString());
+ }
+ }
+ }
+ }
+ } else {
+ logger.warn("Unsupported element in the query
subject: " + elementName);
+ throw new PerfSONARException("error.ls.query",
"Unsupported element: " + elementName);
+ }
+ } else {
+ logger.warn("Unsupported namespace for the query
subject: " + namespaceUri);
+ throw new PerfSONARException("error.ls.query",
"Unsupported namespace: " + namespaceUri);
+ }
+ }
+ }
+ extracted = true;
+ }
- /**
- * keyword setter from String
- * @param eventType
- */
- private void addKeyword(String keyword) {
- if (keyword != null) {
- logger.trace(" we add a keyword: " + keyword);
- keywords.add(keyword.trim());
- }
- }
+ /**
+ * eventType setter from Element
+ * @param eventType
+ */
+ private void addEventType(Element eventType) {
+ String evt = eventType.getText();
+ addEventType(evt);
+ }
- /**
- * domain setter
- * @param domain
- */
- private void addDomain(Element domain) {
- Element name = domain.getFirstChild("name");
- if (name != null) {
- String n = name.getText();
- logger.trace(" we add a domain: " + n);
- if (n != null)
- domains.add(n.trim());
- }
- }
+ /**
+ * eventType setter from String
+ * @param eventType
+ */
+ private void addEventType(String eventType) {
+ if (eventType != null) {
+ logger.trace(" we add an eventType: " + eventType);
+ eventTypes.add(eventType.trim());
+ }
+ }
- /**
- * ipAddress setter
- * @param ipAddress
- */
- private void addIpAddress(Element ipAddress) {
- String ip = ipAddress.getText();
- logger.trace(" we add an IP address: " + ip);
- if (ip != null) {
- ipAddresses.add(ip.trim());
- }
- }
+ /**
+ * keyword setter from String
+ * @param eventType
+ */
+ private void addKeyword(String keyword) {
+ if (keyword != null) {
+ logger.trace(" we add a keyword: " + keyword);
+ keywords.add(keyword.trim());
+ }
+ }
- /**
- * Generates the discovery query and stores it in the query property
- *
- * @throws PerfSONARException
- */
- private void generateQuery() throws PerfSONARException {
- // First, explodes the query subject
- if (!extracted) {
- extractSubject();
- }
+ /**
+ * domain setter
+ * @param domain
+ */
+ private void addDomain(Element domain) {
+ Element name = domain.getFirstChild("name");
+ if (name != null) {
+ String n = name.getText();
+ logger.trace(" we add a domain: " + n);
+ if (n != null) {
+ domains.add(n.trim());
+ }
+ }
+ }
- // Then build the XQuery if at least one search condition is
given
- if (!ipAddresses.isEmpty() || !domains.isEmpty() ||
!keywords.isEmpty() || !eventTypes.isEmpty()) {
- StringBuffer q = new StringBuffer();
+ /**
+ * ipAddress setter
+ * @param ipAddress
+ */
+ private void addIpAddress(Element ipAddress) {
+ String ip = ipAddress.getText();
+ logger.trace(" we add an IP address: " + ip);
+ if (ip != null) {
+ ipAddresses.add(ip.trim());
+ }
+ }
- // Add required namespaces declarations
- q.append("declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n");
- q.append("declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/'; \n");
+ /**
+ * Generates the discovery query and stores it in the query property
+ *
+ * @throws PerfSONARException
+ */
+ private void generateQuery() throws PerfSONARException {
+ // First, explodes the query subject
+ if (!extracted) {
+ extractSubject();
+ }
- // Start the query with a for expression
- q.append("for $d in
/nmwg:store[@type='LSStore']/nmwg:data[\n");
- // Add search clauses
- int i = 0;
- i += addSearchClause(q, ipAddresses,
"descendant::nmwgt:ifAddress", (i > 0), null);
- i += addSearchClause(q, domains,
"descendant::nmwgt:hostName", (i > 0), "ends-with");
- i += addSearchClause(q, eventTypes,
"descendant::nmwg:eventType", (i > 0), null);
- i += addSearchClause(q, keywords,
"descendant::nmwg:parameter[@name='keyword']",
(i > 0), null);
+ // Then build the XQuery if at least one search condition is given
+ if (!ipAddresses.isEmpty() || !domains.isEmpty() ||
!keywords.isEmpty() || !eventTypes.isEmpty()) {
+ StringBuffer q = new StringBuffer();
- q.append("]\nreturn data($d/@metadataIdRef)");
+ // Add required namespaces declarations
+ q.append("declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n");
+ q.append("declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/'; \n");
- query = q.toString();
- logger.debug("Generated XQuery is:\n" + query);
+ // Start the query with a for expression
+ q.append("for $d in
/nmwg:store[@type='LSStore']/nmwg:data[\n");
+ // Add search clauses
+ int i = 0;
+ i += addSearchClause(q, ipAddresses,
"descendant::nmwgt:ifAddress", (i > 0), null);
+ i += addSearchClause(q, domains, "descendant::nmwgt:hostName",
(i > 0), "ends-with");
+ i += addSearchClause(q, eventTypes,
"descendant::nmwg:eventType", (i > 0), null);
+ i += addSearchClause(q, keywords,
"descendant::nmwg:parameter[@name='keyword']",
(i > 0), null);
- } else {
- logger.warn("The Discovery query should contain at
least one search condition on ip, domain, eventType or keyword.");
- throw new PerfSONARException("error.ls.query", "At
least one search element is needed (ip, domain, eventType, keyword)");
- }
- }
+ q.append("]\nreturn data($d/@metadataIdRef)");
- /**
- * Builds an AND/OR query clause and add it to the existing XQuery
discovery query
- *
- * @param q The query buffer to be
appended
- * @param searchItems A collection items values to search for
- * @param element Name of the element to be search for
- * @param addAnd Indicates whether to add AND at the
beginning of the expression
- * @param searchFunction Name of function to use in the search
clause, if null then equal "=" will be used
- * @return number of elements added
- */
- private int addSearchClause(StringBuffer q, Collection<String>
searchItems, String element, boolean addAnd, String searchFunction) {
- int i = 0;
- if ((searchItems.size() > 0) && (addAnd == true)) {
- q.append(" and \n");
- }
- // Loop on all searchItems
- for (String item : searchItems) {
- if (i == 0) {
- q.append(" (");
- } else {
- q.append(" or");
- }
+ query = q.toString();
+ logger.debug("Generated XQuery is:\n" + query);
- if (searchFunction == null) {
- q.append(" ");
- q.append(element);
- q.append(" = '");
- q.append(item);
- q.append("' ");
- } else {
- q.append(" ");
- q.append(searchFunction);
- q.append("(");
- q.append(element);
- q.append(",'");
- q.append(item);
- q.append("') ");
- }
- i++;
- }
- if (i > 0) {
- q.append(")\n");
- }
- return i;
+ } else {
+ logger.warn("The Discovery query should contain at least one
search condition on ip, domain, eventType or keyword.");
+ throw new PerfSONARException("error.ls.query", "At least one
search element is needed (ip, domain, eventType, keyword)");
+ }
+ }
- }
+ /**
+ * Builds an AND/OR query clause and add it to the existing XQuery
discovery query
+ *
+ * @param q The query buffer to be appended
+ * @param searchItems A collection items values to search for
+ * @param element Name of the element to be search for
+ * @param addAnd Indicates whether to add AND at the beginning of
the expression
+ * @param searchFunction Name of function to use in the search clause,
if null then equal "=" will be used
+ * @return number of elements added
+ */
+ private int addSearchClause(StringBuffer q, Collection<String>
searchItems, String element, boolean addAnd, String searchFunction) {
+ int i = 0;
+ if ((searchItems.size() > 0) && addAnd) {
+ q.append(" and \n");
+ }
+ // Loop on all searchItems
+ for (String item : searchItems) {
+ if (i == 0) {
+ q.append(" (");
+ } else {
+ q.append(" or");
+ }
- /**
- * Returns formatted query parameters string in string buffer
- * For logging/debugging purposes only
- *
- * @return
- */
- public StringBuffer printQueryParameters() {
- StringBuffer sb = new StringBuffer();
- sb.append("Discovery Query Parameters\n");
-
sb.append("==================================================\n");
- sb.append(ipAddresses);
- sb.append("\n");
-
sb.append("==================================================\n");
- sb.append(domains);
- sb.append("\n");
-
sb.append("==================================================\n");
- sb.append(eventTypes);
- sb.append("\n");
-
sb.append("==================================================\n");
- sb.append(keywords);
- sb.append("\n");
-
sb.append("==================================================\n");
- return sb;
- }
+ if (searchFunction == null) {
+ q.append(" ");
+ q.append(element);
+ q.append(" = '");
+ q.append(item);
+ q.append("' ");
+ } else {
+ q.append(" ");
+ q.append(searchFunction);
+ q.append("(");
+ q.append(element);
+ q.append(",'");
+ q.append(item);
+ q.append("') ");
+ }
+ i++;
+ }
+ if (i > 0) {
+ q.append(")\n");
+ }
+ return i;
- /**
- * Builds the XQuery and returns it
- * @return
- * @throws PerfSONARException
- */
- public String getQuery() throws PerfSONARException {
- if (query == null) {
- generateQuery();
- }
- return query;
- }
+ }
+ /**
+ * Returns formatted query parameters string in string buffer
+ * For logging/debugging purposes only
+ *
+ * @return
+ */
+ public StringBuffer printQueryParameters() {
+ StringBuffer sb = new StringBuffer();
+ sb.append("Discovery Query Parameters\n");
+ sb.append("==================================================\n");
+ sb.append(ipAddresses);
+ sb.append("\n");
+ sb.append("==================================================\n");
+ sb.append(domains);
+ sb.append("\n");
+ sb.append("==================================================\n");
+ sb.append(eventTypes);
+ sb.append("\n");
+ sb.append("==================================================\n");
+ sb.append(keywords);
+ sb.append("\n");
+ sb.append("==================================================\n");
+ return sb;
+ }
+
+ /**
+ * Builds the XQuery and returns it
+ * @return
+ * @throws PerfSONARException
+ */
+ public String getQuery() throws PerfSONARException {
+ if (query == null) {
+ generateQuery();
+ }
+ return query;
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/EchoServiceEngine.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/EchoServiceEngine.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/EchoServiceEngine.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -20,283 +20,284 @@
*/
public class EchoServiceEngine extends GenericLSServiceEngine implements
ServiceEngine {
- private final static String[] SUPPORTED_SELFTEST_EVENT_TYPES = {
-
"http://schemas.perfsonar.net/tools/admin/echo/ls/2.0",
-
"http://schemas.perfsonar.net/tools/admin/selftest/1.0" };
+ private static final String[] SUPPORTED_SELFTEST_EVENT_TYPES = {
+ "http://schemas.perfsonar.net/tools/admin/echo/ls/2.0",
+ "http://schemas.perfsonar.net/tools/admin/selftest/1.0" };
- private final static String[] SUPPORTED_ECHO_EVENT_TYPES = {
"http://schemas.perfsonar.net/tools/admin/echo/2.0", };
+ private static final String[] SUPPORTED_ECHO_EVENT_TYPES =
{"http://schemas.perfsonar.net/tools/admin/echo/2.0", };
- /**
- * Constructor
- *
- * @throws PerfSONARException
- */
- public EchoServiceEngine() throws PerfSONARException {
- super();
- }
+ /**
+ * Constructor
+ *
+ * @throws PerfSONARException
+ */
+ public EchoServiceEngine() throws PerfSONARException {
+ super();
+ }
- /**
- * Tests whether eventType is echo
- *
- * @param evt
- * @return true if selftest
- */
- private boolean isSelfTestEventTypeSupported(String evt) {
- return isEventTypeOccurInArray(evt,
SUPPORTED_SELFTEST_EVENT_TYPES);
- }
+ /**
+ * Tests whether eventType is echo
+ *
+ * @param evt
+ * @return true if selftest
+ */
+ private boolean isSelfTestEventTypeSupported(String evt) {
+ return isEventTypeOccurInArray(evt, SUPPORTED_SELFTEST_EVENT_TYPES);
+ }
- /**
- * Tests whether eventType is echo
- *
- * @param evt
- * @return true if echo
- */
- private boolean isEchoEventTypeSupported(String evt) {
- return isEventTypeOccurInArray(evt,
SUPPORTED_ECHO_EVENT_TYPES);
- }
+ /**
+ * Tests whether eventType is echo
+ *
+ * @param evt
+ * @return true if echo
+ */
+ private boolean isEchoEventTypeSupported(String evt) {
+ return isEventTypeOccurInArray(evt, SUPPORTED_ECHO_EVENT_TYPES);
+ }
- /**
- * Prints event Types (for result code message)
- *
- * @return
- */
- private String getEventTypesString() {
+ /**
+ * Prints event Types (for result code message)
+ *
+ * @return
+ */
+ private String getEventTypesString() {
- StringBuffer sb = new StringBuffer();
- int j = 0;
- for (int i = 0; i < SUPPORTED_ECHO_EVENT_TYPES.length; i++) {
- if (j > 0)
- sb.append(" | ");
- sb.append(SUPPORTED_ECHO_EVENT_TYPES[i]);
- j++;
- }
- for (int i = 0; i < SUPPORTED_SELFTEST_EVENT_TYPES.length;
i++) {
- if (j > 0)
- sb.append(" | ");
- sb.append(SUPPORTED_SELFTEST_EVENT_TYPES[i]);
- j++;
- }
- return sb.toString();
- }
+ StringBuffer sb = new StringBuffer();
+ int j = 0;
+ for (int i = 0; i < SUPPORTED_ECHO_EVENT_TYPES.length; i++) {
+ if (j > 0) {
+ sb.append(" | ");
+ }
+ sb.append(SUPPORTED_ECHO_EVENT_TYPES[i]);
+ j++;
+ }
+ for (int i = 0; i < SUPPORTED_SELFTEST_EVENT_TYPES.length; i++) {
+ if (j > 0) {
+ sb.append(" | ");
+ }
+ sb.append(SUPPORTED_SELFTEST_EVENT_TYPES[i]);
+ j++;
+ }
+ return sb.toString();
+ }
- public void takeAction(ServiceMessage serviceRequest, ServiceMessage
serviceResponse)
- throws PerfSONARException {
+ public void takeAction(ServiceMessage serviceRequest, ServiceMessage
serviceResponse)
+ throws PerfSONARException {
- // extract message
- Message request = serviceRequest.getMessageElement();
+ // extract message
+ Message request = serviceRequest.getMessageElement();
- logger.debug("Echo Service Engine started");
+ logger.debug("Echo Service Engine started");
- // get metadata to exctract parameters
- Metadata metadata = getFirstMetadataFromRequest(request);
- boolean selftest = false;
- boolean echo = false;
- String strEventType = null;
+ // get metadata to exctract parameters
+ Metadata metadata = getFirstMetadataFromRequest(request);
+ boolean selftest = false;
+ boolean echo = false;
+ String strEventType = null;
- // check eventtype
- EventType eventType = metadata.getFirstEventType();
- if (eventType == null) {
- // TODO: url event types
- throw new PerfSONARException("error.ls.no_eventtype",
"LS EchoRequest error: "
- + "Error while determining eventType
(possibly no eventType at all). "
- + "EventType must be [" +
getEventTypesString() + "]. ");
- } else {
- strEventType = eventType.getEventType();
- selftest = isSelfTestEventTypeSupported(strEventType);
- echo = isEchoEventTypeSupported(strEventType);
+ // check eventtype
+ EventType eventType = metadata.getFirstEventType();
+ if (eventType == null) {
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.no_eventtype", "LS
EchoRequest error: "
+ + "Error while determining eventType (possibly no
eventType at all). "
+ + "EventType must be [" + getEventTypesString() + "]. ");
+ } else {
+ strEventType = eventType.getEventType();
+ selftest = isSelfTestEventTypeSupported(strEventType);
+ echo = isEchoEventTypeSupported(strEventType);
- if (!selftest && !echo)
- // TODO: url event types
- throw new
PerfSONARException("error.ls.eventtype_not_supported",
- "LS EchoRequest error: " +
"Not supported event type [" + strEventType
- + "]. " +
"Must be: [" + getEventTypesString() + "]");
+ if (!selftest && !echo) {
+ // TODO: url event types
+ throw new
PerfSONARException("error.ls.eventtype_not_supported",
+ "LS EchoRequest error: " + "Not supported event type
[" + strEventType
+ + "]. " + "Must be: [" + getEventTypesString() +
"]");
+ }
+ }
- }
+ // Take action
+ Message msg = null;
- // Take action
- Message msg = null;
+ logger.debug("Taking ECHO action");
- logger.debug("Taking ECHO action");
+ if (echo) {
+ msg = takeEchoAction(serviceRequest);
+ } else if (selftest) {
+ msg = takeSelfTestAction(serviceRequest);
+ }
- // ECHO
- if (echo) {
- msg = takeEchoAction(serviceRequest);
- } else if (selftest) {// or SELFTEST
- msg = takeSelfTestAction(serviceRequest);
- }
+ // exit with success
+ serviceResponse.setElement(msg);
+ }
- // exit with success
- serviceResponse.setElement(msg);
- }
+ /**
+ * Sub action for SelfTest
+ *
+ * @param serviceRequest
+ * @return
+ * @throws PerfSONARException
+ */
+ public Message takeSelfTestAction(ServiceMessage serviceRequest) throws
PerfSONARException {
- /**
- * Sub action for SelfTest
- *
- * @param serviceRequest
- * @return
- * @throws PerfSONARException
- */
- public Message takeSelfTestAction(ServiceMessage serviceRequest)
throws PerfSONARException {
+ // create request
+ Message msg = new Message();
+ msg.setId("EchoResponse");
- // create request
- Message msg = new Message();
- msg.setId("EchoResponse");
+ Metadata meta = new Metadata("result-code-metadata", "nmwg");
+ EventType evt = new
EventType("http://schemas.perfsonar.net/tools/admin/selftest/1.0",
+ "nmwg");
+ meta.addChild(evt);
- Metadata meta = new Metadata("result-code-metadata", "nmwg");
- EventType evt = new
EventType("http://schemas.perfsonar.net/tools/admin/selftest/1.0",
- "nmwg");
- meta.addChild(evt);
+ Data data = new Data("result-code-data", "result-code", "nmwg");
+ data.setMetadataIdRef("result-code-metadata");
- Data data = new Data("result-code-data", "result-code",
"nmwg");
- data.setMetadataIdRef("result-code-metadata");
+ Element datum = new Element("datum", "nmwgr",
"http://ggf.org/ns/nmwg/result/2.0/");
+ data.addChild(datum);
- Element datum = new Element("datum", "nmwgr",
"http://ggf.org/ns/nmwg/result/2.0/");
- data.addChild(datum);
+ msg.addChild(meta);
+ msg.addChild(data);
- msg.addChild(meta);
- msg.addChild(data);
+ // test db connectivity - add
+ testDBConnectivity(data);
- // test db connectivity - add
- testDBConnectivity(data);
+ // test db collection LSStore
+ testDBCollectionSummary(data);
- // test db collection LSStore
- testDBCollectionSummary(data);
+ // test db collection LSStore-control
+ testDBCollectionControl(data);
- // test db collection LSStore-control
- testDBCollectionControl(data);
+ return msg;
+ }
- return msg;
- }
+ /**
+ * Tests whether there is LSStore-control collection
+ *
+ * @param data
+ * to be filled with result code
+ */
+ private void testDBCollectionControl(Data data) {
- /**
- * Tests whether there is LSStore-control collection
- *
- * @param data
- * to be filled with result code
- */
- private void testDBCollectionControl(Data data) {
+ String messageName = "exist-db-collection-store-control";
+ String messageDescription = "";
+ // TODO: url event types
+ String postfixResult = ".ls.selftest.collection.lsstore-control";
+ String prefixResult = "success";
- String messageName = "exist-db-collection-store-control";
- String messageDescription = "";
- // TODO: url event types
- String postfixResult =
".ls.selftest.collection.lsstore-control";
- String prefixResult = "success";
+ try {
+ boolean test = dao
+
.isDBCollection(XQueryDAOSupportImpl.LS_STORE_CONTROL_COLLECTION_TYPE);
- try {
- boolean test = dao
-
.isDBCollection(XQueryDAOSupportImpl.LS_STORE_CONTROL_COLLECTION_TYPE);
+ if (test) {
+ prefixResult = "success";
+ messageDescription = "collection LSStore-control exists and
is accessible";
+ } else {
+ prefixResult = "error";
+ messageDescription = "collection LSStore-control doesn't
exist and isn't accessible";
+ }
- if (test) {
- prefixResult = "success";
- messageDescription = "collection
LSStore-control exists and is accessible";
- } else {
- prefixResult = "error";
- messageDescription = "collection
LSStore-control doesn't exist and isn't accessible";
- }
+ } catch (PerfSONARException ex) {
+ prefixResult = "error";
+ messageDescription = "collection LSStore-control does not exist
or is not accessible:"
+ + ex.getMessage();
+ }
- } catch (PerfSONARException ex) {
- prefixResult = "error";
- messageDescription = "collection LSStore-control does
not exist or is not accessible:"
- + ex.getMessage();
- }
+ addResultCode(data, messageName, prefixResult + postfixResult,
messageDescription);
+ }
- addResultCode(data, messageName, prefixResult +
postfixResult, messageDescription);
- }
+ /**
+ * Tests whether there is LSStorecollection
+ *
+ * @param data
+ * to be filled with result code
+ */
+ private void testDBCollectionSummary(Data data) {
- /**
- * Tests whether there is LSStorecollection
- *
- * @param data
- * to be filled with result code
- */
- private void testDBCollectionSummary(Data data) {
+ String messageName = "exist-db-collection-store-summary";
+ String messageDescription = "";
+ // TODO: url event types
+ String postfixResult = ".ls.selftest.collection.summary";
+ String prefixResult = "success";
- String messageName = "exist-db-collection-store-summary";
- String messageDescription = "";
- // TODO: url event types
- String postfixResult = ".ls.selftest.collection.summary";
- String prefixResult = "success";
+ try {
+ boolean test = dao
+
.isDBCollection(XQueryDAOSupportImpl.LS_STORE_SUMMARY_COLLECTION_TYPE);
+ if (test) {
+ prefixResult = "success";
+ messageDescription = "collection LSStore-summary exists and
is accessible";
+ } else {
+ prefixResult = "error";
+ messageDescription = "collection LSStore-summary doesn't
exist";
+ }
+ } catch (PerfSONARException ex) {
+ prefixResult = "error";
+ messageDescription = "collection LSStore-summary does not exist
or is not accessible:"
+ + ex.getMessage();
+ }
- try {
- boolean test = dao
-
.isDBCollection(XQueryDAOSupportImpl.LS_STORE_SUMMARY_COLLECTION_TYPE);
- if (test) {
- prefixResult = "success";
- messageDescription = "collection
LSStore-summary exists and is accessible";
- } else {
- prefixResult = "error";
- messageDescription = "collection
LSStore-summary doesn't exist";
- }
- } catch (PerfSONARException ex) {
- prefixResult = "error";
- messageDescription = "collection LSStore-summary does
not exist or is not accessible:"
- + ex.getMessage();
- }
+ addResultCode(data, messageName, prefixResult + postfixResult,
messageDescription);
+ }
- addResultCode(data, messageName, prefixResult +
postfixResult, messageDescription);
- }
+ /**
+ * Tests whether there is connectivity with DB
+ *
+ * @param data
+ * to be filled with result code
+ */
+ private void testDBConnectivity(Data data) {
+ try {
+ if (dao.isDBConnectivity()) {
+ // TODO: url event types
+ addResultCode(data, "exist-db-connectivity",
"success.ls.selftest.dbconnectivity",
+ "eXist DB connection established");
+ }
+ } catch (PerfSONARException ex) {
+ // TODO: url event types
+ addResultCode(data, "exist-db-connectivity",
"error.ls.selftest.dbconnectivity",
+ "eXist DB connection not working: " + ex.getMessage());
+ }
+ }
- /**
- * Tests whether there is connectivity with DB
- *
- * @param data
- * to be filled with result code
- */
- private void testDBConnectivity(Data data) {
- try {
- if (dao.isDBConnectivity()) {
- // TODO: url event types
- addResultCode(data, "exist-db-connectivity",
"success.ls.selftest.dbconnectivity",
- "eXist DB connection
established");
- }
- } catch (PerfSONARException ex) {
- // TODO: url event types
- addResultCode(data, "exist-db-connectivity",
"error.ls.selftest.dbconnectivity",
- "eXist DB connection not working: " +
ex.getMessage());
- }
- }
+ /**
+ * Returns success echo response from service
+ *
+ * @param serviceRequest
+ * @return
+ * @throws PerfSONARException
+ */
+ public Message takeEchoAction(ServiceMessage serviceRequest) throws
PerfSONARException {
+ // TODO: url event types
+ Message msg = ResultCodesUtil.generateResultMessage(null,
"success.echo",
+ "Echo - ping succeeded");
+ return msg;
+ }
- /**
- * Returns success echo response from service
- *
- * @param serviceRequest
- * @return
- * @throws PerfSONARException
- */
- public Message takeEchoAction(ServiceMessage serviceRequest) throws
PerfSONARException {
- // TODO: url event types
- Message msg = ResultCodesUtil.generateResultMessage(null,
"success.echo",
- "Echo - ping succeeded");
- return msg;
- }
+ /**
+ * Adds sub result code to the selftest data element
+ *
+ * @param incomingData
+ * @param name
+ * @param code
+ * @param desc
+ */
+ private void addResultCode(Data incomingData, String name, String code,
String desc) {
- /**
- * Adds sub result code to the selftest data element
- *
- * @param incomingData
- * @param name
- * @param code
- * @param desc
- */
- private void addResultCode(Data incomingData, String name, String
code, String desc) {
+ Metadata meta = new Metadata();
+ meta.setId(name);
- Metadata meta = new Metadata();
- meta.setId(name);
+ EventType evt = new EventType();
+ evt.setEventType(PerfSONARException.RESULT_CODE_PREFIX + code);
+ meta.setEventType(evt);
+ incomingData.addChild(meta);
- EventType evt = new EventType();
- evt.setEventType(PerfSONARException.RESULT_CODE_PREFIX +
code);
- meta.setEventType(evt);
- incomingData.addChild(meta);
+ Data data = new Data();
+ data.setId(name + "-data");
+ data.setMetadataIdRef(name);
- Data data = new Data();
- data.setId(name + "-data");
- data.setMetadataIdRef(name);
+ Element datum = new Element("datum", "nmwgr",
"http://ggf.org/ns/nmwg/result/2.0/");
+ datum.setText(desc);
+ data.addChild(datum);
- Element datum = new Element("datum", "nmwgr",
"http://ggf.org/ns/nmwg/result/2.0/");
- datum.setText(desc);
- data.addChild(datum);
+ incomingData.addChild(data);
+ }
- incomingData.addChild(data);
- }
-
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/GenericLSServiceEngine.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/GenericLSServiceEngine.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/GenericLSServiceEngine.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -15,147 +15,150 @@
import org.perfsonar.service.lookupservice.storage.LookupServiceDAOFactory;
/**
- * provides support for operation on messages
+ * Provides support for operation on messages
*
* @author Maciej Glowiak, Slawomir Trzaszczka
*
*/
public abstract class GenericLSServiceEngine implements ServiceEngine {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- protected final LookupServiceDAO dao;
- protected final Configuration configuration;
- protected final ConfigurationManager configurationManager;
- private boolean gls;
+ protected final LookupServiceDAO dao;
+ protected final Configuration configuration;
+ protected final ConfigurationManager configurationManager;
+ private boolean gls;
- protected static final String LS_KEY = "lsKey";
+ protected static final String LS_KEY = "lsKey";
- public GenericLSServiceEngine() throws PerfSONARException {
- dao = getDao();
+ public GenericLSServiceEngine() throws PerfSONARException {
+ dao = getDao();
- configurationManager = ConfigurationManager.getInstance();
- configuration = configurationManager.getConfiguration();
- }
+ configurationManager = ConfigurationManager.getInstance();
+ configuration = configurationManager.getConfiguration();
+ }
- protected LookupServiceDAO getDao() throws PerfSONARException {
- return LookupServiceDAOFactory.getDAO();
- }
+ protected LookupServiceDAO getDao() throws PerfSONARException {
+ return LookupServiceDAOFactory.getDAO();
+ }
- /**
- * extracts eventType from message
- *
- * @param request
- * @return
- */
- protected String extractEventType(Message request) {
+ /**
+ * extracts eventType from message
+ *
+ * @param request
+ * @return
+ */
+ protected String extractEventType(Message request) {
- // find eventType in the metadatas
- String eventType = null;
- for (Metadata m : request.getMetadataCollection()) {
- eventType = m.getFirstEventType().getEventType();
- if (eventType != null)
- return eventType;
- }
- return null;
- }
+ // find eventType in the metadatas
+ String eventType = null;
+ for (Metadata m : request.getMetadataCollection()) {
+ eventType = m.getFirstEventType().getEventType();
+ if (eventType != null) {
+ return eventType;
+ }
+ }
+ return null;
+ }
- /**
- * Extracts first Metadata from Request
- *
- * @param request
- * @return Metadata
- */
- protected Metadata getFirstMetadataFromRequest(Message request)
- throws PerfSONARException {
+ /**
+ * Extracts first Metadata from Request
+ *
+ * @param request
+ * @return Metadata
+ */
+ protected Metadata getFirstMetadataFromRequest(Message request)
+ throws PerfSONARException {
- for (Metadata m : request.getMetadataCollection()) {
- return m;
- }
- return null;
- }
+ for (Metadata m : request.getMetadataCollection()) {
+ return m;
+ }
+ return null;
+ }
- /**
- * Extracts Key of specific Id from Metadata
- *
- * @param requestMetadata
- * @param keyId
- * Key identifier
- * @return Key value
- *
- *
- * <!-- lsKey to be updated --> <nmwg:key> <nmwg:parameters
- * id="param1"> <nmwg:parameter
- * name="lsKey">http://shower.fr:8080/axis
- * /services/MeasurementArchiveService</nmwg:parameter>
- * </nmwg:parameters> </nmwg:key>
- */
- public String getParameterFromKey(Metadata requestMetadata,
- String parameterName) {
- if
(requestMetadata.getChildren("key","http://ggf.org/ns/nmwg/base/2.0/") ==
null) {
- return null;
- }
- for (Element key : requestMetadata.getChildren("key")) {
- if (key.getChildren("parameters") == null) {
- return null;
- }
- for (Element params : key.getChildren("parameters")) {
- if (params.getChildren("parameter") == null) {
- return null;
- }
- for (Element p :
params.getChildren("parameter")) {
- String parameterValue =
extractParameterValue(p);
- if
(parameterName.equals(p.getAttribute("name"))) {
- logger.debug("Found Parameter
[" + parameterName
- + "] in
metadata [" + requestMetadata.getId()
- + "]");
- return parameterValue; // if
key has keyId and
- }
- }
- }
- }
- return null;
- }
+ /**
+ * Extracts Key of specific Id from Metadata
+ *
+ * @param requestMetadata
+ * @param keyId
+ * Key identifier
+ * @return Key value
+ *
+ *
+ * <!-- lsKey to be updated --> <nmwg:key> <nmwg:parameters
+ * id="param1"> <nmwg:parameter
+ * name="lsKey">http://shower.fr:8080/axis
+ * /services/MeasurementArchiveService</nmwg:parameter>
+ * </nmwg:parameters> </nmwg:key>
+ */
+ public String getParameterFromKey(Metadata requestMetadata,
+ String parameterName) {
+ if (requestMetadata.getChildren("key",
"http://ggf.org/ns/nmwg/base/2.0/") == null) {
+ return null;
+ }
+ for (Element key : requestMetadata.getChildren("key")) {
+ if (key.getChildren("parameters") == null) {
+ return null;
+ }
+ for (Element params : key.getChildren("parameters")) {
+ if (params.getChildren("parameter") == null) {
+ return null;
+ }
+ for (Element p : params.getChildren("parameter")) {
+ String parameterValue = extractParameterValue(p);
+ if (parameterName.equals(p.getAttribute("name"))) {
+ logger.debug("Found Parameter [" + parameterName
+ + "] in metadata [" + requestMetadata.getId()
+ + "]");
+ return parameterValue; // if key has keyId and
+ }
+ }
+ }
+ }
+ return null;
+ }
- public boolean isGLS() {
- return gls;
- }
+ public boolean isGLS() {
+ return gls;
+ }
- public void setGLS(boolean g) {
- gls = g;
- }
+ public void setGLS(boolean g) {
+ gls = g;
+ }
- /**
- * Extract parameter value if value attribute not null or text content
- *
- * @param p
- * @return
- */
- protected String extractParameterValue(Element p) {
- String val = p.getAttribute("value");
- if (val != null)
- return val;
- String txt = p.getText().trim();
- return txt;
- }
-
- /**
- *
- * checks whether string occurs in string array
- *
- * @param needle
- * @param haystack
- * @return
- */
- protected boolean isEventTypeOccurInArray(String needle, String[]
haystack) {
+ /**
+ * Extract parameter value if value attribute not null or text content
+ *
+ * @param p
+ * @return
+ */
+ protected String extractParameterValue(Element p) {
+ String val = p.getAttribute("value");
+ if (val != null) {
+ return val;
+ }
+ String txt = p.getText().trim();
+ return txt;
+ }
- for (String h : haystack) {
- if (h.equals(needle))
- return true;
- else if (h.equals(needle + "/"))
- return true;
- }
- return false;
- }
+ /**
+ *
+ * checks whether string occurs in string array
+ *
+ * @param needle
+ * @param haystack
+ * @return
+ */
+ protected boolean isEventTypeOccurInArray(String needle, String[]
haystack) {
-}
\ No newline at end of file
+ for (String h : haystack) {
+ if (h.equals(needle)) {
+ return true;
+ } else if (h.equals(needle + "/")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/GenericLSServiceROEngine.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/GenericLSServiceROEngine.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/GenericLSServiceROEngine.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -14,13 +14,13 @@
*/
public abstract class GenericLSServiceROEngine extends
GenericLSServiceEngine {
- public GenericLSServiceROEngine() throws PerfSONARException {
- super();
- }
+ public GenericLSServiceROEngine() throws PerfSONARException {
+ super();
+ }
- @Override
- protected LookupServiceDAO getDao() throws PerfSONARException {
- return LookupServiceDAOFactory.getRODAO();
- }
+ @Override
+ protected LookupServiceDAO getDao() throws PerfSONARException {
+ return LookupServiceDAOFactory.getRODAO();
+ }
-}
\ No newline at end of file
+}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSDeregisterServiceEngine.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSDeregisterServiceEngine.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSDeregisterServiceEngine.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -17,80 +17,80 @@
*/
public class LSDeregisterServiceEngine extends GenericLSServiceEngine {
- public LSDeregisterServiceEngine() throws PerfSONARException {
- super();
- }
-
+ public LSDeregisterServiceEngine() throws PerfSONARException {
+ super();
+ }
- public void takeAction(ServiceMessage serviceRequest,
- ServiceMessage serviceResponse) throws
PerfSONARException {
- logger.debug("LS deregister - action DEREGISTER started");
-
- // extract message
- Message requestMessage = serviceRequest.getMessageElement();
+ public void takeAction(ServiceMessage serviceRequest,
+ ServiceMessage serviceResponse) throws PerfSONARException {
- // Get Metadata from Request
- Metadata requestMetadata =
getFirstMetadataFromRequest(requestMessage);
+ logger.debug("LS deregister - action DEREGISTER started");
- if (requestMetadata == null) {
- String m = "LSDeregisterAction: No metadata in
request";
- logger.warn(m);
-// TODO: url event types
- throw new PerfSONARException("error.ls.no_metadata",
m);
- }
+ // extract message
+ Message requestMessage = serviceRequest.getMessageElement();
- // Get Key from Metadata
+ // Get Metadata from Request
+ Metadata requestMetadata =
getFirstMetadataFromRequest(requestMessage);
- String keyValue = getParameterFromKey(requestMetadata,
LS_KEY);
- logger.debug("LSDeregisterAction: LS key=[" + keyValue + "]");
+ if (requestMetadata == null) {
+ String m = "LSDeregisterAction: No metadata in request";
+ logger.warn(m);
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.no_metadata", m);
+ }
- if (keyValue == null) {
- String m = "LSDeregisterAction: No key in metadata";
- logger.warn(m);
-// TODO: url event types
- throw new PerfSONARException("error.ls.no_key", m);
- }
-
- int elementsRemoved = dao.removeLookupInfo(keyValue);
+ // Get Key from Metadata
- Message msg;
+ String keyValue = getParameterFromKey(requestMetadata, LS_KEY);
+ logger.debug("LSDeregisterAction: LS key=[" + keyValue + "]");
- if (elementsRemoved < 1) {
- // given key not found !
-// TODO: url event types
- msg = ResultCodesUtil.generateResultMessage(
- "error.ls.key_not_found",
- "There were no metadata and data for
key [" + keyValue
- + "]");
- logger.debug("given key " + keyValue + " not found in
DB");
- } else {
- // metadata with key existed - deregistration
successful
+ if (keyValue == null) {
+ String m = "LSDeregisterAction: No key in metadata";
+ logger.warn(m);
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.no_key", m);
+ }
- // inform about changes Component !
-
- ModificationCounterComponent component =
getModifcationCounter();
- component.incrementCounter();
+ int elementsRemoved = dao.removeLookupInfo(keyValue);
-// TODO: url event types
- msg = ResultCodesUtil.generateResultMessage(null,
- "success.ls.deregister", "Removed
total ["
- + elementsRemoved
- + "] metadata and
data elements for key ["
- + keyValue + "]");
- }
+ Message msg;
- serviceResponse.setElement(msg);
- }
-
- private ModificationCounterComponent getModifcationCounter() throws
PerfSONARException{
-
- ConfigurationManager cm = ConfigurationManager.getInstance();
- ModificationCounterComponent modificationCounter =
(ModificationCounterComponent) cm
- .getConfiguration().getAuxiliaryComponent(
-
"modificationCounterComponent");
- return modificationCounter;
-
- }
+ if (elementsRemoved < 1) {
+ // given key not found !
+ // TODO: url event types
+ msg = ResultCodesUtil.generateResultMessage(
+ "error.ls.key_not_found",
+ "There were no metadata and data for key [" + keyValue
+ + "]");
+ logger.debug("given key " + keyValue + " not found in DB");
+ } else {
+ // metadata with key existed - deregistration successful
+ // inform about changes Component !
+
+ ModificationCounterComponent component = getModifcationCounter();
+ component.incrementCounter();
+
+ // TODO: url event types
+ msg = ResultCodesUtil.generateResultMessage(null,
+ "success.ls.deregister", "Removed total ["
+ + elementsRemoved
+ + "] metadata and data elements for key ["
+ + keyValue + "]");
+ }
+
+ serviceResponse.setElement(msg);
+ }
+
+ private ModificationCounterComponent getModifcationCounter() throws
PerfSONARException {
+
+ ConfigurationManager cm = ConfigurationManager.getInstance();
+ ModificationCounterComponent modificationCounter =
(ModificationCounterComponent) cm
+ .getConfiguration().getAuxiliaryComponent(
+ "modificationCounterComponent");
+ return modificationCounter;
+
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSDiscoveryAction.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSDiscoveryAction.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSDiscoveryAction.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -24,155 +24,157 @@
*/
public class LSDiscoveryAction {
- protected Logger logger = LoggerFactory.getLogger(getClass());
- private final String
SUBJECT_NAMESPACE="http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/";
- private LookupServiceDAO dao;
+ protected Logger logger = LoggerFactory.getLogger(getClass());
+ private final String subjectNamespace =
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/";
+ private LookupServiceDAO dao;
- public LSDiscoveryAction(LookupServiceDAO dao) {
- this.dao = dao;
- }
+ public LSDiscoveryAction(LookupServiceDAO dao) {
+ this.dao = dao;
+ }
- public void performAction(ServiceMessage serviceRequest,
- ServiceMessage serviceResponse, Message
requestMessage,
- Metadata requestMetadata, Element subject)
- throws PerfSONARException {
+ public void performAction(ServiceMessage serviceRequest,
+ ServiceMessage serviceResponse, Message requestMessage,
+ Metadata requestMetadata, Element subject)
+ throws PerfSONARException {
- logger.debug("LSDiscoveryAction started - found summary
eventType");
+ logger.debug("LSDiscoveryAction started - found summary eventType");
- // check subject URI
- // if not <summary:subject> return error
- if (!SUBJECT_NAMESPACE.equals(subject.getNamespaceUri())){
-// TODO: url event types
- throw new PerfSONARException("error.ls.no_subject",
- "Subject is not summary:subject");
- }
-
+ // check subject URI
+ // if not <summary:subject> return error
+ if (!subjectNamespace.equals(subject.getNamespaceUri())) {
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.no_subject",
+ "Subject is not summary:subject");
+ }
- // query for list of services
- HashSet<String> resultSet = queryForListOfServices(subject);
- // prepare response
- Message response = new Message();
- // set Data container
- Data data = new Data();
- data.setId("discovery-results");
- data.setMetadataIdRef("discovery-metadata");
- response.setData(data);
- // Set Metadata
- requestMetadata.setId("discovery-metadata");
- response.setMetadata(requestMetadata);
+ // query for list of services
+ HashSet<String> resultSet = queryForListOfServices(subject);
- if (resultSet.size() == 0) {
- // generate result code when no results
- addNothingFoundMessage(data);
+ // prepare response
+ Message response = new Message();
+ // set Data container
+ Data data = new Data();
+ data.setId("discovery-results");
+ data.setMetadataIdRef("discovery-metadata");
+ response.setData(data);
+ // Set Metadata
+ requestMetadata.setId("discovery-metadata");
+ response.setMetadata(requestMetadata);
- } else {
- // fill the response with the results
- logger.debug("Got list of " + resultSet.size() + "
unique services");
+ if (resultSet.size() == 0) {
+ // generate result code when no results
+ addNothingFoundMessage(data);
- // query for services metadata, omit when empty
- Collection<Element> results =
queryForServicesMetadata(resultSet);
+ } else {
+ // fill the response with the results
+ logger.debug("Got list of " + resultSet.size() + " unique
services");
- // parse all metadata elements from resultSet and put
them info data
- // (add results to message)
- if (results != null) {
- for (Element e : results) {
- if ("metadata".equals(e.getName())) {
- logger.debug("Add result
metadata [" + e.getId()
- + "] to data
[" + data.getId() + "]");
- data.addChild(e);
- }
- }
- } else {
- // generate result code when no results
- addNothingFoundMessage(data);
- }
- }
+ // query for services metadata, omit when empty
+ Collection<Element> results =
queryForServicesMetadata(resultSet);
- // return the response (either for success or error)
- serviceResponse.setElement(response);
- }
+ // parse all metadata elements from resultSet and put them info
data
+ // (add results to message)
+ if (results != null) {
+ for (Element e : results) {
+ if ("metadata".equals(e.getName())) {
+ logger.debug("Add result metadata [" + e.getId()
+ + "] to data [" + data.getId() + "]");
+ data.addChild(e);
+ }
+ }
+ } else {
+ // generate result code when no results
+ addNothingFoundMessage(data);
+ }
+ }
- private void addNothingFoundMessage(Data data) {
+ // return the response (either for success or error)
+ serviceResponse.setElement(response);
+ }
- logger.debug("Result set empty - generating result code");
+ private void addNothingFoundMessage(Data data) {
- Element datum = new Element("datum", "nmwgr",
- "http://ggf.org/ns/nmwg/result/2.0/");
- datum.setText("Nothing returned for search.");
- data.addChild(datum);
- }
+ logger.debug("Result set empty - generating result code");
- /**
- * Performs query and returns list of metadata blocks If no metadata
block,
- * null is returned
- *
- * @param resultSet
- * @return
- * @throws PerfSONARException
- */
- private Collection<Element> queryForServicesMetadata(HashSet<String>
resultSet)
- throws PerfSONARException {
+ Element datum = new Element("datum", "nmwgr",
+ "http://ggf.org/ns/nmwg/result/2.0/");
+ datum.setText("Nothing returned for search.");
+ data.addChild(datum);
+ }
- // generate specific query for metadata blocks
- StringBuffer qb = new StringBuffer();
- qb.append("declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n");
- qb.append("declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/'; \n");
- qb.append("let $list := (\n");
+ /**
+ * Performs query and returns list of metadata blocks If no metadata
block,
+ * null is returned
+ *
+ * @param resultSet
+ * @return
+ * @throws PerfSONARException
+ */
+ private Collection<Element> queryForServicesMetadata(HashSet<String>
resultSet)
+ throws PerfSONARException {
- boolean first = true;
- for (String r : resultSet) {
- if ("".equals(r)) {
- logger.debug("service URL empty - omit");
- } else {
- if (first)
- first = false;
- else
- qb.append(", \n");
- qb.append("'" + r + "'");
- }
- }
- // if no address accepted, do not perform second query,
return null
- if (first == true)
- return null; // !!
+ // generate specific query for metadata blocks
+ StringBuffer qb = new StringBuffer();
+ qb.append("declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n");
+ qb.append("declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/'; \n");
+ qb.append("let $list := (\n");
- qb.append(") \n");
- qb.append("for $id in $list \n");
- qb.append("let $m :=
/nmwg:store[@type='LSStore']/nmwg:metadata[@id=$id]
\n");
- qb.append("return $m \n");
+ boolean first = true;
+ for (String r : resultSet) {
+ if ("".equals(r)) {
+ logger.debug("service URL empty - omit");
+ } else {
+ if (first) {
+ first = false;
+ } else {
+ qb.append(", \n");
+ }
+ qb.append("'" + r + "'");
+ }
+ }
+ // if no address accepted, do not perform second query, return null
+ if (first) {
+ return null; // FIXME: We probably shouldn't do that
+ }
- String query = qb.toString();
-
logger.debug("\n------------------------------------------------\nQUERY
2:\n------------------------------------------------\n"
- + query + "\n");
+ qb.append(") \n");
+ qb.append("for $id in $list \n");
+ qb.append("let $m :=
/nmwg:store[@type='LSStore']/nmwg:metadata[@id=$id]
\n");
+ qb.append("return $m \n");
- XMLDBResult results = dao.performXQuery(query);
- return results.getResults();
- }
+ String query = qb.toString();
+
logger.debug("\n------------------------------------------------\nQUERY
2:\n------------------------------------------------\n"
+ + query + "\n");
- private HashSet<String> queryForListOfServices(Element subject)
- throws PerfSONARException {
+ XMLDBResult results = dao.performXQuery(query);
+ return results.getResults();
+ }
- logger.debug("Subject found");
+ private HashSet<String> queryForListOfServices(Element subject)
+ throws PerfSONARException {
- // create query generator passing subject
- DiscoveryQueryGenerator gen = new
DiscoveryQueryGenerator(subject);
- String query = gen.getQuery();
- logger.debug(gen.printQueryParameters().toString());
+ logger.debug("Subject found");
- /* XQuery. Will return string array containing metadata
blocks */
- /* Query 1 - service names */
-
logger.debug("\n------------------------------------------------\nQUERY
1:\n------------------------------------------------\n"
- + query + "\n");
+ // create query generator passing subject
+ DiscoveryQueryGenerator gen = new DiscoveryQueryGenerator(subject);
+ String query = gen.getQuery();
+ logger.debug(gen.printQueryParameters().toString());
- XMLDBResult dbres = dao.performXQuery(query);
- String[] resultArr = dbres.getTextResults();
+ /* XQuery. Will return string array containing metadata blocks */
+ /* Query 1 - service names */
+
logger.debug("\n------------------------------------------------\nQUERY
1:\n------------------------------------------------\n"
+ + query + "\n");
- // copy to set removing duplicates
- HashSet<String> resultSet = new HashSet<String>();
- for (String r : resultArr) {
- resultSet.add(r);
- }
- return resultSet;
- }
+ XMLDBResult dbres = dao.performXQuery(query);
+ String[] resultArr = dbres.getTextResults();
+ // copy to set removing duplicates
+ HashSet<String> resultSet = new HashSet<String>();
+ for (String r : resultArr) {
+ resultSet.add(r);
+ }
+ return resultSet;
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSKeepaliveServiceEngine.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSKeepaliveServiceEngine.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSKeepaliveServiceEngine.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -26,9 +26,9 @@
ServiceMessage serviceResponse) throws PerfSONARException {
logger.debug("[LSKeepaliveAction] Action KEEPALIVE started");
-
+
Message msg;
-
+
// extract message
Message requestMessage = serviceRequest.getMessageElement();
@@ -43,17 +43,14 @@
// key is registered, update time
logger.debug("LSKeepaliveAction: LookupInfo found, KEEPALIVE -
update time");
updateTime(keyValue);
-// TODO: url event types
+ // TODO: url event types
msg = ResultCodesUtil.generateResultMessage(null,
- "success.ls.keepalive", "Timestamp for [" + keyValue
- + "] has been updated");
+ "success.ls.keepalive", "Timestamp for [" + keyValue +
"] has been updated");
} else {
- String m = "LSKeepaliveAction: Key [" + keyValue
- + "] not found, can't be updated";
-// TODO: url event types
- msg= ResultCodesUtil.generateResultMessage(null,
- "error.ls.key_not_found", m);
-
+ String m = "LSKeepaliveAction: Key [" + keyValue + "] not found,
can't be updated";
+ // TODO: url event types
+ msg = ResultCodesUtil.generateResultMessage(null,
"error.ls.key_not_found", m);
+
logger.warn(m);
}
@@ -61,7 +58,7 @@
}
-
+
/**
* Gets and tests Key. If key is null return exception (with result code)
* @param requestMetadata
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryAction.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryAction.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryAction.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -22,71 +22,71 @@
*/
public class LSQueryAction {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private LookupServiceDAO dao;
+ private LookupServiceDAO dao;
- public LSQueryAction(LookupServiceDAO dao) {
- this.dao = dao;
- }
+ public LSQueryAction(LookupServiceDAO dao) {
+ this.dao = dao;
+ }
- public void performQuery(ServiceMessage serviceRequest,
- ServiceMessage serviceResponse, Message message,
Element subject,
- String lsOutput) throws PerfSONARException {
+ public void performQuery(ServiceMessage serviceRequest,
+ ServiceMessage serviceResponse, Message message, Element subject,
+ String lsOutput) throws PerfSONARException {
- // get subject query
- String query = subject.getText();
+ // get subject query
+ String query = subject.getText();
- logger.debug("Query=[" + query + "]");
+ logger.debug("Query=[" + query + "]");
- // Performing XQuery operation on the database
- logger.debug("Perform query");
- XMLDBResult results = dao.performXQuery(query);
- logger.debug("Got [" + results.getElementsCount() + "]
results from DB");
+ // Performing XQuery operation on the database
+ logger.debug("Perform query");
+ XMLDBResult results = dao.performXQuery(query);
+ logger.debug("Got [" + results.getElementsCount() + "] results from
DB");
- // create ServiceEngineResponse and put there the results
-// TODO: url event types
- Message responseMessage =
ResultCodesUtil.generateResultMessage(
- "success.ls.query", "");
- Data data = (Data)
responseMessage.getChildren("data").toArray(new Element[1])[0];
- data.getChildren().clear();
- responseMessage.setId("LSQueryResponse");
+ // create ServiceEngineResponse and put there the results
+ // TODO: url event types
+ Message responseMessage = ResultCodesUtil.generateResultMessage(
+ "success.ls.query", "");
+ Data data = (Data) responseMessage.getChildren("data").toArray(new
Element[1])[0];
+ data.getChildren().clear();
+ responseMessage.setId("LSQueryResponse");
-
- if(results.getTotal() > 0){
- // if there are some results
-
- // iterate results, create Datum for them and put all
- // these Datum into Data
- for (Element e : results.getResults()) {
+ if (results.getTotal() > 0) {
+ // If there are some results
+ // iterate results, create Datum for them and put all
+ // these Datum into Data
- // create new datum
- Element datum = createDatumElement();
+ for (Element e : results.getResults()) {
- // 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);
+ // create new datum
+ Element datum = createDatumElement();
- data.addChild(datum);
- }
- }else{
- // add empty datum element
- data.addChild(createDatumElement());
- }
-
- serviceResponse.setElement(responseMessage);
+ // 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);
+ }
- }
+ data.addChild(datum);
+ }
+ } else {
+ // add empty datum element
+ data.addChild(createDatumElement());
+ }
- private Element createDatumElement(){
- Element el=new Element("datum", "psservice",
- "http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
- return el;
- }
-
+ serviceResponse.setElement(responseMessage);
+ }
+
+ private Element createDatumElement() {
+ Element el = new Element("datum", "psservice",
+ "http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
+ return el;
+ }
+
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -18,119 +18,119 @@
*/
public class LSQueryServiceEngine extends GenericLSServiceROEngine {
- /**
- * Supported query types, eventType (e.g. "xquery")
- */
- private final 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/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/query/xquery/2.0",
};
+ /**
+ * Supported query types, eventType (e.g. "xquery")
+ */
+ private final 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/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/query/xquery/2.0",
};
- private final String[] discoveryEventTypes = {
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0"};
+ private final String[] discoveryEventTypes =
{"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0"};
- public LSQueryServiceEngine() throws PerfSONARException {
- super();
- }
+ public LSQueryServiceEngine() throws PerfSONARException {
+ super();
+ }
- public void takeAction(ServiceMessage serviceRequest,
- ServiceMessage serviceResponse) throws
PerfSONARException {
+ public void takeAction(ServiceMessage serviceRequest,
+ ServiceMessage serviceResponse) throws PerfSONARException {
- logger.debug("Action LOOKUP started");
+ logger.debug("Action LOOKUP started");
- // extract message
- Message requestMessage = serviceRequest.getMessageElement();
- // logger.debug("got message"+requestMessage);
+ // extract message
+ Message requestMessage = serviceRequest.getMessageElement();
+ // logger.debug("got message"+requestMessage);
- String eventType = null;
- String lsOutput = null;
- Element subject = null;
- Metadata metadataWithSubject = null;
+ String eventType = null;
+ String lsOutput = null;
+ Element subject = null;
+ Metadata metadataWithSubject = null;
- // Process metadata
- for (Element e : requestMessage.getChildren("metadata")) {
+ // 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
+ if (e instanceof Metadata) {
- Metadata m = (Metadata) e;
+ Metadata m = (Metadata) e;
- // try to get event type
- EventType et = m.getFirstEventType();
- Collection<Element> subjectElement =
m.getChildren("subject");
+ // try to get event type
+ EventType et = m.getFirstEventType();
+ Collection<Element> subjectElement =
m.getChildren("subject");
- if (et == null) {
- // if there is no eventType
- String message = "EventType not
found, unknown or not supported";
- logger.debug(message);
-// TODO: url event types
- throw new
PerfSONARException("error.no_event_type", message);
- } else if (subjectElement == null ||
subjectElement.size() != 1) {
- // if there is no subject
- String message = "Subject not found";
- logger.debug(message);
-// TODO: url event types
- throw new
PerfSONARException("error.no_subject", message);
- } else {
- // subject and eventTypes occur -
process
- eventType = et.getEventType();
- logger.debug("Found eventType
[+eventType+]");
+ if (et == null) {
+ // if there is no eventType
+ String message = "EventType not found, unknown or not
supported";
+ logger.debug(message);
+ // TODO: url event types
+ throw new PerfSONARException("error.no_event_type",
message);
+ } else if (subjectElement == null || subjectElement.size()
!= 1) {
+ // if there is no subject
+ String message = "Subject not found";
+ logger.debug(message);
+ // TODO: url event types
+ throw new PerfSONARException("error.no_subject",
message);
+ } else {
+ // subject and eventTypes occur - process
+ eventType = et.getEventType();
+ logger.debug("Found eventType [+eventType+]");
- // try to get subject
- subject =
subjectElement.iterator().next();
+ // try to get subject
+ subject = subjectElement.iterator().next();
- metadataWithSubject = m;
- logger.debug("Found subject
(namespace "
- +
subject.getNamespacePrefix() + ")");
+ metadataWithSubject = m;
+ logger.debug("Found subject (namespace "
+ + subject.getNamespacePrefix() + ")");
- // try to get parameters
- Parameters parameters = m
-
.getParameters("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/xquery/1.0/");
- if (parameters != null
- &&
parameters.getChildren("parameters") != null) {
- lsOutput =
parameters.getFirstParameter("lsOutput")
- .getValue();
- logger.debug("Found lsOutput
parameter [" + lsOutput
- + "]");
- }
- }
- }
- }
+ // try to get parameters
+ Parameters parameters = m
+
.getParameters("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/xquery/1.0/");
+ if (parameters != null
+ && parameters.getChildren("parameters") != null)
{
+ lsOutput = parameters.getFirstParameter("lsOutput")
+ .getValue();
+ logger.debug("Found lsOutput parameter [" + lsOutput
+ + "]");
+ }
+ }
+ }
+ }
- // Dispatch on eventType
- if (isLookupQuery(eventType)) {
- logger.debug("EventType [" + eventType + "] accepted,
taking RAW LSQuery action");
-
- // Perform a plain query
- LSQueryAction queryAction = new LSQueryAction(dao);
- queryAction.performQuery(serviceRequest,
serviceResponse,
- requestMessage, subject, lsOutput);
+ // Dispatch on eventType
+ if (isLookupQuery(eventType)) {
+ logger.debug("EventType [" + eventType + "] accepted, taking RAW
LSQuery action");
- } else if (isLookupDiscovery(eventType)) {
- logger.debug("EventType [" + eventType + "] accepted,
taking LSDiscovery action");
-
- // Perform a discovery query
- LSDiscoveryAction discovery = new
LSDiscoveryAction(dao);
- logger.debug("subject:" + subject);
- discovery.performAction(serviceRequest,
serviceResponse,
- requestMessage, metadataWithSubject,
subject);
+ // Perform a plain query
+ LSQueryAction queryAction = new LSQueryAction(dao);
+ queryAction.performQuery(serviceRequest, serviceResponse,
+ requestMessage, subject, lsOutput);
- } else {
- logger.warn("Unsupported query message eventType: " +
eventType);
- throw new PerfSONARException("error/unsupported query
message",
- "Unsupported query message");
- }
+ } else if (isLookupDiscovery(eventType)) {
+ logger.debug("EventType [" + eventType + "] accepted, taking
LSDiscovery action");
- }
+ // Perform a discovery query
+ LSDiscoveryAction discovery = new LSDiscoveryAction(dao);
+ logger.debug("subject:" + subject);
+ discovery.performAction(serviceRequest, serviceResponse,
+ requestMessage, metadataWithSubject, subject);
- private boolean isLookupDiscovery(String queryType) {
- return isEventTypeOccurInArray(queryType,
discoveryEventTypes);
- }
+ } else {
+ logger.warn("Unsupported query message eventType: " + eventType);
+ throw new PerfSONARException("error/unsupported query message",
+ "Unsupported query message");
+ }
- private boolean isLookupQuery(String queryType) {
- return isEventTypeOccurInArray(queryType, queryEventTypes);
- }
+ }
+ private boolean isLookupDiscovery(String queryType) {
+ return isEventTypeOccurInArray(queryType, discoveryEventTypes);
+ }
+
+ private boolean isLookupQuery(String queryType) {
+ return isEventTypeOccurInArray(queryType, queryEventTypes);
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSRegisterServiceEngine.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSRegisterServiceEngine.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSRegisterServiceEngine.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -24,229 +24,207 @@
*/
public class LSRegisterServiceEngine extends LSRegisterServiceHelper {
- private boolean allowReplaceIfAlreadyRegistered = true;
+ private boolean allowReplaceIfAlreadyRegistered = true;
- public LSRegisterServiceEngine() throws PerfSONARException {
- super();
- }
+ public LSRegisterServiceEngine() throws PerfSONARException {
+ super();
+ }
- public void takeAction(ServiceMessage serviceRequest, ServiceMessage
serviceResponse)
- throws PerfSONARException {
+ public void takeAction(ServiceMessage serviceRequest, ServiceMessage
serviceResponse) throws PerfSONARException {
+ Message request = serviceRequest.getMessageElement();
+ if (getTtlBound() != null) {
+ // if TTL bounds are defined check if the user send lsTTL
parameter
+ List<Element> parametersNodes = (List<Element>)
serviceRequest.getElement().getChildren("parameters");
+ if (parametersNodes != null && parametersNodes.size() == 1) {
+ try {
+ long clientTTL =
getLSTTLFromParameters(parametersNodes.get(0));
+ setClientTTL(clientTTL);
+ if (clientTTL != 0) {
+ logger.debug("TTL parameters are set, suggested TTL
param by client: " + clientTTL);
+ if (isBetweenTTLBound(clientTTL)) {
+
setTtlParameterStatus(LsTTLParameterStatus.ACCEPTED);
+ setClientTTL(clientTTL);
+ logger.info("client TTL accepted");
+ } else {
+
setTtlParameterStatus(LsTTLParameterStatus.OUT_OF_BOUND);
+ logger.info("client TTL rejected - out of
bounds");
+ setClientTTL(0);
+ }
+ } else {
+ logger.info("Ignoring TTL parameter of " +
clientTTL);
+ }
+ } catch (PerfSONARException ex) {
+ logger.info("Ignoring TTL parameter: " +
ex.getMessage());
+ setTtlParameterStatus(LsTTLParameterStatus.NOT_A_NUMBER);
+ }
+ }
+ } else {
+ logger.warn("client sent TTL parameter but no range params
defined in config file!");
+ }
- // extract message
- Message request = serviceRequest.getMessageElement();
+ // Get Metadata from request
+ Metadata requestMetadata = getFirstMetadataFromRequest(request);
+ if (requestMetadata == null) {
+ String m = "No metadata in incoming request";
+ logger.warn(m);
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.no_metadata", m);
+ }
+ logger.debug("Getting metadata from request: [" +
requestMetadata.getId() + "]");
- if (getTtlBound() != null) {
- // if TTL bounds are defined check if the user send
lsTTL parameter
+ // Check eventType
+ EventType reqEvT = null;
+ String reqEventType = null;
+ reqEvT = requestMetadata.getFirstEventType();
- List<Element> parametersNodes = (List<Element>)
serviceRequest.getElement()
- .getChildren("parameters");
- if (parametersNodes != null && parametersNodes.size()
== 1) {
- try {
- long clientTTL =
getLSTTLFromParameters(parametersNodes.get(0));
- setClientTTL(clientTTL);
- if (clientTTL != 0) {
- logger.debug("TTL parameters
are set, suggested TTL param by client: " + clientTTL);
- if
(isBetweenTTLBound(clientTTL)) {
-
setTtlParameterStatus(LsTTLParameterStatus.ACCEPTED);
-
setClientTTL(clientTTL);
- logger.info("client
TTL accepted");
- } else {
-
setTtlParameterStatus(LsTTLParameterStatus.OUT_OF_BOUND);
- logger.info("client
TTL rejected - out of bounds");
- setClientTTL(0);
- }
- } else {
- logger.info("Ignoring TTL
parameter of " + clientTTL);
- }
- } catch (PerfSONARException ex) {
- logger.info("Ignoring TTL parameter:
" + ex.getMessage());
-
setTtlParameterStatus(LsTTLParameterStatus.NOT_A_NUMBER);
- }
+ // if no eventType and home LS -- use Service evt. for backward
compatibility
+ if ((!isGLS()) && (reqEventType == null)) {
+ reqEventType = SERVICE_EVENT_TYPE;
+ logger.debug("Taking default eventType [" + SERVICE_EVENT_TYPE +
"]");
+ }
- }
- } else {
- logger.warn("client sent TTL parameter but no range
params defined in config file!");
- }
+ // check GLS
+ if ((SERVICE_EVENT_TYPE.equals(reqEventType) && !isGLS())
+ || (SUMMARY_EVENT_TYPE.equals(reqEventType) && isGLS())) {
+ // OK - no action
+ logger.debug("eventType accepted [" + reqEventType + "]");
+ } else {
+ String m = "[LS Registration] no service event type or wrong
eventType! Service is "
+ + ((isGLS()) ? "[global-LS] and accepts [" +
SUMMARY_EVENT_TYPE + "]"
+ : "[home-LS] and accepts [" + SERVICE_EVENT_TYPE
+ "]");
+ logger.error(m);
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.wrong_eventtype", m);
+ }
- // Get Metadata from request
+ // reset event type - will not be used anymore
+ requestMetadata.removeChild(reqEvT);
- Metadata requestMetadata =
getFirstMetadataFromRequest(request);
- if (requestMetadata == null) {
- String m = "No metadata in incoming request";
- logger.warn(m);
- // TODO: url event types
- throw new PerfSONARException("error.ls.no_metadata",
m);
- }
- logger.debug("Getting metadata from request: [" +
requestMetadata.getId() + "]");
+ // get accessPoint from Metadata - mandatory element
+ // if it's empty or null PerfSONARException will be thrown
+ String accessPoint = getAccessPoint(requestMetadata);
- // check eventType
- EventType reqEvT = null;
- String reqEventType = null;
- reqEvT = requestMetadata.getFirstEventType();
+ // check other mandatory elements, do not care about results
+ // if they're empty or null PerfSONARException will be thrown
+ getServiceName(requestMetadata);
+ getServiceType(requestMetadata);
- // if no eventType and home LS -- use Service evt.
- // for backward compatibility
- if ((!isGLS()) && (reqEventType == null)) {
- reqEventType = SERVICE_EVENT_TYPE;
- logger.debug("Taking default eventType [" +
SERVICE_EVENT_TYPE + "]");
- }
+ // Try to get Key from Metadata
+ String keyValue = getParameterFromKey(requestMetadata, LS_KEY);
+ logger.debug("Key from metadata=[" + keyValue + "]");
- // check GLS
- if ((SERVICE_EVENT_TYPE.equals(reqEventType) && !isGLS())
- || (SUMMARY_EVENT_TYPE.equals(reqEventType)
&& isGLS())) {
+ // ========check metadata========
- // OK - no action
- logger.debug("eventType accepted [" + reqEventType +
"]");
- } else {
- String m = "[LS Registration] no service event type
or wrong eventType! Service is "
- + ((isGLS()) ? "[global-LS] and
accepts [" + SUMMARY_EVENT_TYPE + "]"
- : "[home-LS] and
accepts [" + SERVICE_EVENT_TYPE + "]");
- logger.error(m);
- // TODO: url event types
- throw new
PerfSONARException("error.ls.wrong_eventtype", m);
- }
+ // id of new metadata in the LS. Will be keyValue (update) or just
accessPoint (register)
+ String metadataId = null;
+ boolean doRemove = false;
+ boolean doRemoveOldKey = false;
- // reset event type - will not be used anymore
- requestMetadata.removeChild(reqEvT);
+ // check keyValue
+ if (keyValue == null) {
+ // REGISTER and let the key value be accessPoint
+ logger.debug("Action is Registration (DB Key = accessPoint)");
+ metadataId = accessPoint; // trimmed
+ } else {
+ // UPDATE
+ logger.debug("Action is Update (DB Key = keyValue)");
- // get accessPoint from Metadata - obligatory element
- // if it's empty or null PerfSONARException will be thrown
- String accessPoint = getAccessPoint(requestMetadata);
+ // always enable register especially if data is registered!
+ allowReplaceIfAlreadyRegistered = true;
- // check other mandatory elements, do not care about results
- // if they're empty or null PerfSONARException will be thrown
- getServiceName(requestMetadata);
- getServiceType(requestMetadata);
+ // but check the key if it's already been in the DB
+ if (!dao.isLookupInfo(keyValue)) {
+ String m = "[LS Registration] key from request [" + keyValue
+ "] not found in the storage. "
+ + "Can't UPDATE such data, because can't determine
what data should be updated";
+ logger.debug(m);
+ // TODO: url event types
+ throw new
PerfSONARException("error.ls.update.key_not_found", m);
+ } else {
+ doRemoveOldKey = true; // remove also old key
+ // database key should be key value
+ metadataId = accessPoint;
+ // remove key element from metadata
+ requestMetadata.setKey(null);
+ }
+ }
- // Try to get Key from Metadata
+ // check data
+ logger.debug("get data elements");
+ Data[] dataElements = getDataElements(request);
- String keyValue = getParameterFromKey(requestMetadata,
LS_KEY);
- logger.debug("Key from metadata=[" + keyValue + "]");
+ // process with register/update
+ logger.debug("check whether lookup info [" + metadataId + "] exists
in DB");
- // ========check metadata========
+ // check if there is metadata with the same key:
+ // if so, check if you're allowed to update data (to remove them)
+ // throw exception if you're not allowed
+ if (dao.isLookupInfo(metadataId)) {
+ // insert-update
+ logger.debug("Such Lookup Info (" + metadataId
+ + " is already registered in DB. Allow_update is set to
["
+ + allowReplaceIfAlreadyRegistered + "]");
- // id of new metadata in the LS. Will be keyValue (update) or
just
- // accessPoint (register)
- String metadataId = null;
+ if (allowReplaceIfAlreadyRegistered) {
+ logger.debug("Old data will be replaced by new set of data");
+ doRemove = true;
+ } else {
+ String m = "Can't replace data";
+ logger.error(m);
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.cant_replace_data",
m);
+ }
+ } else {
+ logger.trace(" this data doesn't exist, we'll insert
it.");
+ }
- boolean doRemove = false;
- boolean doRemoveOldKey = false;
+ // change metadata id
+ requestMetadata.setId(metadataId);
- // check keyValue
+ // enumerate all data elements
+ for (int i = 0; i < dataElements.length; i++) {
+ Data d = dataElements[i];
+ // change data references
+ d.setId(accessPoint + i);
+ d.setMetadataIdRef(accessPoint);
+ }
- if (keyValue == null) {
- // REGISTER
- // let the key value be accessPoint
- logger.debug("Action is Registration (DB Key =
accessPoint)");
- metadataId = accessPoint; // trimmed
- } else {
- // UPDATE
- logger.debug("Action is Update (DB Key = keyValue)");
+ // remove old lookup information if there is any
+ if (doRemove) {
+ logger.info("Remove old Lookup Info (" + metadataId + ")");
+ int num = dao.removeLookupInfo(metadataId);
+ logger.debug("Removed [" + num + "] old entries");
+ }
- // always enable register especially if data is
registered!
- allowReplaceIfAlreadyRegistered = true;
+ // remove old Lookup Info as well - if update and there is lookup
info with different key
+ if (doRemoveOldKey && (!keyValue.equals(metadataId))) {
+ logger.info("Remove old Lookup Info - other key (" + keyValue +
")");
+ int num = dao.removeLookupInfo(keyValue);
+ logger.debug("Removed [" + num + "] old entries");
+ }
- // but check the key if it's already been in the DB
- if (!dao.isLookupInfo(keyValue)) {
- String m = "[LS Registration] key from
request ["
- + keyValue
- + "] not found in the
storage. "
- + "Can't UPDATE such data,
because can't determine what data should be updated";
- logger.debug(m);
- // TODO: url event types
- throw new
PerfSONARException("error.ls.update.key_not_found", m);
- } else {
- doRemoveOldKey = true; // remove also old key
- // database key should be key value
- metadataId = accessPoint;
- // remove key element from metadata
- requestMetadata.setKey(null);
- }
- }
+ logger.debug("Now, let's insert the data into the DB");
+ dao.putLookupInfo(requestMetadata, dataElements);
- // check data
+ // some element was added, ChangesRecorder should be informed about
it
+ ModificationCounterComponent component =
getModificationCounterComponent();
+ component.incrementCounter();
- logger.debug("get data elements");
- Data[] dataElements = getDataElements(request);
+ logger.info("Put new Lookup Info (" + metadataId + ") metadata + " +
dataElements.length + " data elements");
+ // update control time - last modification
+ updateTime(metadataId);
+ if (getTtlParameterStatus().equals(LsTTLParameterStatus.ACCEPTED)) {
+ logger.info("ttl parameter set !");
+ updateTTL(metadataId, getClientTTL());
+ }
+ // get response with success code and key
+ serviceResponse.setElement(getLSRegisterResponse(metadataId));
+ }
- // process with register/update
+ private ModificationCounterComponent getModificationCounterComponent()
+ throws PerfSONARException {
+ ConfigurationManager cm = ConfigurationManager.getInstance();
+ return (ModificationCounterComponent)
cm.getConfiguration().getAuxiliaryComponent(
+ "modificationCounterComponent");
+ }
- logger.debug("check whether lookup info [" + metadataId + "]
exists in DB");
-
- // check if there is metadata with the same key:
- // if so, check if you're allowed to update data (to remove
them)
- // throw exception if you're not allowed
- if (dao.isLookupInfo(metadataId)) {
- // insert-update
- logger.debug("Such Lookup Info (" + metadataId
- + " is already registered in DB.
Allow_update is set to ["
- + allowReplaceIfAlreadyRegistered +
"]");
-
- if (allowReplaceIfAlreadyRegistered) {
- logger.debug("Old data will be replaced by
new set of data");
- doRemove = true;
- } else {
- String m = "Can't replace data";
- logger.error(m);
- // TODO: url event types
- throw new
PerfSONARException("error.ls.cant_replace_data", m);
- }
- } else {
- logger.trace(" this data doesn't exist, we'll
insert it.");
- }
-
- // change metadata id
- requestMetadata.setId(metadataId);
-
- // enumerate all data elements
- for (int i = 0; i < dataElements.length; i++) {
-
- Data d = dataElements[i];
- // change data references
- d.setId(accessPoint + i);
- d.setMetadataIdRef(accessPoint);
- }
-
- // remove old lookup information if there is any
- if (doRemove) {
- logger.info("Remove old Lookup Info (" + metadataId +
")");
- int num = dao.removeLookupInfo(metadataId);
- logger.debug("Removed [" + num + "] old entries");
- }
-
- // remove old Lookup Info as well - if update and
- // there is lookup info with different key
- if (doRemoveOldKey && (!keyValue.equals(metadataId))) {
- logger.info("Remove old Lookup Info - other key (" +
keyValue + ")");
- int num = dao.removeLookupInfo(keyValue);
- logger.debug("Removed [" + num + "] old entries");
- }
-
- logger.debug("Now, let's insert the data into the DB");
- dao.putLookupInfo(requestMetadata, dataElements);
-
- // some element was added, ChangesRecorder should be informed
about it
- ModificationCounterComponent component =
getModificationCounterComponent();
- component.incrementCounter();
-
- logger.info("Put new Lookup Info (" + metadataId + ")
metadata + " + dataElements.length
- + " data elements");
- // update control time - last modification
- updateTime(metadataId);
- if
(getTtlParameterStatus().equals(LsTTLParameterStatus.ACCEPTED)) {
- logger.info("ttl parameter set !");
- updateTTL(metadataId, getClientTTL());
- }
- // get response with success code and key
- serviceResponse.setElement(getLSRegisterResponse(metadataId));
- }
-
- private ModificationCounterComponent getModificationCounterComponent()
- throws PerfSONARException {
- ConfigurationManager cm = ConfigurationManager.getInstance();
- return (ModificationCounterComponent)
cm.getConfiguration().getAuxiliaryComponent(
- "modificationCounterComponent");
- }
-
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSRegistrationMessageHandler.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSRegistrationMessageHandler.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSRegistrationMessageHandler.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -18,78 +18,79 @@
public class LSRegistrationMessageHandler extends GenericMessageHandler {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- public LSRegistrationMessageHandler() throws PerfSONARException {
- super();
- }
+ public LSRegistrationMessageHandler() throws PerfSONARException {
+ super();
+ }
- protected ArrayList<Message> extractMultipleRequests(Message
reqMessage) {
+ protected ArrayList<Message> extractMultipleRequests(Message reqMessage)
{
- ArrayList<Message> messagesList = new ArrayList<Message>();
+ ArrayList<Message> messagesList = new ArrayList<Message>();
- // data chains container <String metadataIdRef,
ArrayList<Data>>
- HashMap<String, Message> dataChains = new HashMap<String,
Message>();
- org.perfsonar.base2.xml.Element parameters = null;
- List<org.perfsonar.base2.xml.Element> parametersNodesList =
(List<Element>) reqMessage
- .getChildren("parameters");
- if (parametersNodesList != null && parametersNodesList.size()
== 1) {
- parameters = parametersNodesList.get(0);
- }
+ // data chains container <String metadataIdRef, ArrayList<Data>>
+ HashMap<String, Message> dataChains = new HashMap<String, Message>();
+ org.perfsonar.base2.xml.Element parameters = null;
+ List<org.perfsonar.base2.xml.Element> parametersNodesList =
(List<Element>) reqMessage
+ .getChildren("parameters");
+ if (parametersNodesList != null && parametersNodesList.size() == 1) {
+ parameters = parametersNodesList.get(0);
+ }
- // get input data elements
- Collection<Data> dataTriggers =
reqMessage.getDataMap().values();
+ // get input data elements
+ Collection<Data> dataTriggers = reqMessage.getDataMap().values();
- // for all data elelemtns
- for (Data data : dataTriggers) {
+ // for all data elelemtns
+ for (Data data : dataTriggers) {
- // put all data having the same metadataIdRef to the
same container
- String metaref = data.getMetadataIdRef();
- if (dataChains.get(metaref) == null)
- dataChains.put(metaref, new Message());
- Message m = dataChains.get(metaref);
- m.setData(data);
- // System.out.println("## data ["+data.getId()+"] ->
["+metaref+"]");
+ // put all data having the same metadataIdRef to the same
container
+ String metaref = data.getMetadataIdRef();
+ if (dataChains.get(metaref) == null) {
+ dataChains.put(metaref, new Message());
+ }
+ Message m = dataChains.get(metaref);
+ m.setData(data);
+ // System.out.println("## data ["+data.getId()+"] ->
["+metaref+"]");
- }
+ }
- // for each data elements set find chaining
- for (Map.Entry<String, Message> e : dataChains.entrySet()) {
+ // for each data elements set find chaining
+ for (Map.Entry<String, Message> e : dataChains.entrySet()) {
- try {
+ try {
- // get previously added message with data
elements
- Message message = e.getValue();
- if (parameters != null) {
- message.addChild(parameters);
- }
+ // get previously added message with data elements
+ Message message = e.getValue();
+ if (parameters != null) {
+ message.addChild(parameters);
+ }
- // get reference to metadata
- String metadataIdRef = e.getKey();
+ // get reference to metadata
+ String metadataIdRef = e.getKey();
- // System.out.println("## metadata chain for
["+metadataIdRef+"]");
+ // System.out.println("## metadata chain for
["+metadataIdRef+"]");
- // find metadata chaining
- Map<String, Metadata> metadatas = new
HashMap<String, Metadata>();
- getChaining(reqMessage, metadataIdRef,
metadatas);
- Map<String, Metadata> mergedMetadatas =
mergeAllMetadata(metadatas);
- for (Metadata metadata :
mergedMetadatas.values()) {
- message.setMetadata(metadata);
- }
+ // find metadata chaining
+ Map<String, Metadata> metadatas = new HashMap<String,
Metadata>();
+ getChaining(reqMessage, metadataIdRef, metadatas);
+ Map<String, Metadata> mergedMetadatas =
mergeAllMetadata(metadatas);
+ for (Metadata metadata : mergedMetadatas.values()) {
+ message.setMetadata(metadata);
+ }
- // copy id, type from request
- message.setId(reqMessage.getId());
- message.setType(reqMessage.getType());
+ // copy id, type from request
+ message.setId(reqMessage.getId());
+ message.setType(reqMessage.getType());
- // add to result set
- messagesList.add(message);
+ // add to result set
+ messagesList.add(message);
- } catch (NoSuchMetadataException e1) {
- logger.error("LSRegisterRequest: no such
metadata, cannot find chain!");
- }
- }
- return messagesList;
+ } catch (NoSuchMetadataException e1) {
+ logger.error("LSRegisterRequest: no such metadata, cannot
find chain!");
+ }
+ }
+ return messagesList;
- }
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/DataSourceComponent.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/DataSourceComponent.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/DataSourceComponent.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -19,106 +19,106 @@
*/
public class DataSourceComponent extends Component {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private String username;
- private String password;
- private String usernameRO;
- private String passwordRO;
- private boolean hasReadOnlyUser = false;
- private String url;
- private String mainCollection;
+ private String username;
+ private String password;
+ private String usernameRO;
+ private String passwordRO;
+ private boolean hasReadOnlyUser = false;
+ private String url;
+ private String mainCollection;
- @Override
- public void init() throws PerfSONARException {
- username = getOption("username").getValue();
- password = getOption("password").getValue();
- String[] splitedAddress =
splitURL(getOption("url").getValue());
-
- url = splitedAddress[0];
- mainCollection = splitedAddress[1];
-
- if (!getOptions().containsKey("usernameRO")
- || !getOptions().containsKey("passwordRO")) {
- usernameRO = username;
- passwordRO = password;
- } else {
- usernameRO = getOption("usernameRO").getValue();
- passwordRO = getOption("passwordRO").getValue();
- hasReadOnlyUser = true;
- }
- }
+ @Override
+ public void init() throws PerfSONARException {
+ username = getOption("username").getValue();
+ password = getOption("password").getValue();
+ String[] splitedAddress = splitURL(getOption("url").getValue());
- @Override
- public void run() throws PerfSONARException {
+ url = splitedAddress[0];
+ mainCollection = splitedAddress[1];
- }
+ if (!getOptions().containsKey("usernameRO")
+ || !getOptions().containsKey("passwordRO")) {
+ usernameRO = username;
+ passwordRO = password;
+ } else {
+ usernameRO = getOption("usernameRO").getValue();
+ passwordRO = getOption("passwordRO").getValue();
+ hasReadOnlyUser = true;
+ }
+ }
- @Override
- public void destroy() throws PerfSONARException {
- username = null;
- password = null;
- usernameRO = null;
- passwordRO = null;
- url = null;
- mainCollection = null;
- }
+ @Override
+ public void run() throws PerfSONARException {
- public String getUsername() {
- return username;
- }
+ }
- public String getPassword() {
- return password;
- }
+ @Override
+ public void destroy() throws PerfSONARException {
+ username = null;
+ password = null;
+ usernameRO = null;
+ passwordRO = null;
+ url = null;
+ mainCollection = null;
+ }
- public String getUsernameRO() {
- return usernameRO;
- }
+ public String getUsername() {
+ return username;
+ }
- public String getPasswordRO() {
- return passwordRO;
- }
+ public String getPassword() {
+ return password;
+ }
- /**
- * checks whether DataSource contains read-only credential
- *
- * @return
- */
- public boolean hasReadOnlyUser() {
- return hasReadOnlyUser;
- }
+ public String getUsernameRO() {
+ return usernameRO;
+ }
- /**
- * Splits existDbURL into 2 parts:<ul>
- * <li>first is direct address to eXist
- * <li>second is main collection name
- * </ul>
- * Example: <tt>xmldb:exist:///db/ls</tt> or
<tt>xmldb:exist://localhost:8080/db/ls</tt>
- *
- * @param url to be splited
- * @return
- * @throws PerfSONARException
- */
- private String[] splitURL(String url) throws PerfSONARException {
- String[] splitedURL = new String[2];
- Matcher m =
Pattern.compile("(^xmldb:exist://[^/]*/db)(/.*)$").matcher(url);
- if (m.matches()) {
- splitedURL[0] = m.group(1);
- splitedURL[1] = m.group(2);
- } else {
- logger.error("Cannot split eXist DB url: " + url);
- throw new PerfSONARException("Cannot split eXist DB
url: " + url);
- }
- return splitedURL;
- }
-
- public String getUrl() {
- return url;
- }
+ public String getPasswordRO() {
+ return passwordRO;
+ }
- public String getMainCollection() {
- return mainCollection;
- }
+ /**
+ * checks whether DataSource contains read-only credential
+ *
+ * @return
+ */
+ public boolean hasReadOnlyUser() {
+ return hasReadOnlyUser;
+ }
+ /**
+ * Splits existDbURL into 2 parts:<ul>
+ * <li>first is direct address to eXist
+ * <li>second is main collection name
+ * </ul>
+ * Example: <tt>xmldb:exist:///db/ls</tt> or
<tt>xmldb:exist://localhost:8080/db/ls</tt>
+ *
+ * @param url to be splited
+ * @return
+ * @throws PerfSONARException
+ */
+ private String[] splitURL(String url) throws PerfSONARException {
+ String[] splitedURL = new String[2];
+ Matcher m =
Pattern.compile("(^xmldb:exist://[^/]*/db)(/.*)$").matcher(url);
+ if (m.matches()) {
+ splitedURL[0] = m.group(1);
+ splitedURL[1] = m.group(2);
+ } else {
+ logger.error("Cannot split eXist DB url: " + url);
+ throw new PerfSONARException("Cannot split eXist DB url: " +
url);
+ }
+ return splitedURL;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public String getMainCollection() {
+ return mainCollection;
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/ModificationCounterComponent.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/ModificationCounterComponent.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/ModificationCounterComponent.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -15,66 +15,66 @@
* @author Slawomir Trzaszczka
* @author Antoine Delvaux - DANTE
*/
-public class ModificationCounterComponent extends Component{
-
+public class ModificationCounterComponent extends Component {
+
private AtomicInteger counter = new AtomicInteger();
- // nr of changes since last GLS registration
+ // nr of changes since last GLS registration
private AtomicInteger diffsBetweenRegistrationCounter = new
AtomicInteger();
-
- protected Logger logger = LoggerFactory.getLogger(getClass());
-
- @Override
- public void destroy() throws PerfSONARException {
- //do nothing
- }
-
- @Override
- public void run() throws PerfSONARException {
- //do nothing
- }
-
- @Override
- public void init() throws PerfSONARException {
- counter = new AtomicInteger();
- diffsBetweenRegistrationCounter = new AtomicInteger();
- }
-
- /**
- * invoked when element wants to notify that something was changed in
the db :
- * - registration
- * - deregistration
- * - cleanup
- */
- public void incrementCounter() {
- counter.incrementAndGet();
- diffsBetweenRegistrationCounter.incrementAndGet();
- logger.trace("Counter increased " + counter + " diffs " +
diffsBetweenRegistrationCounter);
- }
- /**
- * resets counter. This method is invoked after summarization process
- *
- */
- public void resetCounter() {
- counter.set(0);
- logger.debug("Counter reseted");
- }
-
- /**
- * resets diffsBetweenRegistration counter. This method is invoked
after registration to GLS
- *
- */
- public void resetDiffsBetweenRegistrationCounter() {
- diffsBetweenRegistrationCounter.set(0);
- logger.debug("diffsBetweenRegistrationCounter reseted");
- }
-
- public int getCounter() {
- return counter.get();
- }
-
- public int getDiffsBetweenRegistrationCounter() {
- return diffsBetweenRegistrationCounter.get();
- }
-
+ protected Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public void destroy() throws PerfSONARException {
+ //do nothing
+ }
+
+ @Override
+ public void run() throws PerfSONARException {
+ //do nothing
+ }
+
+
+ @Override
+ public void init() throws PerfSONARException {
+ counter = new AtomicInteger();
+ diffsBetweenRegistrationCounter = new AtomicInteger();
+ }
+
+ /**
+ * invoked when element wants to notify that something was changed in
the db :
+ * - registration
+ * - deregistration
+ * - cleanup
+ */
+ public void incrementCounter() {
+ counter.incrementAndGet();
+ diffsBetweenRegistrationCounter.incrementAndGet();
+ logger.trace("Counter increased " + counter + " diffs " +
diffsBetweenRegistrationCounter);
+ }
+ /**
+ * resets counter. This method is invoked after summarization process
+ *
+ */
+ public void resetCounter() {
+ counter.set(0);
+ logger.debug("Counter reseted");
+ }
+
+ /**
+ * resets diffsBetweenRegistration counter. This method is invoked after
registration to GLS
+ *
+ */
+ public void resetDiffsBetweenRegistrationCounter() {
+ diffsBetweenRegistrationCounter.set(0);
+ logger.debug("diffsBetweenRegistrationCounter reseted");
+ }
+
+ public int getCounter() {
+ return counter.get();
+ }
+
+ public int getDiffsBetweenRegistrationCounter() {
+ return diffsBetweenRegistrationCounter.get();
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/XMLDBComponent.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/XMLDBComponent.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/components/XMLDBComponent.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -41,396 +41,396 @@
*/
public class XMLDBComponent extends Component {
- protected Logger logger = LoggerFactory.getLogger(getClass());
- private String url;
- private String mainCollection;
- private String username;
- private String password;
- private Collection myMainCollection;
- private Collection myStoreCollection;
- private LocalXPathQueryService myService;
- public final static String DATASOURCE_KEY = "dataSource-ref";
- public final static String READ_ONLY_KEY = "readOnly";
+ protected Logger logger = LoggerFactory.getLogger(getClass());
+ private String url;
+ private String mainCollection;
+ private String username;
+ private String password;
+ private Collection myMainCollection;
+ private Collection myStoreCollection;
+ private LocalXPathQueryService myService;
+ public static final String DATASOURCE_KEY = "dataSource-ref";
+ public static final String READ_ONLY_KEY = "readOnly";
- @Override
- public synchronized void init() throws PerfSONARException {
- if (!getOptions().containsKey(DATASOURCE_KEY)) {
- throw new PerfSONARException("Lack of " +
DATASOURCE_KEY
- + " option in " + getClassName() + "
component");
- } else {
- String dataSourceRefValue =
getOption(DATASOURCE_KEY).getValue();
- DataSourceComponent dataSource =
(DataSourceComponent) ConfigurationManager
-
.getInstance().getConfiguration().getAuxiliaryComponent(
- dataSourceRefValue);
+ @Override
+ public synchronized void init() throws PerfSONARException {
+ if (!getOptions().containsKey(DATASOURCE_KEY)) {
+ throw new PerfSONARException("Lack of " + DATASOURCE_KEY
+ + " option in " + getClassName() + " component");
+ } else {
+ String dataSourceRefValue = getOption(DATASOURCE_KEY).getValue();
+ DataSourceComponent dataSource = (DataSourceComponent)
ConfigurationManager
+ .getInstance().getConfiguration().getAuxiliaryComponent(
+ dataSourceRefValue);
- url = dataSource.getUrl();
- mainCollection = dataSource.getMainCollection();
+ url = dataSource.getUrl();
+ mainCollection = dataSource.getMainCollection();
- if (getOption(READ_ONLY_KEY) != null
- &&
getOption(READ_ONLY_KEY).getValue().equals("true")) {
- logger.debug("read-only XMLDBComponent");
- username = dataSource.getUsernameRO();
- password = dataSource.getPasswordRO();
- } else {
- logger.debug("main XMLDBComponent");
- username = dataSource.getUsername();
- password = dataSource.getPassword();
- }
- registerDatabase();
- }
- }
+ if (getOption(READ_ONLY_KEY) != null
+ && getOption(READ_ONLY_KEY).getValue().equals("true")) {
+ logger.debug("read-only XMLDBComponent");
+ username = dataSource.getUsernameRO();
+ password = dataSource.getPasswordRO();
+ } else {
+ logger.debug("main XMLDBComponent");
+ username = dataSource.getUsername();
+ password = dataSource.getPassword();
+ }
+ registerDatabase();
+ }
+ }
- /**
- * registers database Class
- */
- private void registerDatabase(){
- try {
- @SuppressWarnings("rawtypes")
- Class cl =
Class.forName("org.exist.xmldb.DatabaseImpl");
- Database database = (Database) cl.newInstance();
- logger.debug("Registering the eXist driver and
setting the automatic DB creation flag.");
- database.setProperty("create-database", "true");
- DatabaseManager.registerDatabase(database);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (XMLDBException e) {
- e.printStackTrace();
- } catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- logger.trace("eXist driver correctly registered");
- }
+ /**
+ * registers database Class
+ */
+ private void registerDatabase() {
+ try {
+ @SuppressWarnings("rawtypes")
+ Class cl = Class.forName("org.exist.xmldb.DatabaseImpl");
+ Database database = (Database) cl.newInstance();
+ logger.debug("Registering the eXist driver and setting the
automatic DB creation flag.");
+ database.setProperty("create-database", "true");
+ DatabaseManager.registerDatabase(database);
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (XMLDBException e) {
+ e.printStackTrace();
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ logger.trace("eXist driver correctly registered");
+ }
- private void initDBElements() throws PerfSONARException {
- if (myService == null) {
- logger.debug("Initialize XMLDBComponent");
- try {
- // Get a main collection
- Collection col = getDBCollectionAs(url +
mainCollection, username, password);
- col.setProperty(OutputKeys.INDENT, "no");
- myService = (LocalXPathQueryService)
col.getService("XPathQueryService", "1.0");
- myService.setProperty("indent", "yes");
- logger.trace(" Service instanciated: "
+ myService);
- } catch (XMLDBException e) {
- throw new
PerfSONARException("error.ls.no_storage", "Cannot initialize Db access -
wrong datasource or issue with eXist DB");
- }
- } else {
- logger.trace(" myService was already
instanciated, we re-use it: " + myService);
- }
- }
+ private void initDBElements() throws PerfSONARException {
+ if (myService == null) {
+ logger.debug("Initialize XMLDBComponent");
+ try {
+ // Get a main collection
+ Collection col = getDBCollectionAs(url + mainCollection,
username, password);
+ col.setProperty(OutputKeys.INDENT, "no");
+ myService = (LocalXPathQueryService)
col.getService("XPathQueryService", "1.0");
+ myService.setProperty("indent", "yes");
+ logger.trace(" Service instanciated: " + myService);
+ } catch (XMLDBException e) {
+ throw new PerfSONARException("error.ls.no_storage", "Cannot
initialize Db access - wrong datasource or issue with eXist DB");
+ }
+ } else {
+ logger.trace(" myService was already instanciated, we
re-use it: " + myService);
+ }
+ }
- @Override
- public void run() throws PerfSONARException {
- }
+ @Override
+ public void run() throws PerfSONARException {
+ }
- @Override
- public void destroy() throws PerfSONARException {
- try {
- if (myMainCollection != null) {
- // If we have our main Collection, we must
properly shutdown the DB instance
- DatabaseInstanceManager manager =
(DatabaseInstanceManager)
myMainCollection.getService("DatabaseInstanceManager", "1.0");
- manager.shutdown();
- }
- } catch (XMLDBException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
+ @Override
+ public void destroy() throws PerfSONARException {
+ try {
+ if (myMainCollection != null) {
+ // If we have our main Collection, we must properly shutdown
the DB instance
+ DatabaseInstanceManager manager = (DatabaseInstanceManager)
myMainCollection.getService("DatabaseInstanceManager", "1.0");
+ manager.shutdown();
+ }
+ } catch (XMLDBException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
- /**
- * Get the root Collection as configured in the DataSource
configuration file
- *
- * Remember that whenever a call is done to
DatabaseImpl.getCollection(), the XMLRPC client used is then cached
- * and is to be re-used later (by whichever Collection or Service)
- *
- * @return The main (root) Collection
- * @throws PerfSONARException
- */
- public synchronized Collection getMainCollection() throws
PerfSONARException {
- if (myMainCollection == null) {
- myMainCollection = getDBCollectionAs(url, username,
password);
- } else {
- logger.trace(" myMainCollection was already
instanciated, we re-use it: " + myMainCollection);
- }
- return myMainCollection;
- }
+ /**
+ * Get the root Collection as configured in the DataSource configuration
file
+ *
+ * Remember that whenever a call is done to
DatabaseImpl.getCollection(), the XMLRPC client used is then cached
+ * and is to be re-used later (by whichever Collection or Service)
+ *
+ * @return The main (root) Collection
+ * @throws PerfSONARException
+ */
+ public synchronized Collection getMainCollection() throws
PerfSONARException {
+ if (myMainCollection == null) {
+ myMainCollection = getDBCollectionAs(url, username, password);
+ } else {
+ logger.trace(" myMainCollection was already instanciated,
we re-use it: " + myMainCollection);
+ }
+ return myMainCollection;
+ }
- /**
- * provides access to DB collection using xml:db interface and as the
given user
- *
- * @param connectionURL
- * @return
- * @throws PerfSONARException
- */
- public synchronized Collection getDBCollectionAs(String
connectionURL, String username, String password) throws PerfSONARException {
- logger.debug("Getting " + connectionURL + " Collection as \""
+ username + "\"");
- try {
- Collection collection =
DatabaseManager.getCollection(connectionURL, username, password);
- if (collection == null) {
- // FIXME: We shouldn't do that, but we
shouldn't get here in the first place...
- // For some reason we got an error obfuscated
by XMLDB implementation, let's try to register DB again
- // eXist should really throw an exception
instead of returning a null
- logger.warn("No Collection returned by eXist!
Trying to register DB again!");
- registerDatabase();
- collection =
DatabaseManager.getCollection(connectionURL, username, password);
- if (collection == null) {
- // We got a null twice, let's raise
an exception this time
- logger.error("Renewing DB
registration, still no collection (" + connectionURL + ") returned!");
- // Whenever an XMLDBException is
raised, it is better to reset the DB connection
- throw new
PerfSONARException("error.ls.no_storage", "Cannot get collection - wrong
datasource or db is not initialized");
- }
- }
- logger.trace(" Collection correctly
instanciated: " + collection);
- return collection;
- } catch (XMLDBException e) {
- logger.error("Getting collection (" + connectionURL +
") as \"" + username + "\" failed: " + e.getMessage());
- // Whenever an XMLDBException is raised, it is better
to reset the DB connection
- throw new PerfSONARException("error.ls.no_access",
"Cannot access the DB: probably wrong collection, username or password.");
- }
- }
+ /**
+ * provides access to DB collection using xml:db interface and as the
given user
+ *
+ * @param connectionURL
+ * @return
+ * @throws PerfSONARException
+ */
+ public synchronized Collection getDBCollectionAs(String connectionURL,
String username, String password) throws PerfSONARException {
+ logger.debug("Getting " + connectionURL + " Collection as \"" +
username + "\"");
+ try {
+ Collection collection =
DatabaseManager.getCollection(connectionURL, username, password);
+ if (collection == null) {
+ // FIXME: We shouldn't do that, but we shouldn't get here in
the first place...
+ // For some reason we got an error obfuscated by XMLDB
implementation, let's try to register DB again
+ // eXist should really throw an exception instead of
returning a null
+ logger.warn("No Collection returned by eXist! Trying to
register DB again!");
+ registerDatabase();
+ collection = DatabaseManager.getCollection(connectionURL,
username, password);
+ if (collection == null) {
+ // We got a null twice, let's raise an exception this
time
+ logger.error("Renewing DB registration, still no
collection (" + connectionURL + ") returned!");
+ // Whenever an XMLDBException is raised, it is better to
reset the DB connection
+ throw new PerfSONARException("error.ls.no_storage",
"Cannot get collection - wrong datasource or db is not initialized");
+ }
+ }
+ logger.trace(" Collection correctly instanciated: " +
collection);
+ return collection;
+ } catch (XMLDBException e) {
+ logger.error("Getting collection (" + connectionURL + ") as \""
+ username + "\" failed: " + e.getMessage());
+ // Whenever an XMLDBException is raised, it is better to reset
the DB connection
+ throw new PerfSONARException("error.ls.no_access", "Cannot
access the DB: probably wrong collection, username or password.");
+ }
+ }
- /**
- * Instantiate a /store/ Collection, that holds all the
registrations, as a normal user
- * This Collection is an instance variable as the XMLRPCClient is
shared and cannot be used concurrently
- *
- * @throws PerfSONARException
- */
- private void setStoreCollection() throws PerfSONARException {
- if (myStoreCollection == null) {
- myStoreCollection = getDBCollectionAs(url +
mainCollection + "/store", username, password);
- } else {
- logger.trace(" store Collection was already
instanciated, we re-use it: " + myStoreCollection);
- }
- }
+ /**
+ * Instantiate a /store/ Collection, that holds all the registrations,
as a normal user
+ * This Collection is an instance variable as the XMLRPCClient is shared
and cannot be used concurrently
+ *
+ * @throws PerfSONARException
+ */
+ private void setStoreCollection() throws PerfSONARException {
+ if (myStoreCollection == null) {
+ myStoreCollection = getDBCollectionAs(url + mainCollection +
"/store", username, password);
+ } else {
+ logger.trace(" store Collection was already instanciated,
we re-use it: " + myStoreCollection);
+ }
+ }
- /**
- *
- * uploads file to ExistDb using xml:db interface
- *
- * @param name
- * @param content
- * @throws PerfSONARException
- */
- public synchronized void uploadStoreFile(String name, String content)
throws PerfSONARException {
- logger.debug("Uploading a Store file");
- try {
- setStoreCollection();
- Resource res = myStoreCollection.createResource(name,
"XMLResource");
- res.setContent(content);
- myStoreCollection.storeResource(res);
- } catch (XMLDBException e) {
- logger.warn("File upload XMLDB error (file may or may
not be uploaded): " + e.getMessage());
- if (e.getMessage().matches("Failed to (parse|read)
servers response: .*")
- || e.getMessage().startsWith("Failed
to create input stream: ")) {
- logger.warn("We'll try to recover...");
- resetDBElements();
- uploadStoreFile(name, content);
- } else {
- // We're not sure what happened, sometimes an
HTTP or transport layer error occurs at the very end
- // and a exception is raised although the
document as correctly been uploaded...
- myStoreCollection = null;
- throw new
PerfSONARException("error.ls.query", "Error trying to upload file (file may
or may not be uploaded): " + e.getMessage());
- }
- } catch (NullPointerException e) {
- logger.warn("File couldn't be uploaded because of: "
+ e);
- if
(e.getStackTrace()[1].toString().contains("HttpURLConnection")) {
- logger.warn("This is probably a transport
error, we'll try to recover...");
- resetDBElements();
- uploadStoreFile(name, content);
- } else {
- myStoreCollection = null;
- e.printStackTrace();
- throw new
PerfSONARException("error.ls.query", "Error trying to upload file (file may
or may not be uploaded): " + e.getMessage());
- }
- } catch (IllegalStateException e) {
- logger.warn("XQuery result couldn't be performed
because of a transport error: " + e);
- if (e.getMessage().contentEquals("Already
connected")) {
- logger.warn("We'll try to recover...");
- resetDBElements();
- uploadStoreFile(name, content);
- } else {
- throw new
PerfSONARException("error.ls.query", "Problem executing XQuery: " +
e.getMessage());
- }
- }
- }
+ /**
+ *
+ * uploads file to ExistDb using xml:db interface
+ *
+ * @param name
+ * @param content
+ * @throws PerfSONARException
+ */
+ public synchronized void uploadStoreFile(String name, String content)
throws PerfSONARException {
+ logger.debug("Uploading a Store file");
+ try {
+ setStoreCollection();
+ Resource res = myStoreCollection.createResource(name,
"XMLResource");
+ res.setContent(content);
+ myStoreCollection.storeResource(res);
+ } catch (XMLDBException e) {
+ logger.warn("File upload XMLDB error (file may or may not be
uploaded): " + e.getMessage());
+ if (e.getMessage().matches("Failed to (parse|read) servers
response: .*")
+ || e.getMessage().startsWith("Failed to create input
stream: ")) {
+ logger.warn("We'll try to recover...");
+ resetDBElements();
+ uploadStoreFile(name, content);
+ } else {
+ // We're not sure what happened, sometimes an HTTP or
transport layer error occurs at the very end
+ // and a exception is raised although the document as
correctly been uploaded...
+ myStoreCollection = null;
+ throw new PerfSONARException("error.ls.query", "Error trying
to upload file (file may or may not be uploaded): " + e.getMessage());
+ }
+ } catch (NullPointerException e) {
+ logger.warn("File couldn't be uploaded because of: " + e);
+ if
(e.getStackTrace()[1].toString().contains("HttpURLConnection")) {
+ logger.warn("This is probably a transport error, we'll try
to recover...");
+ resetDBElements();
+ uploadStoreFile(name, content);
+ } else {
+ myStoreCollection = null;
+ e.printStackTrace();
+ throw new PerfSONARException("error.ls.query", "Error trying
to upload file (file may or may not be uploaded): " + e.getMessage());
+ }
+ } catch (IllegalStateException e) {
+ logger.warn("XQuery result couldn't be performed because of a
transport error: " + e);
+ if (e.getMessage().contentEquals("Already connected")) {
+ logger.warn("We'll try to recover...");
+ resetDBElements();
+ uploadStoreFile(name, content);
+ } else {
+ throw new PerfSONARException("error.ls.query", "Problem
executing XQuery: " + e.getMessage());
+ }
+ }
+ }
- /**
- *
- * removes file from ExistDb using xml:db interface
- *
- * @param name
- * @throws PerfSONARException
- */
- public synchronized void removeStoreFile(String name) throws
PerfSONARException {
- logger.debug("Removing a Store file");
- try {
- setStoreCollection();
- Resource res = myStoreCollection.getResource(name);
- if (res != null) {
- myStoreCollection.removeResource(res);
- }
- } catch (XMLDBException e) {
- logger.warn("File removal error (file may or may not
be removed): " + e.getMessage());
- if (e.getMessage().matches("Failed to (parse|read)
servers response: .*")
- || e.getMessage().startsWith("Failed
to create input stream: ")) {
- logger.warn("We'll try to recover...");
- resetDBElements();
- removeStoreFile(name);
- } else {
- myStoreCollection = null;
- throw new
PerfSONARException("error.ls.query", "Error trying to remove file (file may
or may not be removed): " + e.getMessage());
- }
- } catch (NullPointerException e) {
- logger.warn("File couldn't be removed because of: " +
e);
- if
(e.getStackTrace()[1].toString().contains("HttpURLConnection")) {
- logger.warn("This is probably a transport
error, we'll try to recover...");
- resetDBElements();
- removeStoreFile(name);
- } else {
- myStoreCollection = null;
- e.printStackTrace();
- throw new
PerfSONARException("error.ls.query", "Error trying to remove file (file may
or may not be removed): " + e.getMessage());
- }
- } catch (IllegalStateException e) {
- logger.warn("XQuery result couldn't be performed
because of a transport error: " + e);
- if (e.getMessage().contentEquals("Already
connected")) {
- logger.warn("We'll try to recover...");
- resetDBElements();
- removeStoreFile(name);
- } else {
- throw new
PerfSONARException("error.ls.query", "Problem executing XQuery: " +
e.getMessage());
- }
- }
- }
+ /**
+ *
+ * removes file from ExistDb using xml:db interface
+ *
+ * @param name
+ * @throws PerfSONARException
+ */
+ public synchronized void removeStoreFile(String name) throws
PerfSONARException {
+ logger.debug("Removing a Store file");
+ try {
+ setStoreCollection();
+ Resource res = myStoreCollection.getResource(name);
+ if (res != null) {
+ myStoreCollection.removeResource(res);
+ }
+ } catch (XMLDBException e) {
+ logger.warn("File removal error (file may or may not be
removed): " + e.getMessage());
+ if (e.getMessage().matches("Failed to (parse|read) servers
response: .*")
+ || e.getMessage().startsWith("Failed to create input
stream: ")) {
+ logger.warn("We'll try to recover...");
+ resetDBElements();
+ removeStoreFile(name);
+ } else {
+ myStoreCollection = null;
+ throw new PerfSONARException("error.ls.query", "Error trying
to remove file (file may or may not be removed): " + e.getMessage());
+ }
+ } catch (NullPointerException e) {
+ logger.warn("File couldn't be removed because of: " + e);
+ if
(e.getStackTrace()[1].toString().contains("HttpURLConnection")) {
+ logger.warn("This is probably a transport error, we'll try
to recover...");
+ resetDBElements();
+ removeStoreFile(name);
+ } else {
+ myStoreCollection = null;
+ e.printStackTrace();
+ throw new PerfSONARException("error.ls.query", "Error trying
to remove file (file may or may not be removed): " + e.getMessage());
+ }
+ } catch (IllegalStateException e) {
+ logger.warn("XQuery result couldn't be performed because of a
transport error: " + e);
+ if (e.getMessage().contentEquals("Already connected")) {
+ logger.warn("We'll try to recover...");
+ resetDBElements();
+ removeStoreFile(name);
+ } else {
+ throw new PerfSONARException("error.ls.query", "Problem
executing XQuery: " + e.getMessage());
+ }
+ }
+ }
- /**
- *
- */
- public void resetDBElements() {
- myService = null;
- myMainCollection = null;
- myStoreCollection = null;
- }
- /**
- *
- * executes XQuery query
- *
- * @param xquery
- * @return
- * @throws PerfSONARException
- */
- public synchronized XMLDBResult performXQuery(String xquery) throws
PerfSONARException {
- logger.debug("Performing an XQuery");
- // TODO: protected mode should never be activated on the
ROdao !!!
- Boolean protect = false;
- try {
- initDBElements();
+ /**
+ *
+ */
+ public void resetDBElements() {
+ myService = null;
+ myMainCollection = null;
+ myStoreCollection = null;
+ }
+ /**
+ *
+ * executes XQuery query
+ *
+ * @param xquery
+ * @return
+ * @throws PerfSONARException
+ */
+ public synchronized XMLDBResult performXQuery(String xquery) throws
PerfSONARException {
+ logger.debug("Performing an XQuery");
+ // FIXME: protected mode should never be activated on the ROdao !!!
+ Boolean protect = false;
+ try {
+ initDBElements();
if (protect) {
logger.trace("-- Begin protected mode");
myService.beginProtected();
}
- // CompiledExpression compiled =
service.compile(xquery);
- logger.trace("Ask the XMLDB XQueryService to perform
the following query for us: \n" + xquery);
- ResourceSet rs = myService.query(xquery);
- ResourceIterator i = rs.getIterator();
+ // CompiledExpression compiled = service.compile(xquery);
+ logger.trace("Ask the XMLDB XQueryService to perform the
following query for us: \n" + xquery);
+ ResourceSet rs = myService.query(xquery);
+ ResourceIterator i = rs.getIterator();
- StringBuffer sb = new StringBuffer();
- int count = 0;
- sb.append("<exist>");
- while (i.hasMoreResources()) {
- Resource r = i.nextResource();
- String value = r.getContent().toString();
- if (!value.startsWith("<")) {
- sb.append("<value>");
- sb.append(value);
- sb.append("</value>");
- } else {
- sb.append(value);
- }
- count++;
- }
+ StringBuffer sb = new StringBuffer();
+ int count = 0;
+ sb.append("<exist>");
+ while (i.hasMoreResources()) {
+ Resource r = i.nextResource();
+ String value = r.getContent().toString();
+ if (!value.startsWith("<")) {
+ sb.append("<value>");
+ sb.append(value);
+ sb.append("</value>");
+ } else {
+ sb.append(value);
+ }
+ count++;
+ }
if (protect) {
myService.endProtected();
logger.trace("-- End protected mode");
}
- sb.append("</exist>");
- String existResult = sb.toString();
- if (existResult == null || existResult.isEmpty()) {
- logger.trace("XQuery result is empty");
- return new XMLDBResult(new
HashSet<Element>(), 0, 0, 0);
- } else {
- return parseExistXMLReponse(new
ByteArrayInputStream(
- existResult.getBytes()),
count);
- }
- } catch (XMLDBException e) {
- logger.warn("XQuery couldn't be performed because of
an XMLDB error: " + e.getMessage());
- logger.debug("------------------------------------");
- logger.debug(xquery);
- logger.debug("------------------------------------");
- if (e.getMessage().matches("Failed to (parse|read)
servers response: .*")
- || e.getMessage().startsWith("Failed
to create input stream: ")) {
- logger.warn("We'll try to recover...");
- resetDBElements();
- return performXQuery(xquery);
- } else {
- throw new
PerfSONARException("error.ls.query", "Problem executing XQuery: " +
e.getMessage());
- }
- } catch (IOException e) {
- logger.error("XQuery result couldn't be parsed
because of an IO error: " + e);
- throw new PerfSONARException("error.ls.query",
"Problem executing XQuery: " + e.getMessage());
- } catch (XMLStreamException e) {
- logger.error("XQuery result couldn't be parsed
because of an XMLStream error: " + e);
- throw new PerfSONARException("error.ls.query",
"Problem executing XQuery: " + e.getMessage());
- } catch (NullPointerException e) {
- logger.warn("XQuery result couldn't be performed
because of: " + e);
- if
(e.getStackTrace()[1].toString().contains("HttpURLConnection")) {
- logger.warn("This is probably a transport
error, we'll try to recover...");
- resetDBElements();
- return performXQuery(xquery);
- } else {
- e.printStackTrace();
- throw new
PerfSONARException("error.ls.query", "Problem executing XQuery: " +
e.getMessage());
- }
- } catch (IllegalStateException e) {
- logger.warn("XQuery result couldn't be performed
because of a transport error: " + e);
- if (e.getMessage().contentEquals("Already
connected")) {
- logger.warn("We'll try to recover...");
- resetDBElements();
- return performXQuery(xquery);
- } else {
- throw new
PerfSONARException("error.ls.query", "Problem executing XQuery: " +
e.getMessage());
- }
- }
- }
+ sb.append("</exist>");
+ String existResult = sb.toString();
+ if (existResult == null || existResult.isEmpty()) {
+ logger.trace("XQuery result is empty");
+ return new XMLDBResult(new HashSet<Element>(), 0, 0, 0);
+ } else {
+ return parseExistXMLReponse(new ByteArrayInputStream(
+ existResult.getBytes()), count);
+ }
+ } catch (XMLDBException e) {
+ logger.warn("XQuery couldn't be performed because of an XMLDB
error: " + e.getMessage());
+ logger.debug("------------------------------------");
+ logger.debug(xquery);
+ logger.debug("------------------------------------");
+ if (e.getMessage().matches("Failed to (parse|read) servers
response: .*")
+ || e.getMessage().startsWith("Failed to create input
stream: ")) {
+ logger.warn("We'll try to recover...");
+ resetDBElements();
+ return performXQuery(xquery);
+ } else {
+ throw new PerfSONARException("error.ls.query", "Problem
executing XQuery: " + e.getMessage());
+ }
+ } catch (IOException e) {
+ logger.error("XQuery result couldn't be parsed because of an IO
error: " + e);
+ throw new PerfSONARException("error.ls.query", "Problem
executing XQuery: " + e.getMessage());
+ } catch (XMLStreamException e) {
+ logger.error("XQuery result couldn't be parsed because of an
XMLStream error: " + e);
+ throw new PerfSONARException("error.ls.query", "Problem
executing XQuery: " + e.getMessage());
+ } catch (NullPointerException e) {
+ logger.warn("XQuery result couldn't be performed because of: " +
e);
+ if
(e.getStackTrace()[1].toString().contains("HttpURLConnection")) {
+ logger.warn("This is probably a transport error, we'll try
to recover...");
+ resetDBElements();
+ return performXQuery(xquery);
+ } else {
+ e.printStackTrace();
+ throw new PerfSONARException("error.ls.query", "Problem
executing XQuery: " + e.getMessage());
+ }
+ } catch (IllegalStateException e) {
+ logger.warn("XQuery result couldn't be performed because of a
transport error: " + e);
+ if (e.getMessage().contentEquals("Already connected")) {
+ logger.warn("We'll try to recover...");
+ resetDBElements();
+ return performXQuery(xquery);
+ } else {
+ throw new PerfSONARException("error.ls.query", "Problem
executing XQuery: " + e.getMessage());
+ }
+ }
+ }
- /**
- *
- *
- * this method converts imputStream to XMLDBResult. XmlDBResult is
used in
- * all DB operations
- *
- * @param inputStream
- * @param count number of hits in DB
- * @return
- * @throws IOException
- * @throws XMLStreamException
- */
- private XMLDBResult parseExistXMLReponse(InputStream inputStream, int
count)
- throws IOException, XMLStreamException {
+ /**
+ *
+ *
+ * this method converts imputStream to XMLDBResult. XmlDBResult is used
in
+ * all DB operations
+ *
+ * @param inputStream
+ * @param count number of hits in DB
+ * @return
+ * @throws IOException
+ * @throws XMLStreamException
+ */
+ private XMLDBResult parseExistXMLReponse(InputStream inputStream, int
count)
+ throws IOException, XMLStreamException {
- StaxParser sp = new ConfigurationStaxParser();
- Element e = sp.parse(inputStream);
- logger.trace("Parsing the XML stream resulted in: " +
e.toString());
+ StaxParser sp = new ConfigurationStaxParser();
+ Element e = sp.parse(inputStream);
+ logger.trace("Parsing the XML stream resulted in: " + e.toString());
- if (count >= 0) {
- return new XMLDBResult(e.getChildren(), count, count,
0);
- } else {
- logger.warn("Count is negative, returning null");
- return null;
- }
- }
+ if (count >= 0) {
+ return new XMLDBResult(e.getChildren(), count, count, 0);
+ } else {
+ logger.warn("Count is negative, returning null");
+ return null;
+ }
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/JoinRequestGenerator.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/JoinRequestGenerator.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/JoinRequestGenerator.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -75,34 +75,34 @@
service.setNamespaceUri("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
subject.addChild(service);
- Element serviceName = new Element();
- serviceName.setName("serviceName");
- serviceName.setNamespacePrefix("psservice");
-
serviceName.setNamespaceUri("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
- serviceName.setText(this.serviceName);
- service.addChild(serviceName);
+ Element elmServiceName = new Element();
+ elmServiceName.setName("serviceName");
+ elmServiceName.setNamespacePrefix("psservice");
+
elmServiceName.setNamespaceUri("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
+ elmServiceName.setText(this.serviceName);
+ service.addChild(elmServiceName);
- Element accessPoint = new Element();
- accessPoint.setName("accessPoint");
- accessPoint.setNamespacePrefix("psservice");
-
accessPoint.setNamespaceUri("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
- accessPoint.setText(this.accessPoint);
- service.addChild(accessPoint);
+ Element elmAccessPoint = new Element();
+ elmAccessPoint.setName("accessPoint");
+ elmAccessPoint.setNamespacePrefix("psservice");
+
elmAccessPoint.setNamespaceUri("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
+ elmAccessPoint.setText(this.accessPoint);
+ service.addChild(elmAccessPoint);
- Element serviceType = new Element();
- serviceType.setName("serviceType");
- serviceType.setNamespacePrefix("psservice");
-
serviceType.setNamespaceUri("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
- serviceType.setText(this.serviceType);
- service.addChild(serviceType);
+ Element elmServiceType = new Element();
+ elmServiceType.setName("serviceType");
+ elmServiceType.setNamespacePrefix("psservice");
+
elmServiceType.setNamespaceUri("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
+ elmServiceType.setText(this.serviceType);
+ service.addChild(elmServiceType);
if (!("".equals(this.serviceDescription))) {
- Element serviceDescription = new Element();
- serviceDescription.setName("serviceDescription");
- serviceDescription.setNamespacePrefix("psservice");
-
serviceDescription.setNamespaceUri("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
- serviceDescription.setText(this.serviceDescription);
- service.addChild(serviceDescription);
+ Element elmServiceDescription = new Element();
+ elmServiceDescription.setName("serviceDescription");
+ elmServiceDescription.setNamespacePrefix("psservice");
+
elmServiceDescription.setNamespaceUri("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
+ elmServiceDescription.setText(this.serviceDescription);
+ service.addChild(elmServiceDescription);
}
Element eventType = new Element();
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/UpdateTokenRequestGenerator.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/UpdateTokenRequestGenerator.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/UpdateTokenRequestGenerator.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -15,15 +15,13 @@
*
* FIXME: check we need this.
*
- * @author unkown
- *
*/
public class UpdateTokenRequestGenerator {
// -----------------------------------------------------------------
fields
- Element subject;
- Map <String,String> parameters;
+ private Element subject;
+ private Map<String, String> parameters;
// -----------------------------------------------------------
constructors
@@ -32,7 +30,7 @@
this.subject = subject;
}
- public UpdateTokenRequestGenerator(Element subject, Map<String,String>
parameters) {
+ public UpdateTokenRequestGenerator(Element subject, Map<String, String>
parameters) {
this(subject);
this.parameters = parameters;
}
@@ -70,7 +68,7 @@
metadata.addChild(eventType);
//put parameters only if necessary
- if (parameters != null && parameters.size()>0) {
+ if (parameters != null && parameters.size() > 0) {
Element params = new Element();
params.setName("parameters");
params.setNamespacePrefix("nmwg");
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registerService/LSRegisterServiceHelper.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registerService/LSRegisterServiceHelper.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registerService/LSRegisterServiceHelper.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -28,341 +28,340 @@
* @author Antoine Delvaux - DANTE
*
*/
-public abstract class LSRegisterServiceHelper extends
- AbstractRegisterServiceEngine {
+public abstract class LSRegisterServiceHelper extends
AbstractRegisterServiceEngine {
- private final static String MESSAGE_HANDLER = "LSRegisterRequest";
+ private static final String MESSAGE_HANDLER = "LSRegisterRequest";
- private LsTTLParameterStatus ttlParameterStatus =
LsTTLParameterStatus.NONE;
+ private LsTTLParameterStatus ttlParameterStatus =
LsTTLParameterStatus.NONE;
- private final int[] ttlBound;
- private long clientTTL;
+ private final int[] ttlBound;
+ private long clientTTL;
- protected LSRegisterServiceHelper() throws PerfSONARException {
- super();
- ttlBound =
getTTLParameters(configuration.getMessageHandler(MESSAGE_HANDLER));
- }
+ protected LSRegisterServiceHelper() throws PerfSONARException {
+ super();
+ ttlBound =
getTTLParameters(configuration.getMessageHandler(MESSAGE_HANDLER));
+ }
- protected boolean isBetweenTTLBound(long clientTTL) {
- return clientTTL <= ttlBound[1] && clientTTL >= ttlBound[0];
- }
+ protected boolean isBetweenTTLBound(long clientTTL) {
+ return clientTTL <= ttlBound[1] && clientTTL >= ttlBound[0];
+ }
- /**
- * Returns serviceType from metadata or throws PerfSONARException if
null or
- * empty
- *
- * @param requestMetadata
- * @return service type
- * @throws PerfSONARException
- * if null or empty
- */
- protected String getServiceType(Metadata requestMetadata)
- throws PerfSONARException {
- Subject subject = requestMetadata.getSubject();
- if (subject != null) {
- Element serviceElement =
subject.getFirstChild("service");
- if (serviceElement != null) {
- Element serviceTypeElement =
serviceElement.getFirstChild("serviceType");
- if (serviceTypeElement != null) {
- String serviceType =
serviceTypeElement.getText().trim();
- if (!serviceType.isEmpty()) {
- return serviceType;
- }
- }
- }
- }
- String m = "No serviceType or empty in request";
- logger.warn(m);
-// TODO: url event types
- throw new PerfSONARException("error.ls.no_service_type", m);
- }
+ /**
+ * Returns serviceType from metadata or throws PerfSONARException if
null or
+ * empty
+ *
+ * @param requestMetadata
+ * @return service type
+ * @throws PerfSONARException
+ * if null or empty
+ */
+ protected String getServiceType(Metadata requestMetadata)
+ throws PerfSONARException {
+ Subject subject = requestMetadata.getSubject();
+ if (subject != null) {
+ Element serviceElement = subject.getFirstChild("service");
+ if (serviceElement != null) {
+ Element serviceTypeElement =
serviceElement.getFirstChild("serviceType");
+ if (serviceTypeElement != null) {
+ String serviceType = serviceTypeElement.getText().trim();
+ if (!serviceType.isEmpty()) {
+ return serviceType;
+ }
+ }
+ }
+ }
+ String m = "No serviceType or empty in request";
+ logger.warn(m);
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.no_service_type", m);
+ }
- /**
- * Returns serviceName from metadata or throws PerfSONARException if
null or
- * empty
- *
- * @param requestMetadata
- * @return service Name
- * @throws PerfSONARException
- * if null or empty
- */
- protected String getServiceName(Metadata requestMetadata)
- throws PerfSONARException {
- Subject subject = requestMetadata.getSubject();
- if (subject != null) {
- Element serviceElement =
subject.getFirstChild("service");
- if (serviceElement != null) {
- Element serviceNameElement =
serviceElement.getFirstChild("serviceName");
- if (serviceNameElement != null) {
- String serviceName =
serviceNameElement.getText();
- if (!serviceName.isEmpty()) {
- return serviceName;
- }
- }
- }
- }
- String m = "No serviceName in request ";
- logger.warn(m);
-// TODO: url event types
- throw new PerfSONARException("error.ls.no_service_name", m);
- }
+ /**
+ * Returns serviceName from metadata or throws PerfSONARException if
null or
+ * empty
+ *
+ * @param requestMetadata
+ * @return service Name
+ * @throws PerfSONARException
+ * if null or empty
+ */
+ protected String getServiceName(Metadata requestMetadata)
+ throws PerfSONARException {
+ Subject subject = requestMetadata.getSubject();
+ if (subject != null) {
+ Element serviceElement = subject.getFirstChild("service");
+ if (serviceElement != null) {
+ Element serviceNameElement =
serviceElement.getFirstChild("serviceName");
+ if (serviceNameElement != null) {
+ String serviceName = serviceNameElement.getText();
+ if (!serviceName.isEmpty()) {
+ return serviceName;
+ }
+ }
+ }
+ }
+ String m = "No serviceName in request ";
+ logger.warn(m);
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.no_service_name", m);
+ }
- protected LsTTLParameterStatus getTtlParameterStatus() {
- return ttlParameterStatus;
- }
+ protected LsTTLParameterStatus getTtlParameterStatus() {
+ return ttlParameterStatus;
+ }
- protected void setTtlParameterStatus(LsTTLParameterStatus
ttlParameterStatus) {
- this.ttlParameterStatus = ttlParameterStatus;
- }
+ protected void setTtlParameterStatus(LsTTLParameterStatus
ttlParameterStatus) {
+ this.ttlParameterStatus = ttlParameterStatus;
+ }
- /**
- *
- * initiates lsTTL bounding parameters from configuration (minTTL and
maxTTL
- * - limitations for client lsTTL)
- *
- * @param msg
- * - service configuration payload
- */
- private int[] getTTLParameters(
- org.perfsonar.base2.service.configuration.Message msg)
- throws PerfSONARException {
+ /**
+ *
+ * initiates lsTTL bounding parameters from configuration (minTTL and
maxTTL
+ * - limitations for client lsTTL)
+ *
+ * @param msg
+ * - service configuration payload
+ */
+ private int[] getTTLParameters(
+ org.perfsonar.base2.service.configuration.Message msg)
+ throws PerfSONARException {
- Option minTTLOption = msg.getOption("minTTL");
- Option maxTTLOption = msg.getOption("maxTTL");
+ Option minTTLOption = msg.getOption("minTTL");
+ Option maxTTLOption = msg.getOption("maxTTL");
- if (minTTLOption != null && maxTTLOption != null) {
+ if (minTTLOption != null && maxTTLOption != null) {
- String strMinTTL = minTTLOption.getValue();
- String strMaxTTL = maxTTLOption.getValue();
-
+ String strMinTTL = minTTLOption.getValue();
+ String strMaxTTL = maxTTLOption.getValue();
- if (strMinTTL != null && strMaxTTL != null) {
- int[] result = new int[2];
-
- try {
- result[0] =
Integer.parseInt(strMinTTL);
- } catch (NumberFormatException ex) {
- throw new PerfSONARException(
- "incorrect value of
minTTL parameter", ex);
- }
- try {
- result[1] =
Integer.parseInt(strMaxTTL);
- } catch (NumberFormatException ex) {
- throw new PerfSONARException(
- "incorrect value of
maxTTL parameter ", ex);
- }
+ if (strMinTTL != null && strMaxTTL != null) {
+ int[] result = new int[2];
- if (result[0] >= result[1]) {
- throw new PerfSONARException(
- " minTTL must be less
then maxTTL ");
- }
+ try {
+ result[0] = Integer.parseInt(strMinTTL);
+ } catch (NumberFormatException ex) {
+ throw new PerfSONARException(
+ "incorrect value of minTTL parameter", ex);
+ }
- return result;
- }else{
- throw new PerfSONARException("incorrect
values of TTL bound");
- }
- }
- return null;
- }
+ try {
+ result[1] = Integer.parseInt(strMaxTTL);
+ } catch (NumberFormatException ex) {
+ throw new PerfSONARException(
+ "incorrect value of maxTTL parameter ", ex);
+ }
- /**
- * Returns accessPoint from metadata or throws PerfSONARException if
null or
- * empty
- *
- * @param requestMetadata
- * @return access point
- * @throws PerfSONARException
- * if null or empty
- */
- protected String getAccessPoint(Metadata requestMetadata)
- throws PerfSONARException {
+ if (result[0] >= result[1]) {
+ throw new PerfSONARException(
+ " minTTL must be less then maxTTL ");
+ }
- Subject subject = requestMetadata.getSubject();
- if (subject != null) {
- Element serviceElement =
subject.getFirstChild("service");
- if (serviceElement != null) {
- Element accessPointElement =
serviceElement.getFirstChild("accessPoint");
- if (accessPointElement != null) {
- String accessPoint =
accessPointElement.getText().trim();
- if (!accessPoint.isEmpty()) {
- return accessPoint;
- }
- }
- }
- }
+ return result;
+ } else {
+ throw new PerfSONARException("incorrect values of TTL
bound");
+ }
+ }
+ return null;
+ }
- String m = "No accessPoint in request";
- logger.warn(m);
-// TODO: url event types
- throw new PerfSONARException("error.ls.no_access_point", m);
- }
+ /**
+ * Returns accessPoint from metadata or throws PerfSONARException if
null or
+ * empty
+ *
+ * @param requestMetadata
+ * @return access point
+ * @throws PerfSONARException
+ * if null or empty
+ */
+ protected String getAccessPoint(Metadata requestMetadata)
+ throws PerfSONARException {
- /**
- * Return data elements as Data[] from given Message
- *
- * @param request
- * @return
- * @throws PerfSONARException
- */
- protected Data[] getDataElements(Message request) throws
PerfSONARException {
- // Get all Data elements, suppose they all belong to metadata
- // (data map is created in the constructor of Message, so
- // NullPointerException won't be thrown!)
- Collection<Data> reqDataArr = request.getDataMap().values();
+ Subject subject = requestMetadata.getSubject();
+ if (subject != null) {
+ Element serviceElement = subject.getFirstChild("service");
+ if (serviceElement != null) {
+ Element accessPointElement =
serviceElement.getFirstChild("accessPoint");
+ if (accessPointElement != null) {
+ String accessPoint = accessPointElement.getText().trim();
+ if (!accessPoint.isEmpty()) {
+ return accessPoint;
+ }
+ }
+ }
+ }
- // if there is no data! -- to be discussed
- // there should be at least ONE trigger -- to be discussed
- if (reqDataArr.size() < 1) {
- String m = "Request must have at least one data
element - trigger";
- logger.warn(m);
-// TODO: url event types
- throw new
PerfSONARException("error.ls.no_data_trigger", m);
- }
+ String m = "No accessPoint in request";
+ logger.warn(m);
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.no_access_point", m);
+ }
- // convert dataArr to Data[]
- Data[] dataElements = (Data[]) reqDataArr.toArray(new
Data[reqDataArr.size()]);
+ /**
+ * Return data elements as Data[] from given Message
+ *
+ * @param request
+ * @return
+ * @throws PerfSONARException
+ */
+ protected Data[] getDataElements(Message request) throws
PerfSONARException {
+ // Get all Data elements, suppose they all belong to metadata
+ // (data map is created in the constructor of Message, so
+ // NullPointerException won't be thrown!)
+ Collection<Data> reqDataArr = request.getDataMap().values();
- return dataElements;
- }
+ // if there is no data! -- to be discussed
+ // there should be at least ONE trigger -- to be discussed
+ if (reqDataArr.size() < 1) {
+ String m = "Request must have at least one data element -
trigger";
+ logger.warn(m);
+ // TODO: url event types
+ throw new PerfSONARException("error.ls.no_data_trigger", m);
+ }
- /**
- * Returns Message with response containing result code (success) and
key
- * value
- *
- * @param keyValue
- * @return
- */
- protected Message getLSRegisterResponse(String keyValue) {
- // return Key
- // xpath:////nmwg:metadata/nmwg:key/
- //
nmwg:parameters:/nmwg:parameter[@id="lsKey"]
+ // convert dataArr to Data[]
+ Data[] dataElements = (Data[]) reqDataArr.toArray(new
Data[reqDataArr.size()]);
- String ttlMessage = "";
- if (ttlParameterStatus.equals(LsTTLParameterStatus.ACCEPTED))
{
- ttlMessage =
ResourceBundle.getInstance().getString("registration.lsTTL.accepted");
- } else if
(ttlParameterStatus.equals(LsTTLParameterStatus.NOT_A_NUMBER)) {
- ttlMessage =
ResourceBundle.getInstance().getString("registration.lsTTL.notANumber");
- } else if
(ttlParameterStatus.equals(LsTTLParameterStatus.OUT_OF_BOUND)) {
- String[] params = new String[3];
- params[0] = String.valueOf(ttlBound[0]);
- params[1] = String.valueOf(ttlBound[1]);
- ttlMessage =
ResourceBundle.getInstance().getString("registration.lsTTL.outOfBound",
params);
- }
+ return dataElements;
+ }
- StringBuffer sb = new StringBuffer();
+ /**
+ * Returns Message with response containing result code (success) and key
+ * value
+ *
+ * @param keyValue
+ * @return
+ */
+ protected Message getLSRegisterResponse(String keyValue) {
+ // return Key
+ // xpath:////nmwg:metadata/nmwg:key/
+ //
nmwg:parameters:/nmwg:parameter[@id="lsKey"]
- sb.append("Data has been registered with key [");
- sb.append(keyValue);
- sb.append("]");
+ String ttlMessage = "";
+ if (ttlParameterStatus.equals(LsTTLParameterStatus.ACCEPTED)) {
+ ttlMessage =
ResourceBundle.getInstance().getString("registration.lsTTL.accepted");
+ } else if
(ttlParameterStatus.equals(LsTTLParameterStatus.NOT_A_NUMBER)) {
+ ttlMessage =
ResourceBundle.getInstance().getString("registration.lsTTL.notANumber");
+ } else if
(ttlParameterStatus.equals(LsTTLParameterStatus.OUT_OF_BOUND)) {
+ String[] params = new String[3];
+ params[0] = String.valueOf(ttlBound[0]);
+ params[1] = String.valueOf(ttlBound[1]);
+ ttlMessage =
ResourceBundle.getInstance().getString("registration.lsTTL.outOfBound",
params);
+ }
- if (ttlParameterStatus.equals(LsTTLParameterStatus.ACCEPTED))
{
- sb.append(" and lsTTL parameter [");
- sb.append(clientTTL);
- sb.append(" sec.]");
- }
-// TODO: url event types
- Message msg = ResultCodesUtil.generateResultMessage(null,
- "success.ls.register", sb.toString());
+ StringBuffer sb = new StringBuffer();
- if
(ttlParameterStatus.equals(LsTTLParameterStatus.NOT_A_NUMBER)
- ||
ttlParameterStatus.equals(LsTTLParameterStatus.OUT_OF_BOUND)) {
- for (Metadata meta : msg.getMetadataCollection()) {
- String metadataId = meta.getId();
- Metadata metadata = new Metadata();
- Subject subject = new Subject();
- subject.setMetadataIdRef(metadataId);
- EventType eventType = new EventType();
-// TODO: url event types
-
eventType.setText(PerfSONARException.RESULT_CODE_PREFIX
- +
"warning.ls.lsTTLParameter." + ttlParameterStatus);
+ sb.append("Data has been registered with key [");
+ sb.append(keyValue);
+ sb.append("]");
- Data data = new Data();
- Datum datum = new Datum();
- datum.setText(ttlMessage);
- data.addChild(datum);
+ if (ttlParameterStatus.equals(LsTTLParameterStatus.ACCEPTED)) {
+ sb.append(" and lsTTL parameter [");
+ sb.append(clientTTL);
+ sb.append(" sec.]");
+ }
+ // TODO: url event types
+ Message msg = ResultCodesUtil.generateResultMessage(null,
+ "success.ls.register", sb.toString());
- metadata.addChild(subject);
- metadata.addChild(eventType);
- metadata.addChild(data);
- msg.addChild(metadata);
- }
- }
+ if (ttlParameterStatus.equals(LsTTLParameterStatus.NOT_A_NUMBER)
+ ||
ttlParameterStatus.equals(LsTTLParameterStatus.OUT_OF_BOUND)) {
+ for (Metadata meta : msg.getMetadataCollection()) {
+ String metadataId = meta.getId();
+ Metadata metadata = new Metadata();
+ Subject subject = new Subject();
+ subject.setMetadataIdRef(metadataId);
+ EventType eventType = new EventType();
+ // TODO: url event types
+ eventType.setText(PerfSONARException.RESULT_CODE_PREFIX
+ + "warning.ls.lsTTLParameter." + ttlParameterStatus);
- for (Metadata m : msg.getMetadataCollection()) {
- m.addChild(createLSKey(keyValue));
- break;
- }
+ Data data = new Data();
+ Datum datum = new Datum();
+ datum.setText(ttlMessage);
+ data.addChild(datum);
- // doesn't really matter, it is changed by MessageHandler.
- msg.setType("LSRegisterResponse");
+ metadata.addChild(subject);
+ metadata.addChild(eventType);
+ metadata.addChild(data);
+ msg.addChild(metadata);
+ }
+ }
- return msg;
+ for (Metadata m : msg.getMetadataCollection()) {
+ m.addChild(createLSKey(keyValue));
+ break;
+ }
- }
+ // doesn't really matter, it is changed by MessageHandler.
+ msg.setType("LSRegisterResponse");
- protected long getLSTTLFromParameters(Element parametersElement)
- throws PerfSONARException {
+ return msg;
- for (Element child : parametersElement.getChildren()) {
- if (child.getName().equals("parameter")
- &&
child.getAttribute("name").equals("lsTTL")) {
- String strElement = child.getText();
- try {
- long lsTTL =
Long.parseLong(strElement);
- return lsTTL;
- } catch (NumberFormatException ex) {
- throw new
PerfSONARException("lsTTLParameter +["
- + strElement + "]+
incorrect format");
- }
- }
- }
- return 0;
- }
+ }
- /**
- * Create element containing lsKey.
- *
xpath:////nmwg:key/nmwg:parameters/nmwg:parameter[@id='lsKey']
- *
- * @param keyValue
- * @return Key element
- */
- private Key createLSKey(String keyValue) {
+ protected long getLSTTLFromParameters(Element parametersElement)
+ throws PerfSONARException {
- Key key = new Key();
- Parameters parameters = new Parameters();
- Parameter parameter = new Parameter();
- parameter.setParameter("name", LS_KEY);
- parameter.setParameter("value", keyValue);
- parameters.addParameter(parameter);
- key.setParameters(parameters);
+ for (Element child : parametersElement.getChildren()) {
+ if (child.getName().equals("parameter")
+ && child.getAttribute("name").equals("lsTTL")) {
+ String strElement = child.getText();
+ try {
+ long lsTTL = Long.parseLong(strElement);
+ return lsTTL;
+ } catch (NumberFormatException ex) {
+ throw new PerfSONARException("lsTTLParameter +["
+ + strElement + "]+ incorrect format");
+ }
+ }
+ }
+ return 0;
+ }
- return key;
- }
+ /**
+ * Create element containing lsKey.
+ *
xpath:////nmwg:key/nmwg:parameters/nmwg:parameter[@id='lsKey']
+ *
+ * @param keyValue
+ * @return Key element
+ */
+ private Key createLSKey(String keyValue) {
- protected int[] getTtlBound() {
- return ttlBound;
- }
+ Key key = new Key();
+ Parameters parameters = new Parameters();
+ Parameter parameter = new Parameter();
+ parameter.setParameter("name", LS_KEY);
+ parameter.setParameter("value", keyValue);
+ parameters.addParameter(parameter);
+ key.setParameters(parameters);
- /**
- *
- * set/update lsTTL param in LS-Store
- *
- * @param metadataId
- * @param lsTTL
- * - lsTTL value in seconds
- * @throws PerfSONARException
- */
- protected void updateTTL(String metadataId, long lsTTL)
- throws PerfSONARException {
- dao.setControlParameter(metadataId, "lsTTL",
String.valueOf(lsTTL));
- }
+ return key;
+ }
- public long getClientTTL() {
- return clientTTL;
- }
+ protected int[] getTtlBound() {
+ return ttlBound;
+ }
- public void setClientTTL(long clientTTL) {
- this.clientTTL = clientTTL;
- }
+ /**
+ *
+ * set/update lsTTL param in LS-Store
+ *
+ * @param metadataId
+ * @param lsTTL
+ * - lsTTL value in seconds
+ * @throws PerfSONARException
+ */
+ protected void updateTTL(String metadataId, long lsTTL)
+ throws PerfSONARException {
+ dao.setControlParameter(metadataId, "lsTTL", String.valueOf(lsTTL));
+ }
+
+ public long getClientTTL() {
+ return clientTTL;
+ }
+
+ public void setClientTTL(long clientTTL) {
+ this.clientTTL = clientTTL;
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/DiscoveryRequestGenerator.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/DiscoveryRequestGenerator.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/DiscoveryRequestGenerator.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -14,18 +14,18 @@
*
*/
public class DiscoveryRequestGenerator {
-
- List<Element> dataList=new ArrayList<Element>();
-
- public Message createMessageElement() {
- Message message= new Message();
+ private List<Element> dataList = new ArrayList<Element>();
+
+ public Message createMessageElement() {
+
+ Message message = new Message();
message.setId("LSDiscoveryRequest");
message.setType("LSQueryRequest");
return message;
-
+
}
-
+
public Element createSubjectElement(Message message, String metadataId) {
Metadata metadata = new Metadata();
metadata.setId(metadataId);
@@ -37,7 +37,7 @@
subject.setNamespaceUri("http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
subject.addAttribute("id", "subject.1");
metadata.addChild(subject);
-
+
EventType eventType1 = new EventType();
eventType1.setEventType("http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0");
metadata.addChild(eventType1);
@@ -46,17 +46,17 @@
data.setName("data");
data.setNamespacePrefix("nmwg");
data.setNamespaceUri("http://ggf.org/ns/nmwg/base/2.0/");
- data.addAttribute("id", metadataId+"_dataTriger");
+ data.addAttribute("id", metadataId + "_dataTriger");
data.addAttribute("metadataIdRef", metadataId);
message.addChild(data);
dataList.add(metadata);
-// dataList.add(data);
-
+ // dataList.add(data);
+
return subject;
}
-
+
public Element createAddressElement(Element subject, String ipString,
String subnetString) {
-
+
Element network = new Element();
network.setName("network");
network.setNamespacePrefix("nmtl3");
@@ -82,7 +82,7 @@
netmask.setNamespaceUri("http://ogf.org/schema/network/topology/l3/20070828/");
netmask.setText(subnetString);
subnet.addChild(netmask);
-
+
subject.addChild(network);
return network;
@@ -104,7 +104,7 @@
domain.addChild(name);
return domain;
}
-
+
public Element createEventTypeElement(Element subject, String evt) {
Element eventType = new Element();
eventType.setName("eventType");
@@ -116,7 +116,7 @@
}
public Element createParametersElement(Element subject) {
-
+
Element parameters = new Element();
parameters.setName("parameters");
parameters.setNamespacePrefix("summary");
@@ -125,7 +125,7 @@
return parameters;
}
-
+
public Element createParameterElement(Element parameters, String name,
String value) {
Element parameter = new Element();
parameter.setName("parameter");
@@ -136,8 +136,8 @@
parameters.addChild(parameter);
return parameter;
}
-
+
public List<Element> getDataList() {
- return dataList;
- }
+ return dataList;
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LSSummaryRegisterDataSource.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LSSummaryRegisterDataSource.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LSSummaryRegisterDataSource.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -21,31 +21,31 @@
*/
public class LSSummaryRegisterDataSource implements RegisterDataSource {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- protected SummarizationDAO dao;
+ protected SummarizationDAO dao;
- public LSSummaryRegisterDataSource() throws PerfSONARException {
- super();
- dao = LookupServiceDAOFactory.getSumarizationDAO();
- }
+ public LSSummaryRegisterDataSource() throws PerfSONARException {
+ super();
+ dao = LookupServiceDAOFactory.getSumarizationDAO();
+ }
- public ServiceMessage getRegisterData() throws PerfSONARException {
-
- logger.debug("Getting Summary register data");
-
- XMLDBResult dbResult=dao.getSummaryData();
-
- Message message= new Message();
+ public ServiceMessage getRegisterData() throws PerfSONARException {
+
+ logger.debug("Getting Summary register data");
+
+ XMLDBResult dbResult = dao.getSummaryData();
+
+ Message message = new Message();
message.setId("LSDiscoveryRequest");
message.setType("LSQueryRequest");
-
-
- for(Element element : dbResult.getResults()){
- message.addChild(element);
- }
-
- return new ServiceMessage(message);
- }
-}
\ No newline at end of file
+
+ for (Element element : dbResult.getResults()) {
+ message.addChild(element);
+ }
+
+ return new ServiceMessage(message);
+ }
+
+}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LsTTLParameterStatus.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LsTTLParameterStatus.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LsTTLParameterStatus.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -3,7 +3,7 @@
import java.util.Locale;
/**
- * Is it the proper way to do that? Can't we make it a bit more
lightweighted with Constants?
+ * Is it the proper way to do that? Can't we make it a bit more
lightweighted with SummarizationConstants?
*
* Commented on 20121006 -
*
@@ -11,9 +11,9 @@
*
*/
public enum LsTTLParameterStatus {
- NONE, ACCEPTED, OUT_OF_BOUND, NOT_A_NUMBER;
+ NONE, ACCEPTED, OUT_OF_BOUND, NOT_A_NUMBER;
- public String toString() {
- return this.name().toLowerCase(Locale.getDefault());
- }
+ public String toString() {
+ return this.name().toLowerCase(Locale.getDefault());
+ }
}
Deleted:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/Constants.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/Constants.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/Constants.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -1,21 +0,0 @@
-package org.perfsonar.service.lookupservice.registration.summarization;
-
-/**
- * Constants for the summarization code
- *
- * @author swany
- *
- * FIXME: not sure this is the proper way to do it, shouldn't this be a
"public final class" instead?
- * We should properly group all service related constants in a single file
and rename the class to
- * something a bit more descriptive like "LSConstants"
- * Commented on 2012106 -
- *
- */
-interface Constants {
- public final static int MAX_KEY_LENGTH = 32;
-
- /**
- * nr of ip segments IPv4 constists of 4 segments
- */
- public final static int NR_OF_IP_SEGMENTS = 4;
-}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/DomainSummarizator.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/DomainSummarizator.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/DomainSummarizator.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -10,58 +10,63 @@
*
* @author Slawomir Trzaszczka
*/
-public class DomainSummarizator {
-
- private final static int NUMBER_OF_SUBDOMAINS=3;
-
- /**
- * Do domains summarization. Returns new, summarized set of data
Input data
- * is not changed.
- *
- * @param data
- * @return
- */
- public static Set<String> summarizeDomains(Set<String> data) {
+public final class DomainSummarizator {
- Set<String> summarizedData = new HashSet<String>();
- for (String s : data) {
- processSubDomains(s, NUMBER_OF_SUBDOMAINS,
summarizedData);
- }
- return summarizedData;
- }
-
- /**
- * Get subdomains for domain. For example for input string
- * "www.man.poznan.pl" and limit=3 it will return collection of "pl",
- * "poznan.pl" and "man.poznan.pl"
- *
- * @param domain
- * input domain e.g. "www.man.poznan.pl"
- * @param limit
- * number of subdomains to be returned. Value -1 means
"all"
- * @param list
- * collection where results are to be added
- */
- private static void processSubDomains(String domain, int limit,
- Collection<String> list) {
+ private static final int NUMBER_OF_SUBDOMAINS = 3;
- if (domain == null)
- return;
+ private DomainSummarizator() { } // Prevents instantiation
- int last = domain.length();
+ /**
+ * Do domains summarization. Returns new, summarized set of data Input
data
+ * is not changed.
+ *
+ * @param data
+ * @return
+ */
+ public static Set<String> summarizeDomains(Set<String> data) {
- for (int current = last - 1; current >= 0; current--) {
+ Set<String> summarizedData = new HashSet<String>();
+ for (String s : data) {
+ processSubDomains(s, NUMBER_OF_SUBDOMAINS, summarizedData);
+ }
+ return summarizedData;
+ }
- if (limit == 0)
- break;
+ /**
+ * Get subdomains for domain. For example for input string
+ * "www.man.poznan.pl" and limit=3 it will return collection of "pl",
+ * "poznan.pl" and "man.poznan.pl"
+ *
+ * @param domain
+ * input domain e.g. "www.man.poznan.pl"
+ * @param limit
+ * number of subdomains to be returned. Value -1 means "all"
+ * @param list
+ * collection where results are to be added
+ */
+ private static void processSubDomains(String domain, int limit,
+ Collection<String> list) {
- if (domain.charAt(current) == '.') {
- String subdomain = domain.substring(current +
1);
- if (!subdomain.isEmpty())
- list.add(subdomain);
- limit--;
- }
- }
- }
-
+ if (domain == null) {
+ return;
+ }
+
+ int last = domain.length();
+
+ for (int current = last - 1; current >= 0; current--) {
+
+ if (limit == 0) {
+ break;
+ }
+
+ if (domain.charAt(current) == '.') {
+ String subdomain = domain.substring(current + 1);
+ if (!subdomain.isEmpty()) {
+ list.add(subdomain);
+ }
+ limit--;
+ }
+ }
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IPAddress.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IPAddress.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IPAddress.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -8,55 +8,55 @@
*
*/
class IPAddress {
- private long addrAsLong;
+ private long addrAsLong;
- public IPAddress(String newIp) throws InvalidIPAddressException {
- addrAsLong = this.ipToLong(newIp);
- }
+ public IPAddress(String newIp) throws InvalidIPAddressException {
+ addrAsLong = this.ipToLong(newIp);
+ }
- public long getAddrAsLong() {
- return addrAsLong;
- }
+ public long getAddrAsLong() {
+ return addrAsLong;
+ }
- /**
- *
- * converts IP from string to long
- *
- * @param ip
- * @return
- * @throws InvalidIPAddressException
- */
- public long ipToLong(String ip) throws InvalidIPAddressException {
+ /**
+ *
+ * converts IP from string to long
+ *
+ * @param ip
+ * @return
+ * @throws InvalidIPAddressException
+ */
+ public long ipToLong(String ip) throws InvalidIPAddressException {
- String[] splitIP = ip.split("\\.");
- long temp;
- long ipInLong = 0;
- boolean mallformed=false;
-
- if(splitIP.length!=Constants.NR_OF_IP_SEGMENTS){
- mallformed=true;
- }else{
- for (String aSplitIP : splitIP) {
- try {
- temp = Long.parseLong(aSplitIP);
- } catch (NumberFormatException e) {
- mallformed=true;
- break;
- }
- if (temp < 0 || temp > 256) {
- mallformed=true;
- break;
- }
- ipInLong = (ipInLong << 8) + temp;
- }
- }
+ String[] splitIP = ip.split("\\.");
+ long temp;
+ long ipInLong = 0;
+ boolean mallformed = false;
- if(mallformed){
- throw new InvalidIPAddressException("IP address is
not valid: "+ ip);
- }
+ if (splitIP.length != SummarizationConstants.NR_OF_IP_SEGMENTS) {
+ mallformed = true;
+ } else {
+ for (String aSplitIP : splitIP) {
+ try {
+ temp = Long.parseLong(aSplitIP);
+ } catch (NumberFormatException e) {
+ mallformed = true;
+ break;
+ }
+ if (temp < 0 || temp > 256) {
+ mallformed = true;
+ break;
+ }
+ ipInLong = (ipInLong << 8) + temp;
+ }
+ }
- return ipInLong;
- }
-
-
-}
\ No newline at end of file
+ if (mallformed) {
+ throw new InvalidIPAddressException("IP address is not valid: "
+ ip);
+ }
+
+ return ipInLong;
+ }
+
+
+}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/InvalidIPAddressException.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/InvalidIPAddressException.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/InvalidIPAddressException.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -8,7 +8,7 @@
@SuppressWarnings("serial")
public class InvalidIPAddressException extends Exception {
- InvalidIPAddressException(final String message) {
- super(message);
- }
+ InvalidIPAddressException(final String message) {
+ super(message);
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IpTrie.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IpTrie.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IpTrie.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -13,118 +13,119 @@
*/
class IpTrie {
- private Trie trie;
- private ArrayList<IpTrieNode> nodelist;
- private IpTrieNode root;
+ private Trie trie;
+ private ArrayList<IpTrieNode> nodelist;
+ private IpTrieNode root;
- public IpTrie(Trie t) {
- // need to establish state for an iterator
- trie = t;
- nodelist = new ArrayList<IpTrieNode>();
- this.updateNodelist();
- }
+ public IpTrie(Trie t) {
+ // need to establish state for an iterator
+ trie = t;
+ nodelist = new ArrayList<IpTrieNode>();
+ this.updateNodelist();
+ }
- /**
- * this method will walk the Trie and fill in IpTrieNodes
- */
- public void updateNodelist() {
- nodelist.clear();
- long startPosition = Constants.MAX_KEY_LENGTH;
- long startKey = 0;
- root = new IpTrieNode(trie.getRootNode(), startPosition,
startKey);
- nodelist.add(root);
- walkTree(root, startPosition, startKey);
- }
-
- /**
- *
- * walk the tree from node down and build IPpTrieNodes
- *
- * @param node - start Node
- * @param position
- * @param currentKey
- */
- private void walkTree(IpTrieNode node, long position, long
currentKey) {
- TrieNode tnode = node.trieNode;
- TrieNode c0 = tnode.getChildZero();
- TrieNode c1 = tnode.getChildOne();
+ /**
+ * this method will walk the Trie and fill in IpTrieNodes
+ */
+ public void updateNodelist() {
+ nodelist.clear();
+ long startPosition = SummarizationConstants.MAX_KEY_LENGTH;
+ long startKey = 0;
+ root = new IpTrieNode(trie.getRootNode(), startPosition, startKey);
+ nodelist.add(root);
+ walkTree(root, startPosition, startKey);
+ }
- if (c0 != null) {
- long c0Key = c0.getKey() << (position -
c0.getKeyLength());
- long c0Position = position - c0.getKeyLength();
- c0Key = c0Key | currentKey;
- IpTrieNode c0ipTrieNode = new IpTrieNode(c0,
c0Position, c0Key);
- nodelist.add(c0ipTrieNode);
- node.setChildZero(c0ipTrieNode);
- walkTree(c0ipTrieNode, c0Position, c0Key);
+ /**
+ *
+ * walk the tree from node down and build IPpTrieNodes
+ *
+ * @param node - start Node
+ * @param position
+ * @param currentKey
+ */
+ private void walkTree(IpTrieNode node, long position, long currentKey) {
+ TrieNode tnode = node.getTrieNode();
+ TrieNode c0 = tnode.getChildZero();
+ TrieNode c1 = tnode.getChildOne();
- }
- if (c1 != null) {
- long c1Key = c1.getKey() << (position -
c1.getKeyLength());
- long c1Position = position - c1.getKeyLength();
- c1Key = c1Key | currentKey;
- IpTrieNode c1ipTrieNode = new IpTrieNode(c1,
c1Position, c1Key);
- nodelist.add(c1ipTrieNode);
- node.setChildOne(c1ipTrieNode);
- walkTree(c1ipTrieNode, c1Position, c1Key);
- }
+ if (c0 != null) {
+ long c0Key = c0.getKey() << (position - c0.getKeyLength());
+ long c0Position = position - c0.getKeyLength();
+ c0Key = c0Key | currentKey;
+ IpTrieNode c0ipTrieNode = new IpTrieNode(c0, c0Position, c0Key);
+ nodelist.add(c0ipTrieNode);
+ node.setChildZero(c0ipTrieNode);
+ walkTree(c0ipTrieNode, c0Position, c0Key);
- }
+ }
+ if (c1 != null) {
+ long c1Key = c1.getKey() << (position - c1.getKeyLength());
+ long c1Position = position - c1.getKeyLength();
+ c1Key = c1Key | currentKey;
+ IpTrieNode c1ipTrieNode = new IpTrieNode(c1, c1Position, c1Key);
+ nodelist.add(c1ipTrieNode);
+ node.setChildOne(c1ipTrieNode);
+ walkTree(c1ipTrieNode, c1Position, c1Key);
+ }
+ }
- public ArrayList<IpTrieNode> getSummary() {
- ArrayList<IpTrieNode> alitn = new ArrayList<IpTrieNode>();
- if (root.childZero != null) {
- walkIpTrie(alitn, root.childZero);
- }
- if (root.childOne != null) {
- walkIpTrie(alitn, root.childOne);
- }
- // sanity check
- long sum = 0;
- Iterator<IpTrieNode> it = alitn.iterator();
- for (IpTrieNode node; it.hasNext();) {
- node = it.next();
- sum += node.childCount;
- if (node.mask == 32)
- sum++;
- }
+ public ArrayList<IpTrieNode> getSummary() {
+ ArrayList<IpTrieNode> alitn = new ArrayList<IpTrieNode>();
+ if (root.getChildZero() != null) {
+ walkIpTrie(alitn, root.getChildZero());
+ }
+ if (root.getChildOne() != null) {
+ walkIpTrie(alitn, root.getChildOne());
+ }
- if (sum != trie.getCount()) {
- System.out.println("Summarization failed! (covered "
+ sum
- + "prefixes out of " +
trie.getCount() + ")");
- alitn.clear();
- }
+ // sanity check
+ long sum = 0;
+ Iterator<IpTrieNode> it = alitn.iterator();
+ for (IpTrieNode node; it.hasNext();) {
+ node = it.next();
+ sum += node.getChildCount();
+ if (node.getMask() == 32) {
+ sum++;
+ }
+ }
- return alitn;
- }
+ if (sum != trie.getCount()) {
+ System.out.println("Summarization failed! (covered " + sum
+ + "prefixes out of " + trie.getCount() + ")");
+ alitn.clear();
+ }
- /**
- *
- * this will consider whether to recurse down the tree or add itself
to the
- * summary list and prune the subtree.
- *
- * add itself to summarization result when :
- * - childOne is null
- * - childOne or childZero have mask less or equal than 8
- *
- * @param alitn
- * @param node
- */
- private void walkIpTrie(ArrayList<IpTrieNode> alitn, IpTrieNode node)
{
- IpTrieNode c0n = node.childZero;
- IpTrieNode c1n = node.childOne;
+ return alitn;
+ }
- if (c0n == null) {
- alitn.add(node);
- } else if ((c0n.mask - node.mask > 8) || (c1n.mask -
node.mask > 8)) {
- walkIpTrie(alitn, c0n);
- walkIpTrie(alitn, c1n);
- } else {
- //if mask of the childOne or childZero are less than
8 add this node to summary
- alitn.add(node);
- }
+ /**
+ *
+ * this will consider whether to recurse down the tree or add itself to
the
+ * summary list and prune the subtree.
+ *
+ * add itself to summarization result when :
+ * - childOne is null
+ * - childOne or childZero have mask less or equal than 8
+ *
+ * @param alitn
+ * @param node
+ */
+ private void walkIpTrie(ArrayList<IpTrieNode> alitn, IpTrieNode node) {
+ IpTrieNode c0n = node.getChildZero();
+ IpTrieNode c1n = node.getChildOne();
- }
+ if (c0n == null) {
+ alitn.add(node);
+ } else if ((c0n.getMask() - node.getMask() > 8) || (c1n.getMask() -
node.getMask() > 8)) {
+ walkIpTrie(alitn, c0n);
+ walkIpTrie(alitn, c1n);
+ } else {
+ //if mask of the childOne or childZero are less than 8 add this
node to summary
+ alitn.add(node);
+ }
+
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IpTrieNode.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IpTrieNode.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/IpTrieNode.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -9,32 +9,102 @@
*
*/
class IpTrieNode {
-
- long mask;
- long key;
- String keyString;
- String addrString;
- TrieNode trieNode;
- IpTrieNode childZero, childOne;
- long childCount;
- public IpTrieNode(TrieNode tnode, long position, long currentKey) {
- SummarizationHelper helper = new SummarizationHelper();
- trieNode = tnode;
- mask = Constants.MAX_KEY_LENGTH - position;
- key = currentKey;
- keyString = helper.longToIP(key);
- addrString = keyString + "/" + mask;
- childCount = tnode.getChildCount();
- }
+ private long mask;
+ private long key;
+ private String keyString;
+ private String addrString;
+ private TrieNode trieNode;
+ private IpTrieNode childZero, childOne;
+ private long childCount;
- public IpTrieNode setChildZero(IpTrieNode newChild) {
- childZero = newChild;
- return this;
- }
+ public IpTrieNode(TrieNode tnode, long position, long currentKey) {
+ SummarizationHelper helper = new SummarizationHelper();
+ setTrieNode(tnode);
+ mask = SummarizationConstants.MAX_KEY_LENGTH - position;
+ key = currentKey;
+ keyString = helper.longToIP(key);
+ setAddrString(keyString + "/" + mask);
+ childCount = tnode.getChildCount();
+ }
- public IpTrieNode setChildOne(IpTrieNode newChild) {
- childOne = newChild;
- return this;
- }
+ public IpTrieNode setChildZero(IpTrieNode newChild) {
+ childZero = newChild;
+ return this;
+ }
+
+ public IpTrieNode setChildOne(IpTrieNode newChild) {
+ childOne = newChild;
+ return this;
+ }
+
+ /**
+ * @return the addrString
+ */
+ public String getAddrString() {
+ return addrString;
+ }
+
+ /**
+ * @param addrString the addrString to set
+ */
+ public void setAddrString(String addrString) {
+ this.addrString = addrString;
+ }
+
+ /**
+ * @return the mask
+ */
+ public long getMask() {
+ return mask;
+ }
+
+ /**
+ * @param mask the mask to set
+ */
+ public void setMask(long mask) {
+ this.mask = mask;
+ }
+
+ /**
+ * @return the childCount
+ */
+ public long getChildCount() {
+ return childCount;
+ }
+
+ /**
+ * @param childCount the childCount to set
+ */
+ public void setChildCount(long childCount) {
+ this.childCount = childCount;
+ }
+
+ /**
+ * @return the childZero
+ */
+ public IpTrieNode getChildZero() {
+ return childZero;
+ }
+
+ /**
+ * @return the childOne
+ */
+ public IpTrieNode getChildOne() {
+ return childOne;
+ }
+
+ /**
+ * @return the trieNode
+ */
+ public TrieNode getTrieNode() {
+ return trieNode;
+ }
+
+ /**
+ * @param trieNode the trieNode to set
+ */
+ public void setTrieNode(TrieNode trieNode) {
+ this.trieNode = trieNode;
+ }
}
Copied:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizationConstants.java
(from rev 6077,
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/Constants.java)
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizationConstants.java
(rev 0)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizationConstants.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -0,0 +1,18 @@
+package org.perfsonar.service.lookupservice.registration.summarization;
+
+/**
+ * SummarizationConstants for the summarization code
+ *
+ * @author swany
+ *
+ */
+public final class SummarizationConstants {
+ private SummarizationConstants() { } // Prevents instantiation
+
+ public static final int MAX_KEY_LENGTH = 32;
+
+ /**
+ * Nr of IP segments: IPv4 consists of 4 segments
+ */
+ public static final int NR_OF_IP_SEGMENTS = 4;
+}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizationHelper.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizationHelper.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizationHelper.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -13,45 +13,45 @@
*/
class SummarizationHelper {
- public int displayElementsInKeyList(ArrayList<TrieNode> keyList) {
- long keyDifference;
- String mostDominantKey;
- int noOfNodes = 0;
+ public int displayElementsInKeyList(ArrayList<TrieNode> keyList) {
+ long keyDifference;
+ String mostDominantKey;
+ int noOfNodes = 0;
- for (TrieNode tempNode : keyList) {
- ++noOfNodes;
- keyDifference = Constants.MAX_KEY_LENGTH -
tempNode.getKeyLength();
- mostDominantKey = longToIP(tempNode.getKey());
- System.out.println("\nThe node is : " +
mostDominantKey + "/"
- + keyDifference);
- }
- return noOfNodes;
- }
+ for (TrieNode tempNode : keyList) {
+ ++noOfNodes;
+ keyDifference = SummarizationConstants.MAX_KEY_LENGTH -
tempNode.getKeyLength();
+ mostDominantKey = longToIP(tempNode.getKey());
+ System.out.println("\nThe node is : " + mostDominantKey + "/"
+ + keyDifference);
+ }
+ return noOfNodes;
+ }
- /**
- * conversion from IP in long notation to standard IP format
- *
- * @param ipInLong
- * @return string notation of the ip
- */
- public String longToIP(Long ipInLong) {
+ /**
+ * conversion from IP in long notation to standard IP format
+ *
+ * @param ipInLong
+ * @return string notation of the ip
+ */
+ public String longToIP(Long ipInLong) {
- String ipAddress = "";
- long num;
+ String ipAddress = "";
+ long num;
- for (int i = 0; i < Constants.NR_OF_IP_SEGMENTS; i++) {
+ for (int i = 0; i < SummarizationConstants.NR_OF_IP_SEGMENTS; i++) {
- double factor = Math.pow(256,
(Constants.NR_OF_IP_SEGMENTS - i - 1));
- num = ipInLong / (long) factor;
- ipInLong = ipInLong - (num * (long) factor);
- if (num > 255) {
- System.err.println("Invalid IP address ");
- }
- ipAddress = ipAddress.concat("" + num);
- if (i != 3) {
- ipAddress = ipAddress.concat(".");
- }
- }
- return ipAddress;
- }
+ double factor = Math.pow(256,
(SummarizationConstants.NR_OF_IP_SEGMENTS - i - 1));
+ num = ipInLong / (long) factor;
+ ipInLong = ipInLong - (num * (long) factor);
+ if (num > 255) {
+ System.err.println("Invalid IP address ");
+ }
+ ipAddress = ipAddress.concat("" + num);
+ if (i != 3) {
+ ipAddress = ipAddress.concat(".");
+ }
+ }
+ return ipAddress;
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizeIpAddrs.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizeIpAddrs.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/SummarizeIpAddrs.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -15,11 +15,13 @@
* @author mac
*
*/
-public class SummarizeIpAddrs {
+public final class SummarizeIpAddrs {
- protected static Logger logger =
LoggerFactory.getLogger(SummarizeIpAddrs.class);
+ protected static Logger logger =
LoggerFactory.getLogger(SummarizeIpAddrs.class);
- /**
+ private SummarizeIpAddrs() { } // Prevents instantiation
+
+ /**
* Main method, reads input set of IP addresses, returns summarized set
* of IP addresses/masks
* @param ipAddresses
@@ -27,15 +29,15 @@
*/
public static Set<String> getSummary(Collection<String> ipAddresses) {
- // Initialization of the root node in Tree
- final TrieNode ROOTNODE = new TrieNode(-1, Constants.MAX_KEY_LENGTH);
- Trie trie = new Trie(ROOTNODE);
+ // Initialization of the root node in Tree
+ final TrieNode rootNode = new TrieNode(-1,
SummarizationConstants.MAX_KEY_LENGTH);
+ Trie trie = new Trie(rootNode);
for (String newIpAddr : ipAddresses) {
try {
IPAddress newIp = new IPAddress(newIpAddr);
long aLongValue = newIp.getAddrAsLong();
- trie = trie.add(aLongValue, Constants.MAX_KEY_LENGTH, newIp);
+ trie = trie.add(aLongValue,
SummarizationConstants.MAX_KEY_LENGTH, newIp);
} catch (InvalidIPAddressException e) {
logger.warn("Ignoring address: " + newIpAddr + " - Error: "
+ e.getMessage());
}
@@ -46,7 +48,7 @@
HashSet<String> output = new HashSet<String>();
for (IpTrieNode node : nodeList) {
- output.add(node.addrString);
+ output.add(node.getAddrString());
}
return output;
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/Trie.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/Trie.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/Trie.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -13,262 +13,273 @@
*
*/
class Trie {
- private int nodeCount;
+ private int nodeCount;
- private ArrayList<TrieNode> keyList = new ArrayList<TrieNode>();
+ private ArrayList<TrieNode> keyList = new ArrayList<TrieNode>();
- public ArrayList<TrieNode> getKeyList() {
- return keyList;
- }
+ public ArrayList<TrieNode> getKeyList() {
+ return keyList;
+ }
- private TrieNode rootNode;
+ private TrieNode rootNode;
- public Trie(TrieNode rootnode) {
- rootNode = rootnode;
- }
+ public Trie(TrieNode rootnode) {
+ rootNode = rootnode;
+ }
- public TrieNode getRootNode() {
- return rootNode;
- }
+ public TrieNode getRootNode() {
+ return rootNode;
+ }
- /**
- *
- * gets first digit from longIP
- *
- *
- * @param longIp
- * @param ipLength
- * @return 0 or 1
- */
- private long firstDigit(long longIp, long ipLength) {
- return ((longIp >> (ipLength - 1)) & 1);
- }
+ /**
+ *
+ * gets first digit from longIP
+ *
+ *
+ * @param longIp
+ * @param ipLength
+ * @return 0 or 1
+ */
+ private long firstDigit(long longIp, long ipLength) {
+ return ((longIp >> (ipLength - 1)) & 1);
+ }
- /**
- *
- * adds element to Trie. Element can be added to ChildOne or
ChildZero. It depends of the bit value
- *
- *
- * @param longIP
- * @param ipLength
- * @param ipAddressObject
- * @return
- */
- public Trie add(long longIP, long ipLength, IPAddress
ipAddressObject) {
- nodeCount++;
- rootNode.incrementChildCount();
+ /**
+ *
+ * adds element to Trie. Element can be added to ChildOne or ChildZero.
It depends of the bit value
+ *
+ *
+ * @param longIP
+ * @param ipLength
+ * @param ipAddressObject
+ * @return
+ */
+ public Trie add(long longIP, long ipLength, IPAddress ipAddressObject) {
+ nodeCount++;
+ rootNode.incrementChildCount();
- if (firstDigit(longIP, ipLength) == 1) {
- //add to childOne
- if (rootNode.getChildOne() != null) {
- rootNode.getChildOne().add(longIP, ipLength,
ipAddressObject);
- } else {
- rootNode.setChildOne(new TrieNode(longIP,
ipLength));
-
rootNode.getChildOne().setData(ipAddressObject);
- }
- } else {
- //add to childZero
- if (rootNode.getChildZero() != null) {
- rootNode.getChildZero().add(longIP, ipLength,
ipAddressObject);
- } else {
- rootNode.setChildZero(new TrieNode(longIP,
ipLength));
-
rootNode.getChildZero().setData(ipAddressObject);
- }
- }
- return this;
- }
+ if (firstDigit(longIP, ipLength) == 1) {
+ //add to childOne
+ if (rootNode.getChildOne() != null) {
+ rootNode.getChildOne().add(longIP, ipLength,
ipAddressObject);
+ } else {
+ rootNode.setChildOne(new TrieNode(longIP, ipLength));
+ rootNode.getChildOne().setData(ipAddressObject);
+ }
+ } else {
+ //add to childZero
+ if (rootNode.getChildZero() != null) {
+ rootNode.getChildZero().add(longIP, ipLength,
ipAddressObject);
+ } else {
+ rootNode.setChildZero(new TrieNode(longIP, ipLength));
+ rootNode.getChildZero().setData(ipAddressObject);
+ }
+ }
+ return this;
+ }
- public boolean FindExactMatch(long key, long keyLength) {
- if (firstDigit(key, keyLength) == 1)
- return rootNode.getChildOne() != null
- &&
rootNode.getChildOne().FindExactMatch(key, keyLength);
- else
- return rootNode.getChildZero() != null
- &&
rootNode.getChildZero().FindExactMatch(key, keyLength);
- }
+ public boolean findExactMatch(long key, long keyLength) {
+ if (firstDigit(key, keyLength) == 1) {
+ return rootNode.getChildOne() != null
+ && rootNode.getChildOne().findExactMatch(key, keyLength);
+ } else {
+ return rootNode.getChildZero() != null
+ && rootNode.getChildZero().findExactMatch(key, keyLength);
+ }
+ }
- // public Trie Merge(Trie trie) {
- // List<Long> keys = trie.GetKeys();
- // for (Long key : keys)
- // this.Add(Long.parseLong(key.toString()), Constants.MAX_KEY_LENGTH);
- // return this;
- // }
+ // public Trie Merge(Trie trie) {
+ // List<Long> keys = trie.GetKeys();
+ // for (Long key : keys)
+ // this.Add(Long.parseLong(key.toString()),
SummarizationConstants.MAX_KEY_LENGTH);
+ // return this;
+ // }
- public List<Long> GetKeys() {
- long key = 0;
- long position = Constants.MAX_KEY_LENGTH;
- List<Long> keys = new ArrayList<Long>();
+ public List<Long> getKeys() {
+ long key = 0;
+ long position = SummarizationConstants.MAX_KEY_LENGTH;
+ List<Long> keys = new ArrayList<Long>();
- if (rootNode.getChildZero() != null)
- keys = GetKeys(keys, rootNode.getChildZero(), key,
position);
+ if (rootNode.getChildZero() != null) {
+ keys = getKeys(keys, rootNode.getChildZero(), key, position);
+ }
- if (rootNode.getChildOne() != null)
- keys = GetKeys(keys, rootNode.getChildOne(), key,
position);
+ if (rootNode.getChildOne() != null) {
+ keys = getKeys(keys, rootNode.getChildOne(), key, position);
+ }
- return keys;
- }
+ return keys;
+ }
- private List<Long> GetKeys(List<Long> keys, TrieNode node, long key,
- long position) {
- key = key | (node.getKey() << (position -
node.getKeyLength()));
+ private List<Long> getKeys(List<Long> keys, TrieNode node, long key,
+ long position) {
+ key = key | (node.getKey() << (position - node.getKeyLength()));
- if (node.getChildZero() != null)
- keys = GetKeys(keys, node.getChildZero(), key,
position
- - node.getKeyLength());
- if (node.getChildOne() != null)
- keys = GetKeys(keys, node.getChildOne(), key, position
- - node.getKeyLength());
+ if (node.getChildZero() != null) {
+ keys = getKeys(keys, node.getChildZero(), key, position -
node.getKeyLength());
+ }
+ if (node.getChildOne() != null) {
+ keys = getKeys(keys, node.getChildOne(), key, position -
node.getKeyLength());
+ }
- for (long i = 0; i < node.getValueCount(); i++) {
- keys.add(key);
- }
- return keys;
- }
+ for (long i = 0; i < node.getValueCount(); i++) {
+ keys.add(key);
+ }
+ return keys;
+ }
- // returns the best match of keys for the given inputs
- public TrieNode FindBestMatch(long key, long keyLength) {
- // implements the best match by digging all the way to the
leaf based on
- // the key difference.
- if (firstDigit(key, keyLength) == 1) {
- if (rootNode.getChildOne() != null)
- return
rootNode.getChildOne().FindBestMatch(key, keyLength);
- else
- return null;
- } else if (rootNode.getChildZero() == null)
- return null;
- return rootNode.getChildZero().FindBestMatch(key, keyLength);
- }
+ // returns the best match of keys for the given inputs
+ public TrieNode findBestMatch(long key, long keyLength) {
+ // implements the best match by digging all the way to the leaf
based on
+ // the key difference.
+ if (firstDigit(key, keyLength) == 1) {
+ if (rootNode.getChildOne() != null) {
+ return rootNode.getChildOne().findBestMatch(key, keyLength);
+ } else {
+ return null;
+ }
+ } else if (rootNode.getChildZero() == null) {
+ return null;
+ }
+ return rootNode.getChildZero().findBestMatch(key, keyLength);
+ }
- public boolean Equals(Trie trie) {
- if (trie != null && (this.getCount() == trie.getCount())) {
- List<Long> list1 = this.GetKeys();
- List<Long> list2 = trie.GetKeys();
+ public boolean trieEquals(Trie trie) {
+ if (trie != null && (this.getCount() == trie.getCount())) {
+ List<Long> list1 = this.getKeys();
+ List<Long> list2 = trie.getKeys();
- for (int i = 0; i < this.nodeCount; i++) {
- if (!list1.get(i).equals(list2.get(i)))
- return false;
- }
- return true;
- }
- return false;
- }
+ for (int i = 0; i < this.nodeCount; i++) {
+ if (!list1.get(i).equals(list2.get(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
- public long getCount() {
- return nodeCount;
- }
+ public long getCount() {
+ return nodeCount;
+ }
- public boolean Remove(long key, long keyLength) {
- TrieNode root;
+ public boolean remove(long key, long keyLength) {
+ TrieNode root;
- root = firstDigit(key, keyLength) == 1 ?
rootNode.getChildOne()
- : rootNode.getChildZero();
+ root = firstDigit(key, keyLength) == 1 ? rootNode.getChildOne()
+ : rootNode.getChildZero();
- if (Remove(root, key, keyLength, 0)) {
- nodeCount--;
- return true;
- }
- return false;
- }
+ if (remove(root, key, keyLength, 0)) {
+ nodeCount--;
+ return true;
+ }
+ return false;
+ }
- private boolean Remove(TrieNode node, long key, long keyLength,
- long currentKeyLength) {
+ private boolean remove(TrieNode node, long key, long keyLength,
+ long currentKeyLength) {
- boolean success;
- TrieNode child;
+ boolean success;
+ TrieNode child;
- currentKeyLength += node.getKeyLength();
+ currentKeyLength += node.getKeyLength();
- if (currentKeyLength == keyLength && node.getKey() == (key &
1)) {
- // by setting node.m_valueCount to -1, we indicate
that it can be
- // deleted
- if (node.getValueCount() > 1)
- node.setValueCount(node.getValueCount() - 1);
- else {
- if (node.getChildZero() == null &&
node.getChildOne() == null)
-
node.setValueCount(node.getValueCount() - 1);
- else
- node.setValueCount(0);
- }
- return true;
- } else if (firstDigit(key, keyLength - currentKeyLength) == 1)
- child = node.getChildOne();
- else
- child = node.getChildZero();
+ if (currentKeyLength == keyLength && node.getKey() == (key & 1)) {
+ // by setting node.m_valueCount to -1, we indicate that it can be
+ // deleted
+ if (node.getValueCount() > 1) {
+ node.setValueCount(node.getValueCount() - 1);
+ } else {
+ if (node.getChildZero() == null && node.getChildOne() ==
null) {
+ node.setValueCount(node.getValueCount() - 1);
+ } else {
+ node.setValueCount(0);
+ }
+ }
+ return true;
+ } else if (firstDigit(key, keyLength - currentKeyLength) == 1) {
+ child = node.getChildOne();
+ } else {
+ child = node.getChildZero();
+ }
- success = ((child != null) && Remove(child, key, keyLength,
- currentKeyLength));
+ success = ((child != null) && remove(child, key, keyLength,
+ currentKeyLength));
- if (success && child.getValueCount() < 0) {
- // check if we need to delete nodes as we go back
along the path
- // the node is safe to be deleted if its valueCount =
-1
- if (child.getKey() == 1)
- node.setChildOne(null);
- else
- node.setChildZero(null);
+ if (success && child.getValueCount() < 0) {
+ // check if we need to delete nodes as we go back along the path
+ // the node is safe to be deleted if its valueCount = -1
+ if (child.getKey() == 1) {
+ node.setChildOne(null);
+ } else {
+ node.setChildZero(null);
+ }
- if (node.getValueCount() == 0 && node.getChildZero()
== null
- && node.getChildOne() == null)
- node.setValueCount(-1);
- }
- return success;
- }
+ if (node.getValueCount() == 0 && node.getChildZero() == null
+ && node.getChildOne() == null) {
+ node.setValueCount(-1);
+ }
+ }
+ return success;
+ }
- public void mostDominantKeyList() {
+ public void mostDominantKeyList() {
- TrieNode childOne = rootNode.getChildOne();
- TrieNode childZero = rootNode.getChildZero();
+ TrieNode childOne = rootNode.getChildOne();
+ TrieNode childZero = rootNode.getChildZero();
- if (childOne != null) {
- mostDominantKeyList(childOne, childOne.getKey(),
- Constants.MAX_KEY_LENGTH);
- }
- if (childZero != null) {
- mostDominantKeyList(childZero, childZero.getKey(),
- Constants.MAX_KEY_LENGTH);
- }
- }
+ if (childOne != null) {
+ mostDominantKeyList(childOne, childOne.getKey(),
+ SummarizationConstants.MAX_KEY_LENGTH);
+ }
+ if (childZero != null) {
+ mostDominantKeyList(childZero, childZero.getKey(),
+ SummarizationConstants.MAX_KEY_LENGTH);
+ }
+ }
- private void mostDominantKeyList(TrieNode node, long key, long
position) {
+ private void mostDominantKeyList(TrieNode node, long key, long position)
{
- TrieNode childZero = node.getChildZero();
- TrieNode childOne = node.getChildOne();
+ TrieNode childZero = node.getChildZero();
+ TrieNode childOne = node.getChildOne();
- key = key | (node.getKey() << (position -
node.getKeyLength()));
- position = position - node.getKeyLength();
- if (childZero != null) {
- mostDominantKeyList(childZero, key, position);
- }
- if (childOne != null) {
- mostDominantKeyList(childOne, key, position);
- }
- if ((node.getChildOne() != null) && (node.getChildZero() !=
null))
- keyList.add(new TrieNode(key, position));
- }
+ key = key | (node.getKey() << (position - node.getKeyLength()));
+ position = position - node.getKeyLength();
+ if (childZero != null) {
+ mostDominantKeyList(childZero, key, position);
+ }
+ if (childOne != null) {
+ mostDominantKeyList(childOne, key, position);
+ }
+ if ((node.getChildOne() != null) && (node.getChildZero() != null)) {
+ keyList.add(new TrieNode(key, position));
+ }
+ }
- public void printDot(String fileName) throws FileNotFoundException {
- FileOutputStream file = new FileOutputStream(fileName);
- PrintStream p = new PrintStream(file);
- long position = Constants.MAX_KEY_LENGTH;
- long currentKey = 0;
- p.println("digraph g {");
- rootNode.printDotNode(p, rootNode, position, currentKey);
- p.println("}");
- p.close();
- }
+ public void printDot(String fileName) throws FileNotFoundException {
+ FileOutputStream file = new FileOutputStream(fileName);
+ PrintStream p = new PrintStream(file);
+ long position = SummarizationConstants.MAX_KEY_LENGTH;
+ long currentKey = 0;
+ p.println("digraph g {");
+ rootNode.printDotNode(p, rootNode, position, currentKey);
+ p.println("}");
+ p.close();
+ }
- public ArrayList<String> listInternalNodes() {
- long position = Constants.MAX_KEY_LENGTH;
- long currentKey = 0;
- ArrayList<String> listOfNodes = new ArrayList<String>();
- rootNode.listInternalNodes(listOfNodes, position, currentKey);
- return listOfNodes;
- }
+ public ArrayList<String> listInternalNodes() {
+ long position = SummarizationConstants.MAX_KEY_LENGTH;
+ long currentKey = 0;
+ ArrayList<String> listOfNodes = new ArrayList<String>();
+ rootNode.listInternalNodes(listOfNodes, position, currentKey);
+ return listOfNodes;
+ }
- public ArrayList<String> listSummaryNodes() {
- long position = Constants.MAX_KEY_LENGTH;
- long currentKey = 0;
- ArrayList<String> listOfNodes = new ArrayList<String>();
- rootNode.listSummaryNodes(listOfNodes, position, currentKey);
- return listOfNodes;
- }
+ public ArrayList<String> listSummaryNodes() {
+ long position = SummarizationConstants.MAX_KEY_LENGTH;
+ long currentKey = 0;
+ ArrayList<String> listOfNodes = new ArrayList<String>();
+ rootNode.listSummaryNodes(listOfNodes, position, currentKey);
+ return listOfNodes;
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/TrieNode.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/TrieNode.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/summarization/TrieNode.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -11,428 +11,429 @@
*/
class TrieNode {
- private long key;
- private long keyLength;
- private long valueCount;
- private long childCount;
- private Object data;
- private TrieNode childZero;
- private TrieNode childOne;
- private SummarizationHelper helper = new SummarizationHelper();
+ private long key;
+ private long keyLength;
+ private long valueCount;
+ private long childCount;
+ private Object data;
+ private TrieNode childZero;
+ private TrieNode childOne;
+ private SummarizationHelper helper = new SummarizationHelper();
-
- private TrieNode(long ipAddress, long ipLength, long valueCount) {
- this.key = ipAddress;
- this.keyLength = ipLength;
- this.valueCount = valueCount;
- }
- /**
- *
- * @param ipAddress
- * @param ipLength
- */
- public TrieNode(long ipAddress, long ipLength) {
- this.key = ipAddress;
- this.keyLength = ipLength;
- valueCount = 1;
- childCount = 0;
- }
-
-
- public void incrementChildCount() {
- this.childCount++;
- }
+ private TrieNode(long ipAddress, long ipLength, long valueCount) {
+ this.key = ipAddress;
+ this.keyLength = ipLength;
+ this.valueCount = valueCount;
+ }
- public long getChildCount() {
- return this.childCount;
- }
+ /**
+ *
+ * @param ipAddress
+ * @param ipLength
+ */
+ public TrieNode(long ipAddress, long ipLength) {
+ this.key = ipAddress;
+ this.keyLength = ipLength;
+ valueCount = 1;
+ childCount = 0;
+ }
- public TrieNode getChildZero() {
- return childZero;
- }
- public void setChildZero(TrieNode childZero) {
- this.childZero = childZero;
- }
+ public void incrementChildCount() {
+ this.childCount++;
+ }
- public TrieNode getChildOne() {
- return childOne;
- }
+ public long getChildCount() {
+ return this.childCount;
+ }
- public void setChildOne(TrieNode childOne) {
- this.childOne = childOne;
- }
+ public TrieNode getChildZero() {
+ return childZero;
+ }
- public long getKey() {
- return key;
- }
+ public void setChildZero(TrieNode childZero) {
+ this.childZero = childZero;
+ }
- public long getKeyLength() {
- return keyLength;
- }
+ public TrieNode getChildOne() {
+ return childOne;
+ }
- private static long firstDigit(long key, long keyLength) {
- return (key >> (keyLength - 1)) & 1;
- }
+ public void setChildOne(TrieNode childOne) {
+ this.childOne = childOne;
+ }
- private static long[] getCommonPart(long keyA, long keyLengthA, long
keyB,
- long keyLengthB) {
- // truncate the keys so they are the same size (discard low
bits)
- if (keyLengthA > keyLengthB) {
- keyA >>= keyLengthA - keyLengthB;
- keyLengthA = keyLengthB;
- } else {
- keyB >>= keyLengthB - keyLengthA;
- }
+ public long getKey() {
+ return key;
+ }
- long diff = keyA ^ keyB;
- int count = 0;
- while (diff != 0) {
- diff >>= 1;
- count++;
- }
+ public long getKeyLength() {
+ return keyLength;
+ }
- long keyCommon = keyA >> count;
- long keyLengthCommon = keyLengthA - count;
+ private static long firstDigit(long key, long keyLength) {
+ return (key >> (keyLength - 1)) & 1;
+ }
- return new long[] { keyCommon, keyLengthCommon };
- }
+ private static long[] getCommonPart(long keyA, long keyLengthA, long
keyB,
+ long keyLengthB) {
+ // truncate the keys so they are the same size (discard low bits)
+ if (keyLengthA > keyLengthB) {
+ keyA >>= keyLengthA - keyLengthB;
+ keyLengthA = keyLengthB;
+ } else {
+ keyB >>= keyLengthB - keyLengthA;
+ }
- public boolean Equals(TrieNode node) {
- return node != null
- && (this.key == node.key && this.keyLength ==
node.keyLength);
- }
+ long diff = keyA ^ keyB;
+ int count = 0;
+ while (diff != 0) {
+ diff >>= 1;
+ count++;
+ }
- public boolean isKey() {
- return valueCount > 0;
- }
+ long keyCommon = keyA >> count;
+ long keyLengthCommon = keyLengthA - count;
- // no of times the key is repeated.
- public long getValueCount() {
- return valueCount;
- }
+ return new long[] {keyCommon, keyLengthCommon};
+ }
- public void setValueCount(long valueCount) {
- this.valueCount = valueCount;
- }
+ public boolean trieNodeEquals(TrieNode node) {
+ return node != null
+ && (this.key == node.key && this.keyLength ==
node.keyLength);
+ }
- public void setValueCount(Object value) {
- data = value;
- }
+ public boolean isKey() {
+ return valueCount > 0;
+ }
- public Object getData() {
- return data;
- }
+ // no of times the key is repeated.
+ public long getValueCount() {
+ return valueCount;
+ }
- public void setData(Object data) {
- this.data = data;
- }
+ public void setValueCount(long valueCount) {
+ this.valueCount = valueCount;
+ }
- public TrieNode add(long key, long keyLength, Object data) {
- this.childCount++;
+ public void setValueCount(Object value) {
+ data = value;
+ }
- if (key == this.key && keyLength == this.keyLength) {
- this.valueCount++;
- } else {
- long keyDiff;
- long keyLengthDiff;
- TrieNode newNode;
+ public Object getData() {
+ return data;
+ }
- long[] commonKeyAndKeyLength = getCommonPart(key,
keyLength,
- this.key, this.keyLength);
+ public void setData(Object data) {
+ this.data = data;
+ }
- long keyCommon = commonKeyAndKeyLength[0];
- long keyLengthCommon = commonKeyAndKeyLength[1];
+ public TrieNode add(long key, long keyLength, Object data) {
+ this.childCount++;
- keyLengthDiff = this.keyLength - keyLengthCommon;
- keyDiff = this.key - (keyCommon << keyLengthDiff);
+ if (key == this.key && keyLength == this.keyLength) {
+ this.valueCount++;
+ } else {
+ long keyDiff;
+ long keyLengthDiff;
+ TrieNode newNode;
- if (keyLengthDiff > 0) {
- newNode = new TrieNode(keyDiff,
keyLengthDiff);
- newNode.valueCount = this.valueCount;
- newNode.childZero = this.childZero;
- newNode.childOne = this.childOne;
- newNode.data = this.data;
- newNode.childCount = this.childCount - 1;
+ long[] commonKeyAndKeyLength = getCommonPart(key, keyLength,
+ this.key, this.keyLength);
- // update this node to hold common part
- this.key = keyCommon;
- this.keyLength = keyLengthCommon;
- this.valueCount = 0;
- this.data = null;
+ long keyCommon = commonKeyAndKeyLength[0];
+ long keyLengthCommon = commonKeyAndKeyLength[1];
- // and set the new node as child of this node
- if (firstDigit(keyDiff, keyLengthDiff) == 1) {
- this.childZero = null;
- this.childOne = newNode;
- } else {
- this.childZero = newNode;
- this.childOne = null;
- }
+ keyLengthDiff = this.keyLength - keyLengthCommon;
+ keyDiff = this.key - (keyCommon << keyLengthDiff);
- if (newNode.childOne == null &&
newNode.childZero == null) {
- this.childCount++;
- newNode.childCount = 0;
- }
- }
+ if (keyLengthDiff > 0) {
+ newNode = new TrieNode(keyDiff, keyLengthDiff);
+ newNode.valueCount = this.valueCount;
+ newNode.childZero = this.childZero;
+ newNode.childOne = this.childOne;
+ newNode.data = this.data;
+ newNode.childCount = this.childCount - 1;
- // process diff with the new key, if any
- if (keyLength > keyLengthCommon) {
- // get diff with the new key
- keyLengthDiff = keyLength - keyLengthCommon;
- keyDiff = key - (keyCommon << keyLengthDiff);
+ // update this node to hold common part
+ this.key = keyCommon;
+ this.keyLength = keyLengthCommon;
+ this.valueCount = 0;
+ this.data = null;
- if (firstDigit(keyDiff, keyLengthDiff) == 1) {
- if (this.childOne != null) {
- this.childOne.add(keyDiff,
keyLengthDiff, data);
- } else {
- this.childOne = new
TrieNode(keyDiff, keyLengthDiff);
- this.childOne.setData(data);
- }
- } else {
- if (this.childZero != null) {
- this.childZero.add(keyDiff,
keyLengthDiff, data);
- } else {
- this.childZero = new
TrieNode(keyDiff, keyLengthDiff);
- this.childZero.setData(data);
- }
- }
- } else {
- this.valueCount = 1;
- // this.data = data;
- }
- }
- return this;
- }
+ // and set the new node as child of this node
+ if (firstDigit(keyDiff, keyLengthDiff) == 1) {
+ this.childZero = null;
+ this.childOne = newNode;
+ } else {
+ this.childZero = newNode;
+ this.childOne = null;
+ }
- public boolean FindExactMatch(long key, long keyLength) {
+ if (newNode.childOne == null && newNode.childZero == null) {
+ this.childCount++;
+ newNode.childCount = 0;
+ }
+ }
- boolean matchStatus;
- long keyCommon;
- long keyLengthCommon;
+ // process diff with the new key, if any
+ if (keyLength > keyLengthCommon) {
+ // get diff with the new key
+ keyLengthDiff = keyLength - keyLengthCommon;
+ keyDiff = key - (keyCommon << keyLengthDiff);
- if (keyLength < this.keyLength) {
- matchStatus = false;
- return matchStatus;
- } else if (key == this.key && keyLength == this.keyLength) {
- matchStatus = true;
- return matchStatus;
- } else {
- long[] keyFields = getCommonPart(key, keyLength,
this.key,
- this.keyLength);
- keyCommon = keyFields[0];
- keyLengthCommon = keyFields[1];
+ if (firstDigit(keyDiff, keyLengthDiff) == 1) {
+ if (this.childOne != null) {
+ this.childOne.add(keyDiff, keyLengthDiff, data);
+ } else {
+ this.childOne = new TrieNode(keyDiff, keyLengthDiff);
+ this.childOne.setData(data);
+ }
+ } else {
+ if (this.childZero != null) {
+ this.childZero.add(keyDiff, keyLengthDiff, data);
+ } else {
+ this.childZero = new TrieNode(keyDiff,
keyLengthDiff);
+ this.childZero.setData(data);
+ }
+ }
+ } else {
+ this.valueCount = 1;
+ // this.data = data;
+ }
+ }
+ return this;
+ }
- long keyLengthDiff = keyLength - keyLengthCommon;
- long keyDiff = key - (keyCommon << keyLengthDiff);
+ public boolean findExactMatch(long key, long keyLength) {
- if (firstDigit(keyDiff, keyLengthDiff) == 1) {
- if (childOne != null)
- return
childOne.FindExactMatch(keyDiff, keyLengthDiff);
- else {
- matchStatus = false;
- return matchStatus;
- }
- } else {
- if (childZero != null)
- return
childZero.FindExactMatch(keyDiff, keyLengthDiff);
- else {
- matchStatus = false;
- return matchStatus;
- }
- }
- }
- }
+ boolean matchStatus;
+ long keyCommon;
+ long keyLengthCommon;
- public TrieNode FindBestMatch(long key, long keyLength) {
- // note : we don't need to worry about a node being a
terminator since
- // at the end, we will either have
- // - an exact match of the key, so the node will be a
terminator
- // - the last possible node on the path matching the key
which can't be
- // anything but a leaf, hence a terminator
+ if (keyLength < this.keyLength) {
+ matchStatus = false;
+ return matchStatus;
+ } else if (key == this.key && keyLength == this.keyLength) {
+ matchStatus = true;
+ return matchStatus;
+ } else {
+ long[] keyFields = getCommonPart(key, keyLength, this.key,
+ this.keyLength);
+ keyCommon = keyFields[0];
+ keyLengthCommon = keyFields[1];
- if (keyLength < this.keyLength
- || (key == this.key && keyLength ==
this.keyLength)) {
- return this;
- } else {
- long[] keyFields = getCommonPart(key, keyLength,
this.key,
- this.keyLength);
- long keyCommon = keyFields[0];
- long keyLengthCommon = keyFields[1];
+ long keyLengthDiff = keyLength - keyLengthCommon;
+ long keyDiff = key - (keyCommon << keyLengthDiff);
- long keyLengthDiff = keyLength - keyLengthCommon;
- long keyDiff = key - (keyCommon << keyLengthDiff);
+ if (firstDigit(keyDiff, keyLengthDiff) == 1) {
+ if (childOne != null) {
+ return childOne.findExactMatch(keyDiff, keyLengthDiff);
+ } else {
+ matchStatus = false;
+ return matchStatus;
+ }
+ } else {
+ if (childZero != null) {
+ return childZero.findExactMatch(keyDiff, keyLengthDiff);
+ } else {
+ matchStatus = false;
+ return matchStatus;
+ }
+ }
+ }
+ }
- if (firstDigit(keyDiff, keyLengthDiff) == 1) {
- if (childOne != null) {
- return
childOne.FindBestMatch(keyDiff, keyLengthDiff);
- } else {
- return this;
- }
- } else {
- if (childZero != null) {
- return
childZero.FindBestMatch(keyDiff, keyLengthDiff);
- } else {
- return this;
- }
- }
- }
- }
+ public TrieNode findBestMatch(long key, long keyLength) {
+ // note : we don't need to worry about a node being a terminator
since
+ // at the end, we will either have
+ // - an exact match of the key, so the node will be a terminator
+ // - the last possible node on the path matching the key which can't
be
+ // anything but a leaf, hence a terminator
- public TrieNode Clone() {
- TrieNode clone = new TrieNode(this.key, this.keyLength,
this.valueCount);
- if (this.childZero != null)
- clone.childZero = this.childZero.Clone();
+ if (keyLength < this.keyLength
+ || (key == this.key && keyLength == this.keyLength)) {
+ return this;
+ } else {
+ long[] keyFields = getCommonPart(key, keyLength, this.key,
+ this.keyLength);
+ long keyCommon = keyFields[0];
+ long keyLengthCommon = keyFields[1];
- if (this.childOne != null)
- clone.childOne = this.childOne.Clone();
+ long keyLengthDiff = keyLength - keyLengthCommon;
+ long keyDiff = key - (keyCommon << keyLengthDiff);
- return clone;
- }
+ if (firstDigit(keyDiff, keyLengthDiff) == 1) {
+ if (childOne != null) {
+ return childOne.findBestMatch(keyDiff, keyLengthDiff);
+ } else {
+ return this;
+ }
+ } else {
+ if (childZero != null) {
+ return childZero.findBestMatch(keyDiff, keyLengthDiff);
+ } else {
+ return this;
+ }
+ }
+ }
+ }
- public void printDotNode(PrintStream p, TrieNode node, long position,
- long currentKey) {
- TrieNode c0 = node.getChildZero();
- TrieNode c1 = node.getChildOne();
- long key = node.getKey();
- long mask = Constants.MAX_KEY_LENGTH - position;
- String keyString;
- String addrString;
+ public TrieNode trieNodeClone() {
+ TrieNode clone = new TrieNode(this.key, this.keyLength,
this.valueCount);
+ if (this.childZero != null) {
+ clone.childZero = this.childZero.trieNodeClone();
+ }
- if (key == -1) {
- addrString = keyString = "\"" + "0.0.0.0/0" + "\"";
- currentKey = 0;
- p.println(addrString + "
[shape=record,label=\"<f0>0.0.0.0/0|<f1>"
- + node.getChildCount() + "\"];" + "
// COUNT: "
- + node.getChildCount());
- } else {
- key = currentKey;
- keyString = helper.longToIP(key);
- String unquotedAddrString = keyString + "/" + mask;
- addrString = "\"" + keyString + "/" + mask + "\"";
- if (node.getData() == null) {
- // p.println(addrString + " [style=filled];"
+ " // COUNT: " +
- // node.getChildCount());
- p.println(addrString
- + "
[style=filled,shape=record,label=\"<f0>"
- + unquotedAddrString +
"|<f1>" + node.getChildCount()
- + "\"]" + "; // COUNT: " +
node.getChildCount());
- } else {
- // p.println(addrString + "; // COUNT: " +
- // node.getChildCount());
- p.println(addrString + "
[shape=record,label=\"<f0>"
- + unquotedAddrString +
"|<f1>" + node.getChildCount()
- + "\"]" + "; // COUNT: " +
node.getChildCount());
- }
- }
+ if (this.childOne != null) {
+ clone.childOne = this.childOne.trieNodeClone();
+ }
- if (c0 != null) {
- long c0Key = c0.getKey() << (position -
c0.getKeyLength());
- long c0Position = position - c0.getKeyLength();
- long c0Mask = Constants.MAX_KEY_LENGTH - c0Position;
- c0Key = c0Key | currentKey;
- p.println(addrString + " -> \"" +
helper.longToIP(c0Key) + "/"
- + c0Mask + "\"" + "[label=" + (c0Mask
- mask) + "];"
- + "// kl: " + c0.getKeyLength() + "
pos: " + position);
- printDotNode(p, c0, c0Position, c0Key);
- }
- if (c1 != null) {
- long c1Key = c1.getKey() << (position -
c1.getKeyLength());
- long c1Position = position - c1.getKeyLength();
- long c1Mask = Constants.MAX_KEY_LENGTH - c1Position;
- c1Key = c1Key | currentKey;
- p.println(addrString + " -> \"" +
helper.longToIP(c1Key) + "/"
- + c1Mask + "\"" + "[label=" + (c1Mask
- mask) + "];"
- + "// kl: " + c1.getKeyLength() + "
pos: " + position);
- printDotNode(p, c1, c1Position, c1Key);
- }
- }
+ return clone;
+ }
- public ArrayList<String> listInternalNodes(ArrayList<String>
listOfNodes,
- long position, long currentKey) {
- TrieNode c0 = this.getChildZero();
- TrieNode c1 = this.getChildOne();
- long key = this.getKey();
- long mask = Constants.MAX_KEY_LENGTH - position;
- String keyString;
- String addrString;
- TrieNode node = this;
+ public void printDotNode(PrintStream p, TrieNode node, long position,
+ long currentKey) {
+ TrieNode c0 = node.getChildZero();
+ TrieNode c1 = node.getChildOne();
+ long nodeKey = node.getKey();
+ long mask = SummarizationConstants.MAX_KEY_LENGTH - position;
+ String keyString;
+ String addrString;
- if (key == -1) {
- currentKey = 0;
- } else {
- key = currentKey;
- keyString = helper.longToIP(key);
- addrString = keyString + "/" + mask;
- if (node.getData() == null) {
- listOfNodes.add(addrString);
- }
- }
- if (c0 != null) {
- long c0Key = c0.getKey() << (position -
c0.getKeyLength());
- long c0Position = position - c0.getKeyLength();
- // long c0Mask = Constants.MAX_KEY_LENGTH -
c0Position;
- c0Key = c0Key | currentKey;
- c0.listInternalNodes(listOfNodes, c0Position, c0Key);
- }
- if (c1 != null) {
- long c1Key = c1.getKey() << (position -
c1.getKeyLength());
- long c1Position = position - c1.getKeyLength();
- // long c1Mask = Constants.MAX_KEY_LENGTH -
c1Position;
- c1Key = c1Key | currentKey;
- c1.listInternalNodes(listOfNodes, c1Position, c1Key);
- }
+ if (nodeKey == -1) {
+ keyString = "\"" + "0.0.0.0/0" + "\"";
+ addrString = keyString;
+ currentKey = 0;
+ p.println(addrString + "
[shape=record,label=\"<f0>0.0.0.0/0|<f1>"
+ + node.getChildCount() + "\"];" + " // COUNT: "
+ + node.getChildCount());
+ } else {
+ nodeKey = currentKey;
+ keyString = helper.longToIP(nodeKey);
+ String unquotedAddrString = keyString + "/" + mask;
+ addrString = "\"" + keyString + "/" + mask + "\"";
+ if (node.getData() == null) {
+ // p.println(addrString + " [style=filled];" + " // COUNT: "
+
+ // node.getChildCount());
+ p.println(addrString
+ + " [style=filled,shape=record,label=\"<f0>"
+ + unquotedAddrString + "|<f1>" + node.getChildCount()
+ + "\"]" + "; // COUNT: " + node.getChildCount());
+ } else {
+ // p.println(addrString + "; // COUNT: " +
+ // node.getChildCount());
+ p.println(addrString + " [shape=record,label=\"<f0>"
+ + unquotedAddrString + "|<f1>" + node.getChildCount()
+ + "\"]" + "; // COUNT: " + node.getChildCount());
+ }
+ }
- return listOfNodes;
- }
+ if (c0 != null) {
+ long c0Key = c0.getKey() << (position - c0.getKeyLength());
+ long c0Position = position - c0.getKeyLength();
+ long c0Mask = SummarizationConstants.MAX_KEY_LENGTH - c0Position;
+ c0Key = c0Key | currentKey;
+ p.println(addrString + " -> \"" + helper.longToIP(c0Key) + "/"
+ + c0Mask + "\"" + "[label=" + (c0Mask - mask) + "];"
+ + "// kl: " + c0.getKeyLength() + " pos: " + position);
+ printDotNode(p, c0, c0Position, c0Key);
+ }
+ if (c1 != null) {
+ long c1Key = c1.getKey() << (position - c1.getKeyLength());
+ long c1Position = position - c1.getKeyLength();
+ long c1Mask = SummarizationConstants.MAX_KEY_LENGTH - c1Position;
+ c1Key = c1Key | currentKey;
+ p.println(addrString + " -> \"" + helper.longToIP(c1Key) + "/"
+ + c1Mask + "\"" + "[label=" + (c1Mask - mask) + "];"
+ + "// kl: " + c1.getKeyLength() + " pos: " + position);
+ printDotNode(p, c1, c1Position, c1Key);
+ }
+ }
- /**
- *
- * This method returns all the nodes which are necessary to summarize
all
- * inputs.
- *
- * @param listOfNodes
- * @param position
- * @param currentKey
- * @return
- */
- public ArrayList<String> listSummaryNodes(ArrayList<String>
listOfNodes,
- long position, long currentKey) {
- TrieNode c0 = this.getChildZero();
- TrieNode c1 = this.getChildOne();
- long key = this.getKey();
- long mask = Constants.MAX_KEY_LENGTH - position;
- String keyString;
- String addrString;
- TrieNode node = this;
+ public ArrayList<String> listInternalNodes(ArrayList<String> listOfNodes,
+ long position, long currentKey) {
+ TrieNode c0 = this.getChildZero();
+ TrieNode c1 = this.getChildOne();
+ long mask = SummarizationConstants.MAX_KEY_LENGTH - position;
+ String keyString;
+ String addrString;
+ TrieNode node = this;
- if (key == -1) {
- currentKey = 0;
- } else {
- key = currentKey;
- keyString = helper.longToIP(key);
- addrString = keyString + "/" + mask;
- if (node.getData() == null
- && (c0.getData() != null ||
c1.getData() != null)) {
- listOfNodes.add(addrString);
- }
- }
- if (c0 != null) {
- long c0Key = c0.getKey() << (position -
c0.getKeyLength());
- long c0Position = position - c0.getKeyLength();
- // long c0Mask = Constants.MAX_KEY_LENGTH -
c0Position;
- c0Key = c0Key | currentKey;
- c0.listSummaryNodes(listOfNodes, c0Position, c0Key);
- }
- if (c1 != null) {
- long c1Key = c1.getKey() << (position -
c1.getKeyLength());
- long c1Position = position - c1.getKeyLength();
- // long c1Mask = Constants.MAX_KEY_LENGTH -
c1Position;
- c1Key = c1Key | currentKey;
- c1.listSummaryNodes(listOfNodes, c1Position, c1Key);
- }
+ if (key == -1) {
+ currentKey = 0;
+ } else {
+ key = currentKey;
+ keyString = helper.longToIP(key);
+ addrString = keyString + "/" + mask;
+ if (node.getData() == null) {
+ listOfNodes.add(addrString);
+ }
+ }
+ if (c0 != null) {
+ long c0Key = c0.getKey() << (position - c0.getKeyLength());
+ long c0Position = position - c0.getKeyLength();
+ // long c0Mask = SummarizationConstants.MAX_KEY_LENGTH -
c0Position;
+ c0Key = c0Key | currentKey;
+ c0.listInternalNodes(listOfNodes, c0Position, c0Key);
+ }
+ if (c1 != null) {
+ long c1Key = c1.getKey() << (position - c1.getKeyLength());
+ long c1Position = position - c1.getKeyLength();
+ // long c1Mask = SummarizationConstants.MAX_KEY_LENGTH -
c1Position;
+ c1Key = c1Key | currentKey;
+ c1.listInternalNodes(listOfNodes, c1Position, c1Key);
+ }
- return listOfNodes;
- }
-}
\ No newline at end of file
+ return listOfNodes;
+ }
+
+ /**
+ *
+ * This method returns all the nodes which are necessary to summarize all
+ * inputs.
+ *
+ * @param listOfNodes
+ * @param position
+ * @param currentKey
+ * @return
+ */
+ public ArrayList<String> listSummaryNodes(ArrayList<String> listOfNodes,
+ long position, long currentKey) {
+ TrieNode c0 = this.getChildZero();
+ TrieNode c1 = this.getChildOne();
+ long mask = SummarizationConstants.MAX_KEY_LENGTH - position;
+ String keyString;
+ String addrString;
+ TrieNode node = this;
+
+ if (key == -1) {
+ currentKey = 0;
+ } else {
+ key = currentKey;
+ keyString = helper.longToIP(key);
+ addrString = keyString + "/" + mask;
+ if (node.getData() == null
+ && (c0.getData() != null || c1.getData() != null)) {
+ listOfNodes.add(addrString);
+ }
+ }
+ if (c0 != null) {
+ long c0Key = c0.getKey() << (position - c0.getKeyLength());
+ long c0Position = position - c0.getKeyLength();
+ // long c0Mask = SummarizationConstants.MAX_KEY_LENGTH -
c0Position;
+ c0Key = c0Key | currentKey;
+ c0.listSummaryNodes(listOfNodes, c0Position, c0Key);
+ }
+ if (c1 != null) {
+ long c1Key = c1.getKey() << (position - c1.getKeyLength());
+ long c1Position = position - c1.getKeyLength();
+ // long c1Mask = SummarizationConstants.MAX_KEY_LENGTH -
c1Position;
+ c1Key = c1Key | currentKey;
+ c1.listSummaryNodes(listOfNodes, c1Position, c1Key);
+ }
+
+ return listOfNodes;
+ }
+}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/CleanupSchedulerAction.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/CleanupSchedulerAction.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/CleanupSchedulerAction.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -23,70 +23,70 @@
*/
public class CleanupSchedulerAction extends Action implements
SchedulerAction {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private boolean isInitialized = false;
- private LookupServiceDAO dao;
- /**
- * lsTTL parameter value from configuration file - configuration.xml
- */
- private int lsTTL;
-
+ private boolean isInitialized = false;
+ private LookupServiceDAO dao;
+ /**
+ * lsTTL parameter value from configuration file - configuration.xml
+ */
+ private int lsTTL;
- public CleanupSchedulerAction() {
- super();
- }
- private void initialize() throws PerfSONARException {
- dao=LookupServiceDAOFactory.getDAO();
- Option lsTTLOption = getOption("lsTTL");
- if (lsTTLOption != null) {
- try {
- lsTTL =
Integer.parseInt(lsTTLOption.getValue());
- logger.debug("Setting LS TTL to [" + lsTTL +
"]");
- } catch (NumberFormatException ex) {
- logger.debug("Taking default LS TTL");
- }
- } else {
- logger.debug("Taking default LS TTL");
- }
- }
+ public CleanupSchedulerAction() {
+ super();
+ }
- public void runAction() {
- try {
- if (!isInitialized) {
- // create Service Engine for Cleanup
- initialize();
- isInitialized = true;
- }
- cleanup();
- } catch (PerfSONARException e) {
- logger.error(e.getMessage());
- }
- }
-
- /**
- * this method invokes cleanup operation
- *
- * @throws PerfSONARException
- */
- private void cleanup() throws PerfSONARException {
-
- // current timestamp in sec
- long now = System.currentTimeMillis() / 1000;
-
- logger.debug("[LSCleanup] cleanup action started,
timestamp=[" + now+ "]s lsTTL=[" + lsTTL + "]s");
+ private void initialize() throws PerfSONARException {
+ dao = LookupServiceDAOFactory.getDAO();
+ Option lsTTLOption = getOption("lsTTL");
+ if (lsTTLOption != null) {
+ try {
+ lsTTL = Integer.parseInt(lsTTLOption.getValue());
+ logger.debug("Setting LS TTL to [" + lsTTL + "]");
+ } catch (NumberFormatException ex) {
+ logger.debug("Taking default LS TTL");
+ }
+ } else {
+ logger.debug("Taking default LS TTL");
+ }
+ }
- // perform cleanup operation
- int elementRemoved = dao.cleanupLookupInfo(now, lsTTL);
- if (elementRemoved > 0) {
- // if some elements were removed,
modificationCounterComponent should be incremented
- ConfigurationManager cm =
ConfigurationManager.getInstance();
- ModificationCounterComponent component =
(ModificationCounterComponent) cm
-
.getConfiguration().getAuxiliaryComponent(
-
"modificationCounterComponent");
- component.incrementCounter();
- }
- }
+ public void runAction() {
+ try {
+ if (!isInitialized) {
+ // create Service Engine for Cleanup
+ initialize();
+ isInitialized = true;
+ }
+ cleanup();
+ } catch (PerfSONARException e) {
+ logger.error(e.getMessage());
+ }
+ }
-}
\ No newline at end of file
+ /**
+ * this method invokes cleanup operation
+ *
+ * @throws PerfSONARException
+ */
+ private void cleanup() throws PerfSONARException {
+
+ // current timestamp in sec
+ long now = System.currentTimeMillis() / 1000;
+
+ logger.debug("[LSCleanup] cleanup action started, timestamp=[" + now
+ "]s lsTTL=[" + lsTTL + "]s");
+
+ // perform cleanup operation
+ int elementRemoved = dao.cleanupLookupInfo(now, lsTTL);
+ if (elementRemoved > 0) {
+ // if some elements were removed, modificationCounterComponent
should be incremented
+ ConfigurationManager cm = ConfigurationManager.getInstance();
+ ModificationCounterComponent component =
(ModificationCounterComponent) cm
+ .getConfiguration().getAuxiliaryComponent(
+ "modificationCounterComponent");
+ component.incrementCounter();
+ }
+ }
+
+}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/GLSRegistrationAction.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/GLSRegistrationAction.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/GLSRegistrationAction.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -29,149 +29,149 @@
*/
public class GLSRegistrationAction extends AbstractRegistrationAction {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private ModificationCounterComponent modificationCounterComponent;
+ private ModificationCounterComponent modificationCounterComponent;
- public final static String NR_OF_GLS_REGISTRATION_PARAM =
"nrOfGLSRegistration";
- // Default number of registration to GLS in one iteration (if not
provided in the configuration file)
- private int nrOfGLSRegistration = 1;
- private LinkedList<URL> glsAddresses;
- private List<Element> registeredKeys = new ArrayList<Element>();
+ public static final String NR_OF_GLS_REGISTRATION_PARAM =
"nrOfGLSRegistration";
+ // Default number of registration to GLS in one iteration (if not
provided in the configuration file)
+ private int nrOfGLSRegistration = 1;
+ private LinkedList<URL> glsAddresses;
+ private List<Element> registeredKeys = new ArrayList<Element>();
- public void init() throws PerfSONARException {
- dataSource = getRegisterDataSource();
- registrationEventType = getRegistrationEventType();
- lookupInformation = getLookupInformation();
- modificationCounterComponent = (ModificationCounterComponent)
ConfigurationManager
-
.getInstance().getConfiguration().getAuxiliaryComponent(
-
"modificationCounterComponent");
- nrOfGLSRegistration = getNrOfGlsRegistration();
- glsAddresses = getLSAddresses();
- registrator = getLSRegistrator();
- }
+ public void init() throws PerfSONARException {
+ dataSource = getRegisterDataSource();
+ registrationEventType = getRegistrationEventType();
+ lookupInformation = getLookupInformation();
+ modificationCounterComponent = (ModificationCounterComponent)
ConfigurationManager
+ .getInstance().getConfiguration().getAuxiliaryComponent(
+ "modificationCounterComponent");
+ nrOfGLSRegistration = getNrOfGlsRegistration();
+ glsAddresses = getLSAddresses();
+ registrator = getLSRegistrator();
+ }
- public void execute() {
- boolean sendKeepAlive = false;
- ServiceMessage response;
+ public void execute() {
+ boolean sendKeepAlive = false;
+ ServiceMessage response;
- if
(modificationCounterComponent.getDiffsBetweenRegistrationCounter() == 0) {
- // There are no changes - send KeepAlive to GLS
- logger.debug("No changes in DB, we'll send KeepAlive
messages");
- sendKeepAlive = true;
- } else {
- // Get summarization data and send it to GLS
- logger.debug("There are changes in the DB - we'll
send summarized data");
- sendKeepAlive = false;
- }
+ if
(modificationCounterComponent.getDiffsBetweenRegistrationCounter() == 0) {
+ // There are no changes - send KeepAlive to GLS
+ logger.debug("No changes in DB, we'll send KeepAlive messages");
+ sendKeepAlive = true;
+ } else {
+ // Get summarization data and send it to GLS
+ logger.debug("There are changes in the DB - we'll send
summarized data");
+ sendKeepAlive = false;
+ }
-
modificationCounterComponent.resetDiffsBetweenRegistrationCounter();
+ modificationCounterComponent.resetDiffsBetweenRegistrationCounter();
- if (sendKeepAlive) {
- for (int c = 0; c < registeredKeys.size(); c++) {
- Element registeredKey = registeredKeys.get(c);
+ if (sendKeepAlive) {
+ for (int c = 0; c < registeredKeys.size(); c++) {
+ Element registeredKey = registeredKeys.get(c);
- // send keep alive to last used gLS
- URL glsAddress = glsAddresses.getFirst();
- try {
- response =
registrator.keepalive(registeredKey, glsAddress);
- logger.trace("KeepAlive message sent
to gLS: " + glsAddress);
+ // send keep alive to last used gLS
+ URL glsAddress = glsAddresses.getFirst();
+ try {
+ response = registrator.keepalive(registeredKey,
glsAddress);
+ logger.trace("KeepAlive message sent to gLS: " +
glsAddress);
- if
(isResponseSuccess(getResponseMetadata(response))) {
- logger.debug(glsAddress + "
accepted our KeepAlive");
- } else {
- logger.debug(glsAddress + "
refused our KeepAlive");
- // We remove the key as it
seems it doesn't exist in the gLS cloud anymore
-
registeredKeys.remove(registeredKey);
- }
+ if (isResponseSuccess(getResponseMetadata(response))) {
+ logger.debug(glsAddress + " accepted our KeepAlive");
+ } else {
+ logger.debug(glsAddress + " refused our KeepAlive");
+ // We remove the key as it seems it doesn't exist in
the gLS cloud anymore
+ registeredKeys.remove(registeredKey);
+ }
- } catch (PerfSONARException e) {
- logger.warn("Problem with sending
KeepAlive message to: " + glsAddress.toString());
- poolElement(glsAddresses);
- registeredKeys.remove(registeredKey);
- }
- }
- }
+ } catch (PerfSONARException e) {
+ logger.warn("Problem with sending KeepAlive message to:
" + glsAddress.toString());
+ poolElement(glsAddresses);
+ registeredKeys.remove(registeredKey);
+ }
+ }
+ }
- // If registration using KeepAlive message failed or there
wasn't any registration before
- if (registeredKeys.isEmpty()) {
- ServiceMessage serviceRequestMessage = null;
- try {
- serviceRequestMessage =
getLSRegisterMessage();
- } catch (PerfSONARException e) {
- logger.warn("Cannot build registration
message!");
- logger.warn(e.getMessage());
- }
+ // If registration using KeepAlive message failed or there wasn't
any registration before
+ if (registeredKeys.isEmpty()) {
+ ServiceMessage serviceRequestMessage = null;
+ try {
+ serviceRequestMessage = getLSRegisterMessage();
+ } catch (PerfSONARException e) {
+ logger.warn("Cannot build registration message!");
+ logger.warn(e.getMessage());
+ }
- int nrOfGls = glsAddresses.size();
+ int nrOfGls = glsAddresses.size();
- if (serviceRequestMessage != null) {
- // Try to register to first working gLS from
list of all (n is a nrOfGLSRegistration)
- while (nrOfGls > 0) {
- Message requestMessage = (Message)
serviceRequestMessage.getElement();
- URL glsAddress =
glsAddresses.get(registeredKeys.size());
- try {
- // Send registration message
to gLS
- response =
registrator.register(requestMessage, glsAddress);
- logger.trace("Registration
message sent to gLS: " + glsAddress.toString());
-
- // Check the registration is
actually done
- Element registeredKey =
getKeyFromResponse(response);
- if (registeredKey == null) {
-
logger.debug(glsAddress + " didn't return a registration key, trying with
another gLS");
-
poolElement(glsAddresses);
- } else {
- // The element is
registered
-
logger.debug(glsAddress + " returned a valid registration key, we store it");
-
registeredKeys.add(registeredKey);
- if
(registeredKeys.size() == nrOfGLSRegistration) {
- break;
- }
- }
- } catch (PerfSONARException e) {
- logger.warn("Problem with
sending registration message to: " + glsAddress.toString());
- poolElement(glsAddresses);
- }
- nrOfGls--;
- }
- } else {
- logger.warn("Cannot build
glsRegistrationMessage");
- }
- }
+ if (serviceRequestMessage != null) {
+ // Try to register to first working gLS from list of all (n
is a nrOfGLSRegistration)
+ while (nrOfGls > 0) {
+ Message requestMessage = (Message)
serviceRequestMessage.getElement();
+ URL glsAddress = glsAddresses.get(registeredKeys.size());
+ try {
+ // Send registration message to gLS
+ response = registrator.register(requestMessage,
glsAddress);
+ logger.trace("Registration message sent to gLS: " +
glsAddress.toString());
- if (registeredKeys.isEmpty()) {
- logger.warn("Registration to the gLS cloud failed");
- } else {
- logger.info("Registration to the gLS cloud
successful");
- }
+ // Check the registration is actually done
+ Element registeredKey = getKeyFromResponse(response);
+ if (registeredKey == null) {
+ logger.debug(glsAddress + " didn't return a
registration key, trying with another gLS");
+ poolElement(glsAddresses);
+ } else {
+ // The element is registered
+ logger.debug(glsAddress + " returned a valid
registration key, we store it");
+ registeredKeys.add(registeredKey);
+ if (registeredKeys.size() ==
nrOfGLSRegistration) {
+ break;
+ }
+ }
+ } catch (PerfSONARException e) {
+ logger.warn("Problem with sending registration
message to: " + glsAddress.toString());
+ poolElement(glsAddresses);
+ }
+ nrOfGls--;
+ }
+ } else {
+ logger.warn("Cannot build glsRegistrationMessage");
+ }
+ }
- }
+ if (registeredKeys.isEmpty()) {
+ logger.warn("Registration to the gLS cloud failed");
+ } else {
+ logger.info("Registration to the gLS cloud successful");
+ }
- private void poolElement(LinkedList<URL> glsAddresses) {
- URL brokenGLSURL = glsAddresses.poll();
- glsAddresses.add(brokenGLSURL);
- }
+ }
- public void refresh() {
+ private void poolElement(LinkedList<URL> glsAddresses) {
+ URL brokenGLSURL = glsAddresses.poll();
+ glsAddresses.add(brokenGLSURL);
+ }
- }
+ public void refresh() {
- /*
- * returns value of nrOfGLSRegistration defined in configuration.xml
- */
- private int getNrOfGlsRegistration() {
- Option option = getOption(NR_OF_GLS_REGISTRATION_PARAM);
- if (option != null) {
- try {
- return Integer.valueOf(option.getValue());
- } catch (NumberFormatException ex) {
- ex.printStackTrace();
- return nrOfGLSRegistration;
- }
+ }
- } else {
- return nrOfGLSRegistration;
- }
- }
+ /*
+ * returns value of nrOfGLSRegistration defined in configuration.xml
+ */
+ private int getNrOfGlsRegistration() {
+ Option option = getOption(NR_OF_GLS_REGISTRATION_PARAM);
+ if (option != null) {
+ try {
+ return Integer.valueOf(option.getValue());
+ } catch (NumberFormatException ex) {
+ ex.printStackTrace();
+ return nrOfGLSRegistration;
+ }
+ } else {
+ return nrOfGLSRegistration;
+ }
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/SummarySynchronizationAction.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/SummarySynchronizationAction.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/schedulerActions/SummarySynchronizationAction.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -17,113 +17,112 @@
*
* Action synchronize summary data. This component uses
* ModificationCounterComponent which store nr of modification. This action
- * bases on 2 constant. NR_OF_MODIFICATIONS (boundary value of modification
nr;
- * when nr of modification is greater then NR_OF_MODIFICATIONS then
+ * bases on 2 constant. nrOfModifications (boundary value of modification nr;
+ * when nr of modification is greater then nrOfModifications then
* synchronization is required) NR_OF_ITERATION - if this value is equal
* iteration nr summarization process is executed only if exists any
* modifications
*
* @author Slawomir Trzaszczka
*/
-public class SummarySynchronizationAction extends Action implements
- SchedulerAction {
+public class SummarySynchronizationAction extends Action implements
SchedulerAction {
- private int NR_OF_MODIFICATIONS;
- private boolean summarizationInProgress=false;
- private int NR_OF_ITERATIONS;
- private int iteration = 0;
- private boolean firstIteration = true;
- private boolean initialized = false;
- private SummarizationDAO summarizationDao;
- private SummarizationBuilder builder;
- private ModificationCounterComponent component;
+ private int nrOfModifications;
+ private boolean summarizationInProgress = false;
+ private int nrOfIterations;
+ private int iteration = 0;
+ private boolean firstIteration = true;
+ private boolean initialized = false;
+ private SummarizationDAO summarizationDao;
+ private SummarizationBuilder builder;
+ private ModificationCounterComponent component;
- public SummarySynchronizationAction() throws PerfSONARException {
- super();
- }
-
- /**
- *
- * initializes Action variables which are used in execution of this
action
- *
- */
- private void initializeElement() {
- try {
- summarizationDao =
LookupServiceDAOFactory.getSumarizationDAO();
- builder = new SummarizationBuilder(summarizationDao);
- } catch (PerfSONARException e) {
- e.printStackTrace();
- }
+ public SummarySynchronizationAction() throws PerfSONARException {
+ super();
+ }
- try {
- ConfigurationManager cm =
ConfigurationManager.getInstance();
+ /**
+ *
+ * initializes Action variables which are used in execution of this
action
+ *
+ */
+ private void initializeElement() {
+ try {
+ summarizationDao = LookupServiceDAOFactory.getSumarizationDAO();
+ builder = new SummarizationBuilder(summarizationDao);
+ } catch (PerfSONARException e) {
+ e.printStackTrace();
+ }
- component = (ModificationCounterComponent)
cm.getConfiguration()
-
.getAuxiliaryComponent("modificationCounterComponent");
- } catch (PerfSONARException e) {
- e.printStackTrace();
- }
+ try {
+ ConfigurationManager cm = ConfigurationManager.getInstance();
- NR_OF_MODIFICATIONS = getOption("nrOfModifications")
- .getValueAsInteger();
- NR_OF_ITERATIONS =
getOption("nrOfIterations").getValueAsInteger();
- }
+ component = (ModificationCounterComponent) cm.getConfiguration()
+ .getAuxiliaryComponent("modificationCounterComponent");
+ } catch (PerfSONARException e) {
+ e.printStackTrace();
+ }
- public void runAction() {
- if(!summarizationInProgress){
- int nrOfChanges = 0;
+ nrOfModifications = getOption("nrOfModifications")
+ .getValueAsInteger();
+ nrOfIterations = getOption("nrOfIterations").getValueAsInteger();
+ }
- if (!initialized) {
- initializeElement();
- initialized = true;
- }
+ public void runAction() {
+ if (!summarizationInProgress) {
+ int nrOfChanges = 0;
- nrOfChanges = component.getCounter();
- try {
+ if (!initialized) {
+ initializeElement();
+ initialized = true;
+ }
- if (firstIteration) {
- // in first iteration summary data is
built
- synchronizeSummarizationCollection();
- component.resetCounter();
- iteration++;
- firstIteration = false;
- } else if (iteration != NR_OF_ITERATIONS) {
+ nrOfChanges = component.getCounter();
+ try {
- if (nrOfChanges >=
NR_OF_MODIFICATIONS) {
- // if nr of changes is
greater then const
- // NR_OF_MODIFICATIONS ->
summary data must be refreshed
-
synchronizeSummarizationCollection();
- component.resetCounter();
- }
- iteration++;
- } else {
- // if NR_OF_ITERATION is equal
iteration nr ...
- iteration = 0;
- // summarization is obligatory when
there are any
- // differences
- if (nrOfChanges != 0) {
-
synchronizeSummarizationCollection();
- component.resetCounter();
- }
- }
- } catch (PerfSONARException e1) {
- e1.printStackTrace();
- }finally{
- summarizationInProgress=false;
- }
- }
- }
-
- /**
- *
- * invokes summarization process
- *
- * @throws PerfSONARException
- */
- private void synchronizeSummarizationCollection() throws
PerfSONARException {
- summarizationDao.removeSummaryData();
- List<Element> datas = builder.build();
- summarizationDao.putBatchData(datas, 100);
- }
+ if (firstIteration) {
+ // in first iteration summary data is built
+ synchronizeSummarizationCollection();
+ component.resetCounter();
+ iteration++;
+ firstIteration = false;
+ } else if (iteration != nrOfIterations) {
+ if (nrOfChanges >= nrOfModifications) {
+ // if nr of changes is greater then const
+ // nrOfModifications -> summary data must be
refreshed
+ synchronizeSummarizationCollection();
+ component.resetCounter();
+ }
+ iteration++;
+ } else {
+ // if NR_OF_ITERATION is equal iteration nr ...
+ iteration = 0;
+ // summarization is obligatory when there are any
+ // differences
+ if (nrOfChanges != 0) {
+ synchronizeSummarizationCollection();
+ component.resetCounter();
+ }
+ }
+ } catch (PerfSONARException e1) {
+ e1.printStackTrace();
+ } finally {
+ summarizationInProgress = false;
+ }
+ }
+ }
+
+ /**
+ *
+ * invokes summarization process
+ *
+ * @throws PerfSONARException
+ */
+ private void synchronizeSummarizationCollection() throws
PerfSONARException {
+ summarizationDao.removeSummaryData();
+ List<Element> datas = builder.build();
+ summarizationDao.putBatchData(datas, 100);
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/servlets/ExistDbInitializerServlet.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/servlets/ExistDbInitializerServlet.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/servlets/ExistDbInitializerServlet.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -35,156 +35,158 @@
@SuppressWarnings("serial")
public class ExistDbInitializerServlet extends BasicServlet {
- /**
- * Main function which initializes database
- *
- * @param dbContentDirPath
- * - path to directory where database resource files are
stored
- * @param configManager
- * @return
- * @throws IOException
- * @throws PerfSONARException
- */
- public boolean initializeDatabase(String dbContentDirPath,
- ConfigurationManager configManager) throws
PerfSONARException {
- try {
+ /**
+ * Main function which initializes database
+ *
+ * @param dbContentDirPath
+ * - path to directory where database resource files are
stored
+ * @param configManager
+ * @return
+ * @throws IOException
+ * @throws PerfSONARException
+ */
+ public boolean initializeDatabase(String dbContentDirPath,
+ ConfigurationManager configManager) throws PerfSONARException {
+ try {
- DataSourceComponent existDbComponent =
(DataSourceComponent) configManager
- .getConfiguration()
-
.getAuxiliaryComponent("existDataSource");
+ DataSourceComponent existDbComponent = (DataSourceComponent)
configManager
+ .getConfiguration()
+ .getAuxiliaryComponent("existDataSource");
- XMLDBComponent myXMLDbComponent = (XMLDBComponent)
configManager
- .getConfiguration()
-
.getAuxiliaryComponent("existAccessManager");
+ XMLDBComponent myXMLDbComponent = (XMLDBComponent) configManager
+ .getConfiguration()
+ .getAuxiliaryComponent("existAccessManager");
- String dbUrl = existDbComponent.getUrl();
- String mainCollection =
existDbComponent.getMainCollection();
+ String dbUrl = existDbComponent.getUrl();
+ String mainCollection = existDbComponent.getMainCollection();
- // First we create our own users
- Collection adminColl =
myXMLDbComponent.getDBCollectionAs(dbUrl,
myXMLDbComponent.getOption("username").getValue(),
myXMLDbComponent.getOption("password").getValue());
- UserManagementService usrMngmtService =
getUserManagmentService(adminColl);
+ // First we create our own users
+ Collection adminColl = myXMLDbComponent.getDBCollectionAs(dbUrl,
+ myXMLDbComponent.getOption("username").getValue(),
+ myXMLDbComponent.getOption("password").getValue());
+ UserManagementService usrMngmtService =
getUserManagmentService(adminColl);
- User user =
createUser(existDbComponent.getUsername(), existDbComponent.getPassword(),
"dba");
- user.setHome(XmldbURI.xmldbUriFor(mainCollection));
+ User user = createUser(existDbComponent.getUsername(),
existDbComponent.getPassword(), "dba");
+ user.setHome(XmldbURI.xmldbUriFor(mainCollection));
- if (existDbComponent.hasReadOnlyUser()) {
- User
userRO=createUser(existDbComponent.getUsernameRO(),
-
existDbComponent.getPasswordRO(), "guest");
- if (usrMngmtService.getUser("guest") != null)
{
- logger.debug("Gest user already
existing, checking it");
- usrMngmtService.updateUser(userRO);
- } else {
- logger.info("Creating guest user");
- usrMngmtService.addUser(userRO);
- }
- }
+ if (existDbComponent.hasReadOnlyUser()) {
+ User userRO = createUser(existDbComponent.getUsernameRO(),
+ existDbComponent.getPasswordRO(), "guest");
+ if (usrMngmtService.getUser("guest") != null) {
+ logger.debug("Gest user already existing, checking it");
+ usrMngmtService.updateUser(userRO);
+ } else {
+ logger.info("Creating guest user");
+ usrMngmtService.addUser(userRO);
+ }
+ }
- if
(usrMngmtService.getUser(existDbComponent.getUsername()) != null) {
- logger.debug("LS user already existing,
checking it");
- usrMngmtService.updateUser(user);
- } else {
- logger.info("Creating dba user");
- usrMngmtService.addUser(user);
- }
+ if (usrMngmtService.getUser(existDbComponent.getUsername()) !=
null) {
+ logger.debug("LS user already existing, checking it");
+ usrMngmtService.updateUser(user);
+ } else {
+ logger.info("Creating dba user");
+ usrMngmtService.addUser(user);
+ }
- // Then we create our Collections
- Collection collection =
myXMLDbComponent.getDBCollectionAs(dbUrl, existDbComponent.getUsername(),
existDbComponent.getPassword());
- CollectionManagementService colMngmtService =
getCollectionManagmentService(collection);
+ // Then we create our Collections
+ Collection collection =
myXMLDbComponent.getDBCollectionAs(dbUrl, existDbComponent.getUsername(),
existDbComponent.getPassword());
+ CollectionManagementService colMngmtService =
getCollectionManagmentService(collection);
- logger.info("Creating mainCollection and a backup
copy");
- Collection lsCollection =
colMngmtService.createCollection(mainCollection);
- Collection copyCollection =
colMngmtService.createCollection("copy");
+ logger.info("Creating mainCollection and a backup copy");
+ Collection lsCollection =
colMngmtService.createCollection(mainCollection);
+ Collection copyCollection =
colMngmtService.createCollection("copy");
- // removes all existing resources from store
collection (remove old registered services stored in the collection)
- logger.info("Creating and emptying the /store
collection");
- Collection storeCollection =
colMngmtService.createCollection(mainCollection + "/store");
- colMngmtService.removeCollection(mainCollection +
"/store");
- storeCollection =
colMngmtService.createCollection(mainCollection + "/store");
+ // removes all existing resources from store collection (remove
old registered services stored in the collection)
+ logger.info("Creating and emptying the /store collection");
+ Collection storeCollection =
colMngmtService.createCollection(mainCollection + "/store");
+ colMngmtService.removeCollection(mainCollection + "/store");
+ storeCollection =
colMngmtService.createCollection(mainCollection + "/store");
- // TODO: This shouldn't be necessary, but we do, just
in case
- if (storeCollection.getResourceCount() > 0) {
- logger.warn("This is weird, the /store
collection was not empty...");
- for (String resourceName :
storeCollection.listResources()) {
-
storeCollection.removeResource(storeCollection.getResource(resourceName));
- }
- }
+ // TODO: This shouldn't be necessary, but we do, just in case
+ if (storeCollection.getResourceCount() > 0) {
+ logger.warn("This is weird, the /store collection was not
empty...");
+ for (String resourceName : storeCollection.listResources()) {
+
storeCollection.removeResource(storeCollection.getResource(resourceName));
+ }
+ }
- // And we upload starting LSStore files
- // uploadFile("LSStore.xml", dbContentDirPath,
lsCollection);
- uploadFile("LSStore-control.xml", dbContentDirPath,
lsCollection);
- uploadFile("LSStore-summary.xml", dbContentDirPath,
lsCollection);
- uploadFile("LSStore-summary.xml", dbContentDirPath,
copyCollection);
+ // And we upload starting LSStore files
+ // uploadFile("LSStore.xml", dbContentDirPath, lsCollection);
+ uploadFile("LSStore-control.xml", dbContentDirPath,
lsCollection);
+ uploadFile("LSStore-summary.xml", dbContentDirPath,
lsCollection);
+ uploadFile("LSStore-summary.xml", dbContentDirPath,
copyCollection);
- return true;
- } catch (PerfSONARException e) {
- throw new PerfSONARException(e.getMessage());
- } catch (XMLDBException e) {
- throw new PerfSONARException(e.getMessage());
- } catch (URISyntaxException e) {
- throw new PerfSONARException(e.getMessage());
- }
- }
+ return true;
+ } catch (PerfSONARException e) {
+ throw new PerfSONARException(e.getMessage());
+ } catch (XMLDBException e) {
+ throw new PerfSONARException(e.getMessage());
+ } catch (URISyntaxException e) {
+ throw new PerfSONARException(e.getMessage());
+ }
+ }
- private User createUser(String username,String password,String group){
- User user = new User(username,password);
- user.addGroup(group);
-
- return user;
- }
+ private User createUser(String username, String password, String group) {
+ User user = new User(username, password);
+ user.addGroup(group);
- private UserManagementService getUserManagmentService(Collection
collection)
- throws XMLDBException {
- return (UserManagementService)
collection.getService("UserManagementService", "1.0");
- }
+ return user;
+ }
- private CollectionManagementService getCollectionManagmentService(
- Collection collection) throws XMLDBException {
- return (CollectionManagementService) collection.getService(
- "CollectionManagementService", "1.0");
- }
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse
response)
- throws ServletException, IOException {
- String result;
+ private UserManagementService getUserManagmentService(Collection
collection)
+ throws XMLDBException {
+ return (UserManagementService)
collection.getService("UserManagementService", "1.0");
+ }
- try {
- ConfigurationManager configManager =
ConfigurationManager.getInstance();
- String dbContentDirPath =
getServletContext().getRealPath("/")+"db";
- initializeDatabase(dbContentDirPath, configManager);
- logger.info("Successful eXist DB initialization.");
- result = "ok=yes";
- } catch (PerfSONARException e) {
- logger.warn("eXist DB initiliazation failed: " +
e.getMessage());
- result = "ko";
- }
+ private CollectionManagementService getCollectionManagmentService(
+ Collection collection) throws XMLDBException {
+ return (CollectionManagementService) collection.getService(
+ "CollectionManagementService", "1.0");
+ }
- getServletConfig().getServletContext().getRequestDispatcher(
- "/index.jsp?page=dbInit&" + result).forward(request,
response);
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse
response)
+ throws ServletException, IOException {
+ String result;
- }
+ try {
+ ConfigurationManager configManager =
ConfigurationManager.getInstance();
+ String dbContentDirPath = getServletContext().getRealPath("/") +
"db";
+ initializeDatabase(dbContentDirPath, configManager);
+ logger.info("Successful eXist DB initialization.");
+ result = "ok=yes";
+ } catch (PerfSONARException e) {
+ logger.warn("eXist DB initiliazation failed: " + e.getMessage());
+ result = "ko";
+ }
- /**
- *
- * upload file to eXistDatabase
- *
- * @param fileName
- * - name of the file which contains content of the
database
- * element
- * @param filePath
- * - path to file
- * @param collection
- * - collection where new database element will be added in
- * @throws XMLDBException
- */
- private void uploadFile(String fileName, String filePath,
- Collection collection) throws XMLDBException {
+ getServletConfig().getServletContext().getRequestDispatcher(
+ "/index.jsp?page=dbInit&" + result).forward(request,
response);
- XMLResource document = (XMLResource)
collection.createResource(
- fileName, "XMLResource");
- File f = new File(filePath + File.separator + fileName);
- document.setContent(f);
- collection.storeResource(document);
- }
+ }
+ /**
+ *
+ * upload file to eXistDatabase
+ *
+ * @param fileName
+ * - name of the file which contains content of the database
+ * element
+ * @param filePath
+ * - path to file
+ * @param collection
+ * - collection where new database element will be added in
+ * @throws XMLDBException
+ */
+ private void uploadFile(String fileName, String filePath,
+ Collection collection) throws XMLDBException {
+
+ XMLResource document = (XMLResource) collection.createResource(
+ fileName, "XMLResource");
+ File f = new File(filePath + File.separator + fileName);
+ document.setContent(f);
+ collection.storeResource(document);
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAO.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAO.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAO.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -4,61 +4,61 @@
import org.perfsonar.base2.xml.nmwg.Data;
import org.perfsonar.base2.xml.nmwg.Metadata;
-public interface LookupServiceDAO extends XQueryDAOSupport{
+public interface LookupServiceDAO extends XQueryDAOSupport {
-
+
/**
* Puts Lookup Information into LSStore database
*/
- public void putLookupInfo(Metadata m, Data[] d) throws
PerfSONARException;
-
+ void putLookupInfo(Metadata m, Data[] d) throws PerfSONARException;
+
/**
* Removes a Lookup Information entry from LSStore database, both in the
/store collection and in the control file
* @param metadataId The Id of the entry to be removed
* @return number of items removed, -1 if error
* @throws PerfSONARException
*/
- public int removeLookupInfo(String metadataId) throws
PerfSONARException;
-
+ int removeLookupInfo(String metadataId) throws PerfSONARException;
+
/**
* Checks whether a Lookup Information entry is registered
* @param metadataId The Id of the entry to be checked
* @return true if lookup information exists, false otherwise
* @throws PerfSONARException
*/
- public boolean isLookupInfo(String metadataId) throws
PerfSONARException;
-
+ boolean isLookupInfo(String metadataId) throws PerfSONARException;
+
/**
- * Cleanup the old entries in the LSStore.</br>
- * Old entries are the ones older than:<ul>
- * <li> timestamp + defaultInterval
- * <li> timestamp + lsTTL parameter defined for the entry
- * </ul>
+ * Cleanup the old entries in the LSStore.
+ * Old entries are the ones older than:<ul>
+ * <li> timestamp + defaultInterval
+ * <li> timestamp + lsTTL parameter defined for the entry
+ * </ul>
* @param timestamp UNIX timestamp defining the validity time (value in
seconds)
* @param defaultInterval Default LsTTL interval in milliseconds (used
if none was given for an entry)
* @return number of elements removed
*/
- public int cleanupLookupInfo(long timestamp, long defaultInterval)
throws PerfSONARException;
-
- /**
+ int cleanupLookupInfo(long timestamp, long defaultInterval) throws
PerfSONARException;
+
+ /**
* Sets control parameter in LSStore-control file
* @param metadataId The Id of the entry whose parameter need to be
modified
* @param parameter The name of the parameter to modify
* @param value The new value to assign to the parameter
* @throws PerfSONARException
- */
- public void setControlParameter(String metadataId, String parameter,
String value) throws PerfSONARException;
+ */
+ void setControlParameter(String metadataId, String parameter, String
value) throws PerfSONARException;
/**
- * Checks whether collection exists
+ * Checks whether collection exists
* @param collection The collection to test
* @return
*/
- public boolean isDBCollection(String collection) throws
PerfSONARException;
-
+ boolean isDBCollection(String collection) throws PerfSONARException;
+
/**
* Checks connection to the DB
*/
- public boolean isDBConnectivity() throws PerfSONARException;
-
+ boolean isDBConnectivity() throws PerfSONARException;
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAOFactory.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAOFactory.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAOFactory.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -12,68 +12,70 @@
* @author Antoine Delvaux - DANTE
*
*/
-public class LookupServiceDAOFactory {
+public final class LookupServiceDAOFactory {
- protected static Logger logger =
LoggerFactory.getLogger(LookupServiceDAOFactory.class);
-
- private static volatile LookupServiceDAO dao = null;
- private static volatile LookupServiceDAO daoRO = null;
- private static volatile SummarizationDAO summariaztionDAO = null;
-
- private final static String LS_DAO = "lsdao";
- private final static String LS_DAO_RO = "lsdao-ro";
- private final static String SUMMARIZATION_DAO = "summarizationdao";
+ protected static Logger logger =
LoggerFactory.getLogger(LookupServiceDAOFactory.class);
- public static LookupServiceDAO getDAO() throws PerfSONARException {
+ private static volatile LookupServiceDAO dao = null;
+ private static volatile LookupServiceDAO daoRO = null;
+ private static volatile SummarizationDAO summariaztionDAO = null;
- if (dao != null) {
- return dao;
- } else {
- try {
- dao = (LookupServiceDAO)
ConfigurationManager.getInstance()
-
.getConfiguration().getAuxiliaryComponent(LS_DAO);
- return dao;
- } catch (Exception ex) {
- logger.error(ex.getMessage());
- throw new PerfSONARException("no_ls_dao",
- "Cannot find 'lsdao'
component");
- }
- }
- }
+ private static final String LS_DAO = "lsdao";
+ private static final String LS_DAO_RO = "lsdao-ro";
+ private static final String SUMMARIZATION_DAO = "summarizationdao";
- public static LookupServiceDAO getRODAO() throws PerfSONARException {
- if (daoRO != null) {
- return daoRO;
- } else {
- try {
- Component
comp=ConfigurationManager.getInstance()
-
.getConfiguration().getAuxiliaryComponent(LS_DAO_RO);
- daoRO = (LookupServiceDAO) comp;
- return daoRO;
- } catch (Exception ex) {
- logger.error(ex.getMessage());
- throw new PerfSONARException("no_ls_ro_dao",
- "Cannot find 'lsdao-ro'
component");
- }
+ private LookupServiceDAOFactory() { } // Prevents instantiation
- }
- }
-
- public static SummarizationDAO getSumarizationDAO() throws
PerfSONARException {
+ public static LookupServiceDAO getDAO() throws PerfSONARException {
- if (summariaztionDAO != null) {
- return summariaztionDAO;
- } else {
- try {
- summariaztionDAO = (SummarizationDAO)
ConfigurationManager.getInstance()
-
.getConfiguration().getAuxiliaryComponent(SUMMARIZATION_DAO);
- return summariaztionDAO;
- } catch (Exception ex) {
- logger.error(ex.getMessage());
- throw new
PerfSONARException("no_summarization_dao",
- "Cannot find
'summarizationdao' component");
- }
- }
- }
+ if (dao != null) {
+ return dao;
+ } else {
+ try {
+ dao = (LookupServiceDAO) ConfigurationManager.getInstance()
+ .getConfiguration().getAuxiliaryComponent(LS_DAO);
+ return dao;
+ } catch (Exception ex) {
+ logger.error(ex.getMessage());
+ throw new PerfSONARException("no_ls_dao",
+ "Cannot find 'lsdao' component");
+ }
+ }
+ }
+ public static LookupServiceDAO getRODAO() throws PerfSONARException {
+ if (daoRO != null) {
+ return daoRO;
+ } else {
+ try {
+ Component comp = ConfigurationManager.getInstance()
+ .getConfiguration().getAuxiliaryComponent(LS_DAO_RO);
+ daoRO = (LookupServiceDAO) comp;
+ return daoRO;
+ } catch (Exception ex) {
+ logger.error(ex.getMessage());
+ throw new PerfSONARException("no_ls_ro_dao",
+ "Cannot find 'lsdao-ro' component");
+ }
+
+ }
+ }
+
+ public static SummarizationDAO getSumarizationDAO() throws
PerfSONARException {
+
+ if (summariaztionDAO != null) {
+ return summariaztionDAO;
+ } else {
+ try {
+ summariaztionDAO = (SummarizationDAO)
ConfigurationManager.getInstance()
+
.getConfiguration().getAuxiliaryComponent(SUMMARIZATION_DAO);
+ return summariaztionDAO;
+ } catch (Exception ex) {
+ logger.error(ex.getMessage());
+ throw new PerfSONARException("no_summarization_dao",
+ "Cannot find 'summarizationdao' component");
+ }
+ }
+ }
+
} // LookupServiceDAOFactory
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/SummarizationDAO.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/SummarizationDAO.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/SummarizationDAO.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -14,70 +14,70 @@
* @author trzaszcz
*
*/
-public interface SummarizationDAO{
+public interface SummarizationDAO {
- /**
- *
- * removes all summary data from LSStore-summary
- */
- void removeSummaryData() throws PerfSONARException;
+ /**
+ *
+ * removes all summary data from LSStore-summary
+ */
+ void removeSummaryData() throws PerfSONARException;
- /**
- *
- * put summary data
- *
- * @param m
- */
- void putSummaryData(Element m) throws PerfSONARException;
+ /**
+ *
+ * put summary data
+ *
+ * @param m
+ */
+ void putSummaryData(Element m) throws PerfSONARException;
-
-
- /**
- * put batch data in few parts, where one part has maximal batchSize
number of elements
- *
- * @param data - list of data
- * @param batchSize - size of the saved batch data
- * @throws PerfSONARException
- */
- void putBatchData(List<Element> data,int batchSize)throws
PerfSONARException;
-
- /**
- * put batch of summarized data
- *
- * @param data
- * @throws PerfSONARException
- */
- void putBatchData(List<Element> data)throws PerfSONARException;
-
- /**
- * Return set of IP addresses used by services
- *
- * @return
- */
- String[] queryIpResults() throws PerfSONARException;
- /**
- * Return set of domains used by services
- *
- * @return
- */
- String[] queryDomainResults() throws PerfSONARException;
- /**
- * Return set of eventTypes used by services
- *
- * @return
- */
- String[] queryEventTypeResults() throws PerfSONARException;
+ /**
+ * Put batch data in few parts, where one part has maximal batchSize
number of elements
+ *
+ * @param data - list of data
+ * @param batchSize - size of the saved batch data
+ * @throws PerfSONARException
+ */
+ void putBatchData(List<Element> data, int batchSize) throws
PerfSONARException;
- /**
- * Return set of keywords Takes either //nmwg:parameter/@value or
- * //nmwg:parameter/text()
- *
- * @return
- */
- String[] queryKeywordResults() throws PerfSONARException;
-
- XMLDBResult getSummaryData() throws PerfSONARException;
-
+ /**
+ * Put batch of summarized data
+ *
+ * @param data
+ * @throws PerfSONARException
+ */
+ void putBatchData(List<Element> data)throws PerfSONARException;
+
+ /**
+ * Return set of IP addresses used by services
+ *
+ * @return
+ */
+ String[] queryIpResults() throws PerfSONARException;
+
+ /**
+ * Return set of domains used by services
+ *
+ * @return
+ */
+ String[] queryDomainResults() throws PerfSONARException;
+
+ /**
+ * Return set of eventTypes used by services
+ *
+ * @return
+ */
+ String[] queryEventTypeResults() throws PerfSONARException;
+
+ /**
+ * Return set of keywords Takes either //nmwg:parameter/@value or
+ * //nmwg:parameter/text()
+ *
+ * @return
+ */
+ String[] queryKeywordResults() throws PerfSONARException;
+
+ XMLDBResult getSummaryData() throws PerfSONARException;
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/XQueryDAOSupport.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/XQueryDAOSupport.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/XQueryDAOSupport.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -4,12 +4,12 @@
import org.perfsonar.base2.service.storage.xml.XMLDBResult;
public interface XQueryDAOSupport {
- /**
- * Perform XQuery operation
- *
- * @param xquery
- * @return
- * @throws PerfSONARException
- */
- public XMLDBResult performXQuery(String xquery) throws
PerfSONARException;
+ /**
+ * Perform XQuery operation
+ *
+ * @param xquery
+ * @return
+ * @throws PerfSONARException
+ */
+ XMLDBResult performXQuery(String xquery) throws PerfSONARException;
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryDAOSupportImpl.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryDAOSupportImpl.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryDAOSupportImpl.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -18,160 +18,164 @@
* @author Antoine Delvaux - DANTE
*
*/
-public abstract class XQueryDAOSupportImpl extends Component implements
- XQueryDAOSupport{
+public abstract class XQueryDAOSupportImpl extends Component implements
XQueryDAOSupport {
- protected Logger logger = LoggerFactory.getLogger(getClass());
- protected static final String UPDATE_FOR = " for $i in ";
- protected static final String UPDATE_REMOVE = " return (update delete
$i, 'removed')";
- protected static final String UPDATE_INSERT = " update insert ";
- protected static final String UPDATE_INTO = " into ";
- public static final String LS_STORE_COLLECTION_TYPE = "LSStore";
- public static final String LS_STORE_CONTROL_COLLECTION_TYPE =
"LSStore-control";
- public static final String LS_STORE_SUMMARY_COLLECTION_TYPE =
"LSStore-summary";
- public final static String DECLARE_NMWG_NAMESPACE = "declare
namespace nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n";
-
- /**
- * Namespaces declaration for perfSONAR
- */
- public final static String XQUERY_DECLARE_NAMESPACES = "declare
namespace perfsonar='http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/'; \n"
- + DECLARE_NMWG_NAMESPACE
- + "declare namespace
psservice='http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/'; \n"
- + "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/'; \n"
- + "declare namespace
netutil='http://ggf.org/ns/nmwg/characteristic/utilization/2.0/'; \n\n";
-
-
- private XMLDBComponent dbComponent;
-
- public void init() throws PerfSONARException {}
+ protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected static final String UPDATE_FOR = " for $i in ";
+ protected static final String UPDATE_REMOVE = " return (update delete
$i, 'removed')";
+ protected static final String UPDATE_INSERT = " update insert ";
+ protected static final String UPDATE_INTO = " into ";
+ public static final String LS_STORE_COLLECTION_TYPE = "LSStore";
+ public static final String LS_STORE_CONTROL_COLLECTION_TYPE =
"LSStore-control";
+ public static final String LS_STORE_SUMMARY_COLLECTION_TYPE =
"LSStore-summary";
+ public static final String DECLARE_NMWG_NAMESPACE = "declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n";
- public void destroy() throws PerfSONARException {
- dbComponent.destroy();
- }
+ /**
+ * Namespaces declaration for perfSONAR
+ */
+ public static final String XQUERY_DECLARE_NAMESPACES = "declare
namespace perfsonar='http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/'; \n"
+ + DECLARE_NMWG_NAMESPACE
+ + "declare namespace
psservice='http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/'; \n"
+ + "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/'; \n"
+ + "declare namespace
netutil='http://ggf.org/ns/nmwg/characteristic/utilization/2.0/'; \n\n";
- public void run() {}
-
- public XMLDBComponent getDBAccessManager() throws PerfSONARException{
- if (dbComponent==null) {
- Option option = getOption("dbAccessManager-ref");
- if (option==null) {
- logger.warn("Lack of dbAccessManager-ref in
configuration");
- throw new PerfSONARException("lack of
dbAccessManager-ref in configuration");
- } else {
- dbComponent = (XMLDBComponent)
ConfigurationManager.getInstance().getConfiguration().getAuxiliaryComponent(option.getValue());
-
- }
- }
- return dbComponent;
- }
-
-
- public void uploadStoreFile(String name,String content) throws
PerfSONARException{
- getDBAccessManager().uploadStoreFile(name, content);
- }
-
- public XMLDBResult performXQuery(String xquery) throws
PerfSONARException {
- XMLDBResult result =
getDBAccessManager().performXQuery(xquery);
- return result;
- }
-
-
- public void removeFile(String fileName) throws PerfSONARException{
- getDBAccessManager().removeStoreFile(fileName);
- }
- public boolean isDBCollection(String collection) throws
PerfSONARException {
+ private XMLDBComponent dbComponent;
- String xquery = DECLARE_NMWG_NAMESPACE + "
count(/nmwg:store[@type='"
+ collection + "'])";
- XMLDBResult res = performXQuery(xquery);
- if (res.getTextResults().length == 1) {
- int count = Integer.valueOf(res.getTextResults()[0]);
- if (count>0) {
- return true;
- }
- }
- return false;
- }
+ public void init() throws PerfSONARException { }
- public boolean isDBConnectivity() throws PerfSONARException {
- String xquery = "fn:current-dateTime()";
- performXQuery(xquery);
- return true;
- }
+ public void destroy() throws PerfSONARException {
+ dbComponent.destroy();
+ }
- /**
- * Returns pair of numbers separated by space: "#M #D" where #M is
number of
- * metadata blocks with specific metadataId, #D is number of related
data
- * blocks (metadataIdRef=metadataId)
- *
- * @param metadataId
- * @return
- * @throws PerfSONARException
- */
- private String countLookupInfo(String metadataId) throws
PerfSONARException {
- String xquery = DECLARE_NMWG_NAMESPACE + "concat("
- +
"count(/nmwg:store[@type='"
+ LS_STORE_COLLECTION_TYPE
- +
"']/nmwg:metadata[@id='"
+ metadataId + "']), " + "' ', "
- +
"count(/nmwg:store[@type='"
+ LS_STORE_COLLECTION_TYPE
- +
"']/nmwg:data[@metadataIdRef='"
+ metadataId + "']))";
+ public void run() { }
- // remove by xquery
- XMLDBResult res = performXQuery(xquery);
+ public XMLDBComponent getDBAccessManager() throws PerfSONARException {
+ if (dbComponent == null) {
+ Option option = getOption("dbAccessManager-ref");
+ if (option == null) {
+ logger.warn("Lack of dbAccessManager-ref in configuration");
+ throw new PerfSONARException("lack of dbAccessManager-ref in
configuration");
+ } else {
+ dbComponent = (XMLDBComponent)
ConfigurationManager.getInstance().getConfiguration().getAuxiliaryComponent(option.getValue());
- // return "M D" where M is count(metadata), D is count(data)
- return res.getFirstElement().getText();
- }
+ }
+ }
+ return dbComponent;
+ }
- public boolean isLookupInfo(String metadataId) throws
PerfSONARException {
- String result = countLookupInfo(metadataId);
- return !("0 0".equals(result));
- }
- public void setControlParameter(String metadataId, String parameter,
- String value) throws PerfSONARException {
+ public void uploadStoreFile(String name, String content) throws
PerfSONARException {
+ getDBAccessManager().uploadStoreFile(name, content);
+ }
- String xquery = DECLARE_NMWG_NAMESPACE
- +
+ public XMLDBResult performXQuery(String xquery) throws
PerfSONARException {
+ XMLDBResult result = getDBAccessManager().performXQuery(xquery);
+ return result;
+ }
- "let $paramName := '"
- + parameter
- + "' \n"
- + "let $paramValue := '"
- + value
- + "' \n"
- + "let $metadataId := '"
- + metadataId
- + "' \n"
- +
- "let $command := \n"
- + " if
(count(/nmwg:store[@type='"
- + LS_STORE_CONTROL_COLLECTION_TYPE
- +
"']/nmwg:metadata[@id=$metadataId]/nmwg:parameters/nmwg:parameter[@name=$paramName])
> 0) then \n"
- + " update replace
/nmwg:store[@type='"
- + LS_STORE_CONTROL_COLLECTION_TYPE
- +
"']/nmwg:metadata[@id=$metadataId]/nmwg:parameters/nmwg:parameter[@name=$paramName]/@value
with $paramValue \n"
- + " else if
(count(/nmwg:store[@type='"
- + LS_STORE_CONTROL_COLLECTION_TYPE
- +
"']/nmwg:metadata[@id=$metadataId]/nmwg:parameters)
> 0) then \n"
- + " update insert <nmwg:parameter
name='{$paramName}' value='{$paramValue}'/> into
/nmwg:store[@type='"
- + LS_STORE_CONTROL_COLLECTION_TYPE
- +
"']/nmwg:metadata[@id=$metadataId]/nmwg:parameters
\n"
- + " else if
(count(/nmwg:store[@type='"
- + LS_STORE_CONTROL_COLLECTION_TYPE
- +
"']/nmwg:metadata[@id=$metadataId])
> 0) then \n"
- + " update insert <nmwg:parameters
id='control-parameters'><nmwg:parameter name='{$paramName}'
value='{$paramValue}'/></nmwg:parameters> into
/nmwg:store[@type='"
- + LS_STORE_CONTROL_COLLECTION_TYPE
- +
"']/nmwg:metadata[@id=$metadataId]
\n"
- + " else "
- + " update insert <nmwg:metadata
id='{$metadataId}'><nmwg:parameters id='control-parameters'><nmwg:parameter
name='{$paramName}' value='{$paramValue}'/></nmwg:parameters></nmwg:metadata>
into
/nmwg:store[@type='"
- + LS_STORE_CONTROL_COLLECTION_TYPE + "'] \n" +
+ public void removeFile(String fileName) throws PerfSONARException {
+ getDBAccessManager().removeStoreFile(fileName);
+ }
- "return $command \n";
+ public boolean isDBCollection(String collection) throws
PerfSONARException {
- // Store in the DB
- performXQuery(xquery);
+ String xquery = DECLARE_NMWG_NAMESPACE + "
count(/nmwg:store[@type='"
+ collection + "'])";
+ XMLDBResult res = performXQuery(xquery);
+ if (res.getTextResults().length == 1) {
+ int count = Integer.valueOf(res.getTextResults()[0]);
+ if (count > 0) {
+ return true;
+ }
+ }
+ return false;
+ }
- }
+ public boolean isDBConnectivity() throws PerfSONARException {
+ String xquery = "fn:current-dateTime()";
+ performXQuery(xquery);
+ return true;
+ }
+ /**
+ * Returns pair of numbers separated by space: "#M #D" where #M is
number of
+ * metadata blocks with specific metadataId, #D is number of related data
+ * blocks (metadataIdRef=metadataId)
+ *
+ * @param metadataId
+ * @return
+ * @throws PerfSONARException
+ */
+ private String countLookupInfo(String metadataId) throws
PerfSONARException {
+ String xquery = DECLARE_NMWG_NAMESPACE + "concat("
+ +
"count(/nmwg:store[@type='"
+ LS_STORE_COLLECTION_TYPE
+ +
"']/nmwg:metadata[@id='"
+ metadataId + "']), " + "' ', "
+ +
"count(/nmwg:store[@type='"
+ LS_STORE_COLLECTION_TYPE
+ +
"']/nmwg:data[@metadataIdRef='"
+ metadataId + "']))";
+
+ // remove by xquery
+ XMLDBResult res = performXQuery(xquery);
+
+ // return "M D" where M is count(metadata), D is count(data)
+ return res.getFirstElement().getText();
+ }
+
+ public boolean isLookupInfo(String metadataId) throws PerfSONARException
{
+ String result = countLookupInfo(metadataId);
+ return !("0 0".equals(result));
+ }
+
+ public void setControlParameter(String metadataId, String parameter,
+ String value) throws PerfSONARException {
+
+ String xquery = DECLARE_NMWG_NAMESPACE
+ +
+
+ "let $paramName := '"
+ + parameter
+ + "' \n"
+ + "let $paramValue := '"
+ + value
+ + "' \n"
+ + "let $metadataId := '"
+ + metadataId
+ + "' \n"
+ +
+
+ "let $command := \n"
+ + " if
(count(/nmwg:store[@type='"
+ + LS_STORE_CONTROL_COLLECTION_TYPE
+ +
"']/nmwg:metadata[@id=$metadataId]/nmwg:parameters/nmwg:parameter[@name=$paramName])
> 0) then \n"
+ + " update replace
/nmwg:store[@type='"
+ + LS_STORE_CONTROL_COLLECTION_TYPE
+ +
"']/nmwg:metadata[@id=$metadataId]/nmwg:parameters/nmwg:parameter[@name=$paramName]/@value
with $paramValue \n"
+ + " else if
(count(/nmwg:store[@type='"
+ + LS_STORE_CONTROL_COLLECTION_TYPE
+ +
"']/nmwg:metadata[@id=$metadataId]/nmwg:parameters)
> 0) then \n"
+ + " update insert <nmwg:parameter name='{$paramName}'
value='{$paramValue}'/> into
/nmwg:store[@type='"
+ + LS_STORE_CONTROL_COLLECTION_TYPE
+ +
"']/nmwg:metadata[@id=$metadataId]/nmwg:parameters
\n"
+ + " else if
(count(/nmwg:store[@type='"
+ + LS_STORE_CONTROL_COLLECTION_TYPE
+ +
"']/nmwg:metadata[@id=$metadataId])
> 0) then \n"
+ + " update insert <nmwg:parameters
id='control-parameters'>"
+ + " <nmwg:parameter
name='{$paramName}' value='{$paramValue}'/>"
+ + " </nmwg:parameters> into
/nmwg:store[@type='"
+ + LS_STORE_CONTROL_COLLECTION_TYPE
+ +
"']/nmwg:metadata[@id=$metadataId]
\n"
+ + " else "
+ + " update insert <nmwg:metadata
id='{$metadataId}'><nmwg:parameters id='control-parameters'>"
+ + " <nmwg:parameter
name='{$paramName}' value='{$paramValue}'/>"
+ + " </nmwg:parameters></nmwg:metadata>
into
/nmwg:store[@type='"
+ + LS_STORE_CONTROL_COLLECTION_TYPE + "'] \n"
+ +
+
+ "return $command \n";
+
+ // Store in the DB
+ performXQuery(xquery);
+
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/dao/MultipleFilesDAOImpl.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/dao/MultipleFilesDAOImpl.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/dao/MultipleFilesDAOImpl.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -25,137 +25,135 @@
* @author Antoine Delvaux - DANTE
*
*/
-public class MultipleFilesDAOImpl extends XQueryDAOSupportImpl implements
LookupServiceDAO{
+public class MultipleFilesDAOImpl extends XQueryDAOSupportImpl implements
LookupServiceDAO {
- private static final String XMLNS = "
xmlns:nmwgt=\"http://ggf.org/ns/nmwg/topology/2.0/\" "
- + " xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\" "
- + "
xmlns:psservice=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/\" "
- + "
xmlns:perfsonar=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/\" "
- + "
xmlns:netutil=\"http://ggf.org/ns/nmwg/characteristic/utilization/2.0/\" ";
+ private static final String XMLNS = "
xmlns:nmwgt=\"http://ggf.org/ns/nmwg/topology/2.0/\" "
+ + " xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\" "
+ + "
xmlns:psservice=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/\" "
+ + "
xmlns:perfsonar=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/\" "
+ + "
xmlns:netutil=\"http://ggf.org/ns/nmwg/characteristic/utilization/2.0/\" ";
- private static final String LS_STORE_HEADER = "<nmwg:store " + XMLNS
+ "type=\"LSStore\">\n";
+ private static final String LS_STORE_HEADER = "<nmwg:store " + XMLNS +
"type=\"LSStore\">\n";
- private static final String LS_STORE_FOOTER = "\n</nmwg:store>";
+ private static final String LS_STORE_FOOTER = "\n</nmwg:store>";
- /* (non-Javadoc)
- * @see
org.perfsonar.service.lookupservice.storage.LookupServiceDAO#putLookupInfo(org.perfsonar.base2.xml.nmwg.Metadata,
org.perfsonar.base2.xml.nmwg.Data[])
- */
- public void putLookupInfo(Metadata m, Data[] d) throws
PerfSONARException {
+ public void putLookupInfo(Metadata m, Data[] d) throws
PerfSONARException {
- StringBuffer sb = new StringBuffer();
- sb.append(LS_STORE_HEADER);
+ StringBuffer sb = new StringBuffer();
+ sb.append(LS_STORE_HEADER);
- // Serializing metadata and data Elements to String
- ElementSerializer ser = new ElementSerializer();
- ser.setStartingDocumentDeclaration(false);
- StringBufferOutputStream os = new
StringBufferOutputStream(sb);
- try {
- ser.write(os, m);
- for (int i = 0; i < d.length; i++) {
- logger.trace("Serialize data: " + d[i]);
- ser.write(os, d[i]);
- }
- } catch (XMLStreamException e1) {
- logger.error("Cannot serialize elements: " +
e1.getMessage());
- throw new PerfSONARException("error/parse", "Cannot
serialize elements: " + e1.getMessage());
- } catch (IOException e1) {
- logger.error("Cannot serialize elements: " +
e1.getMessage());
- throw new PerfSONARException("error/parse",
"Cannot serialize elements: " + e1.getMessage());
- }
- sb.append(LS_STORE_FOOTER);
+ // Serializing metadata and data Elements to String
+ ElementSerializer ser = new ElementSerializer();
+ ser.setStartingDocumentDeclaration(false);
+ StringBufferOutputStream os = new StringBufferOutputStream(sb);
+ try {
+ ser.write(os, m);
+ for (int i = 0; i < d.length; i++) {
+ logger.trace("Serialize data: " + d[i]);
+ ser.write(os, d[i]);
+ }
+ } catch (XMLStreamException e1) {
+ logger.error("Cannot serialize elements: " + e1.getMessage());
+ throw new PerfSONARException("error/parse", "Cannot serialize
elements: " + e1.getMessage());
+ } catch (IOException e1) {
+ logger.error("Cannot serialize elements: " + e1.getMessage());
+ throw new PerfSONARException("error/parse", "Cannot serialize
elements: " + e1.getMessage());
+ }
+ sb.append(LS_STORE_FOOTER);
- // Create an md5 ID to identify the XML document and store it
- String XMLFileName = md5(m.getId()) + ".xml";
- logger.debug("Now uploading XML file to the store: " +
XMLFileName);
- uploadStoreFile(XMLFileName, sb.toString());
+ // Create an md5 ID to identify the XML document and store it
+ String xmlFileName = md5(m.getId()) + ".xml";
+ logger.debug("Now uploading XML file to the store: " + xmlFileName);
+ uploadStoreFile(xmlFileName, sb.toString());
- }
+ }
- /* (non-Javadoc)
- * @see
org.perfsonar.service.lookupservice.storage.LookupServiceDAO#removeLookupInfo(java.lang.String)
- */
- public int removeLookupInfo(String metadataId) throws
PerfSONARException {
- int result = 0;
-
- // TODO: This should be done in an atomic way so that we
cannot remove the file without also removing the control information
+ /* (non-Javadoc)
+ * @see
org.perfsonar.service.lookupservice.storage.LookupServiceDAO#removeLookupInfo(java.lang.String)
+ */
+ public int removeLookupInfo(String metadataId) throws PerfSONARException
{
+ int result = 0;
- removeFile(md5(metadataId) + ".xml");
+ // TODO: This should be done in an atomic way so that we cannot
remove the file without also removing the control information
- // We now remove the references in the LS control store
- // The return statement, also returns an 'r' per removed row
to count the removed entries
- String xquery = DECLARE_NMWG_NAMESPACE +
- " for $meta in
/nmwg:store[@type='"
+ LS_STORE_CONTROL_COLLECTION_TYPE + "']" +
-
"/nmwg:metadata[@id='"
+ metadataId + "']" +
- " return (update delete $meta, 'r') ";
+ removeFile(md5(metadataId) + ".xml");
- XMLDBResult res = performXQuery(xquery);
- result = res.getTotal();
+ // We now remove the references in the LS control store
+ // The return statement, also returns an 'r' per removed row to
count the removed entries
+ String xquery = DECLARE_NMWG_NAMESPACE
+ + " for $meta in
/nmwg:store[@type='"
+ LS_STORE_CONTROL_COLLECTION_TYPE + "']"
+ +
"/nmwg:metadata[@id='"
+ metadataId + "']"
+ + " return (update delete $meta, 'r') ";
- return result;
+ XMLDBResult res = performXQuery(xquery);
+ result = res.getTotal();
- }
+ return result;
- /* (non-Javadoc)
- * @see
org.perfsonar.service.lookupservice.storage.LookupServiceDAO#cleanupLookupInfo(long,
long)
- */
- public int cleanupLookupInfo(long timestamp, long defaultInterval)
- throws PerfSONARException {
- int result;
-
- // First look for all the entry to be removed, based on
timestamp, defaultInterval or existing lsTTL
- // We delete the entries in the control file at the same time
we find them
- String xquery = DECLARE_NMWG_NAMESPACE +
- "for $meta in " +
-
"/nmwg:store[@type='LSStore-control']/nmwg:metadata"
+
-
"[not(descendant::nmwg:parameter[@name='lsTTL'])]"
+
-
"[descendant::nmwg:parameters/nmwg:parameter[@name='timestamp'][@value
+ " + defaultInterval + " < " + timestamp + "]]\n" +
- "|\n" +
-
"/nmwg:store[@type='LSStore-control']/nmwg:metadata"
+
-
"[descendant::nmwg:parameters/nmwg:parameter[@name='lsTTL']]"
+
-
"[descendant::nmwg:parameters/nmwg:parameter[@name='timestamp'][(@value
+
data(../nmwg:parameter[@name='lsTTL']/@value))
< (" + timestamp + ")]]\n" +
- "return (data($meta/@id), update delete
$meta)";
+ }
- XMLDBResult res = performXQuery(xquery);
- result = res.getResults().size();
- logger.debug(result + " files will be removed from the
store");
+ /* (non-Javadoc)
+ * @see
org.perfsonar.service.lookupservice.storage.LookupServiceDAO#cleanupLookupInfo(long,
long)
+ */
+ public int cleanupLookupInfo(long timestamp, long defaultInterval)
+ throws PerfSONARException {
+ int result;
- // Then we remove the XML files in the store
- for (Element e : res.getResults()) {
- String metadataId = e.getText();
- removeFile(md5(metadataId) + ".xml");
- }
+ // First look for all the entry to be removed, based on timestamp,
defaultInterval or existing lsTTL
+ // We delete the entries in the control file at the same time we
find them
+ String xquery = DECLARE_NMWG_NAMESPACE
+ + "for $meta in "
+ +
"/nmwg:store[@type='LSStore-control']/nmwg:metadata"
+ +
"[not(descendant::nmwg:parameter[@name='lsTTL'])]"
+ +
"[descendant::nmwg:parameters/nmwg:parameter[@name='timestamp'][@value
+ " + defaultInterval + " < " + timestamp + "]]\n"
+ + "|\n"
+ +
"/nmwg:store[@type='LSStore-control']/nmwg:metadata"
+ +
"[descendant::nmwg:parameters/nmwg:parameter[@name='lsTTL']]"
+ +
"[descendant::nmwg:parameters/nmwg:parameter[@name='timestamp']"
+ + " [(@value +
data(../nmwg:parameter[@name='lsTTL']/@value))
< (" + timestamp + ")]]\n"
+ + "return (data($meta/@id), update delete $meta)";
- return result;
- }
+ XMLDBResult res = performXQuery(xquery);
+ result = res.getResults().size();
+ logger.debug(result + " files will be removed from the store");
- /**
- * Generates an MD5 hash of the given text
- * @param text The text to compute an MD5 hash for
- * @return The MD5 hash
- * @throws PerfSONARException
- */
- private String md5(String text) throws PerfSONARException {
- MessageDigest md = null;
- try {
- md = MessageDigest.getInstance("MD5");
- } catch (NoSuchAlgorithmException e) {
- logger.error("md5 algorithm not found: " +
e.getMessage());
- throw new PerfSONARException("md5 - algorithm not
found", e);
- }
-
- md.update(text.getBytes());
- byte messageDigest[] = md.digest();
- StringBuffer hexString = new StringBuffer();
+ // Then we remove the XML files in the store
+ for (Element e : res.getResults()) {
+ String metadataId = e.getText();
+ removeFile(md5(metadataId) + ".xml");
+ }
- for (int i = 0; i < messageDigest.length; i++) {
- String hex = Integer.toHexString(0xFF &
messageDigest[i]);
- if (hex.length() == 1) {
- hexString.append('0');
- }
- hexString.append(hex);
- }
- String md5val = hexString.toString();
- return md5val;
- }
+ return result;
+ }
+ /**
+ * Generates an MD5 hash of the given text
+ * @param text The text to compute an MD5 hash for
+ * @return The MD5 hash
+ * @throws PerfSONARException
+ */
+ private String md5(String text) throws PerfSONARException {
+ MessageDigest md = null;
+ try {
+ md = MessageDigest.getInstance("MD5");
+ } catch (NoSuchAlgorithmException e) {
+ logger.error("md5 algorithm not found: " + e.getMessage());
+ throw new PerfSONARException("md5 - algorithm not found", e);
+ }
+
+ md.update(text.getBytes());
+ byte[] messageDigest = md.digest();
+ StringBuffer hexString = new StringBuffer();
+
+ for (int i = 0; i < messageDigest.length; i++) {
+ String hex = Integer.toHexString(0xFF & messageDigest[i]);
+ if (hex.length() == 1) {
+ hexString.append('0');
+ }
+ hexString.append(hex);
+ }
+ String md5val = hexString.toString();
+ return md5val;
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/dao/SummarizationDAOImpl.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/dao/SummarizationDAOImpl.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/dao/SummarizationDAOImpl.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -21,172 +21,172 @@
* @author Slawomir Trzaszczka
* @author Antoine Delvaux - DANTE
*/
-public class SummarizationDAOImpl extends XQueryDAOSupportImpl implements
SummarizationDAO{
+public class SummarizationDAOImpl extends XQueryDAOSupportImpl implements
SummarizationDAO {
- /**
- * The name of the summary collection of LS
- */
- public static final String LS_STORE_SUMMARY_COLLECTION_TYPE =
"LSStore-summary";
+ /**
+ * The name of the summary collection of LS
+ */
+ public static final String LS_STORE_SUMMARY_COLLECTION_TYPE =
"LSStore-summary";
- protected static final String UPDATE_LSSTORE_SUMMARY =
"/nmwg:store[@type='"
- + LS_STORE_SUMMARY_COLLECTION_TYPE + "']";
+ protected static final String UPDATE_LSSTORE_SUMMARY =
"/nmwg:store[@type='"
+ + LS_STORE_SUMMARY_COLLECTION_TYPE + "']";
- public void removeSummaryData() throws PerfSONARException {
- performXQuery("xmldb:copy('/db/copy/', '/db/ls/',
'LSStore-summary.xml')");
- }
+ public void removeSummaryData() throws PerfSONARException {
+ performXQuery("xmldb:copy('/db/copy/', '/db/ls/',
'LSStore-summary.xml')");
+ }
- public void putSummaryData(Element m) throws PerfSONARException {
- ElementSerializer ser = new ElementSerializer();
- ser.setStartingDocumentDeclaration(false);
- StringBuffer xmls = new StringBuffer();
- StringBufferOutputStream os = new
StringBufferOutputStream(xmls);
+ public void putSummaryData(Element m) throws PerfSONARException {
+ ElementSerializer ser = new ElementSerializer();
+ ser.setStartingDocumentDeclaration(false);
+ StringBuffer xmls = new StringBuffer();
+ StringBufferOutputStream os = new StringBufferOutputStream(xmls);
- // add xquery namespaces and UPDATE instruction
- xmls.append(XQUERY_DECLARE_NAMESPACES);
- xmls.append(UPDATE_INSERT);
- xmls.append(" (\n");
+ // add xquery namespaces and UPDATE instruction
+ xmls.append(XQUERY_DECLARE_NAMESPACES);
+ xmls.append(UPDATE_INSERT);
+ xmls.append(" (\n");
- try {
- ser.write(os, m);
- } catch (XMLStreamException e) {
-// TODO: url event types
- throw new PerfSONARException("error.parse",
- "Cannot serialize elements in
XQueryExistDAOImpl");
- } catch (IOException e) {
-// TODO: url event types
- throw new PerfSONARException("error.parse",
- "Cannot serialize elements in
XQueryExistDAOImpl");
- }
-
- // send XQuery
- xmls.append(" )\n");
+ try {
+ ser.write(os, m);
+ } catch (XMLStreamException e) {
+ // TODO: url event types
+ throw new PerfSONARException("error.parse",
+ "Cannot serialize elements in XQueryExistDAOImpl");
+ } catch (IOException e) {
+ // TODO: url event types
+ throw new PerfSONARException("error.parse",
+ "Cannot serialize elements in XQueryExistDAOImpl");
+ }
- xmls.append(UPDATE_INTO);
- xmls.append(UPDATE_LSSTORE_SUMMARY);
+ // send XQuery
+ xmls.append(" )\n");
- String query = xmls.toString();
- performXQuery(query);
- }
+ xmls.append(UPDATE_INTO);
+ xmls.append(UPDATE_LSSTORE_SUMMARY);
- public String[] queryIpResults() throws PerfSONARException {
+ String query = xmls.toString();
+ performXQuery(query);
+ }
- StringBuffer sb = new StringBuffer();
+ public String[] queryIpResults() throws PerfSONARException {
- sb
- .append(" declare namespace
nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\"; \n");
- sb.append(" for $d in
/nmwg:store[@type='LSStore']/nmwg:data
\n");
- sb.append(" let $metaIdRef := data($d/@metadataIdRef) \n");
- sb
- .append(" for $val in
$d/nmwg:metadata/*:subject//*:ifAddress/text() \n");
- sb
- .append(" return if (empty($val)) then $val
else concat($metaIdRef,',',$val) \n");
+ StringBuffer sb = new StringBuffer();
- return performXQuery(sb.toString()).getTextResults();
+ sb
+ .append(" declare namespace
nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\"; \n");
+ sb.append(" for $d in
/nmwg:store[@type='LSStore']/nmwg:data
\n");
+ sb.append(" let $metaIdRef := data($d/@metadataIdRef) \n");
+ sb
+ .append(" for $val in
$d/nmwg:metadata/*:subject//*:ifAddress/text() \n");
+ sb
+ .append(" return if (empty($val)) then $val else
concat($metaIdRef,',',$val) \n");
- }
+ return performXQuery(sb.toString()).getTextResults();
- public String[] queryDomainResults() throws PerfSONARException {
+ }
- String xq = " declare namespace
nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\"; \n"
- + " for $d in
/nmwg:store[@type='LSStore']/nmwg:data
\n"
- + " let $metaIdRef :=
data($d/@metadataIdRef) \n"
- + " for $val in
$d/nmwg:metadata/*:subject//*:hostName/text() \n"
- + " return if (empty($val)) then $val
else concat($metaIdRef,',',$val) \n";
+ public String[] queryDomainResults() throws PerfSONARException {
- return performXQuery(xq).getTextResults();
- }
+ String xq = " declare namespace
nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\"; \n"
+ + " for $d in
/nmwg:store[@type='LSStore']/nmwg:data
\n"
+ + " let $metaIdRef := data($d/@metadataIdRef) \n"
+ + " for $val in
$d/nmwg:metadata/*:subject//*:hostName/text() \n"
+ + " return if (empty($val)) then $val else
concat($metaIdRef,',',$val) \n";
- public String[] queryEventTypeResults() throws PerfSONARException {
+ return performXQuery(xq).getTextResults();
+ }
- String xq = " declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n"
- + " declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\n"
- + " for $d in
/nmwg:store[@type='LSStore']/nmwg:data
\n"
- + " let $metaIdRef := data($d/@metadataIdRef)
\n"
- + " for $e in $d/nmwg:metadata/nmwg:eventType
\n"
- + " let $val := $e/text() \n"
- + " return concat($metaIdRef,',',$val)\n";
- return performXQuery(xq).getTextResults();
- }
+ public String[] queryEventTypeResults() throws PerfSONARException {
- public String[] queryKeywordResults() throws PerfSONARException {
+ String xq = " declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n"
+ + " declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\n"
+ + " for $d in
/nmwg:store[@type='LSStore']/nmwg:data
\n"
+ + " let $metaIdRef := data($d/@metadataIdRef) \n"
+ + " for $e in $d/nmwg:metadata/nmwg:eventType \n"
+ + " let $val := $e/text() \n"
+ + " return concat($metaIdRef,',',$val)\n";
+ return performXQuery(xq).getTextResults();
+ }
- String xq = " declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; "
- + " declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/'; "
- + " for $d in
/nmwg:store[@type='LSStore']/nmwg:data
"
- + " for $p in
$d/nmwg:metadata/*:parameters/nmwg:parameter[@name='keyword']
"
- + " let $val1 := $p/text() "
- + " let $val2 :=$p/@value "
- + " let $metaIdRef :=
data($d/@metadataIdRef) "
- + " return "
- + " if (empty($val1)) then
concat($metaIdRef,',',data($val2)) "
- + " else concat($metaIdRef,',', $val1)";
- return performXQuery(xq).getTextResults();
- }
+ public String[] queryKeywordResults() throws PerfSONARException {
- public XMLDBResult getSummaryData() throws PerfSONARException {
- StringBuffer sb = new StringBuffer();
- sb.append(DECLARE_NMWG_NAMESPACE);
-
sb.append("/nmwg:store[@type='LSStore-summary']/nmwg:metadata");
+ String xq = " declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; "
+ + " declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/'; "
+ + " for $d in
/nmwg:store[@type='LSStore']/nmwg:data
"
+ + " for $p in
$d/nmwg:metadata/*:parameters/nmwg:parameter[@name='keyword']
"
+ + " let $val1 := $p/text() "
+ + " let $val2 :=$p/@value "
+ + " let $metaIdRef := data($d/@metadataIdRef) "
+ + " return "
+ + " if (empty($val1)) then
concat($metaIdRef,',',data($val2)) "
+ + " else concat($metaIdRef,',', $val1)";
+ return performXQuery(xq).getTextResults();
+ }
- return performXQuery(sb.toString());
- }
+ public XMLDBResult getSummaryData() throws PerfSONARException {
+ StringBuffer sb = new StringBuffer();
+ sb.append(DECLARE_NMWG_NAMESPACE);
+
sb.append("/nmwg:store[@type='LSStore-summary']/nmwg:metadata");
- public void putBatchData(List<Element> data) throws
PerfSONARException {
- ElementSerializer ser = new ElementSerializer();
- ser.setStartingDocumentDeclaration(false);
- StringBuffer xmls = new StringBuffer();
- StringBufferOutputStream os = new
StringBufferOutputStream(xmls);
+ return performXQuery(sb.toString());
+ }
- // add xquery namespaces and UPDATE instruction
- xmls.append(XQUERY_DECLARE_NAMESPACES);
- xmls.append(UPDATE_INSERT);
- xmls.append(" (\n");
+ public void putBatchData(List<Element> data) throws PerfSONARException {
+ ElementSerializer ser = new ElementSerializer();
+ ser.setStartingDocumentDeclaration(false);
+ StringBuffer xmls = new StringBuffer();
+ StringBufferOutputStream os = new StringBufferOutputStream(xmls);
- for (int c = 0; c < data.size(); c++) {
- Element element = data.get(c);
- try {
- ser.write(os, element);
- } catch (XMLStreamException e) {
- throw new PerfSONARException("error/parse",
- "Cannot serialize elements in
XQueryExistDAOImpl");
- } catch (IOException e) {
- throw new PerfSONARException("error/parse",
- "Cannot serialize elements in
XQueryExistDAOImpl");
- }
- if (c != data.size() - 1) {
- xmls.append(", \n");
- }
- }
- // send XQuery
- xmls.append(" )\n");
+ // add xquery namespaces and UPDATE instruction
+ xmls.append(XQUERY_DECLARE_NAMESPACES);
+ xmls.append(UPDATE_INSERT);
+ xmls.append(" (\n");
- xmls.append(UPDATE_INTO);
- xmls.append(UPDATE_LSSTORE_SUMMARY);
+ for (int c = 0; c < data.size(); c++) {
+ Element element = data.get(c);
+ try {
+ ser.write(os, element);
+ } catch (XMLStreamException e) {
+ throw new PerfSONARException("error/parse",
+ "Cannot serialize elements in XQueryExistDAOImpl");
+ } catch (IOException e) {
+ throw new PerfSONARException("error/parse",
+ "Cannot serialize elements in XQueryExistDAOImpl");
+ }
+ if (c != data.size() - 1) {
+ xmls.append(", \n");
+ }
+ }
+ // send XQuery
+ xmls.append(" )\n");
- String query = xmls.toString();
- performXQuery(query);
+ xmls.append(UPDATE_INTO);
+ xmls.append(UPDATE_LSSTORE_SUMMARY);
- }
+ String query = xmls.toString();
+ performXQuery(query);
- public void putBatchData(List<Element> data, int batchSize)
- throws PerfSONARException {
- List<Element> elements = new ArrayList<Element>();
- int nrOfPart = 1;
- for (int c = 0; c < data.size(); c++) {
- if (nrOfPart * batchSize >= c) {
- elements.add(data.get(c));
- } else {
- putBatchData(elements);
- nrOfPart++;
- elements = new ArrayList<Element>();
- elements.add(data.get(c));
- }
- }
+ }
- if (!elements.isEmpty()) {
- putBatchData(elements);
- }
+ public void putBatchData(List<Element> data, int batchSize)
+ throws PerfSONARException {
+ List<Element> elements = new ArrayList<Element>();
+ int nrOfPart = 1;
+ for (int c = 0; c < data.size(); c++) {
+ if (nrOfPart * batchSize >= c) {
+ elements.add(data.get(c));
+ } else {
+ putBatchData(elements);
+ nrOfPart++;
+ elements = new ArrayList<Element>();
+ elements.add(data.get(c));
+ }
+ }
- }
+ if (!elements.isEmpty()) {
+ putBatchData(elements);
+ }
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/summarization/ServiceSummaryBean.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/summarization/ServiceSummaryBean.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/summarization/ServiceSummaryBean.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -16,74 +16,74 @@
*
*/
class ServiceSummaryBean {
-
- private Set<String> eventTypes = new HashSet<String>();
- private Set<String> domains = new HashSet<String>();
- private Set<String> ipAddresses = new HashSet<String>();
- private Set<String> keywords = new HashSet<String>();
-
- public Set<String> getEventTypes() {
- return eventTypes;
- }
+ private Set<String> eventTypes = new HashSet<String>();
+ private Set<String> domains = new HashSet<String>();
+ private Set<String> ipAddresses = new HashSet<String>();
+ private Set<String> keywords = new HashSet<String>();
- public void setEventTypes(Set<String> eventTypes) {
- this.eventTypes = eventTypes;
- }
- public Set<String> getDomains() {
- return domains;
- }
+ public Set<String> getEventTypes() {
+ return eventTypes;
+ }
- public void setDomains(Set<String> domains) {
- this.domains = domains;
- }
+ public void setEventTypes(Set<String> eventTypes) {
+ this.eventTypes = eventTypes;
+ }
- public Set<String> getIpAddresses() {
- return ipAddresses;
- }
+ public Set<String> getDomains() {
+ return domains;
+ }
- public void setIpAddresses(Set<String> ipAddresses) {
- this.ipAddresses = ipAddresses;
- }
-
- public Set<String> getKeywords() {
- return keywords;
- }
+ public void setDomains(Set<String> domains) {
+ this.domains = domains;
+ }
- public void setKeywords(Set<String> keywords) {
- this.keywords = keywords;
- }
+ public Set<String> getIpAddresses() {
+ return ipAddresses;
+ }
- public String toString() {
+ public void setIpAddresses(Set<String> ipAddresses) {
+ this.ipAddresses = ipAddresses;
+ }
- StringBuffer sb = new StringBuffer();
+ public Set<String> getKeywords() {
+ return keywords;
+ }
- sb.append("1. eventTypes:\n");
- for (String s : eventTypes) {
- sb.append(" -- ");
- sb.append(s);
- sb.append("\n");
- }
- sb.append("2. domains:\n");
- for (String s : domains) {
- sb.append(" -- ");
- sb.append(s);
- sb.append("\n");
- }
- sb.append("3. IPs:\n");
- for (String s : ipAddresses) {
- sb.append(" -- ");
- sb.append(s);
- sb.append("\n");
- }
- sb.append("4. Keywords:\n");
- for (String s : keywords) {
- sb.append(" -- ");
- sb.append(s);
- sb.append("\n");
- }
- return sb.toString();
- }
+ public void setKeywords(Set<String> keywords) {
+ this.keywords = keywords;
+ }
+ public String toString() {
+
+ StringBuffer sb = new StringBuffer();
+
+ sb.append("1. eventTypes:\n");
+ for (String s : eventTypes) {
+ sb.append(" -- ");
+ sb.append(s);
+ sb.append("\n");
+ }
+ sb.append("2. domains:\n");
+ for (String s : domains) {
+ sb.append(" -- ");
+ sb.append(s);
+ sb.append("\n");
+ }
+ sb.append("3. IPs:\n");
+ for (String s : ipAddresses) {
+ sb.append(" -- ");
+ sb.append(s);
+ sb.append("\n");
+ }
+ sb.append("4. Keywords:\n");
+ for (String s : keywords) {
+ sb.append(" -- ");
+ sb.append(s);
+ sb.append("\n");
+ }
+ return sb.toString();
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/summarization/SummarizationBuilder.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/summarization/SummarizationBuilder.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/summarization/SummarizationBuilder.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -27,229 +27,229 @@
*/
public class SummarizationBuilder {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private enum SummarizationVariableType {
- IP, DOMAIN, EVENT_TYPE, KEYWORD;
- };
+ private enum SummarizationVariableType {
+ IP, DOMAIN, EVENT_TYPE, KEYWORD;
+ };
- private SummarizationDAO dao;
+ private SummarizationDAO dao;
- public SummarizationBuilder(SummarizationDAO dao) {
- this.dao = dao;
- }
+ public SummarizationBuilder(SummarizationDAO dao) {
+ this.dao = dao;
+ }
- public List<Element> build() {
- logger.debug("Getting Summary register data");
+ public List<Element> build() {
+ logger.debug("Getting Summary register data");
- // get all topology information (IPs)
+ // get all topology information (IPs)
- logger.debug("Get services info from DB");
- Map<String, ServiceSummaryBean> summaries = null;
- try {
- summaries = getAllServicesSummaries();
+ logger.debug("Get services info from DB");
+ Map<String, ServiceSummaryBean> summaries = null;
+ try {
+ summaries = getAllServicesSummaries();
- // now having all data in "summaries" structure and
need to
- // summarize
- // IPs, domains separately. EventTypes will remain
the same.
+ // now having all data in "summaries" structure and need to
+ // summarize
+ // IPs, domains separately. EventTypes will remain the same.
- // boolean doIPSummarization =
- //
config.getProperty("service.ls.do_ip_summarization");
- // work on the same data - summarize and store in
"summaries"
- // structure
- for (ServiceSummaryBean s : summaries.values()) {
+ // boolean doIPSummarization =
+ // config.getProperty("service.ls.do_ip_summarization");
+ // work on the same data - summarize and store in "summaries"
+ // structure
+ for (ServiceSummaryBean s : summaries.values()) {
- // summarize IPs
-
s.setIpAddresses(summarizeIPAddresses(s.getIpAddresses()));
+ // summarize IPs
+ s.setIpAddresses(summarizeIPAddresses(s.getIpAddresses()));
- // summarize domains
-
s.setDomains(summarizeDomains(s.getDomains()));
+ // summarize domains
+ s.setDomains(summarizeDomains(s.getDomains()));
- // summarize eventTypes
- // no summarization, just store
+ // summarize eventTypes
+ // no summarization, just store
- // summarize keywords
- // no summarization, just store
+ // summarize keywords
+ // no summarization, just store
- }
+ }
- DiscoveryRequestGenerator gen = new
DiscoveryRequestGenerator();
- Message msg = gen.createMessageElement();
+ DiscoveryRequestGenerator gen = new DiscoveryRequestGenerator();
+ Message msg = gen.createMessageElement();
- // for every single summary get XML
- for (Entry<String, ServiceSummaryBean> s :
summaries.entrySet()) {
+ // for every single summary get XML
+ for (Entry<String, ServiceSummaryBean> s : summaries.entrySet())
{
- Element subject =
gen.createSubjectElement(msg, s.getKey());
+ Element subject = gen.createSubjectElement(msg, s.getKey());
- for (String ip :
s.getValue().getIpAddresses()) {
+ for (String ip : s.getValue().getIpAddresses()) {
- // split results - ip/netmask or
assume 32 as netmask if
- // wrong
- // format
- String[] ipvals = ip.split("/", 2);
- if (ipvals.length != 2) {
- ipvals = new String[] { ip,
"32" };
- }
- gen.createAddressElement(subject,
ipvals[0], ipvals[1]);
- }
+ // split results - ip/netmask or assume 32 as netmask if
+ // wrong
+ // format
+ String[] ipvals = ip.split("/", 2);
+ if (ipvals.length != 2) {
+ ipvals = new String[] {ip, "32"};
+ }
+ gen.createAddressElement(subject, ipvals[0], ipvals[1]);
+ }
- for (String dom : s.getValue().getDomains()) {
- gen.createDomainElement(subject, dom);
- }
+ for (String dom : s.getValue().getDomains()) {
+ gen.createDomainElement(subject, dom);
+ }
- // get sum of parameters to determine whether
there is any
- // parameter
- // to be printed
- int paramsSum =
s.getValue().getEventTypes().size()
- +
s.getValue().getKeywords().size();
- // if it is at least one, put it.
- if (paramsSum > 0) {
- Element parametersElement = gen
-
.createParametersElement(subject);
+ // get sum of parameters to determine whether there is any
+ // parameter
+ // to be printed
+ int paramsSum = s.getValue().getEventTypes().size()
+ + s.getValue().getKeywords().size();
+ // if it is at least one, put it.
+ if (paramsSum > 0) {
+ Element parametersElement = gen
+ .createParametersElement(subject);
- for (String evt :
s.getValue().getEventTypes()) {
-
gen.createParameterElement(parametersElement,
- "eventType",
evt);
- }
- for (String kw :
s.getValue().getKeywords()) {
-
gen.createParameterElement(parametersElement,
- "keyword",
kw);
- }
- }
+ for (String evt : s.getValue().getEventTypes()) {
+ gen.createParameterElement(parametersElement,
+ "eventType", evt);
+ }
+ for (String kw : s.getValue().getKeywords()) {
+ gen.createParameterElement(parametersElement,
+ "keyword", kw);
+ }
+ }
- }
+ }
- return gen.getDataList();
+ return gen.getDataList();
- } catch (PerfSONARException e) {
- e.printStackTrace();
- }
+ } catch (PerfSONARException e) {
+ e.printStackTrace();
+ }
- return null;
- }
+ return null;
+ }
- /**
- * Get topology data and eventTypes from all services store it in
- * Map<String, ServiceSummary>
- *
- * @return - map - key - metadataId, value is a set of
Ip/keyword/domain
- * sets
- */
- private Map<String, ServiceSummaryBean> getAllServicesSummaries()
- throws PerfSONARException {
+ /**
+ * Get topology data and eventTypes from all services store it in
+ * Map<String, ServiceSummary>
+ *
+ * @return - map - key - metadataId, value is a set of Ip/keyword/domain
+ * sets
+ */
+ private Map<String, ServiceSummaryBean> getAllServicesSummaries()
+ throws PerfSONARException {
- Map<String, ServiceSummaryBean> summaries = new
HashMap<String, ServiceSummaryBean>();
- String[] ipResults = dao.queryIpResults();
- String[] domainResults = dao.queryDomainResults();
- String[] eventTypeResults = dao.queryEventTypeResults();
- String[] keywordResults = dao.queryKeywordResults();
+ Map<String, ServiceSummaryBean> summaries = new HashMap<String,
ServiceSummaryBean>();
+ String[] ipResults = dao.queryIpResults();
+ String[] domainResults = dao.queryDomainResults();
+ String[] eventTypeResults = dao.queryEventTypeResults();
+ String[] keywordResults = dao.queryKeywordResults();
-
logger.debug("LSSummaryServiceContent.getAllServicesSummaries: got summary
from database. Number of: ");
- logger.debug("- IP: [" + ipResults.length + "]");
- logger.debug("- domains: [" + domainResults.length + "]");
- logger.debug("- eventvTypes: [" + eventTypeResults.length +
"]");
+ logger.debug("LSSummaryServiceContent.getAllServicesSummaries: got
summary from database. Number of: ");
+ logger.debug("- IP: [" + ipResults.length + "]");
+ logger.debug("- domains: [" + domainResults.length + "]");
+ logger.debug("- eventvTypes: [" + eventTypeResults.length + "]");
- populateSummary(summaries, ipResults,
SummarizationVariableType.IP);
- populateSummary(summaries, domainResults,
- SummarizationVariableType.DOMAIN);
- populateSummary(summaries, eventTypeResults,
- SummarizationVariableType.EVENT_TYPE);
- populateSummary(summaries, keywordResults,
- SummarizationVariableType.KEYWORD);
+ populateSummary(summaries, ipResults, SummarizationVariableType.IP);
+ populateSummary(summaries, domainResults,
+ SummarizationVariableType.DOMAIN);
+ populateSummary(summaries, eventTypeResults,
+ SummarizationVariableType.EVENT_TYPE);
+ populateSummary(summaries, keywordResults,
+ SummarizationVariableType.KEYWORD);
- return summaries;
+ return summaries;
- }
+ }
- /**
- * Do IPs summarization. Returns new, summarized set of data Input
data is
- * not changed.
- *
- * @param data
- * @return
- */
- private Set<String> summarizeIPAddresses(Set<String> ipAddresses) {
- Set<String> result = SummarizeIpAddrs.getSummary(ipAddresses);
- return result;
- }
+ /**
+ * Do IPs summarization. Returns new, summarized set of data Input data
is
+ * not changed.
+ *
+ * @param data
+ * @return
+ */
+ private Set<String> summarizeIPAddresses(Set<String> ipAddresses) {
+ Set<String> result = SummarizeIpAddrs.getSummary(ipAddresses);
+ return result;
+ }
- /**
- * Do domains summarization. Returns new, summarized set of data
Input data
- * is not changed.
- *
- * @param data
- * @return
- */
- private Set<String> summarizeDomains(Set<String> data) {
- return DomainSummarizator.summarizeDomains(data);
- }
+ /**
+ * Do domains summarization. Returns new, summarized set of data Input
data
+ * is not changed.
+ *
+ * @param data
+ * @return
+ */
+ private Set<String> summarizeDomains(Set<String> data) {
+ return DomainSummarizator.summarizeDomains(data);
+ }
- /**
- * Extracts data from lines (DB results) and put them into the right
place
- * in summaries
- *
- * @param summaries
- * @param lines
- * results from DB
- * @param type
- * type of field to be populated
- */
- private void populateSummary(Map<String, ServiceSummaryBean>
summaries,
- String[] lines, SummarizationVariableType type) {
+ /**
+ * Extracts data from lines (DB results) and put them into the right
place
+ * in summaries
+ *
+ * @param summaries
+ * @param lines
+ * results from DB
+ * @param type
+ * type of field to be populated
+ */
+ private void populateSummary(Map<String, ServiceSummaryBean> summaries,
+ String[] lines, SummarizationVariableType type) {
- // split and store results
- for (String line : lines) {
+ // split and store results
+ for (String line : lines) {
- // split result [METADATA_ID,VALUE]
- String[] params = line.split(",", 2);
+ // split result [METADATA_ID,VALUE]
+ String[] params = line.split(",", 2);
- if (params.length != 2) {
- logger.debug("suppressing line; invalid
format(value='" + line + "')");
- break;
- }
+ if (params.length != 2) {
+ logger.debug("suppressing line; invalid format(value='" +
line + "')");
+ break;
+ }
- String metadataId = params[0];
- String content = params[1];
+ String metadataId = params[0];
+ String content = params[1];
- // get or create summary for the service
- ServiceSummaryBean summary =
summaries.get(metadataId);
- if (summary == null) {
- summary = new ServiceSummaryBean();
- summaries.put(metadataId, summary);
- }
+ // get or create summary for the service
+ ServiceSummaryBean summary = summaries.get(metadataId);
+ if (summary == null) {
+ summary = new ServiceSummaryBean();
+ summaries.put(metadataId, summary);
+ }
- // fill the right field
- switch (type) {
- case IP:
- summary.getIpAddresses().add(content);
- break;
- case DOMAIN:
- summary.getDomains().add(content);
- break;
- case EVENT_TYPE:
- summary.getEventTypes().add(content);
- break;
- case KEYWORD:
- summary.getKeywords().add(content);
- break;
- default:
- logger.error("Uknown
SummarizationVariableType");
- }
+ // fill the right field
+ switch (type) {
+ case IP:
+ summary.getIpAddresses().add(content);
+ break;
+ case DOMAIN:
+ summary.getDomains().add(content);
+ break;
+ case EVENT_TYPE:
+ summary.getEventTypes().add(content);
+ break;
+ case KEYWORD:
+ summary.getKeywords().add(content);
+ break;
+ default:
+ logger.error("Uknown SummarizationVariableType");
+ }
- }
+ }
- }
+ }
- @SuppressWarnings("unused")
- private void showSummary(Map<String, ServiceSummaryBean> summaries) {
- Iterator<Entry<String, ServiceSummaryBean>> i =
summaries.entrySet()
- .iterator();
- while (i.hasNext()) {
- Map.Entry<String, ServiceSummaryBean> e = i.next();
- logger.debug("\n==== " + e.getKey() + " ====\n");
- logger.debug(e.getValue().toString());
+ @SuppressWarnings("unused")
+ private void showSummary(Map<String, ServiceSummaryBean> summaries) {
+ Iterator<Entry<String, ServiceSummaryBean>> i = summaries.entrySet()
+ .iterator();
+ while (i.hasNext()) {
+ Map.Entry<String, ServiceSummaryBean> e = i.next();
+ logger.debug("\n==== " + e.getKey() + " ====\n");
+ logger.debug(e.getValue().toString());
- }
- }
+ }
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/utilities/ResourceBundle.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/utilities/ResourceBundle.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/utilities/ResourceBundle.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -13,51 +13,51 @@
* FIXME: to be removed completely, along with the previous file
*
*/
-public class ResourceBundle {
+public final class ResourceBundle {
- /**
- * path to the resource file
- */
- private final static String RESOURCE_FILE_PATH =
"org/perfsonar/resources/resources";
+ /**
+ * path to the resource file
+ */
+ private static final String RESOURCE_FILE_PATH =
"org/perfsonar/resources/resources";
- private static ResourceBundle rb;
- private final java.util.ResourceBundle resourceBundle;
- private volatile MessageFormat messageFormat;
+ private static ResourceBundle rb;
+ private final java.util.ResourceBundle resourceBundle;
+ private volatile MessageFormat messageFormat;
- private ResourceBundle() {
- resourceBundle =
java.util.ResourceBundle.getBundle(RESOURCE_FILE_PATH);
- messageFormat = new MessageFormat("");
- }
+ private ResourceBundle() {
+ resourceBundle =
java.util.ResourceBundle.getBundle(RESOURCE_FILE_PATH);
+ messageFormat = new MessageFormat("");
+ }
- public static synchronized ResourceBundle getInstance() {
- if (rb == null) {
- rb = new ResourceBundle();
- }
- return rb;
- }
+ public static synchronized ResourceBundle getInstance() {
+ if (rb == null) {
+ rb = new ResourceBundle();
+ }
+ return rb;
+ }
- /**
- *
- * gets simple string from resource file
- *
- * @param key
- * @return
- */
- public String getString(String key) {
- return resourceBundle.getString(key);
- }
+ /**
+ *
+ * gets simple string from resource file
+ *
+ * @param key
+ * @return
+ */
+ public String getString(String key) {
+ return resourceBundle.getString(key);
+ }
- /**
- *
- * gets string message from resource file with params
- *
- * @param key
- * @param params
- * @return
- */
- public String getString(String key, Object params[]) {
- messageFormat.applyPattern(resourceBundle.getString(key));
- return messageFormat.format(params);
- }
+ /**
+ *
+ * gets string message from resource file with params
+ *
+ * @param key
+ * @param params
+ * @return
+ */
+ public String getString(String key, Object[] params) {
+ messageFormat.applyPattern(resourceBundle.getString(key));
+ return messageFormat.format(params);
+ }
}
Deleted: trunk/perfsonar-java-xml-ls/src/main/webapp/views/DbInit.jsp
===================================================================
--- trunk/perfsonar-java-xml-ls/src/main/webapp/views/DbInit.jsp
2012-12-27 18:21:02 UTC (rev 6078)
+++ trunk/perfsonar-java-xml-ls/src/main/webapp/views/DbInit.jsp
2012-12-27 18:40:41 UTC (rev 6079)
@@ -1,22 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
-
-<div class="centerWindow">
-
-<p class="heading1">Lookup Service Database Initialisation</p>
-
-<% if (request.getParameter("ok") != null) { %>
-
- <div class="succeed">
- <p>The Lookup Service Database has been correctly initialised.</p>
- </div>
-
-<% } else { %>
-
- <div class="failed">
- <p>We failed to initialise the Lookup Service Database.</p>
- <p>Please check Tomcat log files for further information.</p>
- </div>
-
-<% } %>
-
-</div>
Deleted: trunk/perfsonar-java-xml-ls/src/main/webapp/views/dbInit.jsp
===================================================================
--- trunk/perfsonar-java-xml-ls/src/main/webapp/views/dbInit.jsp
2012-12-27 18:21:02 UTC (rev 6078)
+++ trunk/perfsonar-java-xml-ls/src/main/webapp/views/dbInit.jsp
2012-12-27 18:40:41 UTC (rev 6079)
@@ -1,22 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
-
-<div class="centerWindow">
-
-<p class="heading1">Lookup Service Database Initialisation</p>
-
-<% if (request.getParameter("ok") != null) { %>
-
- <div class="succeed">
- <p>The Lookup Service Database has been correctly initialised.</p>
- </div>
-
-<% } else { %>
-
- <div class="failed">
- <p>We failed to initialise the Lookup Service Database.</p>
- <p>Please check Tomcat log files for further information.</p>
- </div>
-
-<% } %>
-
-</div>
Added: trunk/perfsonar-java-xml-ls/src/main/webapp/views/dbInit.jsp
===================================================================
--- trunk/perfsonar-java-xml-ls/src/main/webapp/views/dbInit.jsp
(rev 0)
+++ trunk/perfsonar-java-xml-ls/src/main/webapp/views/dbInit.jsp
2012-12-27 18:40:41 UTC (rev 6079)
@@ -0,0 +1,22 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
+
+<div class="centerWindow">
+
+<p class="heading1">Lookup Service Database Initialisation</p>
+
+<% if (request.getParameter("ok") != null) { %>
+
+ <div class="succeed">
+ <p>The Lookup Service Database has been correctly initialised.</p>
+ </div>
+
+<% } else { %>
+
+ <div class="failed">
+ <p>We failed to initialise the Lookup Service Database.</p>
+ <p>Please check Tomcat log files for further information.</p>
+ </div>
+
+<% } %>
+
+</div>
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DeregistrationActionTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DeregistrationActionTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DeregistrationActionTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -17,71 +17,71 @@
public class DeregistrationActionTests extends TestCase {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private Element getDeregistrationRequest(String id, boolean
containsMetadata,boolean containslsKey) {
- logger.debug("Creating a deregistration request");
+ private Element getDeregistrationRequest(String id, boolean
containsMetadata, boolean containslsKey) {
+ logger.debug("Creating a deregistration request");
- Message msg = new Message();
- msg.setType("LSDeregisterRequest");
- if (containsMetadata) {
- Metadata meta = new Metadata();
- meta.setId("meta");
+ Message msg = new Message();
+ msg.setType("LSDeregisterRequest");
+ if (containsMetadata) {
+ Metadata meta = new Metadata();
+ meta.setId("meta");
- Key key = new Key();
-
- Parameters params = new Parameters();
- Parameter param = new Parameter();
- param.addAttribute("name", "lsKey");
- param.setText(id);
+ Key key = new Key();
- params.addChild(param);
-
- key.addChild(params);
-
- if(containslsKey){
- meta.addChild(key);
- }
+ Parameters params = new Parameters();
+ Parameter param = new Parameter();
+ param.addAttribute("name", "lsKey");
+ param.setText(id);
- Data data = new Data();
- data.setMetadataIdRef(meta.getId());
+ params.addChild(param);
- msg.addChild(meta);
- msg.addChild(data);
- }
- return msg;
- }
+ key.addChild(params);
- public void testDeregistrationWithoutMetadata() throws
PerfSONARException {
- logger.info("•••• Testing deregistration without metadata");
- logger.warn("•Testing deregistration• a 'No metadata' warning
should appear in the logs, ignore it!");
+ if (containslsKey) {
+ meta.addChild(key);
+ }
- LSDeregisterServiceEngine engine = new
LSDeregisterServiceEngine();
- ServiceMessage requestMessage = new ServiceMessage(
- getDeregistrationRequest("222",false,true));
- ServiceMessage responseMessage = new ServiceMessage();
- try {
- engine.takeAction(requestMessage, responseMessage);
- fail();
- } catch (PerfSONARException ex) {
- logger.info("•• Deregistration test passed!");
- }
- }
-
- public void testDeregistrationWithoutLSKey() throws
PerfSONARException {
- logger.info("•••• Testing deregistration without LSKey");
- logger.warn("•Testing deregistration• a 'No key' warning
should appear in the logs, ignore it!");
+ Data data = new Data();
+ data.setMetadataIdRef(meta.getId());
- LSDeregisterServiceEngine engine = new
LSDeregisterServiceEngine();
- ServiceMessage requestMessage = new ServiceMessage(
- getDeregistrationRequest("222",true,false));
- ServiceMessage responseMessage = new ServiceMessage();
- try {
- engine.takeAction(requestMessage, responseMessage);
- fail();
- } catch (PerfSONARException ex) {
- logger.info("•• Deregistration test passed!");
- }
- }
+ msg.addChild(meta);
+ msg.addChild(data);
+ }
+ return msg;
+ }
+ public void testDeregistrationWithoutMetadata() throws
PerfSONARException {
+ logger.info("•••• Testing deregistration without metadata");
+ logger.warn("•Testing deregistration• a 'No metadata' warning should
appear in the logs, ignore it!");
+
+ LSDeregisterServiceEngine engine = new LSDeregisterServiceEngine();
+ ServiceMessage requestMessage = new ServiceMessage(
+ getDeregistrationRequest("222", false, true));
+ ServiceMessage responseMessage = new ServiceMessage();
+ try {
+ engine.takeAction(requestMessage, responseMessage);
+ fail();
+ } catch (PerfSONARException ex) {
+ logger.info("•• Deregistration test passed!");
+ }
+ }
+
+ public void testDeregistrationWithoutLSKey() throws PerfSONARException {
+ logger.info("•••• Testing deregistration without LSKey");
+ logger.warn("•Testing deregistration• a 'No key' warning should
appear in the logs, ignore it!");
+
+ LSDeregisterServiceEngine engine = new LSDeregisterServiceEngine();
+ ServiceMessage requestMessage = new ServiceMessage(
+ getDeregistrationRequest("222", true, false));
+ ServiceMessage responseMessage = new ServiceMessage();
+ try {
+ engine.takeAction(requestMessage, responseMessage);
+ fail();
+ } catch (PerfSONARException ex) {
+ logger.info("•• Deregistration test passed!");
+ }
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryActionTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryActionTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryActionTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -29,93 +29,103 @@
*/
public class DiscoveryActionTests extends TestCase {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private Element getQueryRequest(String eventTypeStr, Element subject)
{
- logger.debug("Creating a query request");
+ private Element getQueryRequest(String eventTypeStr, Element subject) {
+ logger.debug("Creating a query request");
- Message msg = new Message();
- msg.setType("LSQueryRequest");
+ Message msg = new Message();
+ msg.setType("LSQueryRequest");
- Metadata meta = new Metadata();
- meta.setId("meta");
+ Metadata meta = new Metadata();
+ meta.setId("meta");
- EventType eventType = new EventType();
- eventType.setText(eventTypeStr);
+ EventType eventType = new EventType();
+ eventType.setText(eventTypeStr);
- Parameters params = new Parameters();
+ Parameters params = new Parameters();
- Data data = new Data();
- data.setMetadataIdRef(meta.getId());
+ Data data = new Data();
+ data.setMetadataIdRef(meta.getId());
- meta.addChild(subject);
- meta.addChild(eventType);
- meta.addChild(params);
- msg.addChild(meta);
- msg.addChild(data);
+ meta.addChild(subject);
+ meta.addChild(eventType);
+ meta.addChild(params);
+ msg.addChild(meta);
+ msg.addChild(data);
- return msg;
- }
+ return msg;
+ }
- /**
- * Test the full summarisation query process:
- *
- * - register some services
- * - generate an discovery query
- * - ask the queryServiceEngine to perform the query
- * - check response from DB
- *
- * @throws PerfSONARException
- */
- @Test
- public void testPerformAction() throws PerfSONARException {
- logger.info("•••• Testing Query Action: discovery query");
-
- // Register a service so we can test it exists in the summary
- LSRegisterServiceEngine regEngine = new
LSRegisterServiceEngine();
- RegistrationActionTests regTest = new
RegistrationActionTests();
- ServiceMessage registrationRequest = new
ServiceMessage(regTest.getRegistrationRequest(true, true, true, "600", true));
- ServiceMessage serviceResponse = new ServiceMessage();
- regEngine.takeAction(registrationRequest, serviceResponse);
+ /**
+ * Test the full summarisation query process:
+ *
+ * - register some services
+ * - generate an discovery query
+ * - ask the queryServiceEngine to perform the query
+ * - check response from DB
+ *
+ * @throws PerfSONARException
+ */
+ @Test
+ public void testPerformAction() throws PerfSONARException {
+ logger.info("•••• Testing Query Action: discovery query");
- // Build the discovery query
- DiscoveryQueryGeneratorTests discGenTest = new
DiscoveryQueryGeneratorTests();
- Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
- subject.addChild(discGenTest.buildAddressElement("1.1.1.1"));
-
subject.addChild(discGenTest.buildDomainElement("test.router.geant.net"));
-
subject.addChild(discGenTest.buildEventTypeElement("http://ggf.org/ns/nmwg/characteristic/utilization/2.0"));
- // TODO: Summary parameters are to be tested, not sure how we
must register them though
-// Element parameters =
discGenTest.addKeywordParameterElement(discGenTest.buildParametersElement(),
"GEANT");
-// parameters =
discGenTest.addEventTypeParameterElement(parameters,
"http://ggf.org/ns/nmwg/characteristic/errors/2.0");
-// subject.addChild(parameters);
-
- DiscoveryQueryGenerator dqg = new
DiscoveryQueryGenerator(subject);
- assertNotNull(dqg);
+ // Register a service so we can test it exists in the summary
+ LSRegisterServiceEngine regEngine = new LSRegisterServiceEngine();
+ RegistrationActionTests regTest = new RegistrationActionTests();
+ ServiceMessage registrationRequest = new
ServiceMessage(regTest.getRegistrationRequest(true, true, true, "600", true));
+ ServiceMessage serviceResponse = new ServiceMessage();
+ regEngine.takeAction(registrationRequest, serviceResponse);
- // Ask the query service to perform the discovery request
(which is a dispatch inside the query service)
- ServiceMessage serviceRequest = new
ServiceMessage(getQueryRequest("http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0",
subject));
- LSQueryServiceEngine queryEngine = new LSQueryServiceEngine();
- queryEngine.takeAction(serviceRequest, serviceResponse);
+ // Build the discovery query
+ DiscoveryQueryGeneratorTests discGenTest = new
DiscoveryQueryGeneratorTests();
+ Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
+ subject.addChild(discGenTest.buildAddressElement("1.1.1.1"));
+
subject.addChild(discGenTest.buildDomainElement("test.router.geant.net"));
+
subject.addChild(discGenTest.buildEventTypeElement("http://ggf.org/ns/nmwg/characteristic/utilization/2.0"));
+ // TODO: Summary parameters are to be tested, not sure how we must
register them though
+ // Element parameters =
discGenTest.addKeywordParameterElement(discGenTest.buildParametersElement(),
"GEANT");
+ // parameters =
discGenTest.addEventTypeParameterElement(parameters,
"http://ggf.org/ns/nmwg/characteristic/errors/2.0");
+ // subject.addChild(parameters);
- // Check eventType
- Collection<Element> metadata =
serviceResponse.getElement().getChildren("metadata");
- Element eventType =
metadata.iterator().next().getChildren("eventType").iterator().next();
-
assertTrue(eventType.getText().contains("http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0"));
+ DiscoveryQueryGenerator dqg = new DiscoveryQueryGenerator(subject);
+ assertNotNull(dqg);
- // Check result
-
logger.trace(serviceResponse.getElement().getChildren("data").iterator().next().toString());
- assertNotNull("No data/metadata part was returned",
serviceResponse.getElement().getChildren("data").iterator().next().getChildren("metadata"));
- Collection<Element> dataSubject =
serviceResponse.getElement().getChildren("data").iterator().next().getChildren("metadata").iterator().next().getChildren("subject");
- Collection<Element> serviceResults =
dataSubject.iterator().next().getChildren("service");
- logger.debug("Now checking every property of the returned
service");
-
assertTrue(serviceResults.iterator().next().getChildren("serviceName").iterator().next().getText().contains(RegistrationActionTests.testingServiceName));
-
assertTrue(serviceResults.iterator().next().getChildren("accessPoint").iterator().next().getText().contains(RegistrationActionTests.testingAccessPoint));
-
assertTrue(serviceResults.iterator().next().getChildren("serviceType").iterator().next().getText().contains(RegistrationActionTests.testingServiceType));
-
assertTrue(serviceResults.iterator().next().getChildren("serviceDescription").iterator().next().getText().contains(RegistrationActionTests.testingServiceDescription));
-
assertTrue(serviceResults.iterator().next().getChildren("organization").iterator().next().getText().contains(RegistrationActionTests.testingOrganization));
-
assertTrue(serviceResults.iterator().next().getChildren("contactEmail").iterator().next().getText().contains(RegistrationActionTests.testingContactEmail));
-
assertTrue(serviceResults.iterator().next().getChildren("serviceVersion").iterator().next().getText().contains(RegistrationActionTests.testingServiceVersion));
- logger.info("•• Query action test passed!");
- }
+ // Ask the query service to perform the discovery request (which is
a dispatch inside the query service)
+ ServiceMessage serviceRequest = new ServiceMessage(
+
getQueryRequest("http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0",
subject));
+ LSQueryServiceEngine queryEngine = new LSQueryServiceEngine();
+ queryEngine.takeAction(serviceRequest, serviceResponse);
+ // Check eventType
+ Collection<Element> metadata =
serviceResponse.getElement().getChildren("metadata");
+ Element eventType =
metadata.iterator().next().getChildren("eventType").iterator().next();
+
assertTrue(eventType.getText().contains("http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0"));
+
+ // Check result
+
logger.trace(serviceResponse.getElement().getChildren("data").iterator().next().toString());
+ assertNotNull("No data/metadata part was returned",
+
serviceResponse.getElement().getChildren("data").iterator().next().getChildren("metadata"));
+ Collection<Element> dataSubject =
serviceResponse.getElement().getChildren("data")
+
.iterator().next().getChildren("metadata").iterator().next().getChildren("subject");
+ Collection<Element> serviceResults =
dataSubject.iterator().next().getChildren("service");
+ logger.debug("Now checking every property of the returned service");
+
assertTrue(serviceResults.iterator().next().getChildren("serviceName")
+
.iterator().next().getText().contains(RegistrationActionTests.T_SERVICENAME));
+
assertTrue(serviceResults.iterator().next().getChildren("accessPoint")
+
.iterator().next().getText().contains(RegistrationActionTests.T_ACCESSPOINT));
+
assertTrue(serviceResults.iterator().next().getChildren("serviceType")
+
.iterator().next().getText().contains(RegistrationActionTests.T_SERVICETYPE));
+
assertTrue(serviceResults.iterator().next().getChildren("serviceDescription")
+
.iterator().next().getText().contains(RegistrationActionTests.T_SERVICEDESCRIPTION));
+
assertTrue(serviceResults.iterator().next().getChildren("organization")
+
.iterator().next().getText().contains(RegistrationActionTests.T_ORGANIZATION));
+
assertTrue(serviceResults.iterator().next().getChildren("contactEmail")
+
.iterator().next().getText().contains(RegistrationActionTests.T_CONTACTEMAIL));
+
assertTrue(serviceResults.iterator().next().getChildren("serviceVersion")
+
.iterator().next().getText().contains(RegistrationActionTests.T_SERVICEVERSION));
+ logger.info("•• Query action test passed!");
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryQueryGeneratorTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryQueryGeneratorTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryQueryGeneratorTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -17,181 +17,181 @@
*/
public class DiscoveryQueryGeneratorTests extends TestCase {
- protected Logger logger = LoggerFactory.getLogger(getClass());
-
- public Element buildAddressElement(String ip) {
- Element address = new Element("address", "nmtb",
"http://ogf.org/schema/network/topology/base/20070828/");
- address.addAttribute("type", "ipv4");
- address.setText(ip);
- return address;
- }
-
- public Element buildDomainElement(String dom) {
- Element domain = new Element("domain", "nmtb",
"http://ogf.org/schema/network/topology/base/20070828/");
- Element domainName = new Element();
- domainName.setName("name");
- domainName.setText(dom);
- domain.addChild(domainName);
- return domain;
- }
-
- public Element buildEventTypeElement(String et) {
- Element eventType = new Element("eventType", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
- eventType.setText(et);
- return eventType;
- }
-
- public Element buildParametersElement() {
- Element parameters = new Element("parameters", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
- return parameters;
- }
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- public Element addKeywordParameterElement(Element parameters, String
val) {
- Element parameter = new Element("parameter", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
- parameter.addAttribute("name", "keyword");
- parameter.setText(val);
- parameters.addChild(parameter);
- return parameters;
- }
+ public Element buildAddressElement(String ip) {
+ Element address = new Element("address", "nmtb",
"http://ogf.org/schema/network/topology/base/20070828/");
+ address.addAttribute("type", "ipv4");
+ address.setText(ip);
+ return address;
+ }
- public Element addEventTypeParameterElement(Element parameters,
String val) {
- Element parameter = new Element("parameter", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
- parameter.addAttribute("name", "eventType");
- parameter.setText(val);
- parameters.addChild(parameter);
- return parameters;
- }
+ public Element buildDomainElement(String dom) {
+ Element domain = new Element("domain", "nmtb",
"http://ogf.org/schema/network/topology/base/20070828/");
+ Element domainName = new Element();
+ domainName.setName("name");
+ domainName.setText(dom);
+ domain.addChild(domainName);
+ return domain;
+ }
- public void testDiscoveryQueryGeneratorEmpty() throws
PerfSONARException {
- logger.info("•••• Testing Discovery Query Generator with an
empty XQuery");
+ public Element buildEventTypeElement(String et) {
+ Element eventType = new Element("eventType", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
+ eventType.setText(et);
+ return eventType;
+ }
- // Create a dummy subject Element
- Element subject = new Element();
-
- DiscoveryQueryGenerator dqg = new
DiscoveryQueryGenerator(subject);
- assertNotNull(dqg);
-
- logger.warn("A Discovery query warning will be shown. Ignore
it!");
- try {
- dqg.getQuery();
- fail();
- } catch (PerfSONARException e) {
- assertTrue(e.getMessage().contains("At least one
search element is needed (ip, domain, eventType, keyword)"));
- }
- logger.info("•• Discovery Query Generator test passed!");
- }
-
- public void testDiscoveryQueryGeneratorAddress() throws
PerfSONARException {
- logger.info("•••• Testing Discovery Query Generator with an
IP address");
+ public Element buildParametersElement() {
+ Element parameters = new Element("parameters", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
+ return parameters;
+ }
- // Create the subject Element
- Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
- subject.addChild(buildAddressElement("1.1.1.1"));
-
- DiscoveryQueryGenerator dqg = new
DiscoveryQueryGenerator(subject);
- assertNotNull(dqg);
-
- assertTrue("Generated XQuery doesn't look good!",
dqg.getQuery().matches(
- "^declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/';\\s*" +
- "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\\s*" +
- "for \\$d in
/nmwg:store\\[@type='LSStore'\\]/nmwg:data\\s*"
+
- "[\\S\\s]*" +
- "\\(.*nmwgt:ifAddress.*'1.1.1.1'\\s*\\)" +
- "[\\S\\s]*"));
- logger.info("•• Discovery Query Generator test passed!");
- }
-
- public void testDiscoveryQueryGeneratorDomain() throws
PerfSONARException {
- logger.info("•••• Testing Discovery Query Generator with an
IP address");
+ public Element addKeywordParameterElement(Element parameters, String
val) {
+ Element parameter = new Element("parameter", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
+ parameter.addAttribute("name", "keyword");
+ parameter.setText(val);
+ parameters.addChild(parameter);
+ return parameters;
+ }
- // Create the subject Element
- Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
- subject.addChild(buildDomainElement("test.geant.net"));
-
- DiscoveryQueryGenerator dqg = new
DiscoveryQueryGenerator(subject);
- assertNotNull(dqg);
-
- assertTrue("Generated XQuery doesn't look good!",
dqg.getQuery().matches(
- "^declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/';\\s*" +
- "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\\s*" +
- "for \\$d in
/nmwg:store\\[@type='LSStore'\\]/nmwg:data\\s*"
+
- "[\\S\\s]*" +
-
"ends-with\\(.*nmwgt:hostName.*'test.geant.net'\\)" +
- "[\\S\\s]*"));
- logger.info("•• Discovery Query Generator test passed!");
- }
-
- public void testDiscoveryQueryGeneratorEventType() throws
PerfSONARException {
- logger.info("•••• Testing Discovery Query Generator with an
eventType");
+ public Element addEventTypeParameterElement(Element parameters, String
val) {
+ Element parameter = new Element("parameter", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
+ parameter.addAttribute("name", "eventType");
+ parameter.setText(val);
+ parameters.addChild(parameter);
+ return parameters;
+ }
- // Create the subject Element
- Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
-
subject.addChild(buildEventTypeElement("http://ggf.org/ns/nmwg/characteristic/utilization/2.0"));
-
- DiscoveryQueryGenerator dqg = new
DiscoveryQueryGenerator(subject);
- assertNotNull(dqg);
-
- assertTrue("Generated XQuery doesn't look good!",
dqg.getQuery().matches(
- "^declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/';\\s*" +
- "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\\s*" +
- "for \\$d in
/nmwg:store\\[@type='LSStore'\\]/nmwg:data\\s*"
+
- "[\\S\\s]*" +
-
"\\(.*nmwg:eventType.*'http://ggf.org/ns/nmwg/characteristic/utilization/2.0'\\s*\\)"
+
- "[\\S\\s]*"));
- logger.info("•• Discovery Query Generator test passed!");
- }
+ public void testDiscoveryQueryGeneratorEmpty() throws PerfSONARException
{
+ logger.info("•••• Testing Discovery Query Generator with an empty
XQuery");
- public void testDiscoveryQueryGeneratorKeyword() throws
PerfSONARException {
- logger.info("•••• Testing Discovery Query Generator with a
keyword");
+ // Create a dummy subject Element
+ Element subject = new Element();
- // Create the subject Element
- Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
-
subject.addChild(addKeywordParameterElement(buildParametersElement(),
"GEANT"));
-
- DiscoveryQueryGenerator dqg = new
DiscoveryQueryGenerator(subject);
- assertNotNull(dqg);
-
- assertTrue("Generated XQuery doesn't look good!",
dqg.getQuery().matches(
- "^declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/';\\s*" +
- "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\\s*" +
- "for \\$d in
/nmwg:store\\[@type='LSStore'\\]/nmwg:data\\s*"
+
- "[\\S\\s]*" +
-
"\\(.*nmwg:parameter\\[@name='keyword'\\].*'GEANT'\\s*\\)"
+
- "[\\S\\s]*"));
- logger.info("•• Discovery Query Generator test passed!");
- }
+ DiscoveryQueryGenerator dqg = new DiscoveryQueryGenerator(subject);
+ assertNotNull(dqg);
- public void testDiscoveryQueryGeneratorAll() throws
PerfSONARException {
- logger.info("•••• Testing Discovery Query Generator with each
search elements");
+ logger.warn("A Discovery query warning will be shown. Ignore it!");
+ try {
+ dqg.getQuery();
+ fail();
+ } catch (PerfSONARException e) {
+ assertTrue(e.getMessage().contains("At least one search element
is needed (ip, domain, eventType, keyword)"));
+ }
+ logger.info("•• Discovery Query Generator test passed!");
+ }
- // Create the subject Element
- Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
- subject.addChild(buildAddressElement("1.1.1.1"));
- subject.addChild(buildDomainElement("test.geant.net"));
-
subject.addChild(buildEventTypeElement("http://ggf.org/ns/nmwg/characteristic/utilization/2.0"));
- Element parameters =
addKeywordParameterElement(buildParametersElement(), "GEANT");
- parameters = addEventTypeParameterElement(parameters,
"http://ggf.org/ns/nmwg/characteristic/errors/2.0");
- subject.addChild(parameters);
-
- DiscoveryQueryGenerator dqg = new
DiscoveryQueryGenerator(subject);
- assertNotNull(dqg);
-
- // The order is always: address, domain, eventType and then
parameter
- assertTrue("Generated XQuery doesn't look good!",
dqg.getQuery().matches(
- "^declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/';\\s*" +
- "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\\s*" +
- "for \\$d in
/nmwg:store\\[@type='LSStore'\\]/nmwg:data\\s*"
+
- "[\\S\\s]*" +
- "\\(.*nmwgt:ifAddress.*'1.1.1.1'\\s*\\)" +
- "[\\S\\s]*" +
-
"ends-with\\(.*nmwgt:hostName.*'test.geant.net'\\)" +
- "[\\S\\s]*" +
-
"\\(.*nmwg:eventType.*'http://ggf.org/ns/nmwg/characteristic/(utilization|errors)/2.0'\\s*"
+
- "[\\S\\s]*" +
-
".*nmwg:eventType.*'http://ggf.org/ns/nmwg/characteristic/(utilization|errors)/2.0'\\s*\\)"
+
- "[\\S\\s]*" +
-
"\\(.*nmwg:parameter\\[@name='keyword'\\].*'GEANT'\\s*\\)"
+
- "[\\S\\s]*"));
- logger.info("•• Discovery Query Generator test passed!");
- }
+ public void testDiscoveryQueryGeneratorAddress() throws
PerfSONARException {
+ logger.info("•••• Testing Discovery Query Generator with an IP
address");
+
+ // Create the subject Element
+ Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
+ subject.addChild(buildAddressElement("1.1.1.1"));
+
+ DiscoveryQueryGenerator dqg = new DiscoveryQueryGenerator(subject);
+ assertNotNull(dqg);
+
+ assertTrue("Generated XQuery doesn't look good!",
dqg.getQuery().matches(
+ "^declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/';\\s*"
+ + "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\\s*"
+ + "for \\$d in
/nmwg:store\\[@type='LSStore'\\]/nmwg:data\\s*"
+ + "[\\S\\s]*"
+ + "\\(.*nmwgt:ifAddress.*'1.1.1.1'\\s*\\)"
+ + "[\\S\\s]*"));
+ logger.info("•• Discovery Query Generator test passed!");
+ }
+
+ public void testDiscoveryQueryGeneratorDomain() throws
PerfSONARException {
+ logger.info("•••• Testing Discovery Query Generator with an IP
address");
+
+ // Create the subject Element
+ Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
+ subject.addChild(buildDomainElement("test.geant.net"));
+
+ DiscoveryQueryGenerator dqg = new DiscoveryQueryGenerator(subject);
+ assertNotNull(dqg);
+
+ assertTrue("Generated XQuery doesn't look good!",
dqg.getQuery().matches(
+ "^declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/';\\s*"
+ + "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\\s*"
+ + "for \\$d in
/nmwg:store\\[@type='LSStore'\\]/nmwg:data\\s*"
+ + "[\\S\\s]*"
+ + "ends-with\\(.*nmwgt:hostName.*'test.geant.net'\\)"
+ + "[\\S\\s]*"));
+ logger.info("•• Discovery Query Generator test passed!");
+ }
+
+ public void testDiscoveryQueryGeneratorEventType() throws
PerfSONARException {
+ logger.info("•••• Testing Discovery Query Generator with an
eventType");
+
+ // Create the subject Element
+ Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
+
subject.addChild(buildEventTypeElement("http://ggf.org/ns/nmwg/characteristic/utilization/2.0"));
+
+ DiscoveryQueryGenerator dqg = new DiscoveryQueryGenerator(subject);
+ assertNotNull(dqg);
+
+ assertTrue("Generated XQuery doesn't look good!",
dqg.getQuery().matches(
+ "^declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/';\\s*"
+ + "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\\s*"
+ + "for \\$d in
/nmwg:store\\[@type='LSStore'\\]/nmwg:data\\s*"
+ + "[\\S\\s]*"
+ +
"\\(.*nmwg:eventType.*'http://ggf.org/ns/nmwg/characteristic/utilization/2.0'\\s*\\)"
+ + "[\\S\\s]*"));
+ logger.info("•• Discovery Query Generator test passed!");
+ }
+
+ public void testDiscoveryQueryGeneratorKeyword() throws
PerfSONARException {
+ logger.info("•••• Testing Discovery Query Generator with a keyword");
+
+ // Create the subject Element
+ Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
+
subject.addChild(addKeywordParameterElement(buildParametersElement(),
"GEANT"));
+
+ DiscoveryQueryGenerator dqg = new DiscoveryQueryGenerator(subject);
+ assertNotNull(dqg);
+
+ assertTrue("Generated XQuery doesn't look good!",
dqg.getQuery().matches(
+ "^declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/';\\s*"
+ + "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\\s*"
+ + "for \\$d in
/nmwg:store\\[@type='LSStore'\\]/nmwg:data\\s*"
+ + "[\\S\\s]*"
+ +
"\\(.*nmwg:parameter\\[@name='keyword'\\].*'GEANT'\\s*\\)"
+ + "[\\S\\s]*"));
+ logger.info("•• Discovery Query Generator test passed!");
+ }
+
+ public void testDiscoveryQueryGeneratorAll() throws PerfSONARException {
+ logger.info("•••• Testing Discovery Query Generator with each search
elements");
+
+ // Create the subject Element
+ Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
+ subject.addChild(buildAddressElement("1.1.1.1"));
+ subject.addChild(buildDomainElement("test.geant.net"));
+
subject.addChild(buildEventTypeElement("http://ggf.org/ns/nmwg/characteristic/utilization/2.0"));
+ Element parameters =
addKeywordParameterElement(buildParametersElement(), "GEANT");
+ parameters = addEventTypeParameterElement(parameters,
"http://ggf.org/ns/nmwg/characteristic/errors/2.0");
+ subject.addChild(parameters);
+
+ DiscoveryQueryGenerator dqg = new DiscoveryQueryGenerator(subject);
+ assertNotNull(dqg);
+
+ // The order is always: address, domain, eventType and then parameter
+ assertTrue("Generated XQuery doesn't look good!",
dqg.getQuery().matches(
+ "^declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/';\\s*"
+ + "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/';\\s*"
+ + "for \\$d in
/nmwg:store\\[@type='LSStore'\\]/nmwg:data\\s*"
+ + "[\\S\\s]*"
+ + "\\(.*nmwgt:ifAddress.*'1.1.1.1'\\s*\\)"
+ + "[\\S\\s]*"
+ + "ends-with\\(.*nmwgt:hostName.*'test.geant.net'\\)"
+ + "[\\S\\s]*"
+ +
"\\(.*nmwg:eventType.*'http://ggf.org/ns/nmwg/characteristic/(utilization|errors)/2.0'\\s*"
+ + "[\\S\\s]*"
+ +
".*nmwg:eventType.*'http://ggf.org/ns/nmwg/characteristic/(utilization|errors)/2.0'\\s*\\)"
+ + "[\\S\\s]*"
+ +
"\\(.*nmwg:parameter\\[@name='keyword'\\].*'GEANT'\\s*\\)"
+ + "[\\S\\s]*"));
+ logger.info("•• Discovery Query Generator test passed!");
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/EchoActionTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/EchoActionTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/EchoActionTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -19,74 +19,74 @@
*/
public class EchoActionTests extends TestCase {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private Element getEchoRequest(String eventTypeStr) {
- Message msg = new Message();
- msg.setType("EchoRequest");
+ private Element getEchoRequest(String eventTypeStr) {
+ Message msg = new Message();
+ msg.setType("EchoRequest");
- Metadata meta = new Metadata();
- meta.setId("meta");
+ Metadata meta = new Metadata();
+ meta.setId("meta");
- if(eventTypeStr!=null){
- EventType eventType = new EventType();
- eventType.setText(eventTypeStr);
- meta.addChild(eventType);
- }
+ if (eventTypeStr != null) {
+ EventType eventType = new EventType();
+ eventType.setText(eventTypeStr);
+ meta.addChild(eventType);
+ }
- Data data = new Data();
- data.setMetadataIdRef(meta.getId());
- msg.addChild(meta);
- msg.addChild(data);
+ Data data = new Data();
+ data.setMetadataIdRef(meta.getId());
+ msg.addChild(meta);
+ msg.addChild(data);
- return msg;
- }
+ return msg;
+ }
- public void testEchoRequestProcessing() throws PerfSONARException {
- logger.info("•••• Testing Echo Request");
+ public void testEchoRequestProcessing() throws PerfSONARException {
+ logger.info("•••• Testing Echo Request");
- EchoServiceEngine ese = new EchoServiceEngine();
- ServiceMessage requestMessage = new ServiceMessage(
-
getEchoRequest("http://schemas.perfsonar.net/tools/admin/echo/2.0"));
- ServiceMessage responseMessage = new ServiceMessage();
+ EchoServiceEngine ese = new EchoServiceEngine();
+ ServiceMessage requestMessage = new ServiceMessage(
+
getEchoRequest("http://schemas.perfsonar.net/tools/admin/echo/2.0"));
+ ServiceMessage responseMessage = new ServiceMessage();
- ese.takeAction(requestMessage, responseMessage);
- Metadata metadata = (Metadata) responseMessage.getElement()
- .getChildren("metadata").iterator().next();
- EventType eventType = (EventType)
metadata.getChildren("eventType")
- .iterator().next();
- assertTrue(eventType.getText().contains("success"));
- logger.info("•• Echo request test passed!");
- }
+ ese.takeAction(requestMessage, responseMessage);
+ Metadata metadata = (Metadata) responseMessage.getElement()
+ .getChildren("metadata").iterator().next();
+ EventType eventType = (EventType) metadata.getChildren("eventType")
+ .iterator().next();
+ assertTrue(eventType.getText().contains("success"));
+ logger.info("•• Echo request test passed!");
+ }
- public void testIncorrectEventType() {
- logger.info("•••• Testing Echo Request with incorrect
eventType");
-
- EchoServiceEngine ese = new EchoServiceEngine();
- ServiceMessage responseMessage = new ServiceMessage();
+ public void testIncorrectEventType() {
+ logger.info("•••• Testing Echo Request with incorrect eventType");
- try {
- ese.takeAction(new
ServiceMessage(getEchoRequest("dummy event type ")), responseMessage);
- fail();
- } catch (PerfSONARException ex) {
- // This was supposed to fail
- }
- logger.info("•• Echo request test passed!");
- }
-
-
- public void testMessageWithoutEventType() {
- logger.info("•••• Testing Echo Request without eventType");
+ EchoServiceEngine ese = new EchoServiceEngine();
+ ServiceMessage responseMessage = new ServiceMessage();
- EchoServiceEngine ese = new EchoServiceEngine();
- ServiceMessage responseMessage = new ServiceMessage();
- try {
- ese.takeAction(new
ServiceMessage(getEchoRequest(null)), responseMessage);
- fail();
- } catch (PerfSONARException ex) {
- // This was supposed to fail
- }
- logger.info("•• Echo request test passed!");
- }
+ try {
+ ese.takeAction(new ServiceMessage(getEchoRequest("dummy event
type ")), responseMessage);
+ fail();
+ } catch (PerfSONARException ex) {
+ // This was supposed to fail
+ }
+ logger.info("•• Echo request test passed!");
+ }
+
+ public void testMessageWithoutEventType() {
+ logger.info("•••• Testing Echo Request without eventType");
+
+ EchoServiceEngine ese = new EchoServiceEngine();
+ ServiceMessage responseMessage = new ServiceMessage();
+ try {
+ ese.takeAction(new ServiceMessage(getEchoRequest(null)),
responseMessage);
+ fail();
+ } catch (PerfSONARException ex) {
+ // This was supposed to fail
+ }
+ logger.info("•• Echo request test passed!");
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/QueryActionTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/QueryActionTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/QueryActionTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -17,7 +17,6 @@
import org.perfsonar.base2.xml.nmwg.Subject;
import org.perfsonar.service.lookupservice.LSQueryServiceEngine;
import org.perfsonar.service.lookupservice.LSRegisterServiceEngine;
-import org.perfsonar.tests.actions.RegistrationActionTests;
/**
* @author Antoine Delvaux - DANTE
@@ -25,159 +24,160 @@
*/
public class QueryActionTests extends TestCase {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private Element getQueryRequest(String eventTypeStr, String query) {
- logger.debug("Creating a query request");
+ private Element getQueryRequest(String eventTypeStr, String query) {
+ logger.debug("Creating a query request");
- Message msg = new Message();
- msg.setType("LSQueryRequest");
+ Message msg = new Message();
+ msg.setType("LSQueryRequest");
- Metadata meta = new Metadata();
- meta.setId("meta");
+ Metadata meta = new Metadata();
+ meta.setId("meta");
- EventType eventType = new EventType();
- eventType.setText(eventTypeStr);
+ EventType eventType = new EventType();
+ eventType.setText(eventTypeStr);
- Subject subject = new Subject();
- subject.setText(query);
+ Subject subject = new Subject();
+ subject.setText(query);
- Parameters params = new Parameters();
+ Parameters params = new Parameters();
- Data data = new Data();
- data.setMetadataIdRef(meta.getId());
+ Data data = new Data();
+ data.setMetadataIdRef(meta.getId());
- msg.addChild(meta);
+ msg.addChild(meta);
- meta.addChild(subject);
- meta.addChild(eventType);
- meta.addChild(params);
+ meta.addChild(subject);
+ meta.addChild(eventType);
+ meta.addChild(params);
- msg.addChild(data);
+ msg.addChild(data);
- return msg;
- }
+ return msg;
+ }
- public void testPermissionDenied() throws PerfSONARException {
- logger.info("•••• Testing Query Action: permission denied
error");
- logger.warn("•Testing Query Action• a write access warning
should appear in the logs, ignore it!");
+ public void testPermissionDenied() throws PerfSONARException {
+ logger.info("•••• Testing Query Action: permission denied error");
+ logger.warn("•Testing Query Action• a write access warning should
appear in the logs, ignore it!");
- LSQueryServiceEngine engine = new LSQueryServiceEngine();
- ServiceMessage serviceRequest = new ServiceMessage(
- getQueryRequest(
-
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/query/xquery/2.0",
- "xmldb:remove('/db/ls/',
'LSStore-summary.xml')"));
- ServiceMessage serviceResponse = new ServiceMessage();
+ LSQueryServiceEngine engine = new LSQueryServiceEngine();
+ ServiceMessage serviceRequest = new ServiceMessage(
+ getQueryRequest(
+
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/query/xquery/2.0",
+ "xmldb:remove('/db/ls/', 'LSStore-summary.xml')"));
+ ServiceMessage serviceResponse = new ServiceMessage();
- try {
- engine.takeAction(serviceRequest, serviceResponse);
- fail();
- } catch (PerfSONARException ex) {
- //TODO: url event types
- if(!ex.getResultCode().equals("error.ls.query")){
- fail();
- }
- }
- logger.info("•• Query Action test passed!");
- }
+ try {
+ engine.takeAction(serviceRequest, serviceResponse);
+ fail();
+ } catch (PerfSONARException ex) {
+ //TODO: url event types
+ if (!ex.getResultCode().equals("error.ls.query")) {
+ fail();
+ }
+ }
+ logger.info("•• Query Action test passed!");
+ }
- public void testQueryRequestSimple() throws PerfSONARException {
- logger.info("•••• Testing Query Action: simple request and
check result");
+ public void testQueryRequestSimple() throws PerfSONARException {
+ logger.info("•••• Testing Query Action: simple request and check
result");
- LSQueryServiceEngine engine = new LSQueryServiceEngine();
- ServiceMessage serviceRequest = new ServiceMessage(
- getQueryRequest(
-
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/query/xquery/2.0",
- "\"1\""));
- ServiceMessage serviceResponse = new ServiceMessage();
+ LSQueryServiceEngine engine = new LSQueryServiceEngine();
+ ServiceMessage serviceRequest = new ServiceMessage(
+ getQueryRequest(
+
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/query/xquery/2.0",
+ "\"1\""));
+ ServiceMessage serviceResponse = new ServiceMessage();
- engine.takeAction(serviceRequest, serviceResponse);
-
- // Check eventType
- Collection<Element> metadata =
serviceResponse.getElement().getChildren("metadata");
- Element eventType =
metadata.iterator().next().getChildren("eventType").iterator().next();
- assertTrue(eventType.getText().contains("success"));
+ engine.takeAction(serviceRequest, serviceResponse);
- // Check result
- Collection<Element> data =
serviceResponse.getElement().getChildren("data");
- Element result =
data.iterator().next().getChildren("datum").iterator().next().getChildren("value").iterator().next();
- assertTrue(result.getText().contains("1"));
- logger.info("•• Query Action test passed!");
- }
+ // Check eventType
+ Collection<Element> metadata =
serviceResponse.getElement().getChildren("metadata");
+ Element eventType =
metadata.iterator().next().getChildren("eventType").iterator().next();
+ assertTrue(eventType.getText().contains("success"));
- public void testQueryRequestXQuery() throws PerfSONARException {
- logger.info("•••• Testing Query Action: registration + xquery
and check result");
+ // Check result
+ Collection<Element> data =
serviceResponse.getElement().getChildren("data");
+ Element result =
data.iterator().next().getChildren("datum").iterator().next().getChildren("value").iterator().next();
+ assertTrue(result.getText().contains("1"));
+ logger.info("•• Query Action test passed!");
+ }
- LSRegisterServiceEngine regEngine = new
LSRegisterServiceEngine();
- LSQueryServiceEngine engine = new LSQueryServiceEngine();
-
- // Register a service so we can test it exists
- RegistrationActionTests regTest = new
RegistrationActionTests();
- ServiceMessage registrationRequest = new
ServiceMessage(regTest.getRegistrationRequest(true, true, true, "600", true));
- ServiceMessage serviceResponse = new ServiceMessage();
- regEngine.takeAction(registrationRequest, serviceResponse);
-
- // Do an XQuery to test the query engine
- ServiceMessage serviceRequest = new ServiceMessage(
- getQueryRequest(
-
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/query/xquery/2.0",
- "declare namespace
nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\"; " +
- "declare namespace
perfsonar=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/\"; " +
- "declare namespace
psservice=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/\"; " +
- "for $metadata in
/nmwg:store/nmwg:metadata[@id=\"http://test.register.geant.net:8080/perfsonar-java-rrd-ma/services/MeasurementArchiveService\"]
" +
- "let $metadata_id :=
$metadata/@id " +
- "let $data :=
/nmwg:store/nmwg:data[@metadataIdRef=$metadata_id]
" +
- "where
$metadata//psservice:serviceType=\"MA\" " +
- "return
$data//perfsonar:subject/" + RegistrationActionTests.dataName + " " +
- ""));
- engine.takeAction(serviceRequest, serviceResponse);
+ public void testQueryRequestXQuery() throws PerfSONARException {
+ logger.info("•••• Testing Query Action: registration + xquery and
check result");
- // Check eventType
- Collection<Element> metadata =
serviceResponse.getElement().getChildren("metadata");
- Element eventType =
metadata.iterator().next().getChildren("eventType").iterator().next();
- assertTrue(eventType.getText().contains("success"));
+ LSRegisterServiceEngine regEngine = new LSRegisterServiceEngine();
+ LSQueryServiceEngine engine = new LSQueryServiceEngine();
- // Check result
- Collection<Element> datum =
serviceResponse.getElement().getChildren("data").iterator().next().getChildren("datum");
- Element result =
datum.iterator().next().getChildren(RegistrationActionTests.dataName).iterator().next();
-
assertTrue(result.getText().contains(RegistrationActionTests.dataValue));
- logger.info("•• xQuery test passed!");
- }
+ // Register a service so we can test it exists
+ RegistrationActionTests regTest = new RegistrationActionTests();
+ ServiceMessage registrationRequest = new
ServiceMessage(regTest.getRegistrationRequest(true, true, true, "600", true));
+ ServiceMessage serviceResponse = new ServiceMessage();
+ regEngine.takeAction(registrationRequest, serviceResponse);
- public void testIncorrectQuery() throws PerfSONARException {
- logger.info("•••• Testing Query Action: incorrect query");
- logger.warn("•Testing Query Action• a queryP error should
appear in the logs, ignore it!");
+ // Do an XQuery to test the query engine
+ ServiceMessage serviceRequest = new ServiceMessage(
+ getQueryRequest(
+
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/query/xquery/2.0",
+ "declare namespace
nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\"; "
+ + "declare namespace
perfsonar=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/\"; "
+ + "declare namespace
psservice=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/\"; "
+ + "for $metadata in /nmwg:store/nmwg:metadata"
+ +
"[@id=\"http://test.register.geant.net:8080/perfsonar-java-rrd-ma/services/MeasurementArchiveService\"]
"
+ + "let $metadata_id := $metadata/@id "
+ + "let $data :=
/nmwg:store/nmwg:data[@metadataIdRef=$metadata_id]
"
+ + "where $metadata//psservice:serviceType=\"MA\"
"
+ + "return $data//perfsonar:subject/" +
RegistrationActionTests.DATA_NAME + " "
+ ));
+ engine.takeAction(serviceRequest, serviceResponse);
- LSQueryServiceEngine engine = new LSQueryServiceEngine();
- ServiceMessage serviceResponse = new ServiceMessage();
- ServiceMessage serviceRequest = new ServiceMessage(
- getQueryRequest(
-
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/query/xquery/2.0",
- "DUMMY XQUERY"));
+ // Check eventType
+ Collection<Element> metadata =
serviceResponse.getElement().getChildren("metadata");
+ Element eventType =
metadata.iterator().next().getChildren("eventType").iterator().next();
+ assertTrue(eventType.getText().contains("success"));
- try {
- engine.takeAction(serviceRequest, serviceResponse);
- fail();
- } catch (PerfSONARException ex) {
- // This was supposed to fail
- }
- logger.info("•• Incorrect query test passed!");
- }
+ // Check result
+ Collection<Element> datum =
serviceResponse.getElement().getChildren("data").iterator().next().getChildren("datum");
+ Element result =
datum.iterator().next().getChildren(RegistrationActionTests.DATA_NAME).iterator().next();
+
assertTrue(result.getText().contains(RegistrationActionTests.DATA_VALUE));
+ logger.info("•• xQuery test passed!");
+ }
- public void testIncorrectEventType() throws PerfSONARException {
- logger.info("•••• Testing Query Action: incorrect eventType");
+ public void testIncorrectQuery() throws PerfSONARException {
+ logger.info("•••• Testing Query Action: incorrect query");
+ logger.warn("•Testing Query Action• a queryP error should appear in
the logs, ignore it!");
- LSQueryServiceEngine engine = new LSQueryServiceEngine();
- ServiceMessage serviceResponse = new ServiceMessage();
- ServiceMessage serviceRequest = new
ServiceMessage(getQueryRequest(
- "DUMMY_EVENT_TYPE", "\"1\""));
+ LSQueryServiceEngine engine = new LSQueryServiceEngine();
+ ServiceMessage serviceResponse = new ServiceMessage();
+ ServiceMessage serviceRequest = new ServiceMessage(
+ getQueryRequest(
+
"http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/query/xquery/2.0",
+ "DUMMY XQUERY"));
- try {
- engine.takeAction(serviceRequest, serviceResponse);
- fail();
- } catch (PerfSONARException ex) {
- // This was supposed to fail
- }
- logger.info("•• Incorrect eventType query test passed!");
- }
+ try {
+ engine.takeAction(serviceRequest, serviceResponse);
+ fail();
+ } catch (PerfSONARException ex) {
+ // This was supposed to fail
+ }
+ logger.info("•• Incorrect query test passed!");
+ }
+
+ public void testIncorrectEventType() throws PerfSONARException {
+ logger.info("•••• Testing Query Action: incorrect eventType");
+
+ LSQueryServiceEngine engine = new LSQueryServiceEngine();
+ ServiceMessage serviceResponse = new ServiceMessage();
+ ServiceMessage serviceRequest = new ServiceMessage(getQueryRequest(
+ "DUMMY_EVENT_TYPE", "\"1\""));
+
+ try {
+ engine.takeAction(serviceRequest, serviceResponse);
+ fail();
+ } catch (PerfSONARException ex) {
+ // This was supposed to fail
+ }
+ logger.info("•• Incorrect eventType query test passed!");
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/RegistrationActionTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/RegistrationActionTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/RegistrationActionTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -20,306 +20,306 @@
public class RegistrationActionTests extends TestCase {
- protected Logger logger = LoggerFactory.getLogger(getClass());
-
- // The namespace used for the elements
- public static final String nsPSService =
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/";
- public static final String nsNMWGT =
"http://ggf.org/ns/nmwg/topology/2.0/";
-
- // Some testing data to be registered
- public static final String dataValue = "The value of someData";
- public static final String dataName = "someData";
-
- // The interface data to be registered
- public static final String testingHostName = "test.router.geant.net";
- public static final String testingIfName = "en1";
- public static final String testingDescription = "a testing interface
description";
- public static final String testingAddress = "1.1.1.1" ;
- public static final String testingDirection = "out";
- public static final String testingCapacity = "10000000000";
- public static final String testingEventType =
"http://ggf.org/ns/nmwg/characteristic/utilization/2.0";
- public static final String testinKeyword = "GEANT";
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- // The service definition data to be registered
- public static final String testingServiceName = "Java RRD MA";
- public static final String testingAccessPoint =
"http://test.register.geant.net:8080/perfsonar-java-rrd-ma/services/MeasurementArchiveService";
- public static final String testingServiceType = "MA";
- public static final String testingServiceDescription = "Java RRD MA,
perfSONAR project, 229.148.249.60";
- public static final String testingOrganization = "GEANT";
- public static final String testingContactEmail =
"";
- public static final String testingServiceVersion = "1.5";
+ // The namespace used for the elements
+ public static final String NS_PSSERVICE =
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/";
+ public static final String NS_NMWGT =
"http://ggf.org/ns/nmwg/topology/2.0/";
-
- /**
- * Creates an empty Message with the given TTL
- * @param lsTTL Time To Live parameter of the request
- * @return
- */
- private Message getMessageBody(String lsTTL) {
- Message msg = new Message();
- msg.setType("LSRegisterRequest");
+ // Some testing data to be registered
+ public static final String DATA_VALUE = "The value of someData";
+ public static final String DATA_NAME = "someData";
- Parameters params = new Parameters();
- Parameter param = new Parameter();
- param.setParameter("name", "lsTTL");
- param.setText(lsTTL);
+ // The interface data to be registered
+ public static final String T_HOSTNAME = "test.router.geant.net";
+ public static final String T_IFNAME = "en1";
+ public static final String T_DESCRIPTION = "a testing interface
description";
+ public static final String T_ADDRESS = "1.1.1.1";
+ public static final String T_DIRECTION = "out";
+ public static final String T_CAPACITY = "10000000000";
+ public static final String T_EVENTTYPE =
"http://ggf.org/ns/nmwg/characteristic/utilization/2.0";
+ public static final String T_KEYWORD = "GEANT";
- params.addChild(param);
+ // The service definition data to be registered
+ public static final String T_SERVICENAME = "Java RRD MA";
+ public static final String T_ACCESSPOINT =
"http://test.register.geant.net:8080/perfsonar-java-rrd-ma/services/MeasurementArchiveService";
+ public static final String T_SERVICETYPE = "MA";
+ public static final String T_SERVICEDESCRIPTION = "Java RRD MA,
perfSONAR project, 229.148.249.60";
+ public static final String T_ORGANIZATION = "GEANT";
+ public static final String T_CONTACTEMAIL =
"";
+ public static final String T_SERVICEVERSION = "1.5";
- msg.addChild(params);
-
- return msg;
- }
- /**
- * Creates a Registration Request element
- * @param containsAccessPoint Does the request contains an
accessPoint?
- * @param containsServiceName Does the request contains a serviceName?
- * @param containsServiceType Does the request contains a serviceType?
- * @param lsTTL Time To Live parameter of the request
- * @param containsData Does the request contains some Data?
- * @return
- */
- public Element getRegistrationRequest(boolean containsAccessPoint,
- boolean containsServiceName, boolean
containsServiceType, String lsTTL, boolean containsData) {
+ /**
+ * Creates an empty Message with the given TTL
+ * @param lsTTL Time To Live parameter of the request
+ * @return
+ */
+ private Message getMessageBody(String lsTTL) {
+ Message msg = new Message();
+ msg.setType("LSRegisterRequest");
- logger.debug("Creating a registration request");
- Message msg = getMessageBody(lsTTL);
+ Parameters params = new Parameters();
+ Parameter param = new Parameter();
+ param.setParameter("name", "lsTTL");
+ param.setText(lsTTL);
- Metadata meta = new Metadata();
- meta.setId("meta");
- Subject subject = new Subject();
- subject.setId("id");
+ params.addChild(param);
- Element service = new Element("service", "psservice",
nsPSService);
+ msg.addChild(params);
- Element serviceName = new Element("serviceName", "psservice",
nsPSService);
- serviceName.setText(testingServiceName);
+ return msg;
+ }
- Element accessPoint = new Element("accessPoint", "psservice",
nsPSService);
- accessPoint.setText(testingAccessPoint);
+ /**
+ * Creates a Registration Request element
+ * @param containsAccessPoint Does the request contains an accessPoint?
+ * @param containsServiceName Does the request contains a serviceName?
+ * @param containsServiceType Does the request contains a serviceType?
+ * @param lsTTL Time To Live parameter of the request
+ * @param containsData Does the request contains some Data?
+ * @return
+ */
+ public Element getRegistrationRequest(boolean containsAccessPoint,
+ boolean containsServiceName, boolean containsServiceType, String
lsTTL, boolean containsData) {
- Element serviceType = new Element("serviceType", "psservice",
nsPSService);
- serviceType.setText(testingServiceType);
+ logger.debug("Creating a registration request");
+ Message msg = getMessageBody(lsTTL);
- Element serviceDescription = new
Element("serviceDescription", "psservice", nsPSService);
- serviceDescription.setText(testingServiceDescription);
+ Metadata meta = new Metadata();
+ meta.setId("meta");
+ Subject subject = new Subject();
+ subject.setId("id");
- Element organization = new Element("organization",
"psservice", nsPSService);
- organization.setText(testingOrganization);
+ Element service = new Element("service", "psservice", NS_PSSERVICE);
- Element contactEmail = new Element("contactEmail",
"psservice", nsPSService);
- contactEmail.setText(testingContactEmail);
+ Element serviceName = new Element("serviceName", "psservice",
NS_PSSERVICE);
+ serviceName.setText(T_SERVICENAME);
- Element serviceVersion = new Element("serviceVersion",
"psservice", nsPSService);
- serviceVersion.setText(testingServiceVersion);
-
- if (containsServiceName) {
- service.addChild(serviceName);
- }
- if (containsAccessPoint) {
- service.addChild(accessPoint);
- }
- if (containsServiceType) {
- service.addChild(serviceType);
- }
- service.addChild(serviceDescription);
- service.addChild(organization);
- service.addChild(contactEmail);
- service.addChild(serviceVersion);
+ Element accessPoint = new Element("accessPoint", "psservice",
NS_PSSERVICE);
+ accessPoint.setText(T_ACCESSPOINT);
- subject.addChild(service);
+ Element serviceType = new Element("serviceType", "psservice",
NS_PSSERVICE);
+ serviceType.setText(T_SERVICETYPE);
- meta.addChild(subject);
- msg.addChild(meta);
+ Element serviceDescription = new Element("serviceDescription",
"psservice", NS_PSSERVICE);
+ serviceDescription.setText(T_SERVICEDESCRIPTION);
- if(containsData) {
- // Creating an nmwg:data element and filling it
- Data data = new Data();
- data.setMetadataIdRef(meta.getId());
-
- // The nmwg:metadata
- Metadata metaInData = new Metadata();
-
- // The perfsonar:subject element
- Subject mdSubject = new Subject("perfsonar");
-
- // Containing an nmwgt:interface topology element
- Element iface = new Element("interface", "nmwgt",
nsNMWGT);
- Element hostName = new Element("hostName", "nmwgt",
nsNMWGT);
- hostName.setText(testingHostName);
- Element ifName = new Element("ifName", "nmwgt",
nsNMWGT);
- ifName.setText(testingIfName);
- Element ifDescription = new Element("ifDescription",
"nmwgt", nsNMWGT);
- ifDescription.setText(testingDescription);
- Element ifAddress = new Element("ifAddress", "nmwgt",
nsNMWGT);
- ifAddress.setText(testingAddress);
- Element direction = new Element("direction", "nmwgt",
nsNMWGT);
- direction.setText(testingDirection);
- Element capacity = new Element("capacity", "nmwgt",
nsNMWGT);
- capacity.setText(testingCapacity);
-
- iface.addChild(hostName);
- iface.addChild(ifName);
- iface.addChild(ifDescription);
- iface.addChild(ifAddress);
- iface.addChild(direction);
- iface.addChild(capacity);
-
- // And add a random element
- Element someData = new Element();
- someData.setName(dataName);
- someData.setText(dataValue);
+ Element organization = new Element("organization", "psservice",
NS_PSSERVICE);
+ organization.setText(T_ORGANIZATION);
- // Building data element
- mdSubject.addChild(iface);
- mdSubject.addChild(someData);
- metaInData.addChild(mdSubject);
+ Element contactEmail = new Element("contactEmail", "psservice",
NS_PSSERVICE);
+ contactEmail.setText(T_CONTACTEMAIL);
- // Subject eventType
- Element et = new EventType();
- et.setText(testingEventType);
- metaInData.addChild(et);
-
- // Keyword parameters
- Parameters params = new Parameters();
- Parameter param = new Parameter();
- param.setName("keyword");
- params.addChild(param);
- metaInData.addChild(params);
-
- // Adding the metaInData element
- data.addChild(metaInData);
+ Element serviceVersion = new Element("serviceVersion", "psservice",
NS_PSSERVICE);
+ serviceVersion.setText(T_SERVICEVERSION);
- // And adding everything to the message
- msg.addChild(data);
- }
+ if (containsServiceName) {
+ service.addChild(serviceName);
+ }
+ if (containsAccessPoint) {
+ service.addChild(accessPoint);
+ }
+ if (containsServiceType) {
+ service.addChild(serviceType);
+ }
+ service.addChild(serviceDescription);
+ service.addChild(organization);
+ service.addChild(contactEmail);
+ service.addChild(serviceVersion);
- return msg;
- }
+ subject.addChild(service);
- public void testRegistrationWithoutAccesPoint() throws
PerfSONARException {
- logger.info("•••• Testing LS Registration: without
accessPoint");
- logger.warn("•Testing LS Registration• a 'No serviceName'
warning should appear in the logs, ignore it!");
+ meta.addChild(subject);
+ msg.addChild(meta);
- LSRegisterServiceEngine engine = new
LSRegisterServiceEngine();
+ if (containsData) {
+ // Creating an nmwg:data element and filling it
+ Data data = new Data();
+ data.setMetadataIdRef(meta.getId());
- ServiceMessage requestMessage = new ServiceMessage(
- getRegistrationRequest(true, false, true,
"222", true));
- ServiceMessage responseMessage = new ServiceMessage();
- try {
- engine.takeAction(requestMessage, responseMessage);
- fail();
- } catch (PerfSONARException ex) {
- // This was supposed to fail
- }
- logger.info("•• Registration test passed!");
- }
-
- public void testRegistrationWithoutServiceName() throws
PerfSONARException {
- logger.info("•••• Testing LS Registration: without
serviceName");
- logger.warn("•Testing LS Registration• a 'No accessPoint'
warning should appear in the logs, ignore it!");
+ // The nmwg:metadata
+ Metadata metaInData = new Metadata();
- LSRegisterServiceEngine engine = new
LSRegisterServiceEngine();
+ // The perfsonar:subject element
+ Subject mdSubject = new Subject("perfsonar");
- ServiceMessage requestMessage = new ServiceMessage(
- getRegistrationRequest(false, true, true,
"222", true));
- ServiceMessage responseMessage = new ServiceMessage();
- try {
- engine.takeAction(requestMessage, responseMessage);
- fail();
- } catch (PerfSONARException ex) {
- // This was supposed to fail
- }
- logger.info("•• Registration test passed!");
- }
+ // Containing an nmwgt:interface topology element
+ Element iface = new Element("interface", "nmwgt", NS_NMWGT);
+ Element hostName = new Element("hostName", "nmwgt", NS_NMWGT);
+ hostName.setText(T_HOSTNAME);
+ Element ifName = new Element("ifName", "nmwgt", NS_NMWGT);
+ ifName.setText(T_IFNAME);
+ Element ifDescription = new Element("ifDescription", "nmwgt",
NS_NMWGT);
+ ifDescription.setText(T_DESCRIPTION);
+ Element ifAddress = new Element("ifAddress", "nmwgt", NS_NMWGT);
+ ifAddress.setText(T_ADDRESS);
+ Element direction = new Element("direction", "nmwgt", NS_NMWGT);
+ direction.setText(T_DIRECTION);
+ Element capacity = new Element("capacity", "nmwgt", NS_NMWGT);
+ capacity.setText(T_CAPACITY);
- public void testRegistrationWithoutMetadata() throws
PerfSONARException {
- logger.info("•••• Testing LS Registration: without metadata");
- logger.warn("•Testing LS Registration• a 'No metadata'
warning should appear in the logs, ignore it!");
+ iface.addChild(hostName);
+ iface.addChild(ifName);
+ iface.addChild(ifDescription);
+ iface.addChild(ifAddress);
+ iface.addChild(direction);
+ iface.addChild(capacity);
- LSRegisterServiceEngine engine = new
LSRegisterServiceEngine();
+ // And add a random element
+ Element someData = new Element();
+ someData.setName(DATA_NAME);
+ someData.setText(DATA_VALUE);
- ServiceMessage responseMessage = new ServiceMessage();
- try {
- engine.takeAction(new
ServiceMessage(getMessageBody("234")),
- responseMessage);
- fail();
- } catch (PerfSONARException ex) {
- }
- }
-
- public void testRegistrationWithoutData() throws PerfSONARException {
- logger.info("•••• Testing LS Registration: without data");
- logger.warn("•Testing LS Registration• a 'at least one data
element' warning should appear in the logs, ignore it!");
+ // Building data element
+ mdSubject.addChild(iface);
+ mdSubject.addChild(someData);
+ metaInData.addChild(mdSubject);
- LSRegisterServiceEngine engine = new
LSRegisterServiceEngine();
+ // Subject eventType
+ Element et = new EventType();
+ et.setText(T_EVENTTYPE);
+ metaInData.addChild(et);
- ServiceMessage requestMessage = new ServiceMessage(
- getRegistrationRequest(true, true, true,
"222", false));
- ServiceMessage responseMessage = new ServiceMessage();
- try {
- engine.takeAction(requestMessage,
- responseMessage);
- fail();
- } catch (PerfSONARException ex) {
- // This was supposed to fail
- }
- logger.info("•• Registration test passed!");
- }
+ // Keyword parameters
+ Parameters params = new Parameters();
+ Parameter param = new Parameter();
+ param.setName("keyword");
+ params.addChild(param);
+ metaInData.addChild(params);
- /**
- * Test a Registration without a Service Type
- * @throws PerfSONARException
- */
- public void testRegistrationWithoutServiceType() throws
PerfSONARException {
- logger.info("•••• Testing LS Registration: without
serviceType");
- logger.warn("•Testing LS Registration• a 'No serviceType'
warning should appear in the logs, ignore it!");
+ // Adding the metaInData element
+ data.addChild(metaInData);
- LSRegisterServiceEngine engine = new
LSRegisterServiceEngine();
+ // And adding everything to the message
+ msg.addChild(data);
+ }
- ServiceMessage responseMessage = new ServiceMessage();
- try {
- engine.takeAction(new
ServiceMessage(getRegistrationRequest(true,
- true, false, "222", true)),
responseMessage);
- fail();
- } catch (PerfSONARException ex) {
- // This was supposed to fail
- }
- logger.info("•• Registration test passed!");
- }
+ return msg;
+ }
- /**
- * Test the Time To Live parameter
- * @throws Exception
- */
- public void testLsTTLParameters() throws Exception {
- logger.info("•••• Testing LS Registration: TTL parameter");
+ public void testRegistrationWithoutAccesPoint() throws
PerfSONARException {
+ logger.info("•••• Testing LS Registration: without accessPoint");
+ logger.warn("•Testing LS Registration• a 'No serviceName' warning
should appear in the logs, ignore it!");
- LSRegisterServiceEngine engine = new
LSRegisterServiceEngine();
- ServiceMessage responseMessage = new ServiceMessage();
+ LSRegisterServiceEngine engine = new LSRegisterServiceEngine();
- // Use a TTL value not being a number
- logger.debug("• TTL value is not a number: xx");
- engine.takeAction(new
ServiceMessage(getRegistrationRequest(true, true, true, "xx", true)),
responseMessage);
-
- // TODO: This test needs an existing /db/ls/Store eXist
collection, make sure it exists!
- Iterator<Element> iter =
responseMessage.getMessageElement().getChildren("metadata").iterator();
- iter.next();
- Metadata meta = (Metadata)iter.next();
- EventType eventType =
(EventType)meta.getChildren("eventType").iterator().next();
- assertTrue(eventType.getText().contains("not_a_number"));
-
- // Use a negative TTL value
- logger.debug("• TTL value is negative: -1");
- engine.takeAction(new
ServiceMessage(getRegistrationRequest(true, true, true, "-1", true)),
responseMessage);
-
- iter =
responseMessage.getMessageElement().getChildren("metadata").iterator();
- iter.next();
- meta = (Metadata)iter.next();
- eventType =
(EventType)meta.getChildren("eventType").iterator().next();
- assertTrue(eventType.getText().contains("out_of_bound"));
- logger.info("•• Registration test passed!");
- }
+ ServiceMessage requestMessage = new ServiceMessage(
+ getRegistrationRequest(true, false, true, "222", true));
+ ServiceMessage responseMessage = new ServiceMessage();
+ try {
+ engine.takeAction(requestMessage, responseMessage);
+ fail();
+ } catch (PerfSONARException ex) {
+ // This was supposed to fail
+ }
+ logger.info("•• Registration test passed!");
+ }
+ public void testRegistrationWithoutServiceName() throws
PerfSONARException {
+ logger.info("•••• Testing LS Registration: without serviceName");
+ logger.warn("•Testing LS Registration• a 'No accessPoint' warning
should appear in the logs, ignore it!");
+
+ LSRegisterServiceEngine engine = new LSRegisterServiceEngine();
+
+ ServiceMessage requestMessage = new ServiceMessage(
+ getRegistrationRequest(false, true, true, "222", true));
+ ServiceMessage responseMessage = new ServiceMessage();
+ try {
+ engine.takeAction(requestMessage, responseMessage);
+ fail();
+ } catch (PerfSONARException ex) {
+ // This was supposed to fail
+ }
+ logger.info("•• Registration test passed!");
+ }
+
+ public void testRegistrationWithoutMetadata() throws PerfSONARException {
+ logger.info("•••• Testing LS Registration: without metadata");
+ logger.warn("•Testing LS Registration• a 'No metadata' warning
should appear in the logs, ignore it!");
+
+ LSRegisterServiceEngine engine = new LSRegisterServiceEngine();
+
+ ServiceMessage responseMessage = new ServiceMessage();
+ try {
+ engine.takeAction(new ServiceMessage(getMessageBody("234")),
+ responseMessage);
+ fail();
+ } catch (PerfSONARException ex) {
+ }
+ }
+
+ public void testRegistrationWithoutData() throws PerfSONARException {
+ logger.info("•••• Testing LS Registration: without data");
+ logger.warn("•Testing LS Registration• a 'at least one data element'
warning should appear in the logs, ignore it!");
+
+ LSRegisterServiceEngine engine = new LSRegisterServiceEngine();
+
+ ServiceMessage requestMessage = new ServiceMessage(
+ getRegistrationRequest(true, true, true, "222", false));
+ ServiceMessage responseMessage = new ServiceMessage();
+ try {
+ engine.takeAction(requestMessage,
+ responseMessage);
+ fail();
+ } catch (PerfSONARException ex) {
+ // This was supposed to fail
+ }
+ logger.info("•• Registration test passed!");
+ }
+
+ /**
+ * Test a Registration without a Service Type
+ * @throws PerfSONARException
+ */
+ public void testRegistrationWithoutServiceType() throws
PerfSONARException {
+ logger.info("•••• Testing LS Registration: without serviceType");
+ logger.warn("•Testing LS Registration• a 'No serviceType' warning
should appear in the logs, ignore it!");
+
+ LSRegisterServiceEngine engine = new LSRegisterServiceEngine();
+
+ ServiceMessage responseMessage = new ServiceMessage();
+ try {
+ engine.takeAction(new ServiceMessage(getRegistrationRequest(true,
+ true, false, "222", true)), responseMessage);
+ fail();
+ } catch (PerfSONARException ex) {
+ // This was supposed to fail
+ }
+ logger.info("•• Registration test passed!");
+ }
+
+ /**
+ * Test the Time To Live parameter
+ * @throws Exception
+ */
+ public void testLsTTLParameters() throws Exception {
+ logger.info("•••• Testing LS Registration: TTL parameter");
+
+ LSRegisterServiceEngine engine = new LSRegisterServiceEngine();
+ ServiceMessage responseMessage = new ServiceMessage();
+
+ // Use a TTL value not being a number
+ logger.debug("• TTL value is not a number: xx");
+ engine.takeAction(new ServiceMessage(getRegistrationRequest(true,
true, true, "xx", true)), responseMessage);
+
+ // TODO: This test needs an existing /db/ls/Store eXist collection,
make sure it exists!
+ Iterator<Element> iter =
responseMessage.getMessageElement().getChildren("metadata").iterator();
+ iter.next();
+ Metadata meta = (Metadata) iter.next();
+ EventType eventType = (EventType)
meta.getChildren("eventType").iterator().next();
+ assertTrue(eventType.getText().contains("not_a_number"));
+
+ // Use a negative TTL value
+ logger.debug("• TTL value is negative: -1");
+ engine.takeAction(new ServiceMessage(getRegistrationRequest(true,
true, true, "-1", true)), responseMessage);
+
+ iter =
responseMessage.getMessageElement().getChildren("metadata").iterator();
+ iter.next();
+ meta = (Metadata) iter.next();
+ eventType = (EventType)
meta.getChildren("eventType").iterator().next();
+ assertTrue(eventType.getText().contains("out_of_bound"));
+ logger.info("•• Registration test passed!");
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/DataSourceComponentTest.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/DataSourceComponentTest.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/DataSourceComponentTest.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -10,41 +10,42 @@
import org.perfsonar.service.lookupservice.components.DataSourceComponent;
public class DataSourceComponentTest extends TestCase {
-
- protected Logger logger = LoggerFactory.getLogger(getClass());
- public void testComponent() throws PerfSONARException {
- logger.info("•••• Testing existDataSource component");
- DataSourceComponent dsc = (DataSourceComponent)
ConfigurationManager.getInstanceWithoutRunningComponents().getConfiguration().getAuxiliaryComponent("existDataSource");
- assertNotNull(dsc);
-
- String username = dsc.getOption("username").getValue();
- String password = dsc.getOption("password").getValue();
- // Check the username and password fields are correctly
initialised
- assertEquals(username, dsc.getUsername());
- assertEquals(password, dsc.getPassword());
-
- Option usernameROOption = dsc.getOption("usernameRO");
- Option passwordROOption = dsc.getOption("passwordRO");
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- if (usernameROOption != null && passwordROOption != null) {
- String usernameRO = usernameROOption.getValue();
- String passwordRO = passwordROOption.getValue();
-
- assertEquals(usernameRO, dsc.getUsernameRO());
- assertEquals(passwordRO, dsc.getPasswordRO());
- assertTrue(dsc.hasReadOnlyUser());
- } else {
- assertEquals(username, dsc.getUsernameRO());
- assertEquals(password, dsc.getPasswordRO());
- assertFalse(dsc.hasReadOnlyUser());
- }
-
- // Check URL splitting
- String url = dsc.getOption("url").getValue();
- logger.info("Extracted DB URL: " + url);
- assertEquals(url, dsc.getUrl() + dsc.getMainCollection());
- logger.info("•• existDataSource component is ok");
- }
-
+ public void testComponent() throws PerfSONARException {
+ logger.info("•••• Testing existDataSource component");
+ DataSourceComponent dsc = (DataSourceComponent)
ConfigurationManager.getInstanceWithoutRunningComponents()
+ .getConfiguration().getAuxiliaryComponent("existDataSource");
+ assertNotNull(dsc);
+
+ String username = dsc.getOption("username").getValue();
+ String password = dsc.getOption("password").getValue();
+ // Check the username and password fields are correctly initialised
+ assertEquals(username, dsc.getUsername());
+ assertEquals(password, dsc.getPassword());
+
+ Option usernameROOption = dsc.getOption("usernameRO");
+ Option passwordROOption = dsc.getOption("passwordRO");
+
+ if (usernameROOption != null && passwordROOption != null) {
+ String usernameRO = usernameROOption.getValue();
+ String passwordRO = passwordROOption.getValue();
+
+ assertEquals(usernameRO, dsc.getUsernameRO());
+ assertEquals(passwordRO, dsc.getPasswordRO());
+ assertTrue(dsc.hasReadOnlyUser());
+ } else {
+ assertEquals(username, dsc.getUsernameRO());
+ assertEquals(password, dsc.getPasswordRO());
+ assertFalse(dsc.hasReadOnlyUser());
+ }
+
+ // Check URL splitting
+ String url = dsc.getOption("url").getValue();
+ logger.info("Extracted DB URL: " + url);
+ assertEquals(url, dsc.getUrl() + dsc.getMainCollection());
+ logger.info("•• existDataSource component is ok");
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/ModificationCounterComponentTest.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/ModificationCounterComponentTest.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/ModificationCounterComponentTest.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -14,170 +14,173 @@
*
*/
public class ModificationCounterComponentTest extends TestCase {
- // Singleton counter shared between threads
- private final ModificationCounterComponent cp;
+ // Singleton counter shared between threads
+ private final ModificationCounterComponent cp;
private static final int THREADS_COUNT = 50;
private static final int LOOP_COUNT = 100000;
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- /**
- * Setup the shared counter
- * @throws PerfSONARException
- */
- public ModificationCounterComponentTest() throws PerfSONARException {
- super();
- cp = new ModificationCounterComponent();
- assertNotNull(cp);
- }
+ /**
+ * Setup the shared counter
+ * @throws PerfSONARException
+ */
+ public ModificationCounterComponentTest() throws PerfSONARException {
+ super();
+ cp = new ModificationCounterComponent();
+ assertNotNull(cp);
+ }
- /**
- * Basic test of the ModificationCounterComponent (single thread)
- */
- public void testCounter() {
- logger.info("•••• Testing ModificationCounterComponent");
+ /**
+ * Basic test of the ModificationCounterComponent (single thread)
+ */
+ public void testCounter() {
+ logger.info("•••• Testing ModificationCounterComponent");
- // Incrementing and testing increment count
- logger.debug("Counting up to " + LOOP_COUNT);
- int last = 0;
- for (int i = 0; i < LOOP_COUNT; i++) {
- cp.incrementCounter();
- int value = cp.getCounter();
- int diffs = cp.getDiffsBetweenRegistrationCounter();
- assertEquals(value, last + 1);
- assertEquals(diffs, i + 1);
- last = value;
- }
-
- assertEquals(cp.getCounter(), LOOP_COUNT);
- assertEquals(cp.getDiffsBetweenRegistrationCounter(),
LOOP_COUNT);
+ // Incrementing and testing increment count
+ logger.debug("Counting up to " + LOOP_COUNT);
+ int last = 0;
+ for (int i = 0; i < LOOP_COUNT; i++) {
+ cp.incrementCounter();
+ int value = cp.getCounter();
+ int diffs = cp.getDiffsBetweenRegistrationCounter();
+ assertEquals(value, last + 1);
+ assertEquals(diffs, i + 1);
+ last = value;
+ }
- // Reset Counter and test it is 0
- cp.resetCounter();
- assertEquals(0, cp.getCounter());
- assertEquals(cp.getDiffsBetweenRegistrationCounter(),
LOOP_COUNT);
-
- // Reset diffs counter and test it is 0
- cp.resetDiffsBetweenRegistrationCounter();
- assertEquals(0, cp.getCounter());
- assertEquals(0, cp.getDiffsBetweenRegistrationCounter());
- logger.info("•• ModificationCounter component is ok");
- }
+ assertEquals(cp.getCounter(), LOOP_COUNT);
+ assertEquals(cp.getDiffsBetweenRegistrationCounter(), LOOP_COUNT);
- /**
- * Multi-threaded test of the ModificationCounterComponent increment
- */
- public void testThreadedCounterIncrement() throws
InterruptedException {
- logger.info("•••• Testing threaded incrementation of
ModificationCounterComponent with " + THREADS_COUNT + " threads");
- AsynchTester[] testers = new AsynchTester[THREADS_COUNT];
- cp.resetCounter();
- cp.resetDiffsBetweenRegistrationCounter();
+ // Reset Counter and test it is 0
+ cp.resetCounter();
+ assertEquals(0, cp.getCounter());
+ assertEquals(cp.getDiffsBetweenRegistrationCounter(), LOOP_COUNT);
- for (int i = 0; i < THREADS_COUNT; i++) {
- testers[i] = new AsynchTester(new Runnable() {
+ // Reset diffs counter and test it is 0
+ cp.resetDiffsBetweenRegistrationCounter();
+ assertEquals(0, cp.getCounter());
+ assertEquals(0, cp.getDiffsBetweenRegistrationCounter());
+ logger.info("•• ModificationCounter component is ok");
+ }
- public void run() {
- int last = cp.getCounter();
-
- for (int i = 0; i < LOOP_COUNT; i++) {
- cp.incrementCounter();
- int value = cp.getCounter();
- int diffs =
cp.getDiffsBetweenRegistrationCounter();
- assertTrue(value > last);
- assertTrue(diffs > i);
- last = value;
- }
- }
- });
- logger.debug("Starting thread " + i + " and counting up to "
+ LOOP_COUNT);
- testers[i].start();
- }
+ /**
+ * Multi-threaded test of the ModificationCounterComponent increment
+ */
+ public void testThreadedCounterIncrement() throws InterruptedException {
+ logger.info("•••• Testing threaded incrementation of
ModificationCounterComponent with " + THREADS_COUNT + " threads");
+ AsynchTester[] testers = new AsynchTester[THREADS_COUNT];
+ cp.resetCounter();
+ cp.resetDiffsBetweenRegistrationCounter();
- for (AsynchTester tester : testers)
- tester.test();
+ for (int i = 0; i < THREADS_COUNT; i++) {
+ testers[i] = new AsynchTester(new Runnable() {
- // At the very end, counter should be 0 and diffs counter should
be the sum of all loops
- assertEquals(cp.getCounter(), LOOP_COUNT * THREADS_COUNT);
- assertEquals(cp.getDiffsBetweenRegistrationCounter(), LOOP_COUNT
* THREADS_COUNT);
- logger.info("•• ModificationCounter component is thread
safe");
- }
+ public void run() {
+ int last = cp.getCounter();
- /**
- * Multi-threaded test of the ModificationCounterComponent reset
- */
- public void testThreadedCounterReset() throws InterruptedException {
- logger.info("•••• Testing threaded reset of
ModificationCounterComponent with " + THREADS_COUNT + " threads");
- AsynchTester[] testers = new AsynchTester[THREADS_COUNT];
- // We reset the diffs counter
- cp.resetDiffsBetweenRegistrationCounter();
+ for (int i = 0; i < LOOP_COUNT; i++) {
+ cp.incrementCounter();
+ int value = cp.getCounter();
+ int diffs = cp.getDiffsBetweenRegistrationCounter();
+ assertTrue(value > last);
+ assertTrue(diffs > i);
+ last = value;
+ }
+ }
+ });
+ logger.debug("Starting thread " + i + " and counting up to " +
LOOP_COUNT);
+ testers[i].start();
+ }
- for (int i = 0; i < THREADS_COUNT; i++) {
- testers[i] = new AsynchTester(new Runnable() {
+ for (AsynchTester tester : testers) {
+ tester.test();
+ }
- public void run() {
- for (int i = 0; i < LOOP_COUNT; i++) {
- cp.incrementCounter();
- int diffs =
cp.getDiffsBetweenRegistrationCounter();
- assertTrue(diffs > i);
- }
+ // At the very end, counter should be 0 and diffs counter should be
the sum of all loops
+ assertEquals(cp.getCounter(), LOOP_COUNT * THREADS_COUNT);
+ assertEquals(cp.getDiffsBetweenRegistrationCounter(), LOOP_COUNT *
THREADS_COUNT);
+ logger.info("•• ModificationCounter component is thread safe");
+ }
- cp.resetCounter();
- // Counter max value is all threads up to
LOOP_COUNT except this one
- assertTrue(cp.getCounter() < (LOOP_COUNT-1) *
(THREADS_COUNT-1));
-
assertTrue(cp.getDiffsBetweenRegistrationCounter() >= LOOP_COUNT);
- }
- });
- logger.debug("Starting thread " + i + " and counting up to "
+ LOOP_COUNT);
- testers[i].start();
- }
+ /**
+ * Multi-threaded test of the ModificationCounterComponent reset
+ */
+ public void testThreadedCounterReset() throws InterruptedException {
+ logger.info("•••• Testing threaded reset of
ModificationCounterComponent with " + THREADS_COUNT + " threads");
+ AsynchTester[] testers = new AsynchTester[THREADS_COUNT];
+ // We reset the diffs counter
+ cp.resetDiffsBetweenRegistrationCounter();
- for (AsynchTester tester : testers)
- tester.test();
-
- // At the very end, counter should be 0 and diffs counter should
be the sum of all loops
- assertEquals(cp.getCounter(), 0);
- assertEquals(cp.getDiffsBetweenRegistrationCounter(), LOOP_COUNT
* THREADS_COUNT);
- logger.info("•• ModificationCounter component is thread
safe");
- }
+ for (int i = 0; i < THREADS_COUNT; i++) {
+ testers[i] = new AsynchTester(new Runnable() {
- /**
- * Multi-threaded test of the ModificationCounterComponent diffs reset
- */
- public void testThreadedCounterDiffsReset() throws
InterruptedException {
- logger.info("•••• Testing threaded diffs reset of
ModificationCounterComponent with " + THREADS_COUNT + " threads");
- AsynchTester[] testers = new AsynchTester[THREADS_COUNT];
- // We reset the counter
- cp.resetCounter();
+ public void run() {
+ for (int i = 0; i < LOOP_COUNT; i++) {
+ cp.incrementCounter();
+ int diffs = cp.getDiffsBetweenRegistrationCounter();
+ assertTrue(diffs > i);
+ }
- for (int i = 0; i < THREADS_COUNT; i++) {
- testers[i] = new AsynchTester(new Runnable() {
+ cp.resetCounter();
+ // Counter max value is all threads up to LOOP_COUNT
except this one
+ assertTrue(cp.getCounter() < (LOOP_COUNT - 1) *
(THREADS_COUNT - 1));
+ assertTrue(cp.getDiffsBetweenRegistrationCounter() >=
LOOP_COUNT);
+ }
+ });
+ logger.debug("Starting thread " + i + " and counting up to " +
LOOP_COUNT);
+ testers[i].start();
+ }
- public void run() {
- int last = cp.getCounter();
+ for (AsynchTester tester : testers) {
+ tester.test();
+ }
- for (int i = 0; i < LOOP_COUNT; i++) {
- cp.incrementCounter();
- int value = cp.getCounter();
- assertTrue(value > last);
- last = value;
- }
+ // At the very end, counter should be 0 and diffs counter should be
the sum of all loops
+ assertEquals(cp.getCounter(), 0);
+ assertEquals(cp.getDiffsBetweenRegistrationCounter(), LOOP_COUNT *
THREADS_COUNT);
+ logger.info("•• ModificationCounter component is thread safe");
+ }
- cp.resetDiffsBetweenRegistrationCounter();
- // Counter max value is all threads up to
LOOP_COUNT except this one
-
assertTrue(cp.getDiffsBetweenRegistrationCounter() < (LOOP_COUNT-1) *
(THREADS_COUNT-1));
- assertTrue(cp.getCounter() >= LOOP_COUNT);
- }
- });
- logger.debug("Starting thread " + i + " and counting up to "
+ LOOP_COUNT);
- testers[i].start();
- }
+ /**
+ * Multi-threaded test of the ModificationCounterComponent diffs reset
+ */
+ public void testThreadedCounterDiffsReset() throws InterruptedException {
+ logger.info("•••• Testing threaded diffs reset of
ModificationCounterComponent with " + THREADS_COUNT + " threads");
+ AsynchTester[] testers = new AsynchTester[THREADS_COUNT];
+ // We reset the counter
+ cp.resetCounter();
- for (AsynchTester tester : testers)
- tester.test();
-
- // At the very end, counter should be 0 and diffs counter should
be the sum of all loops
- assertEquals(cp.getDiffsBetweenRegistrationCounter(), 0);
- assertEquals(cp.getCounter(), LOOP_COUNT * THREADS_COUNT);
- logger.info("•• ModificationCounter component is thread
safe");
- }
+ for (int i = 0; i < THREADS_COUNT; i++) {
+ testers[i] = new AsynchTester(new Runnable() {
+ public void run() {
+ int last = cp.getCounter();
+
+ for (int i = 0; i < LOOP_COUNT; i++) {
+ cp.incrementCounter();
+ int value = cp.getCounter();
+ assertTrue(value > last);
+ last = value;
+ }
+
+ cp.resetDiffsBetweenRegistrationCounter();
+ // Counter max value is all threads up to LOOP_COUNT
except this one
+ assertTrue(cp.getDiffsBetweenRegistrationCounter() <
(LOOP_COUNT - 1) * (THREADS_COUNT - 1));
+ assertTrue(cp.getCounter() >= LOOP_COUNT);
+ }
+ });
+ logger.debug("Starting thread " + i + " and counting up to " +
LOOP_COUNT);
+ testers[i].start();
+ }
+
+ for (AsynchTester tester : testers) {
+ tester.test();
+ }
+
+ // At the very end, counter should be 0 and diffs counter should be
the sum of all loops
+ assertEquals(cp.getDiffsBetweenRegistrationCounter(), 0);
+ assertEquals(cp.getCounter(), LOOP_COUNT * THREADS_COUNT);
+ logger.info("•• ModificationCounter component is thread safe");
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/XMLDBComponentTest.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/XMLDBComponentTest.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/XMLDBComponentTest.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -14,196 +14,201 @@
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.XMLDBException;
-public class XMLDBComponentTest extends TestCase{
- protected Logger logger = LoggerFactory.getLogger(getClass());
+public class XMLDBComponentTest extends TestCase {
+ protected Logger logger = LoggerFactory.getLogger(getClass());
private static final int THREADS_COUNT = 25;
private static final int LOOP_COUNT = 100;
- private static final String FILE_NAME = "TestingFile-" +
String.format("%.0f", Math.random()*999999999) + ".xml";
+ private static final String FILE_NAME = "TestingFile-" +
String.format("%.0f", Math.random() * 999999999) + ".xml";
- public XMLDBComponent getXMLDBComponent() throws PerfSONARException{
- return (XMLDBComponent)
ConfigurationManager.getInstanceWithoutRunningComponents().getConfiguration().getAuxiliaryComponent("existAccessManager");
- }
+ public XMLDBComponent getXMLDBComponent() throws PerfSONARException {
+ return (XMLDBComponent)
ConfigurationManager.getInstanceWithoutRunningComponents()
+
.getConfiguration().getAuxiliaryComponent("existAccessManager");
+ }
- public XMLDBComponent getXMLDBComponentRO() throws PerfSONARException{
- return
(XMLDBComponent)ConfigurationManager.getInstanceWithoutRunningComponents().getConfiguration().getAuxiliaryComponent("existAccessManagerRO");
- }
+ public XMLDBComponent getXMLDBComponentRO() throws PerfSONARException {
+ return (XMLDBComponent)
ConfigurationManager.getInstanceWithoutRunningComponents()
+
.getConfiguration().getAuxiliaryComponent("existAccessManagerRO");
+ }
- public void testXMLDBInitialization() throws PerfSONARException {
- logger.info("•••• Testing XMLDB initialization");
+ public void testXMLDBInitialization() throws PerfSONARException {
+ logger.info("•••• Testing XMLDB initialization");
- XMLDBComponent XmlDbComp = getXMLDBComponent();
+ XMLDBComponent xmlDbComp = getXMLDBComponent();
- Option readOnlyOption =
XmlDbComp.getOption(XMLDBComponent.READ_ONLY_KEY);
- assertNull(readOnlyOption);
-
assertNotNull(XmlDbComp.getOption(XMLDBComponent.DATASOURCE_KEY));
+ Option readOnlyOption =
xmlDbComp.getOption(XMLDBComponent.READ_ONLY_KEY);
+ assertNull(readOnlyOption);
+ assertNotNull(xmlDbComp.getOption(XMLDBComponent.DATASOURCE_KEY));
- // After this call, the XMLRPC client will be shared by all
other calls
- Collection mainCol = XmlDbComp.getMainCollection();
- assertNotNull(mainCol);
+ // After this call, the XMLRPC client will be shared by all other
calls
+ Collection mainCol = xmlDbComp.getMainCollection();
+ assertNotNull(mainCol);
- try {
- // We must have at least 2 child collections if the
DB has been correctly initialised through the
ExistDBInitializerServlet.initializeDatabase()
- Integer count = mainCol.getChildCollectionCount();
- Collection childCol1 =
mainCol.getChildCollection("ls");
- Collection childCol2 =
mainCol.getChildCollection("copy");
- assertTrue(count > 1);
- assertNotNull(childCol1);
- assertNotNull(childCol2);
- } catch (XMLDBException e) {
- fail();
- }
- logger.info("•• XMLDB initialization passed!");
- }
+ try {
+ // We must have at least 2 child collections if the DB has been
correctly initialised
+ // through the ExistDBInitializerServlet.initializeDatabase()
+ Integer count = mainCol.getChildCollectionCount();
+ Collection childCol1 = mainCol.getChildCollection("ls");
+ Collection childCol2 = mainCol.getChildCollection("copy");
+ assertTrue(count > 1);
+ assertNotNull(childCol1);
+ assertNotNull(childCol2);
+ } catch (XMLDBException e) {
+ fail();
+ }
+ logger.info("•• XMLDB initialization passed!");
+ }
- public void testXMLDBReadOnly() throws PerfSONARException {
- logger.info("•••• Testing XMLDB Read Only access");
+ public void testXMLDBReadOnly() throws PerfSONARException {
+ logger.info("•••• Testing XMLDB Read Only access");
- // We need 2 XmlDbComp here
- XMLDBComponent XmlDbComp = getXMLDBComponent();
- XMLDBComponent XmlDbCompRO = getXMLDBComponentRO();
+ // We need 2 XmlDbComp here
+ XMLDBComponent xmlDbComp = getXMLDBComponent();
+ XMLDBComponent xmlDbCompRO = getXMLDBComponentRO();
- Option readOnlyOption =
XmlDbCompRO.getOption(XMLDBComponent.READ_ONLY_KEY);
- assertNotNull(readOnlyOption);
- assertTrue(Boolean.valueOf(readOnlyOption.getValue()));
-
assertNotNull(XmlDbCompRO.getOption(XMLDBComponent.DATASOURCE_KEY));
+ Option readOnlyOption =
xmlDbCompRO.getOption(XMLDBComponent.READ_ONLY_KEY);
+ assertNotNull(readOnlyOption);
+ assertTrue(Boolean.valueOf(readOnlyOption.getValue()));
+ assertNotNull(xmlDbCompRO.getOption(XMLDBComponent.DATASOURCE_KEY));
- // Trying to upload without write access
- try {
- logger.warn("•Testing XMLDBComponent• A write access
error and warning should appear in the logs, ignore it!");
- // This must create an error
- XmlDbCompRO.uploadStoreFile(FILE_NAME, "<a>text</a>");
- fail();
- } catch (PerfSONARException ex) {
- // Test passed if we get here
- }
+ // Trying to upload without write access
+ try {
+ logger.warn("•Testing XMLDBComponent• A write access error and
warning should appear in the logs, ignore it!");
+ // This must create an error
+ xmlDbCompRO.uploadStoreFile(FILE_NAME, "<a>text</a>");
+ fail();
+ } catch (PerfSONARException ex) {
+ // Test passed if we get here
+ }
- // Insert a dummy testing file
- logger.debug("Uploading file with correct access");
- XmlDbComp.uploadStoreFile(FILE_NAME, "<a>text</a>");
- try {
- logger.debug("Trying to remove file without write
access");
- // This must create an error
- XmlDbCompRO.removeStoreFile(FILE_NAME);
- fail();
- } catch (PerfSONARException ex) {
- // Test passed if we get here
- }
- // Cleanup space
- logger.debug("Removing file with correct access");
- XmlDbComp.removeStoreFile(FILE_NAME);
- logger.info("•• XMLDB Read Only access passed!");
- }
+ // Insert a dummy testing file
+ logger.debug("Uploading file with correct access");
+ xmlDbComp.uploadStoreFile(FILE_NAME, "<a>text</a>");
+ try {
+ logger.debug("Trying to remove file without write access");
+ // This must create an error
+ xmlDbCompRO.removeStoreFile(FILE_NAME);
+ fail();
+ } catch (PerfSONARException ex) {
+ // Test passed if we get here
+ }
+ // Cleanup space
+ logger.debug("Removing file with correct access");
+ xmlDbComp.removeStoreFile(FILE_NAME);
+ logger.info("•• XMLDB Read Only access passed!");
+ }
- private Integer getDocumentCount(XMLDBComponent dbcomp) {
- Integer count = 0;
- Boolean tryAgain = true;
- String name = Thread.currentThread().getName();
- try {
- logger.debug("Counting documents in /db/ls/store/
with an XQuery");
- XMLDBResult result =
dbcomp.performXQuery("count(collection('/db/ls/store/')/a)");
- count =
Integer.valueOf(result.getFirstElement().getText());
- } catch (PerfSONARException ex) {
- logger.error(name + ": Our count() XQuery returned an
error: " + ex.getMessage());
- tryAgain = true;
- }
- if (tryAgain) {
- // We're not sure what happened, let's try again
- try {
- logger.debug(name + ": Let's try to count
again");
- XMLDBResult result =
dbcomp.performXQuery("count(collection('/db/ls/store/')/a)");
- count =
Integer.valueOf(result.getFirstElement().getText());
- } catch (PerfSONARException e) {
- logger.error(name + ": Second try, that's now
a fatal error: " + e.getMessage());
- fail();
- }
- }
- logger.debug("Documents count: " + count);
- return count;
- }
+ private Integer getDocumentCount(XMLDBComponent dbcomp) {
+ Integer count = 0;
+ Boolean tryAgain = true;
+ String name = Thread.currentThread().getName();
+ try {
+ logger.debug("Counting documents in /db/ls/store/ with an
XQuery");
+ XMLDBResult result =
dbcomp.performXQuery("count(collection('/db/ls/store/')/a)");
+ count = Integer.valueOf(result.getFirstElement().getText());
+ } catch (PerfSONARException ex) {
+ logger.error(name + ": Our count() XQuery returned an error: " +
ex.getMessage());
+ tryAgain = true;
+ }
+ if (tryAgain) {
+ // We're not sure what happened, let's try again
+ try {
+ logger.debug(name + ": Let's try to count again");
+ XMLDBResult result =
dbcomp.performXQuery("count(collection('/db/ls/store/')/a)");
+ count = Integer.valueOf(result.getFirstElement().getText());
+ } catch (PerfSONARException e) {
+ logger.error(name + ": Second try, that's now a fatal error:
" + e.getMessage());
+ fail();
+ }
+ }
+ logger.debug("Documents count: " + count);
+ return count;
+ }
- public void testUploadDelete() throws PerfSONARException {
- logger.info("•••• Testing file storage and XQueries");
+ public void testUploadDelete() throws PerfSONARException {
+ logger.info("•••• Testing file storage and XQueries");
- XMLDBComponent XmlDbComp = getXMLDBComponent();
+ XMLDBComponent xmlDbComp = getXMLDBComponent();
- // First we make a clean space by removing anything that
could already exist
- logger.debug("removing file to be safe");
- XmlDbComp.removeStoreFile(FILE_NAME);
- Integer initialCount = getDocumentCount(XmlDbComp);
+ // First we make a clean space by removing anything that could
already exist
+ logger.debug("removing file to be safe");
+ xmlDbComp.removeStoreFile(FILE_NAME);
+ Integer initialCount = getDocumentCount(xmlDbComp);
- // Upload a new file
- logger.debug("uploading file");
- XmlDbComp.uploadStoreFile(FILE_NAME, "<a>text</a>");
- Integer newCount = getDocumentCount(XmlDbComp);
- assertTrue(initialCount+1 == newCount);
+ // Upload a new file
+ logger.debug("uploading file");
+ xmlDbComp.uploadStoreFile(FILE_NAME, "<a>text</a>");
+ Integer newCount = getDocumentCount(xmlDbComp);
+ assertTrue(initialCount + 1 == newCount);
- // Delete the file
- logger.debug("removing file");
- XmlDbComp.removeStoreFile(FILE_NAME);
- newCount = getDocumentCount(XmlDbComp);
- assertEquals(initialCount, newCount);
- logger.info("•• Test file storage and XQueries passed!");
- }
+ // Delete the file
+ logger.debug("removing file");
+ xmlDbComp.removeStoreFile(FILE_NAME);
+ newCount = getDocumentCount(xmlDbComp);
+ assertEquals(initialCount, newCount);
+ logger.info("•• Test file storage and XQueries passed!");
+ }
-/**
- * Multi-threaded test of the uploadStoreFile and performXQuery in a
threaded environment
- *
- * The XQuery run is a simple count() on an existing collection
- */
-public void testThreadedUpload() throws InterruptedException,
PerfSONARException {
- logger.info("•••• Testing threaded concurrent upload of files with "
+ THREADS_COUNT + " threads");
+ /**
+ * Multi-threaded test of the uploadStoreFile and performXQuery in a
threaded environment
+ *
+ * The XQuery run is a simple count() on an existing collection
+ */
+ public void testThreadedUpload() throws InterruptedException,
PerfSONARException {
+ logger.info("•••• Testing threaded concurrent upload of files with "
+ THREADS_COUNT + " threads");
- // Initializing and clearing the DB thanks to the servlet
- ExistDbInitializerServlet servlet = new ExistDbInitializerServlet();
- servlet.initializeDatabase("target/test-classes/db",
ConfigurationManager.getInstanceWithoutRunningComponents());
- logger.debug("db initialized");
+ // Initializing and clearing the DB thanks to the servlet
+ ExistDbInitializerServlet servlet = new ExistDbInitializerServlet();
+ servlet.initializeDatabase("target/test-classes/db",
ConfigurationManager.getInstanceWithoutRunningComponents());
+ logger.debug("db initialized");
- // Running threads
- AsynchTester[] testers = new AsynchTester[THREADS_COUNT];
+ // Running threads
+ AsynchTester[] testers = new AsynchTester[THREADS_COUNT];
- for (int i = 0; i < THREADS_COUNT; i++) {
- testers[i] = new AsynchTester(new Runnable() {
+ for (int i = 0; i < THREADS_COUNT; i++) {
+ testers[i] = new AsynchTester(new Runnable() {
- @Override
- public void run() {
- String name = Thread.currentThread().getName();
- logger.info("In thread " + name + " and counting up to " +
LOOP_COUNT);
- // We need our own XMLDBComponent to handle the DB
connection (XMLRPC clients)
- XMLDBComponent myXmlDbComp = null;
- try {
- myXmlDbComp = getXMLDBComponent();
- } catch (PerfSONARException ex) {
- logger.error(ex.getMessage());
- fail();
+ @Override
+ public void run() {
+ String name = Thread.currentThread().getName();
+ logger.info("In thread " + name + " and counting up to "
+ LOOP_COUNT);
+ // We need our own XMLDBComponent to handle the DB
connection (XMLRPC clients)
+ XMLDBComponent myXmlDbComp = null;
+ try {
+ myXmlDbComp = getXMLDBComponent();
+ } catch (PerfSONARException ex) {
+ logger.error(ex.getMessage());
+ fail();
+ }
+ assertNotNull(myXmlDbComp);
+ Integer docsCount = getDocumentCount(myXmlDbComp);
+
+ for (int i = 0; i < LOOP_COUNT; i++) {
+ logger.debug(name + ": uploading a new file");
+ try {
+ myXmlDbComp.uploadStoreFile(name + "-" + i + "-"
+ FILE_NAME, "<a>text</a>");
+ } catch (PerfSONARException ex) {
+ logger.error(name + ": Error uploading file: " +
ex.getMessage());
+ // We got an exception, but we're not sure the
document has been uploaded or not...
+ // So we just decrement counter so the test
passes ...
+ // blame eXist (1.2.6 at least) for not being
very clear on what happened
+ docsCount--;
+ }
+ Integer newCount = getDocumentCount(myXmlDbComp);
+ assertTrue(newCount > docsCount);
+ docsCount = newCount;
+ }
+ logger.info(name + ": " + docsCount + " documents
present in DB");
}
- assertNotNull(myXmlDbComp);
- Integer docsCount = getDocumentCount(myXmlDbComp);
+ });
+ testers[i].start();
+ }
- for (int i = 0; i < LOOP_COUNT; i++) {
- logger.debug(name + ": uploading a new file");
- try {
- myXmlDbComp.uploadStoreFile(name +
"-" + i + "-" + FILE_NAME, "<a>text</a>");
- } catch (PerfSONARException ex) {
- logger.error(name + ": Error
uploading file: " + ex.getMessage());
- // We got an exception, but we're not
sure the document has been uploaded or not...
- // So we just decrement counter so
the test passes ... blame eXist (1.2.6 at least) for not being very clear on
what happened
- docsCount--;
- }
- Integer newCount =
getDocumentCount(myXmlDbComp);
- assertTrue(newCount > docsCount);
- docsCount = newCount;
- }
- logger.info(name + ": " + docsCount + " documents
present in DB");
- }
- });
- testers[i].start();
- }
+ for (AsynchTester tester : testers) {
+ tester.test();
+ }
- for (AsynchTester tester : testers)
- tester.test();
-
- logger.info("•• Threaded concurrent upload of files passed!");
+ logger.info("•• Threaded concurrent upload of files passed!");
+ }
}
-}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/MultipleFilesDAOImplTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/MultipleFilesDAOImplTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/MultipleFilesDAOImplTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -18,169 +18,169 @@
*/
public class MultipleFilesDAOImplTests extends TestCase {
- protected Logger logger = LoggerFactory.getLogger(getClass());
-
- private final LookupServiceDAO lsDao;
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- /**
- * @throws PerfSONARException
- *
- */
- public MultipleFilesDAOImplTests() throws PerfSONARException {
- super();
- // TODO: are we checking SingleFileDAO or MultipleFileDAO?
- lsDao = LookupServiceDAOFactory.getDAO();
- }
+ private final LookupServiceDAO lsDao;
- /**
- * Insert an empty element and sets its timestamp
- * @param metadataId
- * @throws PerfSONARException
- */
- private void insertExampleData(String metadataId)
- throws PerfSONARException {
- Metadata meta = new Metadata();
- meta.setId(metadataId);
+ /**
+ * @throws PerfSONARException
+ *
+ */
+ public MultipleFilesDAOImplTests() throws PerfSONARException {
+ super();
+ // TODO: are we checking SingleFileDAO or MultipleFileDAO?
+ lsDao = LookupServiceDAOFactory.getDAO();
+ }
- Data data1 = new Data();
- data1.setId("id2");
- data1.setMetadataIdRef(meta.getId());
+ /**
+ * Insert an empty element and sets its timestamp
+ * @param metadataId
+ * @throws PerfSONARException
+ */
+ private void insertExampleData(String metadataId)
+ throws PerfSONARException {
+ Metadata meta = new Metadata();
+ meta.setId(metadataId);
- Data data2 = new Data();
- data2.setId("id1");
- data2.setMetadataIdRef(meta.getId());
+ Data data1 = new Data();
+ data1.setId("id2");
+ data1.setMetadataIdRef(meta.getId());
- long now = System.currentTimeMillis() / 1000;
+ Data data2 = new Data();
+ data2.setId("id1");
+ data2.setMetadataIdRef(meta.getId());
+
+ long now = System.currentTimeMillis() / 1000;
lsDao.setControlParameter(metadataId, "timestamp",
Long.toString(now));
- lsDao.putLookupInfo(meta, new Data[] { data1, data2 });
- }
+ lsDao.putLookupInfo(meta, new Data[] {data1, data2});
+ }
- public void testDBConnectivity() throws PerfSONARException {
- logger.info("•••• Testing LS DAO connectivity");
- assertTrue(lsDao.isDBConnectivity());
- logger.info("•• LS DAO connectivity is ok");
- }
+ public void testDBConnectivity() throws PerfSONARException {
+ logger.info("•••• Testing LS DAO connectivity");
+ assertTrue(lsDao.isDBConnectivity());
+ logger.info("•• LS DAO connectivity is ok");
+ }
- public void testCollectionExists() throws PerfSONARException {
- logger.info("•••• Testing LS DAO collections exists");
- assertTrue(lsDao.isDBConnectivity());
- assertFalse(lsDao.isDBCollection("DUMMY_COLLECTION_NAME"));
- assertNotNull(lsDao);
- assertTrue(lsDao.isDBCollection("LSStore-control"));
- logger.info("•• LS DAO collection exists");
- }
+ public void testCollectionExists() throws PerfSONARException {
+ logger.info("•••• Testing LS DAO collections exists");
+ assertTrue(lsDao.isDBConnectivity());
+ assertFalse(lsDao.isDBCollection("DUMMY_COLLECTION_NAME"));
+ assertNotNull(lsDao);
+ assertTrue(lsDao.isDBCollection("LSStore-control"));
+ logger.info("•• LS DAO collection exists");
+ }
- /**
- * Tests both the insertion and the removal of lookup information
- *
- * @throws PerfSONARException
- */
- public void testIsLookupInfo() throws PerfSONARException {
- logger.info("•••• Testing LS DAO insertion and deletion of LS
info");
- assertTrue(lsDao.isDBConnectivity());
- String metadataId = "id" + System.currentTimeMillis();
+ /**
+ * Tests both the insertion and the removal of lookup information
+ *
+ * @throws PerfSONARException
+ */
+ public void testIsLookupInfo() throws PerfSONARException {
+ logger.info("•••• Testing LS DAO insertion and deletion of LS info");
+ assertTrue(lsDao.isDBConnectivity());
+ String metadataId = "id" + System.currentTimeMillis();
- // Remove any existing element, to be safe
- logger.debug("Cleaning up for test data");
- lsDao.removeLookupInfo(metadataId);
+ // Remove any existing element, to be safe
+ logger.debug("Cleaning up for test data");
+ lsDao.removeLookupInfo(metadataId);
- // Inserting some data
- logger.debug("Inserting test data");
- assertTrue(lsDao.isDBConnectivity());
- insertExampleData(metadataId);
- assertTrue(lsDao.isLookupInfo(metadataId));
- logger.debug("... done!");
+ // Inserting some data
+ logger.debug("Inserting test data");
+ assertTrue(lsDao.isDBConnectivity());
+ insertExampleData(metadataId);
+ assertTrue(lsDao.isLookupInfo(metadataId));
+ logger.debug("... done!");
- // Removing the data
- logger.debug("Removing test data");
- assertTrue(lsDao.isDBConnectivity());
- lsDao.removeLookupInfo(metadataId);
- assertFalse(lsDao.isLookupInfo(metadataId));
- logger.info("•• LS DAO test passed");
- }
-
- /**
- * Test the cleanup of old LS info currently stored.<\br>
- * This test does the following:<ul>
- * <li> count the number of existing entries
- * <li> insert 2 old entries (> TTL) and 2 new entries (< TTL)
- * <li> run the cleanup process
- * <li> check that at least 2 entries have been removed
- * <li> check that the 2 old dated entries are removed and that the 2
new ones are left intact
- * </ul>
- * @throws PerfSONARException
- * @throws InterruptedException
- */
- public void testCleanupLookupInfo() throws PerfSONARException,
InterruptedException {
- logger.info("•••• Testing LS DAO cleanup of LS info");
- assertTrue(lsDao.isDBConnectivity());
+ // Removing the data
+ logger.debug("Removing test data");
+ assertTrue(lsDao.isDBConnectivity());
+ lsDao.removeLookupInfo(metadataId);
+ assertFalse(lsDao.isLookupInfo(metadataId));
+ logger.info("•• LS DAO test passed");
+ }
- // Initial number of entries in the Store
- int initialCount = countStoreEntries();
+ /**
+ * Test the cleanup of old LS info currently stored.<\br>
+ * This test does the following:<ul>
+ * <li> count the number of existing entries
+ * <li> insert 2 old entries (> TTL) and 2 new entries (< TTL)
+ * <li> run the cleanup process
+ * <li> check that at least 2 entries have been removed
+ * <li> check that the 2 old dated entries are removed and that the 2
new ones are left intact
+ * </ul>
+ * @throws PerfSONARException
+ * @throws InterruptedException
+ */
+ public void testCleanupLookupInfo() throws PerfSONARException,
InterruptedException {
+ logger.info("•••• Testing LS DAO cleanup of LS info");
+ assertTrue(lsDao.isDBConnectivity());
- // Insert 2 new entries without lsTTL
- String metadataId = "id" + System.currentTimeMillis();
- insertExampleData(metadataId);
- assertTrue(lsDao.isLookupInfo(metadataId));
- metadataId = "id" + System.currentTimeMillis();
- insertExampleData(metadataId);
- assertTrue(lsDao.isLookupInfo(metadataId));
-
- // Insert 2 new entries with a long lsTTL (10.000 sec)
- metadataId = "id" + System.currentTimeMillis();
- lsDao.setControlParameter(metadataId, "lsTTL", "10000");
- insertExampleData(metadataId);
- assertTrue(lsDao.isLookupInfo(metadataId));
- String savedMetadataId1 = metadataId;
- metadataId = "id" + System.currentTimeMillis();
- lsDao.setControlParameter(metadataId, "lsTTL", "10000");
- insertExampleData(metadataId);
- assertTrue(lsDao.isLookupInfo(metadataId));
- String savedMetadataId2 = metadataId;
+ // Initial number of entries in the Store
+ int initialCount = countStoreEntries();
- // Check that we actually have 4 entries more
- int afterInsertCount = countStoreEntries();
- assertTrue(initialCount + 4 == afterInsertCount);
-
- // Run the cleanup process and try to remove the 2 entries
without lsTTL defined
- // Removes any entry expiring one second from now and not
having its own lsTTL defined
- long now = (System.currentTimeMillis() / 1000) + 1;
- int removedEntries = lsDao.cleanupLookupInfo(now, 0);
- assertTrue(removedEntries >= 2);
-
- // Check that we have at least 2 entries less but that at
least the 2 old entries are present
- int afterCleanupCount = countStoreEntries();
- assertTrue(afterCleanupCount <= afterInsertCount - 2);
- assertTrue(afterCleanupCount >= 2);
-
- // Check that the old entries are still present
- assertTrue(lsDao.isLookupInfo(savedMetadataId1));
- assertTrue(lsDao.isLookupInfo(savedMetadataId2));
-
- // Removes the non expired entries
- lsDao.removeLookupInfo(savedMetadataId1);
- lsDao.removeLookupInfo(savedMetadataId2);
- assertEquals("Maybe some older entries where present and have
been removed as well, run again to be sure", initialCount,
countStoreEntries());
- logger.info("•• LS DAO test passed");
+ // Insert 2 new entries without lsTTL
+ String metadataId = "id" + System.currentTimeMillis();
+ insertExampleData(metadataId);
+ assertTrue(lsDao.isLookupInfo(metadataId));
+ metadataId = "id" + System.currentTimeMillis();
+ insertExampleData(metadataId);
+ assertTrue(lsDao.isLookupInfo(metadataId));
- }
-
- /**
- * Count the number of entries in the XML-DB Store
- * @return the total number of entries
- */
- private int countStoreEntries() {
- int count = 0;
- // TODO: build and XQuery counting the number of elements and
run it
- try {
- logger.debug("Counting documents in /db/ls/store/
with an XQuery");
- XMLDBResult result =
lsDao.performXQuery("count(collection('/db/ls/store/'))");
- count =
Integer.valueOf(result.getFirstElement().getText());
- } catch (PerfSONARException ex) {
- logger.error("Our count() XQuery returned an error: "
+ ex.getMessage());
- }
+ // Insert 2 new entries with a long lsTTL (10.000 sec)
+ metadataId = "id" + System.currentTimeMillis();
+ lsDao.setControlParameter(metadataId, "lsTTL", "10000");
+ insertExampleData(metadataId);
+ assertTrue(lsDao.isLookupInfo(metadataId));
+ String savedMetadataId1 = metadataId;
+ metadataId = "id" + System.currentTimeMillis();
+ lsDao.setControlParameter(metadataId, "lsTTL", "10000");
+ insertExampleData(metadataId);
+ assertTrue(lsDao.isLookupInfo(metadataId));
+ String savedMetadataId2 = metadataId;
- logger.debug(count + " documents found!");
- return count;
- }
+ // Check that we actually have 4 entries more
+ int afterInsertCount = countStoreEntries();
+ assertTrue(initialCount + 4 == afterInsertCount);
+
+ // Run the cleanup process and try to remove the 2 entries without
lsTTL defined
+ // Removes any entry expiring one second from now and not having its
own lsTTL defined
+ long now = (System.currentTimeMillis() / 1000) + 1;
+ int removedEntries = lsDao.cleanupLookupInfo(now, 0);
+ assertTrue(removedEntries >= 2);
+
+ // Check that we have at least 2 entries less but that at least the
2 old entries are present
+ int afterCleanupCount = countStoreEntries();
+ assertTrue(afterCleanupCount <= afterInsertCount - 2);
+ assertTrue(afterCleanupCount >= 2);
+
+ // Check that the old entries are still present
+ assertTrue(lsDao.isLookupInfo(savedMetadataId1));
+ assertTrue(lsDao.isLookupInfo(savedMetadataId2));
+
+ // Removes the non expired entries
+ lsDao.removeLookupInfo(savedMetadataId1);
+ lsDao.removeLookupInfo(savedMetadataId2);
+ assertEquals("Maybe some older entries where present and have been
removed as well, run again to be sure", initialCount, countStoreEntries());
+ logger.info("•• LS DAO test passed");
+
+ }
+
+ /**
+ * Count the number of entries in the XML-DB Store
+ * @return the total number of entries
+ */
+ private int countStoreEntries() {
+ int count = 0;
+ // TODO: build and XQuery counting the number of elements and run it
+ try {
+ logger.debug("Counting documents in /db/ls/store/ with an
XQuery");
+ XMLDBResult result =
lsDao.performXQuery("count(collection('/db/ls/store/'))");
+ count = Integer.valueOf(result.getFirstElement().getText());
+ } catch (PerfSONARException ex) {
+ logger.error("Our count() XQuery returned an error: " +
ex.getMessage());
+ }
+
+ logger.debug(count + " documents found!");
+ return count;
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/SummarizationDaoTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/SummarizationDaoTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/SummarizationDaoTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -14,79 +14,79 @@
import org.perfsonar.service.lookupservice.storage.LookupServiceDAOFactory;
import org.perfsonar.service.lookupservice.storage.SummarizationDAO;
-public class SummarizationDaoTests extends TestCase{
+public class SummarizationDaoTests extends TestCase {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private final SummarizationDAO summarizationDAO;
+ private final SummarizationDAO summarizationDAO;
- /**
- * @throws PerfSONARException
- *
- */
- public SummarizationDaoTests() throws PerfSONARException {
- super();
- summarizationDAO =
LookupServiceDAOFactory.getSumarizationDAO();
- }
+ /**
+ * @throws PerfSONARException
+ *
+ */
+ public SummarizationDaoTests() throws PerfSONARException {
+ super();
+ summarizationDAO = LookupServiceDAOFactory.getSumarizationDAO();
+ }
- /*
- * Setup the test conditions and elements
- */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- assertNotNull(summarizationDAO);
- }
+ /*
+ * Setup the test conditions and elements
+ */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ assertNotNull(summarizationDAO);
+ }
- public void testPutSingleSummaryData() throws Exception{
- logger.info("•••• Testing Summarization DAO: single insert");
+ public void testPutSingleSummaryData() throws Exception {
+ logger.info("•••• Testing Summarization DAO: single insert");
- // Clean state before beginning
- summarizationDAO.removeSummaryData();
+ // Clean state before beginning
+ summarizationDAO.removeSummaryData();
- Metadata meta = new Metadata();
- meta.setId("Id");
- meta.addParameter("param1", "value");
+ Metadata meta = new Metadata();
+ meta.setId("Id");
+ meta.addParameter("param1", "value");
- Data data=new Data();
- data.setId("Id1");
- data.setMetadataIdRef(meta.getId());
+ Data data = new Data();
+ data.setId("Id1");
+ data.setMetadataIdRef(meta.getId());
- meta.addChild(data);
+ meta.addChild(data);
- summarizationDAO.putSummaryData(meta);
- assertTrue(summarizationDAO.getSummaryData().getTotal()>0);
- logger.info("•• Summarization DAO test passed!");
+ summarizationDAO.putSummaryData(meta);
+ assertTrue(summarizationDAO.getSummaryData().getTotal() > 0);
+ logger.info("•• Summarization DAO test passed!");
- }
+ }
- public void testPutBatchOfSummaryData() throws Exception{
- logger.info("•••• Testing Summarization DAO: batch insert");
+ public void testPutBatchOfSummaryData() throws Exception {
+ logger.info("•••• Testing Summarization DAO: batch insert");
- Metadata meta1=new Metadata();
- meta1.setId("Id1");
- meta1.addParameter("param1", "value1");
+ Metadata meta1 = new Metadata();
+ meta1.setId("Id1");
+ meta1.addParameter("param1", "value1");
- Metadata meta2=new Metadata();
- meta2.setId("Id2");
- meta2.addParameter("param1", "value1");
+ Metadata meta2 = new Metadata();
+ meta2.setId("Id2");
+ meta2.addParameter("param1", "value1");
- List<Element> elements= new ArrayList<Element>();
- elements.add(meta1);
- elements.add(meta2);
+ List<Element> elements = new ArrayList<Element>();
+ elements.add(meta1);
+ elements.add(meta2);
- // Clean state before beginning
- summarizationDAO.removeSummaryData();
+ // Clean state before beginning
+ summarizationDAO.removeSummaryData();
- summarizationDAO.putBatchData(elements);
- assertEquals(summarizationDAO.getSummaryData().getTotal(),
elements.size());
+ summarizationDAO.putBatchData(elements);
+ assertEquals(summarizationDAO.getSummaryData().getTotal(),
elements.size());
- summarizationDAO.removeSummaryData();
- summarizationDAO.putBatchData(elements, 100);
- assertEquals(summarizationDAO.getSummaryData().getTotal(),
elements.size());
+ summarizationDAO.removeSummaryData();
+ summarizationDAO.putBatchData(elements, 100);
+ assertEquals(summarizationDAO.getSummaryData().getTotal(),
elements.size());
- summarizationDAO.removeSummaryData();
- logger.info("•• Summarization DAO batch test passed!");
- }
+ summarizationDAO.removeSummaryData();
+ logger.info("•• Summarization DAO batch test passed!");
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/XQueryExistDAOImplTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/XQueryExistDAOImplTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/dao/XQueryExistDAOImplTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -19,110 +19,110 @@
public class XQueryExistDAOImplTests extends TestCase {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- private final LookupServiceDAO dao;
+ private final LookupServiceDAO dao;
- /**
- * @throws PerfSONARException
- *
- */
- public XQueryExistDAOImplTests() throws PerfSONARException {
- super();
- dao = LookupServiceDAOFactory.getDAO();
- }
+ /**
+ * @throws PerfSONARException
+ *
+ */
+ public XQueryExistDAOImplTests() throws PerfSONARException {
+ super();
+ dao = LookupServiceDAOFactory.getDAO();
+ }
- /* Setup the test conditions and elements
- */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- assertNotNull(dao);
- }
+ /* Setup the test conditions and elements
+ */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ assertNotNull(dao);
+ }
- private void insertExampleData(String metadataId)
- throws PerfSONARException {
+ private void insertExampleData(String metadataId)
+ throws PerfSONARException {
- Metadata meta = new Metadata();
- meta.setId(metadataId);
+ Metadata meta = new Metadata();
+ meta.setId(metadataId);
- Data data1 = new Data();
- data1.setId("id2");
- data1.setMetadataIdRef(meta.getId());
+ Data data1 = new Data();
+ data1.setId("id2");
+ data1.setMetadataIdRef(meta.getId());
- Data data2 = new Data();
- data2.setId("id1");
- data2.setMetadataIdRef(meta.getId());
+ Data data2 = new Data();
+ data2.setId("id1");
+ data2.setMetadataIdRef(meta.getId());
- dao.putLookupInfo(meta, new Data[] { data1, data2 });
- }
+ dao.putLookupInfo(meta, new Data[] {data1, data2});
+ }
- public void testSaveDeleteData() throws PerfSONARException {
- logger.info("•••• Testing XQueryDAO: insert and remove");
+ public void testSaveDeleteData() throws PerfSONARException {
+ logger.info("•••• Testing XQueryDAO: insert and remove");
- String metadataId = "222";
+ String metadataId = "222";
- insertExampleData(metadataId);
- assertTrue(dao.isLookupInfo(metadataId));
- dao.removeLookupInfo(metadataId);
- assertFalse(dao.isLookupInfo(metadataId));
- logger.info("•• xQuery DAO test passed");
- }
+ insertExampleData(metadataId);
+ assertTrue(dao.isLookupInfo(metadataId));
+ dao.removeLookupInfo(metadataId);
+ assertFalse(dao.isLookupInfo(metadataId));
+ logger.info("•• xQuery DAO test passed");
+ }
- public void testQueryLookupInformation() throws PerfSONARException {
- logger.info("•••• Testing XQueryDAO: LS info and metadataId");
+ public void testQueryLookupInformation() throws PerfSONARException {
+ logger.info("•••• Testing XQueryDAO: LS info and metadataId");
- String metadataId = "id";
+ String metadataId = "id";
- insertExampleData(metadataId);
+ insertExampleData(metadataId);
- assertTrue(dao.isLookupInfo(metadataId));
+ assertTrue(dao.isLookupInfo(metadataId));
- ArrayList<Element> elements = (ArrayList<Element>)
dao.performXQuery(
- XQueryDAOSupportImpl.DECLARE_NMWG_NAMESPACE
- + "
/nmwg:store[@type='LSStore']/nmwg:metadata[@id='"
- + metadataId +
"']").getResults();
- assertEquals(1, elements.size());
- Metadata dbMetadata = (Metadata) elements.get(0);
+ ArrayList<Element> elements = (ArrayList<Element>) dao.performXQuery(
+ XQueryDAOSupportImpl.DECLARE_NMWG_NAMESPACE
+ + "
/nmwg:store[@type='LSStore']/nmwg:metadata[@id='"
+ + metadataId + "']").getResults();
+ assertEquals(1, elements.size());
+ Metadata dbMetadata = (Metadata) elements.get(0);
- assertEquals(metadataId, dbMetadata.getId());
+ assertEquals(metadataId, dbMetadata.getId());
- dao.removeLookupInfo(metadataId);
- logger.info("•• xQuery DAO test passed");
- }
+ dao.removeLookupInfo(metadataId);
+ logger.info("•• xQuery DAO test passed");
+ }
- public void testSaveControlParameter() throws PerfSONARException {
- logger.info("•••• Testing XQueryDAO: control parameters");
+ public void testSaveControlParameter() throws PerfSONARException {
+ logger.info("•••• Testing XQueryDAO: control parameters");
- String metadataId = "id";
- insertExampleData(metadataId);
+ String metadataId = "id";
+ insertExampleData(metadataId);
- String paramName = "parameter";
- String paramValue = "value";
+ String paramName = "parameter";
+ String paramValue = "value";
- dao.setControlParameter(metadataId, paramName, paramValue);
- ArrayList<Element> elements = (ArrayList<Element>) dao
- .performXQuery(
-
XQueryDAOSupportImpl.DECLARE_NMWG_NAMESPACE
- + "
/nmwg:store[@type='LSStore-control']/nmwg:metadata[@id='"
- + metadataId
+ "']").getResults();
+ dao.setControlParameter(metadataId, paramName, paramValue);
+ ArrayList<Element> elements = (ArrayList<Element>) dao
+ .performXQuery(
+ XQueryDAOSupportImpl.DECLARE_NMWG_NAMESPACE
+ + "
/nmwg:store[@type='LSStore-control']/nmwg:metadata[@id='"
+ + metadataId + "']").getResults();
- assertEquals(1, elements.size());
- Metadata dbMetadata = (Metadata) elements.get(0);
- Collection<Element> parametersCollection = dbMetadata
- .getChildren("parameters");
- assertEquals(1, parametersCollection.size());
- Parameters params = (Parameters)
parametersCollection.iterator().next();
- Collection<Element> paramCollection = params.getChildren();
+ assertEquals(1, elements.size());
+ Metadata dbMetadata = (Metadata) elements.get(0);
+ Collection<Element> parametersCollection = dbMetadata
+ .getChildren("parameters");
+ assertEquals(1, parametersCollection.size());
+ Parameters params = (Parameters)
parametersCollection.iterator().next();
+ Collection<Element> paramCollection = params.getChildren();
- assertEquals(1, paramCollection.size());
+ assertEquals(1, paramCollection.size());
- Parameter param = (Parameter)
paramCollection.iterator().next();
- assertEquals(paramName, param.getAttribute("name"));
- assertEquals(paramValue, param.getAttribute("value"));
+ Parameter param = (Parameter) paramCollection.iterator().next();
+ assertEquals(paramName, param.getAttribute("name"));
+ assertEquals(paramValue, param.getAttribute("value"));
- dao.removeLookupInfo(metadataId);
- logger.info("•• xQuery DAO test passed");
- }
+ dao.removeLookupInfo(metadataId);
+ logger.info("•• xQuery DAO test passed");
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/suite/LSTestSuite.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/suite/LSTestSuite.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/suite/LSTestSuite.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -2,11 +2,20 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.perfsonar.tests.actions.*;
-import org.perfsonar.tests.components.*;
-import org.perfsonar.tests.dao.*;
-import org.perfsonar.tests.summarization.*;
-import org.perfsonar.tests.utilities.*;
+import org.perfsonar.tests.actions.QueryActionTests;
+import org.perfsonar.tests.actions.DiscoveryQueryGeneratorTests;
+import org.perfsonar.tests.actions.RegistrationActionTests;
+import org.perfsonar.tests.actions.DeregistrationActionTests;
+import org.perfsonar.tests.actions.DiscoveryActionTests;
+import org.perfsonar.tests.actions.EchoActionTests;
+import org.perfsonar.tests.components.DataSourceComponentTest;
+import org.perfsonar.tests.components.ModificationCounterComponentTest;
+import org.perfsonar.tests.components.XMLDBComponentTest;
+import org.perfsonar.tests.dao.MultipleFilesDAOImplTests;
+import org.perfsonar.tests.dao.SummarizationDaoTests;
+import org.perfsonar.tests.dao.XQueryExistDAOImplTests;
+import org.perfsonar.tests.summarization.SummarizationTests;
+import org.perfsonar.tests.utilities.ExistDBInitializerTests;
import junit.framework.TestSuite;
@@ -22,48 +31,48 @@
*/
public class LSTestSuite extends TestSuite {
- protected static Logger logger =
LoggerFactory.getLogger(LSTestSuite.class);
+ protected static Logger logger =
LoggerFactory.getLogger(LSTestSuite.class);
- /**
- * We have a test suite object to run all tests in a consistent order
- */
- public static TestSuite suite(){
- // To see if logger is correctly setup, use configuration
file in log4j/development (add it to the classpath)
- logger.info("Launching complete Lookup Service unit testing
suite, we can have a 5 levels logging at this point");
- logger.error("1 - ERROR level logging");
- logger.warn("2 - WARN level logging");
- logger.info("3 - INFO level logging");
- logger.debug("4 - DEBUG level logging");
- logger.trace("5 - TRACE level logging");
+ /**
+ * We have a test suite object to run all tests in a consistent order
+ */
+ public static TestSuite suite() {
+ // To see if logger is correctly setup, use configuration file in
log4j/development (add it to the classpath)
+ logger.info("Launching complete Lookup Service unit testing suite,
we can have a 5 levels logging at this point");
+ logger.error("1 - ERROR level logging");
+ logger.warn("2 - WARN level logging");
+ logger.info("3 - INFO level logging");
+ logger.debug("4 - DEBUG level logging");
+ logger.trace("5 - TRACE level logging");
- TestSuite suite = new TestSuite();
- // eXist DB setup (clears the DB)
- suite.addTestSuite(ExistDBInitializerTests.class);
-
- // Components (ModificationCounterComponent and
XMLDBComponent tests are run in a threaded environment)
- suite.addTestSuite(DataSourceComponentTest.class);
- suite.addTestSuite(ModificationCounterComponentTest.class);
- suite.addTestSuite(XMLDBComponentTest.class);
-
- // TODO: add LookupServiceDAOFactory tests
- // TODO: add DAO tests in a threaded environment if possible
- suite.addTestSuite(XQueryExistDAOImplTests.class);
- suite.addTestSuite(MultipleFilesDAOImplTests.class);
- suite.addTestSuite(SummarizationDaoTests.class);
-
- // Actions
- suite.addTestSuite(DiscoveryQueryGeneratorTests.class);
- suite.addTestSuite(EchoActionTests.class);
- suite.addTestSuite(RegistrationActionTests.class);
- suite.addTestSuite(QueryActionTests.class);
- suite.addTestSuite(DiscoveryActionTests.class);
- suite.addTestSuite(DeregistrationActionTests.class);
-
- // Summarization
- suite.addTestSuite(SummarizationTests.class);
+ TestSuite suite = new TestSuite();
+ // eXist DB setup (clears the DB)
+ suite.addTestSuite(ExistDBInitializerTests.class);
- // TODO: Scheduler tests
+ // Components (ModificationCounterComponent and XMLDBComponent tests
are run in a threaded environment)
+ suite.addTestSuite(DataSourceComponentTest.class);
+ suite.addTestSuite(ModificationCounterComponentTest.class);
+ suite.addTestSuite(XMLDBComponentTest.class);
- return suite;
- }
+ // TODO: add LookupServiceDAOFactory tests
+ // TODO: add DAO tests in a threaded environment if possible
+ suite.addTestSuite(XQueryExistDAOImplTests.class);
+ suite.addTestSuite(MultipleFilesDAOImplTests.class);
+ suite.addTestSuite(SummarizationDaoTests.class);
+
+ // Actions
+ suite.addTestSuite(DiscoveryQueryGeneratorTests.class);
+ suite.addTestSuite(EchoActionTests.class);
+ suite.addTestSuite(RegistrationActionTests.class);
+ suite.addTestSuite(QueryActionTests.class);
+ suite.addTestSuite(DiscoveryActionTests.class);
+ suite.addTestSuite(DeregistrationActionTests.class);
+
+ // Summarization
+ suite.addTestSuite(SummarizationTests.class);
+
+ // TODO: Scheduler tests
+
+ return suite;
+ }
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/summarization/SummarizationTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/summarization/SummarizationTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/summarization/SummarizationTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -11,64 +11,64 @@
import
org.perfsonar.service.lookupservice.registration.summarization.SummarizeIpAddrs;
public class SummarizationTests extends TestCase {
-
- protected Logger logger = LoggerFactory.getLogger(getClass());
- public void testIPSummarization() {
- logger.info("•••• Testing IP summarization");
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- Set<String> ips = new HashSet<String>();
- ips.add("192.168.1.1");
- ips.add("192.168.1.0");
-
- Set<String> result = SummarizeIpAddrs.getSummary(ips);
- assertEquals("192.168.1.0/31", result.iterator().next());
- logger.info("•• Summarization test passed");
- }
-
- public void testIPSummarizationWithInvalid() {
- logger.info("•••• Testing IP summarization with invalid IP");
- logger.warn("•Testing summarization• some 'Ignoring address'
warnings should appear in the logs, ignore it!");
+ public void testIPSummarization() {
+ logger.info("•••• Testing IP summarization");
- Set<String> ips = new HashSet<String>();
- ips.add("192.168.1.1");
- ips.add("192.xxx");
- ips.add("192.xxx.1.999");
-
- Set<String> result = SummarizeIpAddrs.getSummary(ips);
- assertEquals("192.168.1.1/32", result.iterator().next());
- logger.info("•• Summarization test with invalid IP passed");
- }
-
- public void testDomainSummarization() {
- logger.info("•••• Testing domain summarization");
+ Set<String> ips = new HashSet<String>();
+ ips.add("192.168.1.1");
+ ips.add("192.168.1.0");
- Set<String> domains = new HashSet<String>();
- domains.add("man.poznan.pl");
- domains.add("berlin.de");
-
- Set<String> result = new HashSet<String>();
- result.add("poznan.pl");
- result.add("pl");
- result.add("de");
-
- assertEquals(DomainSummarizator.summarizeDomains(domains),
result);
- logger.info("•• Domain summarization test passed");
- }
-
- public void testDomainSummarizationWithInvalidDomains() {
- logger.info("•••• Testing domain summarization with invalid
domain");
+ Set<String> result = SummarizeIpAddrs.getSummary(ips);
+ assertEquals("192.168.1.0/31", result.iterator().next());
+ logger.info("•• Summarization test passed");
+ }
- Set<String> domains = new HashSet<String>();
- domains.add("man.poznan.pl");
- domains.add("sdfsdfsf");
-
- Set<String> result = new HashSet<String>();
- result.add("poznan.pl");
- result.add("pl");
-
- assertEquals(DomainSummarizator.summarizeDomains(domains),
result);
- logger.info("•• Domain summarization test with invalid domain
passed");
- }
-
+ public void testIPSummarizationWithInvalid() {
+ logger.info("•••• Testing IP summarization with invalid IP");
+ logger.warn("•Testing summarization• some 'Ignoring address'
warnings should appear in the logs, ignore it!");
+
+ Set<String> ips = new HashSet<String>();
+ ips.add("192.168.1.1");
+ ips.add("192.xxx");
+ ips.add("192.xxx.1.999");
+
+ Set<String> result = SummarizeIpAddrs.getSummary(ips);
+ assertEquals("192.168.1.1/32", result.iterator().next());
+ logger.info("•• Summarization test with invalid IP passed");
+ }
+
+ public void testDomainSummarization() {
+ logger.info("•••• Testing domain summarization");
+
+ Set<String> domains = new HashSet<String>();
+ domains.add("man.poznan.pl");
+ domains.add("berlin.de");
+
+ Set<String> result = new HashSet<String>();
+ result.add("poznan.pl");
+ result.add("pl");
+ result.add("de");
+
+ assertEquals(DomainSummarizator.summarizeDomains(domains), result);
+ logger.info("•• Domain summarization test passed");
+ }
+
+ public void testDomainSummarizationWithInvalidDomains() {
+ logger.info("•••• Testing domain summarization with invalid domain");
+
+ Set<String> domains = new HashSet<String>();
+ domains.add("man.poznan.pl");
+ domains.add("sdfsdfsf");
+
+ Set<String> result = new HashSet<String>();
+ result.add("poznan.pl");
+ result.add("pl");
+
+ assertEquals(DomainSummarizator.summarizeDomains(domains), result);
+ logger.info("•• Domain summarization test with invalid domain
passed");
+ }
+
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/utilities/AsynchTester.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/utilities/AsynchTester.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/utilities/AsynchTester.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -36,9 +36,11 @@
*/
public void test() throws InterruptedException {
thread.join();
- if (error != null)
+ if (error != null) {
throw error;
- if (runtimeExc != null)
+ }
+ if (runtimeExc != null) {
throw runtimeExc;
+ }
}
}
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/utilities/ExistDBInitializerTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/utilities/ExistDBInitializerTests.java
2012-12-27 18:21:02 UTC (rev 6078)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/utilities/ExistDBInitializerTests.java
2012-12-27 18:40:41 UTC (rev 6079)
@@ -17,59 +17,59 @@
public class ExistDBInitializerTests extends TestCase {
- protected Logger logger = LoggerFactory.getLogger(getClass());
+ protected Logger logger = LoggerFactory.getLogger(getClass());
- public XMLDBComponent getDBAccessManager() throws PerfSONARException {
- return (XMLDBComponent) ConfigurationManager.getInstance()
-
.getConfiguration().getAuxiliaryComponent("existAccessManager");
- }
+ public XMLDBComponent getDBAccessManager() throws PerfSONARException {
+ return (XMLDBComponent) ConfigurationManager.getInstance()
+
.getConfiguration().getAuxiliaryComponent("existAccessManager");
+ }
- /**
- * Test the embedded eXist DB can be started and shutdown
- *
- * @throws XMLDBException
- * @throws ClassNotFoundException
- * @throws InstantiationException
- * @throws IllegalAccessException
- */
- public void testeXist() throws XMLDBException,
ClassNotFoundException, InstantiationException, IllegalAccessException {
- logger.info("•••• Testing eXistDB driver init");
- @SuppressWarnings("rawtypes")
- Class cl = Class.forName("org.exist.xmldb.DatabaseImpl");
- Database database = (Database)cl.newInstance();
- database.setProperty("create-database", "true");
- DatabaseManager.registerDatabase(database);
+ /**
+ * Test the embedded eXist DB can be started and shutdown
+ *
+ * @throws XMLDBException
+ * @throws ClassNotFoundException
+ * @throws InstantiationException
+ * @throws IllegalAccessException
+ */
+ public void testeXist() throws XMLDBException, ClassNotFoundException,
InstantiationException, IllegalAccessException {
+ logger.info("•••• Testing eXistDB driver init");
+ @SuppressWarnings("rawtypes")
+ Class cl = Class.forName("org.exist.xmldb.DatabaseImpl");
+ Database database = (Database) cl.newInstance();
+ database.setProperty("create-database", "true");
+ DatabaseManager.registerDatabase(database);
- // Try to read the root collection
- Collection col =
DatabaseManager.getCollection("xmldb:exist:///db", "admin", "");
- String resources[] = col.listResources();
- System.out.println("Resources:");
- for (int i = 0; i < resources.length; i++) {
- System.out.println(resources[i]);
- }
+ // Try to read the root collection
+ Collection col = DatabaseManager.getCollection("xmldb:exist:///db",
"admin", "");
+ String[] resources = col.listResources();
+ System.out.println("Resources:");
+ for (int i = 0; i < resources.length; i++) {
+ System.out.println(resources[i]);
+ }
- // Then cleanly shut down the database
- logger.debug("Now shuting down eXistDB properly");
- DatabaseInstanceManager manager = (DatabaseInstanceManager)
col.getService("DatabaseInstanceManager", "1.0");
- manager.shutdown();
- logger.info("•• eXistDB properly shutdown");
- }
-
- public void testExistDbInitializer() throws Exception {
- logger.info("•••• Testing eXistDB initialization");
+ // Then cleanly shut down the database
+ logger.debug("Now shuting down eXistDB properly");
+ DatabaseInstanceManager manager = (DatabaseInstanceManager)
col.getService("DatabaseInstanceManager", "1.0");
+ manager.shutdown();
+ logger.info("•• eXistDB properly shutdown");
+ }
- XMLDBComponent component = getDBAccessManager();
+ public void testExistDbInitializer() throws Exception {
+ logger.info("•••• Testing eXistDB initialization");
- ExistDbInitializerServlet emt = new
ExistDbInitializerServlet();
- emt.initializeDatabase("target/test-classes/db",
ConfigurationManager.getInstanceWithoutRunningComponents());
+ XMLDBComponent component = getDBAccessManager();
- component.performXQuery("xmldb:remove('/db/ls')");
+ ExistDbInitializerServlet emt = new ExistDbInitializerServlet();
+ emt.initializeDatabase("target/test-classes/db",
ConfigurationManager.getInstanceWithoutRunningComponents());
- emt.initializeDatabase("target/test-classes/db",
ConfigurationManager.getInstanceWithoutRunningComponents());
+ component.performXQuery("xmldb:remove('/db/ls')");
- XMLDBResult rs =
component.performXQuery("xmldb:collection-exists('/db/ls')");
+ emt.initializeDatabase("target/test-classes/db",
ConfigurationManager.getInstanceWithoutRunningComponents());
- assertEquals("true", rs.getTextResults()[0]);
- logger.info("•• eXist DB properly initialized and tested");
- }
+ XMLDBResult rs =
component.performXQuery("xmldb:collection-exists('/db/ls')");
+
+ assertEquals("true", rs.getTextResults()[0]);
+ logger.info("•• eXist DB properly initialized and tested");
+ }
}
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-12-27 18:21:02 UTC (rev 6078)
+++ trunk/pom.xml 2012-12-27 18:40:41 UTC (rev 6079)
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.geant.perfsonar</groupId>
<artifactId>aggregator</artifactId>
@@ -30,6 +31,7 @@
<module>perfsonar-java-sql-ma</module>
<module>perfsonar-java-base2</module>
<module>perfsonar-java-rrd-ma-SQL_backend</module>
+ <module>perfsonar-java-xml-ls</module>
<module>nmwg-sql-converter</module>
</modules>
</project>
- [pS-dev] [GEANT/SA2/ps-java-services] r6079 - in trunk: . nmwg-sql-converter perfsonar-java-base2 pe rfsonar-java-base2/src/main/java/org/perfsonar/base2/servi ce/axis2interface perfsonar-java-base2/src/main/java/org/p erfsonar/base2/service/registration perfsonar-java-rrd-ma/ conf perfsonar-java-rrd-ma-SQL_backend perfsonar-java-rr d-ma-SQL_backend/src/main perfsonar-java-rrd-sql-ma/conf perfsonar-java-xml-ls perfsonar-java-xml-ls/src perfsonar -java-xml-ls/src/checkstyle perfsonar-java-xml-ls/src/main /java/org/perfsonar/service/lookupservice perfsonar-java-x ml-ls/src/main/java/org/perfsonar/service/lookupservice/co mponents perfsonar-java-xml-ls/src/main/java/org/perfsonar /service/lookupservice/dls/client perfsonar-java-xml-ls/sr c/main/java/org/perfsonar/service/lookupservice/registerSe rvice perfsonar-java-xml-ls/src/main/java/org/perfsonar/se rvice/lookupservice/registration perfsonar-java-xml-ls/src /main/java/org/perfsonar/service/lookupservice/registratio n/summarization perfsona r-java-xml-ls/src/main/java/org/p erfsonar/service/lookupservice/schedulerActions perfsonar- java-xml-ls/src/main/java/org/perfsonar/service/lookupserv ice/servlets perfsonar-java-xml-ls/src/main/java/org/perfs onar/service/lookupservice/storage perfsonar-java-xml-ls/s rc/main/java/org/perfsonar/service/lookupservice/storage/e xist perfsonar-java-xml-ls/src/main/java/org/perfsonar/ser vice/lookupservice/storage/exist/dao perfsonar-java-xml-ls /src/main/java/org/perfsonar/service/lookupservice/summari zation perfsonar-java-xml-ls/src/main/java/org/perfsonar/s ervice/utilities perfsonar-java-xml-ls/src/main/webapp/vie ws perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests /actions perfsonar-java-xml-ls/src/test/java/org/perfsonar /tests/components perfsonar-java-xml-ls/src/test/java/org/ perfsonar/tests/dao perfsonar-java-xml-ls/src/test/java/or g/perfsonar/tests/suite perfsonar-java-xml-ls/src/test/jav a/org/perfsonar/tests/summarization perfsonar-java-xml-ls/ src/test/java/org/perfsonar/ tests/utilities, svn-noreply, 12/27/2012
Archive powered by MHonArc 2.6.16.