@ -15,9 +15,8 @@
* /
* /
package org.thingsboard.server.transport.lwm2m.server.store.util ;
package org.thingsboard.server.transport.lwm2m.server.store.util ;
import com.eclipsesource.json.Json ;
import com.fasterxml.jackson.annotation.JsonValue ;
import com.eclipsesource.json.JsonObject ;
import com.google.gson.JsonObject ;
import com.eclipsesource.json.JsonValue ;
import com.google.protobuf.util.JsonFormat ;
import com.google.protobuf.util.JsonFormat ;
import lombok.SneakyThrows ;
import lombok.SneakyThrows ;
import org.eclipse.leshan.core.model.ResourceModel ;
import org.eclipse.leshan.core.model.ResourceModel ;
@ -26,113 +25,107 @@ import org.eclipse.leshan.core.node.LwM2mNodeException;
import org.eclipse.leshan.core.node.LwM2mResource ;
import org.eclipse.leshan.core.node.LwM2mResource ;
import org.eclipse.leshan.core.node.LwM2mSingleResource ;
import org.eclipse.leshan.core.node.LwM2mSingleResource ;
import org.eclipse.leshan.core.node.ObjectLink ;
import org.eclipse.leshan.core.node.ObjectLink ;
import org.eclipse.leshan.core.util.datatype.ULong ;
import org.eclipse.leshan.server.redis.serialization.RegistrationSerDes ;
import org.eclipse.leshan.server.redis.serialization.RegistrationSerDes ;
import org.thingsboard.server.common.data.device.data.PowerMode ;
import org.thingsboard.server.common.data.id.TenantId ;
import org.thingsboard.server.gen.transport.TransportProtos ;
import org.thingsboard.server.gen.transport.TransportProtos ;
import org.thingsboard.server.transport.lwm2m.server.client.LwM2MClientState ;
import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient ;
import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient ;
import org.thingsboard.server.transport.lwm2m.server.client.ResourceValue ;
import java.lang.reflect.Field ;
import java.lang.reflect.Field ;
import java.util.Base64 ;
import java.util.Base64 ;
import java.util.Date ;
import java.util.Date ;
import java.util.HashMap ;
import java.util.HashMap ;
import java.util.Map ;
import java.util.Map ;
import java.util.UUID ;
import java.util.concurrent.atomic.AtomicLong ;
public class LwM2MClientSerDes {
public class LwM2MClientSerDes {
public static final String VALUE = "value" ;
public static final String VALUE = "value" ;
@SneakyThrows
@SneakyThrows
public static byte [ ] serialize ( LwM2mClient client ) {
public static byte [ ] serialize ( LwM2mClient client ) {
JsonObject o = Json . o bject( ) ;
JsonObject o = new JsonO bject ( ) ;
o . add ( "nodeId" , client . getNodeId ( ) ) ;
o . addProperty ( "nodeId" , "client.getNodeId()" ) ;
o . add ( "endpoint" , client . getEndpoint ( ) ) ;
o . addProperty ( "endpoint" , client . getEndpoint ( ) ) ;
JsonObject resources = Json . o bject( ) ;
JsonObject resources = new JsonO bject( ) ;
client . getResources ( ) . forEach ( ( k , v ) - > {
client . getResources ( ) . forEach ( ( k , v ) - > {
JsonObject resourceValue = Json . o bject( ) ;
JsonObject resourceValue = new JsonO bject( ) ;
resourceValue . add ( "lwM2mResource" , serialize ( v . getLwM2mResource ( ) ) ) ;
resourceValue . add ( "lwM2mResource" , serialize ( v . getLwM2mResource ( ) ) ) ;
resourceValue . add ( "resourceModel" , serialize ( v . getResourceModel ( ) ) ) ;
resourceValue . add ( "resourceModel" , serialize ( v . getResourceModel ( ) ) ) ;
resources . add ( k , resourceValue ) ;
resources . add ( k , resourceValue ) ;
} ) ;
} ) ;
o . add ( "resources" , resources ) ;
o . add ( "resources" , resources ) ;
JsonObject sharedAttributes = Json . o bject( ) ;
JsonObject sharedAttributes = new JsonO bject( ) ;
for ( Map . Entry < String , TransportProtos . TsKvProto > entry : client . getSharedAttributes ( ) . entrySet ( ) ) {
for ( Map . Entry < String , TransportProtos . TsKvProto > entry : client . getSharedAttributes ( ) . entrySet ( ) ) {
sharedAttributes . add ( entry . getKey ( ) , JsonFormat . printer ( ) . print ( entry . getValue ( ) ) ) ;
sharedAttributes . addProperty ( entry . getKey ( ) , JsonFormat . printer ( ) . print ( entry . getValue ( ) ) ) ;
}
}
o . add ( "sharedAttributes" , sharedAttributes ) ;
o . add ( "sharedAttributes" , sharedAttributes ) ;
JsonObject keyTsLatestMap = Json . o bject( ) ;
JsonObject keyTsLatestMap = new JsonO bject( ) ;
client . getKeyTsLatestMap ( ) . forEach ( ( k , v ) - > {
client . getKeyTsLatestMap ( ) . forEach ( ( k , v ) - > {
keyTsLatestMap . add ( k , v . get ( ) ) ;
keyTsLatestMap . addProperty ( k , v . get ( ) ) ;
} ) ;
} ) ;
o . add ( "keyTsLatestMap" , keyTsLatestMap ) ;
o . add ( "keyTsLatestMap" , keyTsLatestMap ) ;
o . add ( "state" , client . getState ( ) . toString ( ) ) ;
o . addProperty ( "state" , client . getState ( ) . toString ( ) ) ;
if ( client . getSession ( ) ! = null ) {
if ( client . getSession ( ) ! = null ) {
o . add ( "session" , JsonFormat . printer ( ) . print ( client . getSession ( ) ) ) ;
o . addProperty ( "session" , JsonFormat . printer ( ) . print ( client . getSession ( ) ) ) ;
}
}
if ( client . getTenantId ( ) ! = null ) {
if ( client . getTenantId ( ) ! = null ) {
o . add ( "tenantId" , client . getTenantId ( ) . toString ( ) ) ;
o . addProperty ( "tenantId" , client . getTenantId ( ) . toString ( ) ) ;
}
}
if ( client . getDeviceId ( ) ! = null ) {
if ( client . getDeviceId ( ) ! = null ) {
o . add ( "deviceId" , client . getDeviceId ( ) . toString ( ) ) ;
o . addProperty ( "deviceId" , client . getDeviceId ( ) . toString ( ) ) ;
}
}
if ( client . getProfileId ( ) ! = null ) {
if ( client . getProfileId ( ) ! = null ) {
o . add ( "profileId" , client . getProfileId ( ) . toString ( ) ) ;
o . addProperty ( "profileId" , client . getProfileId ( ) . toString ( ) ) ;
}
}
if ( client . getPowerMode ( ) ! = null ) {
if ( client . getPowerMode ( ) ! = null ) {
o . add ( "powerMode" , client . getPowerMode ( ) . toString ( ) ) ;
o . addProperty ( "powerMode" , client . getPowerMode ( ) . toString ( ) ) ;
}
}
if ( client . getEdrxCycle ( ) ! = null ) {
if ( client . getEdrxCycle ( ) ! = null ) {
o . add ( "edrxCycle" , client . getEdrxCycle ( ) ) ;
o . addProperty ( "edrxCycle" , client . getEdrxCycle ( ) ) ;
}
}
if ( client . getPsmActivityTimer ( ) ! = null ) {
if ( client . getPsmActivityTimer ( ) ! = null ) {
o . add ( "psmActivityTimer" , client . getPsmActivityTimer ( ) ) ;
o . addProperty ( "psmActivityTimer" , client . getPsmActivityTimer ( ) ) ;
}
}
if ( client . getPagingTransmissionWindow ( ) ! = null ) {
if ( client . getPagingTransmissionWindow ( ) ! = null ) {
o . add ( "pagingTransmissionWindow" , client . getPagingTransmissionWindow ( ) ) ;
o . addProperty ( "pagingTransmissionWindow" , client . getPagingTransmissionWindow ( ) ) ;
}
}
if ( client . getRegistration ( ) ! = null ) {
if ( client . getRegistration ( ) ! = null ) {
o . add ( "registration" , RegistrationSerDes . jSerialize ( client . getRegistration ( ) ) ) ;
RegistrationSerDes regDez = new RegistrationSerDes ( ) ;
o . addProperty ( "registration" , regDez . jSerialize ( client . getRegistration ( ) ) . toString ( ) ) ;
}
}
o . add ( "asleep" , client . isAsleep ( ) ) ;
o . addProperty ( "asleep" , client . isAsleep ( ) ) ;
o . add ( "lastUplinkTime" , client . getLastUplinkTime ( ) ) ;
o . addProperty ( "lastUplinkTime" , client . getLastUplinkTime ( ) ) ;
Field firstEdrxDownlink = LwM2mClient . class . getDeclaredField ( "firstEdrxDownlink" ) ;
Field firstEdrxDownlink = LwM2mClient . class . getDeclaredField ( "firstEdrxDownlink" ) ;
firstEdrxDownlink . setAccessible ( true ) ;
firstEdrxDownlink . setAccessible ( true ) ;
o . add ( "firstEdrxDownlink" , ( boolean ) firstEdrxDownlink . get ( client ) ) ;
o . addProperty ( "firstEdrxDownlink" , ( boolean ) firstEdrxDownlink . get ( client ) ) ;
o . add ( "retryAttempts" , client . getRetryAttempts ( ) . get ( ) ) ;
o . addProperty ( "retryAttempts" , client . getRetryAttempts ( ) . get ( ) ) ;
if ( client . getLastSentRpcId ( ) ! = null ) {
if ( client . getLastSentRpcId ( ) ! = null ) {
o . add ( "lastSentRpcId" , client . getLastSentRpcId ( ) . toString ( ) ) ;
o . addProperty ( "lastSentRpcId" , client . getLastSentRpcId ( ) . toString ( ) ) ;
}
}
return o . toString ( ) . getBytes ( ) ;
return o . toString ( ) . getBytes ( ) ;
}
}
private static JsonObject serialize ( LwM2mResource resource ) {
private static JsonObject serialize ( LwM2mResource resource ) {
JsonObject o = Json . o bject( ) ;
JsonObject o = new JsonO bject( ) ;
o . add ( "id" , resource . getId ( ) ) ;
o . addProperty ( "id" , resource . getId ( ) ) ;
o . add ( "type" , resource . getType ( ) . toString ( ) ) ;
o . addProperty ( "type" , resource . getType ( ) . toString ( ) ) ;
if ( resource . isMultiInstances ( ) ) {
if ( resource . isMultiInstances ( ) ) {
o . add ( "multiInstances" , true ) ;
o . addProperty ( "multiInstances" , true ) ;
JsonObject instances = Json . o bject( ) ;
JsonObject instances = new JsonO bject( ) ;
resource . getInstances ( ) . forEach ( ( id , in ) - > {
resource . getInstances ( ) . forEach ( ( id , in ) - > {
JsonObject instance = Json . o bject( ) ;
JsonObject instance = new JsonO bject( ) ;
instance . add ( "id" , in . getId ( ) ) ;
instance . addProperty ( "id" , in . getId ( ) ) ;
addValue ( instance , in . getType ( ) , in . getValue ( ) ) ;
addValue ( instance , in . getType ( ) , in . getValue ( ) ) ;
instances . add ( id . toString ( ) , instance ) ;
instances . add ( id . toString ( ) , instance ) ;
} ) ;
} ) ;
o . add ( "instances" , instances ) ;
o . add ( "instances" , instances ) ;
} else {
} else {
o . add ( "multiInstances" , false ) ;
o . addProperty ( "multiInstances" , false ) ;
addValue ( o , resource . getType ( ) , resource . getValue ( ) ) ;
addValue ( o , resource . getType ( ) , resource . getValue ( ) ) ;
}
}
@ -140,95 +133,95 @@ public class LwM2MClientSerDes {
}
}
private static LwM2mResource parseLwM2mResource ( JsonObject o ) {
private static LwM2mResource parseLwM2mResource ( JsonObject o ) {
boolean multiInstances = o . get ( "multiInstances" ) . a sBoolean( ) ;
boolean multiInstances = o . get ( "multiInstances" ) . getA sBoolean( ) ;
int id = o . get ( "id" ) . a sInt( ) ;
int id = o . get ( "id" ) . getA sInt( ) ;
ResourceModel . Type type = ResourceModel . Type . valueOf ( o . get ( "type" ) . a sString( ) ) ;
ResourceModel . Type type = ResourceModel . Type . valueOf ( o . get ( "type" ) . getA sString( ) ) ;
if ( multiInstances ) {
if ( multiInstances ) {
Map < Integer , Object > instances = new HashMap < > ( ) ;
Map < Integer , Object > instances = new HashMap < > ( ) ;
o . get ( "instances" ) . asObject ( ) . forEach ( entry - > {
o . get ( "instances" ) . getAsJsonArray ( ) . forEach ( entry - > {
instances . put ( Integer . valueOf ( entry . getName ( ) ) , parseValue ( type , entry . getValue ( ) ) ) ;
// instances.put(Integer.valueOf(entry.getAsJsonObject().), parseValue(type, entry.getValue()));
} ) ;
} ) ;
return LwM2mMultipleResource . newResource ( id , instances , type ) ;
return LwM2mMultipleResource . newResource ( id , instances , type ) ;
} else {
} else {
return LwM2mSingleResource . newResource ( id , parseValue ( type , o . get ( VALUE ) ) ) ;
return LwM2mSingleResource . newResource ( id , parseValue ( type , ( JsonValue ) o . get ( VALUE ) ) ) ;
}
}
}
}
private static Object parseValue ( ResourceModel . Type type , JsonValue value ) {
private static Object parseValue ( ResourceModel . Type type , JsonValue value ) {
switch ( type ) {
switch ( type ) {
case INTEGER :
case INTEGER :
return value . asLong ( ) ;
return value . value ( ) ;
case FLOAT :
// case FLOAT:
return value . asDouble ( ) ;
// return value.value();
case BOOLEAN :
// case BOOLEAN:
return value . asBoolean ( ) ;
// return value.asBoolean();
case OPAQUE :
// case OPAQUE:
return Base64 . getDecoder ( ) . decode ( value . asString ( ) ) ;
// return Base64.getDecoder().decode(value.asString());
case STRING :
// case STRING:
return value . asString ( ) ;
// return value.asString();
case TIME :
// case TIME:
return new Date ( value . asLong ( ) ) ;
// return new Date(value.asLong());
case OBJLNK :
// case OBJLNK:
return ObjectLink . decodeFromString ( value . asString ( ) ) ;
// return ObjectLink.decodeFromString(value.asString());
case UNSIGNED_INTEGER :
// case UNSIGNED_INTEGER:
return ULong . valueOf ( value . asString ( ) ) ;
// return ULong.valueOf(value.asString());
default :
default :
throw new LwM2mNodeException ( String . format ( "Type %s is not supported" , type . name ( ) ) ) ;
throw new LwM2mNodeException ( String . format ( "Type %s is not supported" , type . name ( ) ) ) ;
}
}
}
}
private static JsonObject serialize ( ResourceModel resourceModel ) {
private static JsonObject serialize ( ResourceModel resourceModel ) {
JsonObject o = Json . o bject( ) ;
JsonObject o = new JsonO bject( ) ;
o . add ( "id" , resourceModel . id ) ;
o . addProperty ( "id" , resourceModel . id ) ;
o . add ( "name" , resourceModel . name ) ;
o . addProperty ( "name" , resourceModel . name ) ;
o . add ( "operations" , resourceModel . operations . toString ( ) ) ;
o . addProperty ( "operations" , resourceModel . operations . toString ( ) ) ;
o . add ( "multiple" , resourceModel . multiple ) ;
o . addProperty ( "multiple" , resourceModel . multiple ) ;
o . add ( "mandatory" , resourceModel . mandatory ) ;
o . addProperty ( "mandatory" , resourceModel . mandatory ) ;
o . add ( "type" , resourceModel . type . toString ( ) ) ;
o . addProperty ( "type" , resourceModel . type . toString ( ) ) ;
o . add ( "rangeEnumeration" , resourceModel . rangeEnumeration ) ;
o . addProperty ( "rangeEnumeration" , resourceModel . rangeEnumeration ) ;
o . add ( "units" , resourceModel . units ) ;
o . addProperty ( "units" , resourceModel . units ) ;
o . add ( "description" , resourceModel . description ) ;
o . addProperty ( "description" , resourceModel . description ) ;
return o ;
return o ;
}
}
private static ResourceModel parseResourceModel ( JsonObject o ) {
private static ResourceModel parseResourceModel ( JsonObject o ) {
Integer id = o . get ( "id" ) . a sInt( ) ;
Integer id = o . get ( "id" ) . getA sInt( ) ;
String name = o . get ( "name" ) . a sString( ) ;
String name = o . get ( "name" ) . getA sString( ) ;
ResourceModel . Operations operations = ResourceModel . Operations . valueOf ( o . get ( "operations" ) . a sString( ) ) ;
ResourceModel . Operations operations = ResourceModel . Operations . valueOf ( o . get ( "operations" ) . getA sString( ) ) ;
Boolean multiple = o . get ( "multiple" ) . a sBoolean( ) ;
Boolean multiple = o . get ( "multiple" ) . getA sBoolean( ) ;
Boolean mandatory = o . get ( "mandatory" ) . a sBoolean( ) ;
Boolean mandatory = o . get ( "mandatory" ) . getA sBoolean( ) ;
ResourceModel . Type type = ResourceModel . Type . valueOf ( o . get ( "type" ) . a sString( ) ) ;
ResourceModel . Type type = ResourceModel . Type . valueOf ( o . get ( "type" ) . getA sString( ) ) ;
String rangeEnumeration = o . get ( "rangeEnumeration" ) . a sString( ) ;
String rangeEnumeration = o . get ( "rangeEnumeration" ) . getA sString( ) ;
String units = o . get ( "units" ) . a sString( ) ;
String units = o . get ( "units" ) . getA sString( ) ;
String description = o . get ( "description" ) . a sString( ) ;
String description = o . get ( "description" ) . getA sString( ) ;
return new ResourceModel ( id , name , operations , multiple , mandatory , type , rangeEnumeration , units , description ) ;
return new ResourceModel ( id , name , operations , multiple , mandatory , type , rangeEnumeration , units , description ) ;
}
}
private static void addValue ( JsonObject o , ResourceModel . Type type , Object value ) {
private static void addValue ( JsonObject o , ResourceModel . Type type , Object value ) {
switch ( type ) {
switch ( type ) {
case INTEGER :
case INTEGER :
o . add ( VALUE , ( Long ) value ) ;
o . addProperty ( VALUE , ( Long ) value ) ;
break ;
break ;
case FLOAT :
case FLOAT :
o . add ( VALUE , ( Double ) value ) ;
o . addProperty ( VALUE , ( Double ) value ) ;
break ;
break ;
case BOOLEAN :
case BOOLEAN :
o . add ( VALUE , ( Boolean ) value ) ;
o . addProperty ( VALUE , ( Boolean ) value ) ;
break ;
break ;
case OPAQUE :
case OPAQUE :
o . add ( VALUE , Base64 . getEncoder ( ) . encodeToString ( ( byte [ ] ) value ) ) ;
o . addProperty ( VALUE , Base64 . getEncoder ( ) . encodeToString ( ( byte [ ] ) value ) ) ;
break ;
break ;
case STRING :
case STRING :
o . add ( VALUE , ( String ) value ) ;
o . addProperty ( VALUE , ( String ) value ) ;
break ;
break ;
case TIME :
case TIME :
o . add ( VALUE , ( ( Date ) value ) . getTime ( ) ) ;
o . addProperty ( VALUE , ( ( Date ) value ) . getTime ( ) ) ;
break ;
break ;
case OBJLNK :
case OBJLNK :
o . add ( VALUE , ( ( ObjectLink ) value ) . encodeToString ( ) ) ;
o . addProperty ( VALUE , ( ( ObjectLink ) value ) . encodeToString ( ) ) ;
break ;
break ;
case UNSIGNED_INTEGER :
case UNSIGNED_INTEGER :
o . add ( VALUE , value . toString ( ) ) ;
o . addProperty ( VALUE , value . toString ( ) ) ;
break ;
break ;
default :
default :
throw new LwM2mNodeException ( String . format ( "Type %s is not supported" , type . name ( ) ) ) ;
throw new LwM2mNodeException ( String . format ( "Type %s is not supported" , type . name ( ) ) ) ;
@ -237,111 +230,111 @@ public class LwM2MClientSerDes {
@SneakyThrows
@SneakyThrows
public static LwM2mClient deserialize ( byte [ ] data ) {
public static LwM2mClient deserialize ( byte [ ] data ) {
JsonObject o = Json . parse ( new String ( data ) ) . asObject ( ) ;
// JsonObject o = new JsonObject(new String(data)));
LwM2mClient lwM2mClient = new LwM2mClient ( o . get ( "nodeId" ) . asString ( ) , o . get ( "endpoint" ) . asString ( ) ) ;
// LwM2mClient lwM2mClient = new LwM2mClient(o.get("nodeId").getAsString(), o.get("endpoint").getAsString());
LwM2mClient lwM2mClient = new LwM2mClient ( "nodeId" , "endpoint" ) ;
o . get ( "resources" ) . asObject ( ) . forEach ( entry - > {
// o.get("resources").getAsJsonObject().forEach(entry -> {
JsonObject resource = entry . getValue ( ) . asObject ( ) ;
// JsonObject resource = entry.getValue().asObject();
LwM2mResource lwM2mResource = parseLwM2mResource ( resource . get ( "lwM2mResource" ) . asObject ( ) ) ;
// LwM2mResource lwM2mResource = parseLwM2mResource(resource.get("lwM2mResource").getAsJsonObject());
ResourceModel resourceModel = parseResourceModel ( resource . get ( "resourceModel" ) . asObject ( ) ) ;
// ResourceModel resourceModel = parseResourceModel(resource.get("resourceModel").asObject());
ResourceValue resourceValue = new ResourceValue ( lwM2mResource , resourceModel ) ;
// ResourceValue resourceValue = new ResourceValue(lwM2mResource, resourceModel);
lwM2mClient . getResources ( ) . put ( entry . getName ( ) , resourceValue ) ;
// lwM2mClient.getResources().put(entry.getName(), resourceValue);
} ) ;
// });
//
for ( JsonObject . Member entry : o . get ( "sharedAttributes" ) . asObject ( ) ) {
// for (JsonObject.Member entry : o.get("sharedAttributes").asObject()) {
TransportProtos . TsKvProto . Builder builder = TransportProtos . TsKvProto . newBuilder ( ) ;
// TransportProtos.TsKvProto.Builder builder = TransportProtos.TsKvProto.newBuilder();
JsonFormat . parser ( ) . merge ( entry . getValue ( ) . asString ( ) , builder ) ;
// JsonFormat.parser().merge(entry.getValue().getAsString(), builder);
lwM2mClient . getSharedAttributes ( ) . put ( entry . getName ( ) , builder . build ( ) ) ;
// lwM2mClient.getSharedAttributes().put(entry.getName(), builder.build());
}
// }
//
o . get ( "keyTsLatestMap" ) . asObject ( ) . forEach ( entry - > {
// o.get("keyTsLatestMap").asObject().forEach(entry -> {
lwM2mClient . getKeyTsLatestMap ( ) . put ( entry . getName ( ) , new AtomicLong ( entry . getValue ( ) . asLong ( ) ) ) ;
// lwM2mClient.getKeyTsLatestMap().put(entry.getName(), new AtomicLong(entry.getValue().asLong()));
} ) ;
// });
//
lwM2mClient . setState ( LwM2MClientState . valueOf ( o . get ( "state" ) . asString ( ) ) ) ;
// lwM2mClient.setState(LwM2MClientState.valueOf(o.get("state").getAsString()));
//
Class < LwM2mClient > lwM2mClientClass = LwM2mClient . class ;
// Class<LwM2mClient> lwM2mClientClass = LwM2mClient.class;
//
JsonValue session = o . get ( "session" ) ;
// JsonValue session = o.get("session");
if ( session ! = null ) {
// if (session != null) {
TransportProtos . SessionInfoProto . Builder builder = TransportProtos . SessionInfoProto . newBuilder ( ) ;
// TransportProtos.SessionInfoProto.Builder builder = TransportProtos.SessionInfoProto.newBuilder();
JsonFormat . parser ( ) . merge ( session . asString ( ) , builder ) ;
// JsonFormat.parser().merge(session.asString(), builder);
//
Field sessionField = lwM2mClientClass . getDeclaredField ( "session" ) ;
// Field sessionField = lwM2mClientClass.getDeclaredField("session");
sessionField . setAccessible ( true ) ;
// sessionField.setAccessible(true);
sessionField . set ( lwM2mClient , builder . build ( ) ) ;
// sessionField.set(lwM2mClient, builder.build());
}
// }
//
JsonValue tenantId = o . get ( "tenantId" ) ;
// JsonValue tenantId = o.get("tenantId");
if ( tenantId ! = null ) {
// if (tenantId != null) {
Field tenantIdField = lwM2mClientClass . getDeclaredField ( "tenantId" ) ;
// Field tenantIdField = lwM2mClientClass.getDeclaredField("tenantId");
tenantIdField . setAccessible ( true ) ;
// tenantIdField.setAccessible(true);
tenantIdField . set ( lwM2mClient , new TenantId ( UUID . fromString ( tenantId . asString ( ) ) ) ) ;
// tenantIdField.set(lwM2mClient, new TenantId(UUID.fromString(tenantId.asString())));
}
// }
//
JsonValue deviceId = o . get ( "deviceId" ) ;
// JsonValue deviceId = o.get("deviceId");
if ( tenantId ! = null ) {
// if (tenantId != null) {
Field deviceIdField = lwM2mClientClass . getDeclaredField ( "deviceId" ) ;
// Field deviceIdField = lwM2mClientClass.getDeclaredField("deviceId");
deviceIdField . setAccessible ( true ) ;
// deviceIdField.setAccessible(true);
deviceIdField . set ( lwM2mClient , UUID . fromString ( deviceId . asString ( ) ) ) ;
// deviceIdField.set(lwM2mClient, UUID.fromString(deviceId.asString()));
}
// }
//
JsonValue profileId = o . get ( "profileId" ) ;
// JsonValue profileId = o.get("profileId");
if ( tenantId ! = null ) {
// if (tenantId != null) {
Field profileIdField = lwM2mClientClass . getDeclaredField ( "profileId" ) ;
// Field profileIdField = lwM2mClientClass.getDeclaredField("profileId");
profileIdField . setAccessible ( true ) ;
// profileIdField.setAccessible(true);
profileIdField . set ( lwM2mClient , UUID . fromString ( profileId . asString ( ) ) ) ;
// profileIdField.set(lwM2mClient, UUID.fromString(profileId.asString()));
}
// }
//
JsonValue powerMode = o . get ( "powerMode" ) ;
// JsonValue powerMode = o.get("powerMode");
if ( powerMode ! = null ) {
// if (powerMode != null) {
Field powerModeField = lwM2mClientClass . getDeclaredField ( "powerMode" ) ;
// Field powerModeField = lwM2mClientClass.getDeclaredField("powerMode");
powerModeField . setAccessible ( true ) ;
// powerModeField.setAccessible(true);
powerModeField . set ( lwM2mClient , PowerMode . valueOf ( powerMode . asString ( ) ) ) ;
// powerModeField.set(lwM2mClient, PowerMode.valueOf(powerMode.asString()));
}
// }
//
JsonValue edrxCycle = o . get ( "edrxCycle" ) ;
// JsonValue edrxCycle = o.get("edrxCycle");
if ( edrxCycle ! = null ) {
// if (edrxCycle != null) {
Field edrxCycleField = lwM2mClientClass . getDeclaredField ( "edrxCycle" ) ;
// Field edrxCycleField = lwM2mClientClass.getDeclaredField("edrxCycle");
edrxCycleField . setAccessible ( true ) ;
// edrxCycleField.setAccessible(true);
edrxCycleField . set ( lwM2mClient , edrxCycle . asLong ( ) ) ;
// edrxCycleField.set(lwM2mClient, edrxCycle.asLong());
}
// }
//
JsonValue psmActivityTimer = o . get ( "psmActivityTimer" ) ;
// JsonValue psmActivityTimer = o.get("psmActivityTimer");
if ( psmActivityTimer ! = null ) {
// if (psmActivityTimer != null) {
Field psmActivityTimerField = lwM2mClientClass . getDeclaredField ( "psmActivityTimer" ) ;
// Field psmActivityTimerField = lwM2mClientClass.getDeclaredField("psmActivityTimer");
psmActivityTimerField . setAccessible ( true ) ;
// psmActivityTimerField.setAccessible(true);
psmActivityTimerField . set ( lwM2mClient , psmActivityTimer . asLong ( ) ) ;
// psmActivityTimerField.set(lwM2mClient, psmActivityTimer.asLong());
}
// }
//
JsonValue pagingTransmissionWindow = o . get ( "pagingTransmissionWindow" ) ;
// JsonValue pagingTransmissionWindow = o.get("pagingTransmissionWindow");
if ( pagingTransmissionWindow ! = null ) {
// if (pagingTransmissionWindow != null) {
Field pagingTransmissionWindowField = lwM2mClientClass . getDeclaredField ( "pagingTransmissionWindow" ) ;
// Field pagingTransmissionWindowField = lwM2mClientClass.getDeclaredField("pagingTransmissionWindow");
pagingTransmissionWindowField . setAccessible ( true ) ;
// pagingTransmissionWindowField.setAccessible(true);
pagingTransmissionWindowField . set ( lwM2mClient , pagingTransmissionWindow . asLong ( ) ) ;
// pagingTransmissionWindowField.set(lwM2mClient, pagingTransmissionWindow.asLong());
}
// }
//
JsonValue registration = o . get ( "registration" ) ;
// JsonValue registration = o.get("registration");
if ( registration ! = null ) {
// if (registration != null) {
lwM2mClient . setRegistration ( RegistrationSerDes . deserialize ( registration . asObject ( ) ) ) ;
// lwM2mClient.setRegistration(RegistrationSerDes.deserialize(registration.asObject()));
}
// }
//
lwM2mClient . setAsleep ( o . get ( "asleep" ) . asBoolean ( ) ) ;
// lwM2mClient.setAsleep(o.get("asleep").getAsBoolean());
//
Field lastUplinkTimeField = lwM2mClientClass . getDeclaredField ( "lastUplinkTime" ) ;
// Field lastUplinkTimeField = lwM2mClientClass.getDeclaredField("lastUplinkTime");
lastUplinkTimeField . setAccessible ( true ) ;
// lastUplinkTimeField.setAccessible(true);
lastUplinkTimeField . setLong ( lwM2mClient , o . get ( "lastUplinkTime" ) . asLong ( ) ) ;
// lastUplinkTimeField.setLong(lwM2mClient, o.get("lastUplinkTime").asLong());
//
Field firstEdrxDownlinkField = lwM2mClientClass . getDeclaredField ( "firstEdrxDownlink" ) ;
// Field firstEdrxDownlinkField = lwM2mClientClass.getDeclaredField("firstEdrxDownlink");
firstEdrxDownlinkField . setAccessible ( true ) ;
// firstEdrxDownlinkField.setAccessible(true);
firstEdrxDownlinkField . setBoolean ( lwM2mClient , o . get ( "firstEdrxDownlink" ) . asBoolean ( ) ) ;
// firstEdrxDownlinkField.setBoolean(lwM2mClient, o.get("firstEdrxDownlink").getAsBoolean());
//
lwM2mClient . getRetryAttempts ( ) . set ( o . get ( "retryAttempts" ) . asInt ( ) ) ;
// lwM2mClient.getRetryAttempts().set(o.get("retryAttempts").asInt());
//
JsonValue lastSentRpcId = o . get ( "lastSentRpcId" ) ;
// JsonValue lastSentRpcId = o.get("lastSentRpcId");
if ( lastSentRpcId ! = null ) {
// if (lastSentRpcId != null) {
lwM2mClient . setLastSentRpcId ( UUID . fromString ( lastSentRpcId . asString ( ) ) ) ;
// lwM2mClient.setLastSentRpcId(UUID.fromString(lastSentRpcId.asString()));
}
// }
return lwM2mClient ;
return lwM2mClient ;
}
}