| Commit in servicemix/ws/jaxws/wsrm on MAIN | |||
| src/test/java/org/servicemix/ws/rm/SequenceStoreTest.java | +46 | added 1.1 | |
| /SequenceManagerTest.java | +78 | added 1.1 | |
| src/main/java/org/servicemix/ws/rm/SequenceManager.java | +188 | added 1.1 | |
| /SimpleReliableMessagingDestination.java | -182 | 1.1 removed | |
| .classpath | +21 | -40 | 1.1 -> 1.2 |
| +333 | -222 | ||
added a simple test case to test out the current implementation
servicemix/ws/jaxws/wsrm/src/test/java/org/servicemix/ws/rm
SequenceStoreTest.java added at 1.1
diff -N SequenceStoreTest.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ SequenceStoreTest.java 2 Sep 2005 12:21:23 -0000 1.1 @@ -0,0 +1,46 @@
+package org.servicemix.ws.rm;
+/**
+ *
+ * Copyright 2005 LogicBlaze, Inc. http://www.logicblaze.com
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ **/
+import org.servicemix.ws.rm.NonPersistentSequenceStore;
+import org.servicemix.ws.rm.SequenceStore;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ * @version $Revision$
+ */
+public class SequenceStoreTest extends TestCase {
+
+ protected SequenceStore sequenceStore;
+
+ public void testCreateAndDeleteSequence() throws Exception {
+
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ sequenceStore = createSequenceStore();
+ }
+
+ protected SequenceStore createSequenceStore() {
+ return new NonPersistentSequenceStore();
+ }
+
+}
servicemix/ws/jaxws/wsrm/src/test/java/org/servicemix/ws/rm
SequenceManagerTest.java added at 1.1
diff -N SequenceManagerTest.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ SequenceManagerTest.java 2 Sep 2005 12:21:24 -0000 1.1 @@ -0,0 +1,78 @@
+/**
+ *
+ * Copyright 2005 LogicBlaze, Inc. http://www.logicblaze.com
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ **/
+package org.servicemix.ws.rm;
+
+import org.servicemix.wspojo.rm.SequenceAbsractPortType;
+import org.xmlsoap.schemas.ws._2004._08.addressing.AttributedURI;
+import org.xmlsoap.schemas.ws._2004._08.addressing.EndpointReferenceType;
+import org.xmlsoap.schemas.ws._2005._02.rm.CreateSequenceResponseType;
+import org.xmlsoap.schemas.ws._2005._02.rm.CreateSequenceType;
+import org.xmlsoap.schemas.ws._2005._02.rm.Expires;
+import org.xmlsoap.schemas.ws._2005._02.rm.Identifier;
+import org.xmlsoap.schemas.ws._2005._02.rm.TerminateSequenceType;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ * @version $Revision$
+ */
+public class SequenceManagerTest extends TestCase {
+ protected SequenceAbsractPortType sequenceManager;
+ protected boolean specifyExpires = false;
+
+ public void testCreateAndTerminateSequence() throws Exception {
+ CreateSequenceType createArguments = new CreateSequenceType();
+
+ EndpointReferenceType reference = new EndpointReferenceType();
+ reference.setAddress(new AttributedURI());
+ reference.getAddress().setValue("http://localhost/test/" + getClass().getName() + "/" + getName());
+ createArguments.setAcksTo(reference);
+
+ if (specifyExpires) {
+ Expires expires = new Expires();
+ createArguments.setExpires(expires);
+ }
+
+ CreateSequenceResponseType response = sequenceManager.createSequence(createArguments);
+ Identifier identifier = response.getIdentifier();
+ String value = identifier.getValue();
+ assertNotNull("Should have an identifier", value);
+
+ System.out.println("Created identifier: " + value);
+ System.out.println("Accept: " + response.getAccept());
+
+ TerminateSequenceType terminateArgs = new TerminateSequenceType();
+ terminateArgs.setIdentifier(identifier);
+ sequenceManager.terminateSequence(terminateArgs);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ sequenceManager = createSequenceManager();
+ }
+
+ protected SequenceAbsractPortType createSequenceManager() {
+ return new SequenceManager(createSequenceStore());
+ }
+
+ protected SequenceStore createSequenceStore() {
+ return new NonPersistentSequenceStore();
+ }
+
+}
servicemix/ws/jaxws/wsrm/src/main/java/org/servicemix/ws/rm
SequenceManager.java added at 1.1
diff -N SequenceManager.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ SequenceManager.java 2 Sep 2005 12:21:24 -0000 1.1 @@ -0,0 +1,188 @@
+/**
+ *
+ * Copyright 2005 LogicBlaze, Inc. http://www.logicblaze.com
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ **/
+package org.servicemix.ws.rm;
+
+import org.servicemix.wspojo.rm.SequenceAbsractPortType;
+import org.xmlsoap.schemas.ws._2005._02.rm.AckRequestedType;
+import org.xmlsoap.schemas.ws._2005._02.rm.CreateSequenceResponseType;
+import org.xmlsoap.schemas.ws._2005._02.rm.CreateSequenceType;
+import org.xmlsoap.schemas.ws._2005._02.rm.Expires;
+import org.xmlsoap.schemas.ws._2005._02.rm.Identifier;
+import org.xmlsoap.schemas.ws._2005._02.rm.SequenceAcknowledgement;
+import org.xmlsoap.schemas.ws._2005._02.rm.SequenceType;
+import org.xmlsoap.schemas.ws._2005._02.rm.TerminateSequenceType;
+import org.xmlsoap.schemas.ws._2005._02.rm.SequenceAcknowledgement.AcknowledgementRange;
+
+import java.math.BigInteger;
+
+/**
+ * Default implementation of the WS-RM endpoint for managing sequences.
+ *
+ * @version $Revision$
+ */
+public class SequenceManager implements SequenceAbsractPortType {
+
+ private static final BigInteger MAX_INTEGER = new BigInteger("" + Integer.MAX_VALUE);
+
+ private SequenceStore sequenceStore;
+
+
+
+ public SequenceManager(SequenceStore store) {
+ sequenceStore = store;
+ }
+
+ public SequenceAcknowledgement assertValid(SequenceType sequence) {
+ Identifier identifier = sequence.getIdentifier();
+ Sequence s = sequenceStore.retrieve(identifier);
+
+ if (s == null) {
+ throw new SoapFault("The value of wsrm:Identifier is not a known Sequence identifier", "Sender",
+ "wsrm:UnknownSequence", identifier.toString());
+ }
+
+ // Is the message number out of range?
+ BigInteger value = sequence.getMessageNumber();
+ if (value.compareTo(BigInteger.ZERO) <= 0 || value.compareTo(MAX_INTEGER) > 0) {
+
+ // We must terminate the sequence now.
+ sequenceStore.delete(identifier);
+
+ throw new SoapFault("The maximum value for wsrm:MessageNumber has been exceeded", "Sender",
+ "wsrm:MessageNumberRollover", identifier.toString());
+ }
+
+ int intValue = value.intValue();
+
+ // If we received the last message, then check to see if the message
+ // being
+ // processed exceeds it's sequence.
+ if (s.lastMessageNumber > 0 && intValue > s.lastMessageNumber) {
+ throw new SoapFault(
+ "The value for wsrm:MessageNumber exceeds the value of the MessageNumber accompanying a LastMessage element in this Sequence.",
+ "Sender", "wsrm:LastMessageNumberExceeded", identifier.toString());
+ }
+
+ // Is this message comming out of order??
+ if (intValue != s.lastMessageAcked + 1) {
+ // This implementation is really simple and just drops out of order
+ // messages.
+
+ SequenceAcknowledgement acknowledgement = new SequenceAcknowledgement();
+ acknowledgement.setIdentifier(identifier);
+ if (s.lastMessageAcked > 0) {
+ AcknowledgementRange range = new AcknowledgementRange();
+ range.setLower(BigInteger.ONE);
+ range.setUpper(new BigInteger("" + s.lastMessageAcked));
+ acknowledgement.getAcknowledgementRange().add(range);
+ }
+ return acknowledgement;
+ }
+
+ return null;
+ }
+
+ public SequenceAcknowledgement acknowledge(SequenceType sequence) {
+ Identifier identifier = sequence.getIdentifier();
+
+ // We might need something like a retrieve for update so that
+ // we can lock this record across a cluster
+ Sequence s = sequenceStore.retrieve(identifier);
+
+ int value = sequence.getMessageNumber().intValue();
+ s.lastMessageAcked = value;
+ if (sequence.getLastMessage() != null) {
+ s.lastMessageNumber = value;
+ }
+
+ sequenceStore.update(s);
+
+ SequenceAcknowledgement acknowledgement = new SequenceAcknowledgement();
+ acknowledgement.setIdentifier(sequence.getIdentifier());
+ AcknowledgementRange range = new AcknowledgementRange();
+ range.setLower(BigInteger.ONE);
+ range.setUpper(new BigInteger("" + s.lastMessageAcked));
+ acknowledgement.getAcknowledgementRange().add(range);
+ return acknowledgement;
+ }
+
+ public SequenceAcknowledgement acknowledgeRequested(AckRequestedType sequence) {
+ Identifier identifier = sequence.getIdentifier();
+ Sequence s = sequenceStore.retrieve(identifier);
+
+ if (s == null) {
+ throw new SoapFault("The value of wsrm:Identifier is not a known Sequence identifier", "Sender",
+ "wsrm:UnknownSequence", sequence.getIdentifier().toString());
+ }
+
+ SequenceAcknowledgement acknowledgement = new SequenceAcknowledgement();
+ acknowledgement.setIdentifier(sequence.getIdentifier());
+ if (s.lastMessageAcked > 0) {
+ AcknowledgementRange range = new AcknowledgementRange();
+ range.setLower(BigInteger.ONE);
+ range.setUpper(new BigInteger("" + s.lastMessageAcked));
+ acknowledgement.getAcknowledgementRange().add(range);
+ }
+ return acknowledgement;
+ }
+
+ // SequenceAbsractPortType interface
+ // -------------------------------------------------------------------------
+ public CreateSequenceResponseType createSequence(CreateSequenceType createSequence) {
+ Sequence s = new Sequence();
+ s.acksTo = createSequence.getAcksTo();
+ if (createSequence.getExpires() != null) {
+ s.expires = convertToLocalTime(createSequence.getExpires());
+ }
+ sequenceStore.create(s);
+
+ CreateSequenceResponseType response = new CreateSequenceResponseType();
+ response.setIdentifier(s.getIdentifier());
+ if (s.expires != 0) {
+ response.setExpires(convertToDuration(s.expires));
+ }
+ return response;
+ }
+
+ public void terminateSequence(TerminateSequenceType terminateSequence) {
+ sequenceStore.delete(terminateSequence.getIdentifier());
+ }
+
+ // Implementation methods
+ // -------------------------------------------------------------------------
+ /**
+ * TODO: Need to implement these to support expiring subscriptions
+ *
+ * @param expires
+ * @return
+ */
+ private Expires convertToDuration(long expires) {
+ return null;
+ }
+
+ /**
+ * TODO: Need to implement these to support expiring subscriptions
+ *
+ * @param expires
+ * @return
+ */
+ private long convertToLocalTime(Expires expires) {
+ return 0;
+ }
+
+}
servicemix/ws/jaxws/wsrm/src/main/java/org/servicemix/ws/rm
SimpleReliableMessagingDestination.java removed after 1.1
diff -N SimpleReliableMessagingDestination.java --- SimpleReliableMessagingDestination.java 2 Sep 2005 11:57:10 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,182 +0,0 @@
-/**
- *
- * Copyright 2005 LogicBlaze, Inc. http://www.logicblaze.com
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- **/
-package org.servicemix.ws.rm;
-
-import org.servicemix.wspojo.rm.SequenceAbsractPortType;
-import org.xmlsoap.schemas.ws._2005._02.rm.AckRequestedType;
-import org.xmlsoap.schemas.ws._2005._02.rm.CreateSequenceResponseType;
-import org.xmlsoap.schemas.ws._2005._02.rm.CreateSequenceType;
-import org.xmlsoap.schemas.ws._2005._02.rm.Expires;
-import org.xmlsoap.schemas.ws._2005._02.rm.Identifier;
-import org.xmlsoap.schemas.ws._2005._02.rm.SequenceAcknowledgement;
-import org.xmlsoap.schemas.ws._2005._02.rm.SequenceType;
-import org.xmlsoap.schemas.ws._2005._02.rm.TerminateSequenceType;
-import org.xmlsoap.schemas.ws._2005._02.rm.SequenceAcknowledgement.AcknowledgementRange;
-
-import java.math.BigInteger;
-
-/**
- * Default implementation of the WS-RM endpoint for managing sequences.
- *
- * @version $Revision$
- */
-public class SimpleReliableMessagingDestination implements SequenceAbsractPortType {
-
- SequenceStore sequenceStore = new NonPersistentSequenceStore();
- private static final BigInteger MAX_INTEGER = new BigInteger("" + Integer.MAX_VALUE);
-
-
- public SequenceAcknowledgement assertValid(SequenceType sequence) {
- Identifier identifier = sequence.getIdentifier();
- Sequence s = sequenceStore.retrieve(identifier);
-
- if (s == null) {
- throw new SoapFault("The value of wsrm:Identifier is not a known Sequence identifier", "Sender",
- "wsrm:UnknownSequence", identifier.toString());
- }
-
- // Is the message number out of range?
- BigInteger value = sequence.getMessageNumber();
- if (value.compareTo(BigInteger.ZERO) <= 0 || value.compareTo(MAX_INTEGER) > 0) {
-
- // We must terminate the sequence now.
- sequenceStore.delete(identifier);
-
- throw new SoapFault("The maximum value for wsrm:MessageNumber has been exceeded", "Sender",
- "wsrm:MessageNumberRollover", identifier.toString());
- }
-
- int intValue = value.intValue();
-
- // If we received the last message, then check to see if the message
- // being
- // processed exceeds it's sequence.
- if (s.lastMessageNumber > 0 && intValue > s.lastMessageNumber) {
- throw new SoapFault(
- "The value for wsrm:MessageNumber exceeds the value of the MessageNumber accompanying a LastMessage element in this Sequence.",
- "Sender", "wsrm:LastMessageNumberExceeded", identifier.toString());
- }
-
- // Is this message comming out of order??
- if (intValue != s.lastMessageAcked + 1) {
- // This implementation is really simple and just drops out of order
- // messages.
-
- SequenceAcknowledgement acknowledgement = new SequenceAcknowledgement();
- acknowledgement.setIdentifier(identifier);
- if (s.lastMessageAcked > 0) {
- AcknowledgementRange range = new AcknowledgementRange();
- range.setLower(BigInteger.ONE);
- range.setUpper(new BigInteger("" + s.lastMessageAcked));
- acknowledgement.getAcknowledgementRange().add(range);
- }
- return acknowledgement;
- }
-
- return null;
- }
-
- public SequenceAcknowledgement acknowledge(SequenceType sequence) {
- Identifier identifier = sequence.getIdentifier();
-
- // We might need something like a retrieve for update so that
- // we can lock this record across a cluster
- Sequence s = sequenceStore.retrieve(identifier);
-
- int value = sequence.getMessageNumber().intValue();
- s.lastMessageAcked = value;
- if (sequence.getLastMessage() != null) {
- s.lastMessageNumber = value;
- }
-
- sequenceStore.update(s);
-
- SequenceAcknowledgement acknowledgement = new SequenceAcknowledgement();
- acknowledgement.setIdentifier(sequence.getIdentifier());
- AcknowledgementRange range = new AcknowledgementRange();
- range.setLower(BigInteger.ONE);
- range.setUpper(new BigInteger("" + s.lastMessageAcked));
- acknowledgement.getAcknowledgementRange().add(range);
- return acknowledgement;
- }
-
- public SequenceAcknowledgement acknowledgeRequested(AckRequestedType sequence) {
- Identifier identifier = sequence.getIdentifier();
- Sequence s = sequenceStore.retrieve(identifier);
-
- if (s == null) {
- throw new SoapFault("The value of wsrm:Identifier is not a known Sequence identifier", "Sender",
- "wsrm:UnknownSequence", sequence.getIdentifier().toString());
- }
-
- SequenceAcknowledgement acknowledgement = new SequenceAcknowledgement();
- acknowledgement.setIdentifier(sequence.getIdentifier());
- if (s.lastMessageAcked > 0) {
- AcknowledgementRange range = new AcknowledgementRange();
- range.setLower(BigInteger.ONE);
- range.setUpper(new BigInteger("" + s.lastMessageAcked));
- acknowledgement.getAcknowledgementRange().add(range);
- }
- return acknowledgement;
- }
-
- // SequenceAbsractPortType interface
- // -------------------------------------------------------------------------
- public CreateSequenceResponseType createSequence(CreateSequenceType createSequence) {
- Sequence s = new Sequence();
- s.acksTo = createSequence.getAcksTo();
- if (createSequence.getExpires() != null) {
- s.expires = convertToLocalTime(createSequence.getExpires());
- }
- sequenceStore.create(s);
-
- CreateSequenceResponseType response = new CreateSequenceResponseType();
- response.setIdentifier(s.getIdentifier());
- if (s.expires != 0) {
- response.setExpires(convertToDuration(s.expires));
- }
- return response;
- }
-
- public void terminateSequence(TerminateSequenceType terminateSequence) {
- sequenceStore.delete(terminateSequence.getIdentifier());
- }
-
- // Implementation methods
- // -------------------------------------------------------------------------
- /**
- * TODO: Need to implement these to support expiring subscriptions
- *
- * @param expires
- * @return
- */
- private Expires convertToDuration(long expires) {
- return null;
- }
-
- /**
- * TODO: Need to implement these to support expiring subscriptions
- *
- * @param expires
- * @return
- */
- private long convertToLocalTime(Expires expires) {
- return 0;
- }
-
-}
servicemix/ws/jaxws/wsrm
diff -u -r1.1 -r1.2 --- .classpath 2 Sep 2005 11:57:10 -0000 1.1 +++ .classpath 2 Sep 2005 12:21:24 -0000 1.2 @@ -1,42 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-
<classpath>
- <classpathentry excluding="" kind="src" path="src/main/java"> - </classpathentry> - <classpathentry output="target/test-classes" kind="src" path="src/test/java"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/servicemix-1.0.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/mx4j/jars/mx4j-jmx-2.1.1.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/activemq/jars/activemq-3.1-M6.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/geronimo-spec/jars/geronimo-spec-j2ee-1.4-rc4.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/servicemix-wspojo-1.1-SNAPSHOT.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/jsr181-api-20050818.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/jaxws-api-20050818.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/jaxws-rt-20050818.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/jaxb-api-20050818.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/jaxb-impl-20050818.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/stax/jars/stax-api-1.0.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/activesoap/jars/activesoap-1.0-SNAPSHOT.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/commons-logging/jars/commons-logging-1.0.3.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/concurrent/jars/concurrent-1.3.4.jar"> - </classpathentry> - <classpathentry kind="output" path="bin"> - </classpathentry> -</classpath>
\ No newline at end of file
+ <classpathentry kind="src" path="src/main/java"/> + <classpathentry kind="src" path="src/test/resources"/> + <classpathentry kind="src" path="src/test/java"/> + <classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/servicemix-1.0.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/mx4j/jars/mx4j-jmx-2.1.1.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/activemq/jars/activemq-3.1-M6.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/geronimo-spec/jars/geronimo-spec-j2ee-1.4-rc4.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/servicemix-wspojo-1.1-SNAPSHOT.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/jsr181-api-20050818.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/jaxws-api-20050818.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/jaxws-rt-20050818.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/jaxb-api-20050818.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/servicemix/jars/jaxb-impl-20050818.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/stax/jars/stax-api-1.0.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/activesoap/jars/activesoap-1.0-SNAPSHOT.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/commons-logging/jars/commons-logging-1.0.3.jar"/> + <classpathentry kind="var" path="MAVEN_REPO/concurrent/jars/concurrent-1.3.4.jar"/> + <classpathentry kind="output" path="bin"/> +</classpath>
