Search in sources :

Example 21 with Link

use of org.eclipse.leshan.Link in project leshan by eclipse.

the class LinkFormatHelperTest method encode_client_description_with_version_2_0.

@Test
public void encode_client_description_with_version_2_0() {
    List<LwM2mObjectEnabler> objectEnablers = new ArrayList<>();
    Map<Integer, LwM2mInstanceEnabler> instancesMap = new HashMap<>();
    instancesMap.put(0, new BaseInstanceEnabler());
    instancesMap.put(1, new BaseInstanceEnabler());
    objectEnablers.add(new ObjectEnabler(6, getVersionedObjectModel(6, "2.0"), instancesMap, null));
    Link[] links = LinkFormatHelper.getClientDescription(objectEnablers, null);
    String strLinks = Link.serialize(links);
    assertEquals("</>;rt=\"oma.lwm2m\", </6>;ver=\"2.0\", </6/0>, </6/1>", strLinks);
}
Also used : LwM2mInstanceEnabler(org.eclipse.leshan.client.resource.LwM2mInstanceEnabler) LwM2mObjectEnabler(org.eclipse.leshan.client.resource.LwM2mObjectEnabler) LwM2mObjectEnabler(org.eclipse.leshan.client.resource.LwM2mObjectEnabler) ObjectEnabler(org.eclipse.leshan.client.resource.ObjectEnabler) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) BaseInstanceEnabler(org.eclipse.leshan.client.resource.BaseInstanceEnabler) Link(org.eclipse.leshan.Link) Test(org.junit.Test)

Example 22 with Link

use of org.eclipse.leshan.Link in project leshan by eclipse.

the class BaseObjectEnabler method discover.

@Override
public synchronized DiscoverResponse discover(ServerIdentity identity, DiscoverRequest request) {
    if (identity.isLwm2mBootstrapServer()) {
        // discover is not supported for bootstrap
        return DiscoverResponse.methodNotAllowed();
    }
    if (id == LwM2mId.SECURITY) {
        return DiscoverResponse.notFound();
    }
    LwM2mPath path = request.getPath();
    if (path.isObject()) {
        // Manage discover on object
        Link[] ObjectLinks = LinkFormatHelper.getObjectDescription(getObjectModel(), null);
        return DiscoverResponse.success(ObjectLinks);
    } else if (path.isObjectInstance()) {
        // Manage discover on instance
        if (!getAvailableInstanceIds().contains(path.getObjectInstanceId()))
            return DiscoverResponse.notFound();
        Link instanceLink = LinkFormatHelper.getInstanceDescription(getObjectModel(), path.getObjectInstanceId(), null);
        return DiscoverResponse.success(new Link[] { instanceLink });
    } else if (path.isResource()) {
        // Manage discover on resource
        if (!getAvailableInstanceIds().contains(path.getObjectInstanceId()))
            return DiscoverResponse.notFound();
        ResourceModel resourceModel = getObjectModel().resources.get(path.getResourceId());
        if (resourceModel == null)
            return DiscoverResponse.notFound();
        Link resourceLink = LinkFormatHelper.getResourceDescription(getObjectModel().id, path.getObjectInstanceId(), resourceModel, null);
        return DiscoverResponse.success(new Link[] { resourceLink });
    }
    return DiscoverResponse.badRequest(null);
}
Also used : LwM2mPath(org.eclipse.leshan.core.node.LwM2mPath) ResourceModel(org.eclipse.leshan.core.model.ResourceModel) Link(org.eclipse.leshan.Link)

Example 23 with Link

use of org.eclipse.leshan.Link in project leshan by eclipse.

the class DiscoverTest method can_discover_object.

@Test
public void can_discover_object() throws InterruptedException {
    // read ACL object
    DiscoverResponse response = helper.server.send(helper.getCurrentRegistration(), new DiscoverRequest(2));
    // verify result
    assertEquals(CONTENT, response.getCode());
    assertNotNull(response.getCoapResponse());
    assertThat(response.getCoapResponse(), is(instanceOf(Response.class)));
    Link[] payload = response.getObjectLinks();
    assertArrayEquals(Link.parse("</2>, </2/0/0>, </2/0/1>, </2/0/2>, </2/0/3>".getBytes()), payload);
}
Also used : DiscoverRequest(org.eclipse.leshan.core.request.DiscoverRequest) DiscoverResponse(org.eclipse.leshan.core.response.DiscoverResponse) Link(org.eclipse.leshan.Link) Test(org.junit.Test)

Example 24 with Link

use of org.eclipse.leshan.Link in project leshan by eclipse.

the class DiscoverTest method can_discover_resource.

@Test
public void can_discover_resource() throws InterruptedException {
    // read ACL object
    DiscoverResponse response = helper.server.send(helper.getCurrentRegistration(), new DiscoverRequest(3, 0, 0));
    // verify result
    assertEquals(CONTENT, response.getCode());
    assertNotNull(response.getCoapResponse());
    assertThat(response.getCoapResponse(), is(instanceOf(Response.class)));
    Link[] payload = response.getObjectLinks();
    assertArrayEquals(Link.parse("</3/0/0>".getBytes()), payload);
}
Also used : DiscoverRequest(org.eclipse.leshan.core.request.DiscoverRequest) DiscoverResponse(org.eclipse.leshan.core.response.DiscoverResponse) Link(org.eclipse.leshan.Link) Test(org.junit.Test)

Example 25 with Link

use of org.eclipse.leshan.Link in project leshan by eclipse.

the class RegistrationTest method register_with_additional_attributes.

@Test
public void register_with_additional_attributes() throws InterruptedException {
    // Check registration
    helper.assertClientNotRegisterered();
    // HACK to be able to send a Registration request with additional attributes
    LeshanClient lclient = helper.client;
    lclient.getCoapServer().start();
    Endpoint secureEndpoint = lclient.getCoapServer().getEndpoint(lclient.getSecuredAddress());
    Endpoint nonSecureEndpoint = lclient.getCoapServer().getEndpoint(lclient.getUnsecuredAddress());
    CaliforniumLwM2mRequestSender sender = new CaliforniumLwM2mRequestSender(secureEndpoint, nonSecureEndpoint);
    // Create Request with additional attributes
    Map<String, String> additionalAttributes = new HashMap<>();
    additionalAttributes.put("key1", "value1");
    additionalAttributes.put("imei", "2136872368");
    Link[] objectLinks = Link.parse("</>;rt=\"oma.lwm2m\",</1/0>,</2>,</3/0>".getBytes());
    RegisterRequest registerRequest = new RegisterRequest(helper.getCurrentEndpoint(), null, null, null, null, objectLinks, additionalAttributes);
    // Send request
    RegisterResponse resp = sender.send(helper.server.getUnsecuredAddress(), false, registerRequest, 5000l);
    helper.waitForRegistration(1);
    // Check we are registered with the expected attributes
    helper.assertClientRegisterered();
    assertNotNull(helper.last_registration);
    assertEquals(additionalAttributes, helper.last_registration.getAdditionalRegistrationAttributes());
    assertArrayEquals(Link.parse("</>;rt=\"oma.lwm2m\",</1/0>,</2>,</3/0>".getBytes()), helper.getCurrentRegistration().getObjectLinks());
    sender.send(helper.server.getUnsecuredAddress(), false, new DeregisterRequest(resp.getRegistrationID()), 5000l);
    lclient.getCoapServer().stop();
}
Also used : CaliforniumLwM2mRequestSender(org.eclipse.leshan.client.californium.impl.CaliforniumLwM2mRequestSender) RegisterRequest(org.eclipse.leshan.core.request.RegisterRequest) RegisterResponse(org.eclipse.leshan.core.response.RegisterResponse) CoapEndpoint(org.eclipse.californium.core.network.CoapEndpoint) Endpoint(org.eclipse.californium.core.network.Endpoint) HashMap(java.util.HashMap) DeregisterRequest(org.eclipse.leshan.core.request.DeregisterRequest) Link(org.eclipse.leshan.Link) LeshanClient(org.eclipse.leshan.client.californium.LeshanClient) Test(org.junit.Test)

Aggregations

Link (org.eclipse.leshan.Link)30 Test (org.junit.Test)17 HashMap (java.util.HashMap)16 ObjectModel (org.eclipse.leshan.core.model.ObjectModel)6 BindingMode (org.eclipse.leshan.core.request.BindingMode)6 JsonObject (com.eclipsesource.json.JsonObject)5 InetSocketAddress (java.net.InetSocketAddress)5 ArrayList (java.util.ArrayList)5 JsonArray (com.eclipsesource.json.JsonArray)4 LwM2mObjectEnabler (org.eclipse.leshan.client.resource.LwM2mObjectEnabler)4 Identity (org.eclipse.leshan.core.request.Identity)4 DiscoverResponse (org.eclipse.leshan.core.response.DiscoverResponse)4 Date (java.util.Date)3 LwM2mInstanceEnabler (org.eclipse.leshan.client.resource.LwM2mInstanceEnabler)3 ObjectEnabler (org.eclipse.leshan.client.resource.ObjectEnabler)3 DiscoverRequest (org.eclipse.leshan.core.request.DiscoverRequest)3 JsonValue (com.eclipsesource.json.JsonValue)2 Map (java.util.Map)2 BaseInstanceEnabler (org.eclipse.leshan.client.resource.BaseInstanceEnabler)2 EndpointContextUtil.extractIdentity (org.eclipse.leshan.core.californium.EndpointContextUtil.extractIdentity)2