Skip to content
Snippets Groups Projects
Commit 6dadb8ab authored by Julian Cerruti's avatar Julian Cerruti Committed by GitHub
Browse files

Merge pull request #240 from adamantivm/searchParam

Implement parameter server's searchParam
parents 04aef056 347cc484
Branches
Tags
No related merge requests found
...@@ -187,8 +187,20 @@ public class ParameterServer { ...@@ -187,8 +187,20 @@ public class ParameterServer {
} }
} }
public Object search(GraphName name) { public Object search(GraphName namespace, GraphName name) {
throw new UnsupportedOperationException(); GraphName search = namespace;
GraphName result = search.join(name.toRelative());
if (has(result)) {
return result;
}
while (!search.isRoot()) {
search = search.getParent();
result = search.join(name.toRelative());
if (has(result)) {
return result;
}
}
return null;
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
......
...@@ -214,7 +214,15 @@ public class MasterXmlRpcEndpointImpl implements MasterXmlRpcEndpoint, ...@@ -214,7 +214,15 @@ public class MasterXmlRpcEndpointImpl implements MasterXmlRpcEndpoint,
@Override @Override
public List<Object> searchParam(String callerId, String key) { public List<Object> searchParam(String callerId, String key) {
throw new UnsupportedOperationException(); GraphName ns = GraphName.of(callerId);
GraphName searchKey = GraphName.of(key);
Object value = parameterServer.search(ns, searchKey);
if (value != null) {
return Response.newSuccess("Success", value.toString()).toList();
} else {
return Response.newError("Parameter \"" + key + "\" in namespace \"" + ns.toString() +
"\" not found in parameter server", null).toList();
}
} }
@Override @Override
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
package org.ros.internal.node.server; package org.ros.internal.node.server;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import java.util.Collection; import java.util.Collection;
...@@ -128,4 +129,31 @@ public class ParameterServerTest { ...@@ -128,4 +129,31 @@ public class ParameterServerTest {
assertTrue(names.contains(name2)); assertTrue(names.contains(name2));
} }
@Test
public void testSearchParam() {
GraphName ns = GraphName.of("/a/b/c/d/e/f");
GraphName name1 = GraphName.of("s_1");
GraphName name2 = GraphName.of("/s_1");
server.set(name2, 1);
Object result = server.search(ns, name1);
assertEquals(name2, result);
server.delete(name2);
name2 = GraphName.of("/a/b/s_1");
server.set(name2, 1);
result = server.search(ns, name1);
assertEquals(name2, result);
server.delete(name2);
name2 = GraphName.of("/a/b/c/d/e/f/s_1");
server.set(name2, 1);
result = server.search(ns, name1);
assertEquals(name2, result);
server.delete(name2);
name1 = GraphName.of("s_j");
result = server.search(ns, name1);
assertEquals(null, result);
}
} }
...@@ -85,6 +85,13 @@ public class ParameterTreeIntegrationTest extends RosTest { ...@@ -85,6 +85,13 @@ public class ParameterTreeIntegrationTest extends RosTest {
} }
} }
@Test
public void testSearchParameter() {
parameters.set("/node_name/p_i", "value");
GraphName res = parameters.search("p_i");
assertEquals("/node_name/p_i", res.toString());
}
@Test @Test
public void testGetParameterWithDefault() { public void testGetParameterWithDefault() {
assertTrue(parameters.getBoolean("bloop", true)); assertTrue(parameters.getBoolean("bloop", true));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment