Skip to content

Commit

Permalink
Merge branch 'development'
Browse files Browse the repository at this point in the history
  • Loading branch information
junpls committed Mar 9, 2018
2 parents 1afa949 + b746311 commit 93a3f9b
Show file tree
Hide file tree
Showing 29 changed files with 288 additions and 469 deletions.
33 changes: 16 additions & 17 deletions .classpath
Original file line number Diff line number Diff line change
Expand Up @@ -14,47 +14,46 @@
<classpathentry kind="lib" path="core/lib/jaxp-api-1.4.5.jar"/>
<classpathentry kind="lib" path="core/lib/junit-4.12.jar"/>
<classpathentry kind="lib" path="core/lib/xpp3-1.1.4c.jar"/>
<classpathentry kind="lib" path="restmapper/lib/swagger-jersey2-jaxrs-1.5.12.jar"/>
<classpathentry kind="lib" path="restmapper/lib/swagger-jersey2-jaxrs-1.5.17.jar"/>
<classpathentry exported="true" kind="lib" path="restmapper/lib/javax.ws.rs-api-2.0.1.jar"/>
<classpathentry exported="true" kind="lib" path="restmapper/lib/jersey-server-2.25.1.jar"/>
<classpathentry exported="true" kind="lib" path="restmapper/lib/jersey-media-json-jackson-2.25.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jersey-common-2.25.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-core-2.8.4.jar"/>
<classpathentry kind="lib" path="restmapper/lib/swagger-jaxrs-1.5.12.jar"/>
<classpathentry kind="lib" path="restmapper/lib/swagger-models-1.5.12.jar"/>
<classpathentry kind="lib" path="restmapper/lib/swagger-core-1.5.12.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-databind-2.8.4.jar"/>
<classpathentry exported="true" kind="lib" path="restmapper/lib/swagger-annotations-1.5.12.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-core-2.8.9.jar"/>
<classpathentry kind="lib" path="restmapper/lib/swagger-jaxrs-1.5.17.jar"/>
<classpathentry kind="lib" path="restmapper/lib/swagger-models-1.5.17.jar"/>
<classpathentry kind="lib" path="restmapper/lib/swagger-core-1.5.17.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-databind-2.8.9.jar"/>
<classpathentry exported="true" kind="lib" path="restmapper/lib/swagger-annotations-1.5.17.jar"/>
<classpathentry kind="lib" path="webconnector/lib/nimbus-jose-jwt-4.0.jar"/>
<classpathentry kind="lib" path="webconnector/lib/oauth2-oidc-sdk-4.17.jar"/>
<classpathentry kind="lib" path="restmapper/lib/javax.annotation-api-1.2.jar"/>
<classpathentry kind="lib" path="restmapper/lib/annotations-2.0.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/aopalliance-repackaged-2.5.0-b32.jar"/>
<classpathentry kind="lib" path="restmapper/lib/commons-lang3-3.2.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/guava-18.0.jar"/>
<classpathentry kind="lib" path="restmapper/lib/guava-20.0.jar"/>
<classpathentry kind="lib" path="restmapper/lib/hk2-api-2.5.0-b32.jar"/>
<classpathentry kind="lib" path="restmapper/lib/hk2-locator-2.5.0-b32.jar"/>
<classpathentry kind="lib" path="restmapper/lib/hk2-utils-2.5.0-b32.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-annotations-2.8.4.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-dataformat-yaml-2.8.4.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-annotations-2.8.9.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-dataformat-yaml-2.8.9.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-jaxrs-base-2.8.4.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-jaxrs-json-provider-2.8.4.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jackson-module-jaxb-annotations-2.8.4.jar"/>
<classpathentry kind="lib" path="restmapper/lib/javassist-3.20.0-GA.jar"/>
<classpathentry kind="lib" path="restmapper/lib/javassist-3.21.0-GA.jar"/>
<classpathentry kind="lib" path="restmapper/lib/javax.inject-2.5.0-b32.jar"/>
<classpathentry exported="true" kind="lib" path="restmapper/lib/jersey-client-2.25.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jersey-container-servlet-core-2.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jersey-container-servlet-core-2.25.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jersey-entity-filtering-2.25.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jersey-guava-2.25.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/jersey-media-jaxb-2.25.1.jar"/>
<classpathentry exported="true" kind="lib" path="restmapper/lib/jersey-media-multipart-2.25.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/mimepull-1.9.6.jar"/>
<classpathentry kind="lib" path="restmapper/lib/org.osgi.core-4.2.0.jar"/>
<classpathentry kind="lib" path="restmapper/lib/osgi-resource-locator-1.0.1.jar"/>
<classpathentry kind="lib" path="restmapper/lib/reflections-0.9.10.jar"/>
<classpathentry kind="lib" path="restmapper/lib/reflections-0.9.11.jar"/>
<classpathentry kind="lib" path="restmapper/lib/servlet-api-2.5.jar"/>
<classpathentry kind="lib" path="restmapper/lib/slf4j-api-1.6.3.jar"/>
<classpathentry kind="lib" path="restmapper/lib/snakeyaml-1.15.jar"/>
<classpathentry kind="lib" path="restmapper/lib/slf4j-api-1.7.22.jar"/>
<classpathentry kind="lib" path="restmapper/lib/snakeyaml-1.17.jar"/>
<classpathentry kind="lib" path="restmapper/lib/validation-api-1.1.0.Final.jar"/>
<classpathentry kind="lib" path="webconnector/lib/accessors-smart-1.2.jar"/>
<classpathentry kind="lib" path="webconnector/lib/activation-1.1.jar"/>
Expand All @@ -63,7 +62,7 @@
<classpathentry kind="lib" path="webconnector/lib/jersey-container-jdk-http-2.25.1.jar"/>
<classpathentry exported="true" kind="lib" path="webconnector/lib/json-smart-2.3.jar"/>
<classpathentry kind="lib" path="webconnector/lib/mail-1.4.7.jar"/>
<classpathentry kind="lib" path="webconnector/lib/swagger-ui-2.2.10.jar"/>
<classpathentry kind="lib" path="webconnector/lib/swagger-ui-3.6.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="output"/>
</classpath>
2 changes: 1 addition & 1 deletion bundle/build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<property name="ivy.organisation" value="i5" />
<property name="ivy.revision" value="0.7" />
<property name="ivy.build.number" value="2" />
<property name="ivy.build.number" value="3" />
<property name="ivy.deliver.revision" value="${ivy.revision}" />
<property name="ivy.pom.version" value="${ivy.revision}" />

Expand Down
2 changes: 1 addition & 1 deletion core/build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<property name="ivy.organisation" value="i5" />
<property name="ivy.revision" value="0.7" />
<property name="ivy.build.number" value="2" />
<property name="ivy.build.number" value="3" />
<property name="ivy.deliver.revision" value="${ivy.revision}" />
<property name="ivy.pom.version" value="${ivy.revision}" />

Expand Down
5 changes: 1 addition & 4 deletions core/ivy.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@
<dependency org="javax.xml.parsers" name="jaxp-api" rev="1.4.5" />

<!-- UPnP libs for NAT handling -->
<dependency org="commons-jxpath" name="commons-jxpath" rev="1.1">
<exclude name="ant-optional" />
<exclude name="junit" />
</dependency>
<dependency org="commons-jxpath" name="commons-jxpath" rev="1.3" />
<dependency org="commons-logging" name="commons-logging" rev="1.2" />
<dependency org="net" name="sbbi-upnplib" rev="1.0.4" />
</dependencies>
Expand Down
42 changes: 42 additions & 0 deletions core/src/main/java/i5/las2peer/p2p/Node.java
Original file line number Diff line number Diff line change
Expand Up @@ -751,6 +751,48 @@ public boolean hasLocalAgent(String agentId) {
return htRegisteredReceivers.get(agentId) != null;
}

/**
* Starts a new instance of the given service on this node. This creates, stores and registers a new service agent.
*
* @param nameVersion A service name and version to identify the service
* @param passphrase A passphrase to secure this instance
* @return Returns the local service agent instance
* @throws CryptoException
* @throws AgentException
*/
public ServiceAgentImpl startService(ServiceNameVersion nameVersion, String passphrase)
throws CryptoException, AgentException {
ServiceAgentImpl serviceAgent = ServiceAgentImpl.createServiceAgent(nameVersion, passphrase);
serviceAgent.unlock(passphrase);
storeAgent(serviceAgent);
registerReceiver(serviceAgent);
return serviceAgent;
}

/**
* Stops the local service instance.
*
* @param nameVersion A service name and version to identify the service
* @throws AgentNotRegisteredException If the service is not registered locally
* @throws ServiceNotFoundException If the service is not known locally
* @throws NodeException
*/
public void stopService(ServiceNameVersion nameVersion)
throws AgentNotRegisteredException, ServiceNotFoundException, NodeException {
stopService(getLocalServiceAgent(nameVersion));
}

/**
* Stops the local service instance.
*
* @param serviceAgent
* @throws AgentNotRegisteredException If the service is not registered locally
* @throws NodeException
*/
public void stopService(ServiceAgentImpl serviceAgent) throws AgentNotRegisteredException, NodeException {
unregisterReceiver(serviceAgent);
}

/**
* Sends a message, recipient and sender are stated in the message. The node tries to find a node hosting the
* recipient and sends the message there.
Expand Down
7 changes: 6 additions & 1 deletion core/src/main/java/i5/las2peer/p2p/PastryNodeImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import i5.las2peer.api.logging.MonitoringEvent;
import i5.las2peer.api.persistency.EnvelopeException;
import i5.las2peer.api.persistency.EnvelopeNotFoundException;
import i5.las2peer.api.security.AgentAlreadyExistsException;
import i5.las2peer.api.security.AgentException;
import i5.las2peer.api.security.AgentLockedException;
import i5.las2peer.api.security.AgentNotFoundException;
Expand Down Expand Up @@ -540,7 +541,11 @@ public void storeAgent(AgentImpl agent) throws AgentException {
}
pastStorage.storeEnvelope(agentEnvelope, agent, AGENT_STORE_TIMEOUT);
if (agent instanceof UserAgentImpl) {
getUserManager().registerUserAgent((UserAgentImpl) agent);
try {
getUserManager().registerUserAgent((UserAgentImpl) agent);
} catch (AgentAlreadyExistsException e) {
logger.log(Level.FINE, "Could not register user agent", e);
}
}
observerNotice(MonitoringEvent.AGENT_UPLOAD_SUCCESS, pastryNode, agent, "");
} catch (CryptoException | SerializationException | EnvelopeException e) {
Expand Down
3 changes: 1 addition & 2 deletions core/src/main/java/i5/las2peer/tools/L2pNodeLauncher.java
Original file line number Diff line number Diff line change
Expand Up @@ -692,8 +692,7 @@ public void startService(AgentImpl serviceAgent)
*/
public void stopService(String serviceNameVersion)
throws AgentNotRegisteredException, NodeException, ServiceNotFoundException {
ServiceAgentImpl agent = node.getLocalServiceAgent(ServiceNameVersion.fromString(serviceNameVersion));
node.unregisterReceiver(agent);
node.stopService(ServiceNameVersion.fromString(serviceNameVersion));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import i5.las2peer.p2p.Node;
import i5.las2peer.p2p.PastryNodeImpl;
import i5.las2peer.persistency.SharedStorage;
import i5.las2peer.security.ServiceAgentImpl;
import i5.las2peer.security.UserAgentImpl;
import i5.las2peer.serialization.SerializeTools;
import i5.las2peer.testing.MockAgentFactory;
Expand Down Expand Up @@ -42,10 +41,7 @@ public void testServiceStart() {
PackageUploader.uploadServicePackage(nodes.get(0), serviceName, serviceVersion, filenameToHash,
filenameToContent, developerAgent);
// start TestService on second node
ServiceAgentImpl serviceAgent = ServiceAgentImpl
.createServiceAgent(new ServiceNameVersion(serviceName, serviceVersion), "servicepass");
serviceAgent.unlock("servicepass");
nodes.get(1).registerReceiver(serviceAgent);
nodes.get(1).startService(new ServiceNameVersion(serviceName, serviceVersion), "servicepass");
} catch (Exception e) {
e.printStackTrace();
Assert.fail(e.toString());
Expand Down
42 changes: 19 additions & 23 deletions core/src/test/java/i5/las2peer/execution/ExecutionContextTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,8 @@ public void setup() throws MalformedXMLException, IOException, AgentAccessDenied
eve.unlock("evespass");
node.storeAgent(eve);

ServiceAgentImpl serviceAgent = ServiceAgentImpl
.createServiceAgent(ServiceNameVersion.fromString("[email protected]"), "pass");
serviceAgent.unlock("pass");
node.storeAgent(serviceAgent);
node.registerReceiver(serviceAgent);

ServiceAgentImpl serviceAgent = node
.startService(ServiceNameVersion.fromString("[email protected]"), "pass");
context = new ExecutionContext(serviceAgent, node.getAgentContext(adam), node);
}

Expand Down Expand Up @@ -429,53 +425,53 @@ public void testUserAgents() {
fail();
}
}

@Test
public void testGroupAgents() {
try {
// create group
GroupAgent a = context.createGroupAgent(new Agent[] {adam});
assertEquals(1,a.getMemberList().length);
GroupAgent a = context.createGroupAgent(new Agent[] { adam });
assertEquals(1, a.getMemberList().length);
context.storeAgent(a);

// add member
a = (GroupAgent) context.requestAgent(a.getIdentifier());
assertEquals(1,a.getMemberList().length);
assertEquals(1, a.getMemberList().length);
a.addMember(eve);
assertEquals(2,a.getMemberList().length);
assertEquals(2, a.getMemberList().length);
context.storeAgent(a);
assertEquals(2,a.getMemberList().length);
assertEquals(2, a.getMemberList().length);

// request group
a = (GroupAgent) context.requestAgent(a.getIdentifier());
assertTrue(a.hasMember(adam));
assertTrue(a.hasMember(eve));
assertEquals(2,a.getMemberList().length);
assertEquals(2, a.getMemberList().length);

// do the same with unlock instead of request:

// create group
GroupAgent b = context.createGroupAgent(new Agent[] {adam});
GroupAgent b = context.createGroupAgent(new Agent[] { adam });
context.storeAgent(b);

// add member
b = (GroupAgent) context.fetchAgent(b.getIdentifier());
b.unlock(adam);
b.addMember(eve);
context.storeAgent(b);

// request group
b = (GroupAgent) context.fetchAgent(b.getIdentifier());
b.unlock(adam);
assertTrue(b.hasMember(adam));
assertTrue(b.hasMember(eve));
assertEquals(2,b.getMemberList().length);
assertEquals(2, b.getMemberList().length);

} catch (AgentOperationFailedException | AgentAccessDeniedException | AgentAlreadyExistsException
| AgentLockedException | AgentNotFoundException e) {
fail();
}

}

@Test
Expand Down
49 changes: 12 additions & 37 deletions core/src/test/java/i5/las2peer/p2p/LocalNodeInvocationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,8 @@ public void testLocalInvocation() {

node.launch();

ServiceAgentImpl testServiceAgent = ServiceAgentImpl
.createServiceAgent(ServiceNameVersion.fromString("[email protected]"), "a pass");
testServiceAgent.unlock("a pass");
node.registerReceiver(testServiceAgent);
ServiceAgentImpl testServiceAgent = node
.startService(ServiceNameVersion.fromString("[email protected]"), "a pass");

Object result = node.invokeLocally(eve, testServiceAgent, "inc", new Serializable[] { new Integer(10) });

Expand All @@ -66,10 +64,8 @@ public void testGlobalInvocation() {
serviceNode.storeAgent(eve);
serviceNode.launch();

ServiceAgentImpl testServiceAgent = ServiceAgentImpl
.createServiceAgent(ServiceNameVersion.fromString("[email protected]"), "a pass");
testServiceAgent.unlock("a pass");
serviceNode.registerReceiver(testServiceAgent);
ServiceAgentImpl testServiceAgent = serviceNode
.startService(ServiceNameVersion.fromString("[email protected]"), "a pass");

LocalNode callerNode = manager.launchNode();
Object result = callerNode.invokeGlobally(eve, testServiceAgent.getIdentifier(),
Expand All @@ -94,15 +90,9 @@ public void testSubinvocation() {
serviceNode1.launch();
serviceNode2.launch();

ServiceAgentImpl testServiceAgent = ServiceAgentImpl
.createServiceAgent(ServiceNameVersion.fromString("[email protected]"), "a pass");
testServiceAgent.unlock("a pass");
serviceNode1.registerReceiver(testServiceAgent);
serviceNode1.startService(ServiceNameVersion.fromString("[email protected]"), "a pass");

ServiceAgentImpl testServiceAgent2 = ServiceAgentImpl.createServiceAgent(
ServiceNameVersion.fromString("[email protected]"), "a 2nd pass");
testServiceAgent2.unlock("a 2nd pass");
serviceNode2.registerReceiver(testServiceAgent2);
serviceNode2.startService(ServiceNameVersion.fromString("[email protected]"), "a 2nd pass");

LocalNode callerNode = manager.launchNode();
Object result = callerNode.invoke(eve, "[email protected]", "usingOther",
Expand All @@ -125,10 +115,7 @@ public void testSubinvocationFail() {
serviceNode2.storeAgent(eve);
serviceNode2.launch();

ServiceAgentImpl testServiceAgent2 = ServiceAgentImpl.createServiceAgent(
ServiceNameVersion.fromString("[email protected]"), "a 2nd pass");
testServiceAgent2.unlock("a 2nd pass");
serviceNode2.registerReceiver(testServiceAgent2);
serviceNode2.startService(ServiceNameVersion.fromString("[email protected]"), "a 2nd pass");

LocalNode callerNode = manager.launchNode();
Object result = callerNode.invoke(eve, "[email protected]", "usingOther",
Expand All @@ -154,20 +141,14 @@ public void testInvocation() {
serviceNode1.launch();
serviceNode2.launch();

ServiceAgentImpl usingAgent = ServiceAgentImpl.createServiceAgent(
serviceNode1.startService(
ServiceNameVersion.fromString("[email protected]"), "a pass");
usingAgent.unlock("a pass");
serviceNode1.registerReceiver(usingAgent);

ServiceAgentImpl serviceAgent1 = ServiceAgentImpl.createServiceAgent(
serviceNode2.startService(
ServiceNameVersion.fromString("[email protected]"), "a pass");
serviceAgent1.unlock("a pass");
serviceNode2.registerReceiver(serviceAgent1);

ServiceAgentImpl serviceAgent2 = ServiceAgentImpl.createServiceAgent(
serviceNode2.startService(
ServiceNameVersion.fromString("[email protected]"), "a pass");
serviceAgent2.unlock("a pass");
serviceNode2.registerReceiver(serviceAgent2);

LocalNode callerNode = manager.launchNode();

Expand Down Expand Up @@ -259,17 +240,11 @@ public void testMultiNodeClassLoading() {
// start two nodes with both powering the service
ServiceNameVersion snv = new ServiceNameVersion("i5.las2peer.testServices.testPackage3.PackageTestService",
"1.0");
ServiceAgentImpl serviceAgent1 = ServiceAgentImpl.createServiceAgent(snv, "a pass");
serviceAgent1.unlock("a pass");
serviceNode1.storeAgent(serviceAgent1);
serviceNode1.registerReceiver(serviceAgent1);
ServiceAgentImpl serviceAgent1 = serviceNode1.startService(snv, "a pass");
Assert.assertEquals(ServiceClassLoader.class,
serviceAgent1.getServiceInstance().getClass().getClassLoader().getClass());

ServiceAgentImpl serviceAgent2 = ServiceAgentImpl.createServiceAgent(snv, "a pass");
serviceAgent2.unlock("a pass");
serviceNode2.storeAgent(serviceAgent2);
serviceNode2.registerReceiver(serviceAgent2);
ServiceAgentImpl serviceAgent2 = serviceNode2.startService(snv, "a pass");
Assert.assertEquals(ServiceClassLoader.class,
serviceAgent2.getServiceInstance().getClass().getClassLoader().getClass());

Expand Down
Loading

0 comments on commit 93a3f9b

Please sign in to comment.