Fix compile errors and warnings.
This commit is contained in:
parent
43178107c3
commit
59a54211f9
@ -169,11 +169,11 @@ public class LwM2MModelsRepository {
|
||||
* PageNumber = 1, PageSize = List<LwM2mObject>.size()
|
||||
*/
|
||||
public PageData<LwM2mObject> findLwm2mListObjects(PageLink pageLink) {
|
||||
PageImpl page = new PageImpl(getLwm2mObjects(getObjectIdFromTextSearch(pageLink.getTextSearch()),
|
||||
PageImpl<LwM2mObject> page = new PageImpl<>(getLwm2mObjects(getObjectIdFromTextSearch(pageLink.getTextSearch()),
|
||||
pageLink.getTextSearch(),
|
||||
pageLink.getSortOrder().getProperty(),
|
||||
pageLink.getSortOrder().getDirection().name()));
|
||||
PageData pageData = new PageData(page.getContent(), page.getTotalPages(), page.getTotalElements(), page.hasNext());
|
||||
PageData<LwM2mObject> pageData = new PageData<>(page.getContent(), page.getTotalPages(), page.getTotalElements(), page.hasNext());
|
||||
return pageData;
|
||||
}
|
||||
|
||||
|
||||
@ -15,7 +15,6 @@
|
||||
*/
|
||||
package org.thingsboard.server.common.data.lwm2m;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@ -23,12 +22,8 @@ public class ServerSecurityConfig {
|
||||
String host;
|
||||
Integer port;
|
||||
String serverPublicKey;
|
||||
@Builder.Default
|
||||
boolean bootstrapServerIs = true;
|
||||
@Builder.Default
|
||||
Integer clientHoldOffTime = 1;
|
||||
@Builder.Default
|
||||
Integer serverId = 111;
|
||||
@Builder.Default
|
||||
Integer bootstrapServerAccountTimeout = 0;
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ import org.eclipse.californium.core.network.Endpoint;
|
||||
import org.eclipse.californium.core.network.Exchange;
|
||||
import org.eclipse.californium.core.server.resources.CoapExchange;
|
||||
import org.eclipse.californium.core.server.resources.Resource;
|
||||
import org.eclipse.californium.elements.EndpointContext;
|
||||
import org.thingsboard.server.common.data.DataConstants;
|
||||
import org.thingsboard.server.common.data.DeviceTransportType;
|
||||
import org.thingsboard.server.common.data.security.DeviceTokenCredentials;
|
||||
@ -264,12 +265,15 @@ public class CoapTransportResource extends CoapResource {
|
||||
}
|
||||
|
||||
private TransportProtos.SessionInfoProto lookupAsyncSessionInfo(Request request) {
|
||||
String token = request.getSource().getHostAddress() + ":" + request.getSourcePort() + ":" + request.getTokenString();
|
||||
EndpointContext sourceContext = request.getSourceContext();
|
||||
String token = sourceContext.getPeerAddress().getAddress().getHostAddress() + ":" + sourceContext.getPeerAddress().getPort() + ":" + request.getTokenString();
|
||||
return tokenToSessionIdMap.remove(token);
|
||||
|
||||
}
|
||||
|
||||
private String registerAsyncCoapSession(CoapExchange exchange, Request request, TransportProtos.SessionInfoProto sessionInfo, UUID sessionId) {
|
||||
String token = request.getSource().getHostAddress() + ":" + request.getSourcePort() + ":" + request.getTokenString();
|
||||
EndpointContext sourceContext = request.getSourceContext();
|
||||
String token = sourceContext.getPeerAddress().getAddress().getHostAddress() + ":" + sourceContext.getPeerAddress().getPort() + ":" + request.getTokenString();
|
||||
tokenToSessionIdMap.putIfAbsent(token, sessionInfo);
|
||||
CoapSessionListener attrListener = new CoapSessionListener(sessionId, exchange);
|
||||
transportService.registerAsyncSession(sessionInfo, attrListener);
|
||||
|
||||
@ -107,7 +107,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-all</artifactId>
|
||||
<artifactId>mockito-core</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@ -15,7 +15,6 @@
|
||||
*/
|
||||
package org.thingsboard.server.transport.lwm2m.bootstrap.secure;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import org.eclipse.leshan.core.SecurityMode;
|
||||
import org.eclipse.leshan.core.request.BindingMode;
|
||||
@ -40,7 +39,6 @@ public class LwM2MBootstrapConfig {
|
||||
* notifIfDisabled: boolean,
|
||||
* binding: string
|
||||
* */
|
||||
@Builder.Default
|
||||
LwM2MBootstrapServers servers;
|
||||
|
||||
/** -bootstrapServer, lwm2mServer
|
||||
|
||||
@ -15,19 +15,13 @@
|
||||
*/
|
||||
package org.thingsboard.server.transport.lwm2m.bootstrap.secure;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LwM2MBootstrapServers {
|
||||
@Builder.Default
|
||||
private Integer shortId = 123;
|
||||
@Builder.Default
|
||||
private Integer lifetime = 300;
|
||||
@Builder.Default
|
||||
private Integer defaultMinPeriod = 1;
|
||||
@Builder.Default
|
||||
private boolean notifIfDisabled = true;
|
||||
@Builder.Default
|
||||
private String binding = "U";
|
||||
}
|
||||
|
||||
@ -15,7 +15,6 @@
|
||||
*/
|
||||
package org.thingsboard.server.transport.lwm2m.bootstrap.secure;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.leshan.core.SecurityMode;
|
||||
@ -24,28 +23,18 @@ import org.eclipse.leshan.core.SecurityMode;
|
||||
@Data
|
||||
public class LwM2MServerBootstrap {
|
||||
|
||||
@Builder.Default
|
||||
String clientPublicKeyOrId = "";
|
||||
@Builder.Default
|
||||
String clientSecretKey = "";
|
||||
@Builder.Default
|
||||
String serverPublicKey = "";
|
||||
@Builder.Default
|
||||
Integer clientHoldOffTime = 1;
|
||||
@Builder.Default
|
||||
Integer bootstrapServerAccountTimeout = 0;
|
||||
|
||||
@Builder.Default
|
||||
String host = "0.0.0.0";
|
||||
@Builder.Default
|
||||
Integer port = 0;
|
||||
|
||||
@Builder.Default
|
||||
String securityMode = SecurityMode.NO_SEC.name();
|
||||
|
||||
@Builder.Default
|
||||
Integer serverId = 123;
|
||||
@Builder.Default
|
||||
boolean bootstrapServerIs = false;
|
||||
|
||||
public LwM2MServerBootstrap(){};
|
||||
|
||||
@ -25,6 +25,7 @@ import org.eclipse.leshan.server.security.SecurityChecker;
|
||||
import org.eclipse.leshan.server.security.SecurityInfo;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@ -49,10 +50,11 @@ public class LwM2mDefaultBootstrapSessionManager extends DefaultBootstrapSession
|
||||
this.securityChecker = securityChecker;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public BootstrapSession begin(String endpoint, Identity clientIdentity) {
|
||||
boolean authorized;
|
||||
if (bsSecurityStore != null) {
|
||||
List<SecurityInfo> securityInfos = (clientIdentity.getPskIdentity() != null && !clientIdentity.getPskIdentity().isEmpty()) ? Arrays.asList(bsSecurityStore.getByIdentity(clientIdentity.getPskIdentity())) : bsSecurityStore.getAllByEndpoint(endpoint);
|
||||
List<SecurityInfo> securityInfos = (clientIdentity.getPskIdentity() != null && !clientIdentity.getPskIdentity().isEmpty()) ? Collections.singletonList(bsSecurityStore.getByIdentity(clientIdentity.getPskIdentity())) : bsSecurityStore.getAllByEndpoint(endpoint);
|
||||
log.info("Bootstrap session started securityInfos: [{}]", securityInfos);
|
||||
authorized = securityChecker.checkSecurityInfos(endpoint, clientIdentity, securityInfos);
|
||||
} else {
|
||||
|
||||
@ -16,7 +16,6 @@
|
||||
package org.thingsboard.server.transport.lwm2m.secure;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import org.eclipse.leshan.server.bootstrap.BootstrapConfig;
|
||||
import org.eclipse.leshan.server.security.SecurityInfo;
|
||||
@ -29,7 +28,6 @@ import static org.thingsboard.server.transport.lwm2m.secure.LwM2MSecurityMode.DE
|
||||
public class ReadResultSecurityStore {
|
||||
private ValidateDeviceCredentialsResponseMsg msg;
|
||||
private SecurityInfo securityInfo;
|
||||
@Builder.Default
|
||||
private int securityMode = DEFAULT_MODE.code;
|
||||
|
||||
/** bootstrap */
|
||||
|
||||
@ -312,6 +312,7 @@ public class LwM2MTransportHandler {
|
||||
return object;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> Optional<T> decode(byte[] byteArray) {
|
||||
try {
|
||||
FSTConfiguration config = FSTConfiguration.createDefaultConfiguration();
|
||||
|
||||
@ -232,6 +232,7 @@ public class LwM2MTransportRequest {
|
||||
* @param timeoutInMs -
|
||||
*/
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void sendRequest(LeshanServer lwServer, Registration registration, DownlinkRequest request, long timeoutInMs) {
|
||||
LwM2MClient lwM2MClient = this.service.lwM2mInMemorySecurityStore.getLwM2MClientWithReg(registration, null);
|
||||
lwServer.send(registration, request, timeoutInMs, (ResponseCallback<?>) response -> {
|
||||
|
||||
@ -15,11 +15,13 @@
|
||||
*/
|
||||
package org.thingsboard.server.transport.lwm2m.server;
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.leshan.core.model.ResourceModel;
|
||||
import org.eclipse.leshan.core.node.LwM2mObject;
|
||||
@ -564,7 +566,7 @@ public class LwM2MTransportServiceImpl implements LwM2MTransportService {
|
||||
* @return true if path isPresent in postAttributeProfile
|
||||
*/
|
||||
private boolean validatePathInAttrProfile(LwM2MClientProfile profile, String path) {
|
||||
Set<String> attributesSet = new Gson().fromJson(profile.getPostAttributeProfile(), Set.class);
|
||||
Set<String> attributesSet = new Gson().fromJson(profile.getPostAttributeProfile(), new TypeToken<>(){}.getType());
|
||||
return attributesSet.stream().filter(p -> p.equals(path)).findFirst().isPresent();
|
||||
}
|
||||
|
||||
@ -574,7 +576,7 @@ public class LwM2MTransportServiceImpl implements LwM2MTransportService {
|
||||
* @return true if path isPresent in postAttributeProfile
|
||||
*/
|
||||
private boolean validatePathInTelemetryProfile(LwM2MClientProfile profile, String path) {
|
||||
Set<String> telemetriesSet = new Gson().fromJson(profile.getPostTelemetryProfile(), Set.class);
|
||||
Set<String> telemetriesSet = new Gson().fromJson(profile.getPostTelemetryProfile(), new TypeToken<>(){}.getType());
|
||||
return telemetriesSet.stream().filter(p -> p.equals(path)).findFirst().isPresent();
|
||||
}
|
||||
|
||||
@ -592,10 +594,10 @@ public class LwM2MTransportServiceImpl implements LwM2MTransportService {
|
||||
Set<String> clientInstances = this.getAllInstancesInClient(registration);
|
||||
Set<String> result;
|
||||
if (GET_TYPE_OPER_READ.equals(typeOper)) {
|
||||
result = new ObjectMapper().readValue(lwM2MClientProfile.getPostAttributeProfile().getAsJsonArray().toString().getBytes(), Set.class);
|
||||
result.addAll(new ObjectMapper().readValue(lwM2MClientProfile.getPostTelemetryProfile().getAsJsonArray().toString().getBytes(), Set.class));
|
||||
result = new ObjectMapper().readValue(lwM2MClientProfile.getPostAttributeProfile().getAsJsonArray().toString().getBytes(), new TypeReference<>() {});
|
||||
result.addAll(new ObjectMapper().readValue(lwM2MClientProfile.getPostTelemetryProfile().getAsJsonArray().toString().getBytes(), new TypeReference<>() {}));
|
||||
} else {
|
||||
result = new ObjectMapper().readValue(lwM2MClientProfile.getPostObserveProfile().getAsJsonArray().toString().getBytes(), Set.class);
|
||||
result = new ObjectMapper().readValue(lwM2MClientProfile.getPostObserveProfile().getAsJsonArray().toString().getBytes(), new TypeReference<>() {});
|
||||
}
|
||||
Set<String> pathSent = ConcurrentHashMap.newKeySet();
|
||||
result.forEach(p -> {
|
||||
@ -794,17 +796,17 @@ public class LwM2MTransportServiceImpl implements LwM2MTransportService {
|
||||
|
||||
// #1
|
||||
JsonArray attributeOld = lwM2MClientProfileOld.getPostAttributeProfile();
|
||||
Set attributeSetOld = new Gson().fromJson(attributeOld, Set.class);
|
||||
Set<String> attributeSetOld = new Gson().fromJson(attributeOld, new TypeToken<>(){}.getType());
|
||||
JsonArray telemetryOld = lwM2MClientProfileOld.getPostTelemetryProfile();
|
||||
Set telemetrySetOld = new Gson().fromJson(telemetryOld, Set.class);
|
||||
Set<String> telemetrySetOld = new Gson().fromJson(telemetryOld, new TypeToken<>(){}.getType());
|
||||
JsonArray observeOld = lwM2MClientProfileOld.getPostObserveProfile();
|
||||
JsonObject keyNameOld = lwM2MClientProfileOld.getPostKeyNameProfile();
|
||||
|
||||
LwM2MClientProfile lwM2MClientProfileNew = lwM2mInMemorySecurityStore.getProfiles().get(deviceProfile.getUuidId());
|
||||
JsonArray attributeNew = lwM2MClientProfileNew.getPostAttributeProfile();
|
||||
Set attributeSetNew = new Gson().fromJson(attributeNew, Set.class);
|
||||
Set<String> attributeSetNew = new Gson().fromJson(attributeNew, new TypeToken<>(){}.getType());
|
||||
JsonArray telemetryNew = lwM2MClientProfileNew.getPostTelemetryProfile();
|
||||
Set telemetrySetNew = new Gson().fromJson(telemetryNew, Set.class);
|
||||
Set<String> telemetrySetNew = new Gson().fromJson(telemetryNew, new TypeToken<>(){}.getType());
|
||||
JsonArray observeNew = lwM2MClientProfileNew.getPostObserveProfile();
|
||||
JsonObject keyNameNew = lwM2MClientProfileNew.getPostKeyNameProfile();
|
||||
|
||||
@ -812,20 +814,20 @@ public class LwM2MTransportServiceImpl implements LwM2MTransportService {
|
||||
ResultsAnalyzerParameters sentAttrToThingsboard = new ResultsAnalyzerParameters();
|
||||
// #3.1
|
||||
if (!attributeOld.equals(attributeNew)) {
|
||||
ResultsAnalyzerParameters postAttributeAnalyzer = this.getAnalyzerParameters(new Gson().fromJson(attributeOld, Set.class), attributeSetNew);
|
||||
ResultsAnalyzerParameters postAttributeAnalyzer = this.getAnalyzerParameters(new Gson().fromJson(attributeOld, new TypeToken<Set<String>>(){}.getType()), attributeSetNew);
|
||||
sentAttrToThingsboard.getPathPostParametersAdd().addAll(postAttributeAnalyzer.getPathPostParametersAdd());
|
||||
sentAttrToThingsboard.getPathPostParametersDel().addAll(postAttributeAnalyzer.getPathPostParametersDel());
|
||||
}
|
||||
// #3.2
|
||||
if (!attributeOld.equals(attributeNew)) {
|
||||
ResultsAnalyzerParameters postTelemetryAnalyzer = this.getAnalyzerParameters(new Gson().fromJson(telemetryOld, Set.class), telemetrySetNew);
|
||||
ResultsAnalyzerParameters postTelemetryAnalyzer = this.getAnalyzerParameters(new Gson().fromJson(telemetryOld, new TypeToken<Set<String>>(){}.getType()), telemetrySetNew);
|
||||
sentAttrToThingsboard.getPathPostParametersAdd().addAll(postTelemetryAnalyzer.getPathPostParametersAdd());
|
||||
sentAttrToThingsboard.getPathPostParametersDel().addAll(postTelemetryAnalyzer.getPathPostParametersDel());
|
||||
}
|
||||
// #3.3
|
||||
if (!keyNameOld.equals(keyNameNew)) {
|
||||
ResultsAnalyzerParameters keyNameChange = this.getAnalyzerKeyName(new Gson().fromJson(keyNameOld.toString(), ConcurrentHashMap.class),
|
||||
new Gson().fromJson(keyNameNew.toString(), ConcurrentHashMap.class));
|
||||
ResultsAnalyzerParameters keyNameChange = this.getAnalyzerKeyName(new Gson().fromJson(keyNameOld.toString(), new TypeToken<ConcurrentHashMap<String, String>>(){}.getType()),
|
||||
new Gson().fromJson(keyNameNew.toString(), new TypeToken<ConcurrentHashMap<String, String>>(){}.getType()));
|
||||
sentAttrToThingsboard.getPathPostParametersAdd().addAll(keyNameChange.getPathPostParametersAdd());
|
||||
}
|
||||
|
||||
@ -849,8 +851,8 @@ public class LwM2MTransportServiceImpl implements LwM2MTransportService {
|
||||
|
||||
// #5.1
|
||||
if (!observeOld.equals(observeNew)) {
|
||||
Set observeSetOld = new Gson().fromJson(observeOld, Set.class);
|
||||
Set observeSetNew = new Gson().fromJson(observeNew, Set.class);
|
||||
Set<String> observeSetOld = new Gson().fromJson(observeOld, new TypeToken<>(){}.getType());
|
||||
Set<String> observeSetNew = new Gson().fromJson(observeNew, new TypeToken<>(){}.getType());
|
||||
//#5.2 add
|
||||
// path Attr/Telemetry includes newObserve
|
||||
attributeSetOld.addAll(telemetrySetOld);
|
||||
@ -1120,7 +1122,7 @@ public class LwM2MTransportServiceImpl implements LwM2MTransportService {
|
||||
private List<String> getNamesAttrFromProfileIsWritable(LwM2MClient lwM2MClient) {
|
||||
LwM2MClientProfile profile = lwM2mInMemorySecurityStore.getProfile(lwM2MClient.getProfileUuid());
|
||||
Set attrSet = new Gson().fromJson(profile.getPostAttributeProfile(), Set.class);
|
||||
ConcurrentMap<String, String> keyNamesMap = new Gson().fromJson(profile.getPostKeyNameProfile().toString(), ConcurrentHashMap.class);
|
||||
ConcurrentMap<String, String> keyNamesMap = new Gson().fromJson(profile.getPostKeyNameProfile().toString(), new TypeToken<ConcurrentHashMap<String, String>>(){}.getType());
|
||||
|
||||
ConcurrentMap<String, String> keyNamesIsWritable = keyNamesMap.entrySet()
|
||||
.stream()
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
FROM thingsboard/openjdk8
|
||||
FROM thingsboard/openjdk11
|
||||
|
||||
COPY start-tb-lwm2m-transport.sh ${pkg.name}.deb /tmp/
|
||||
|
||||
|
||||
@ -98,7 +98,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-all</artifactId>
|
||||
<artifactId>mockito-core</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@ -14,10 +14,9 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
export JAVA_OPTS="$JAVA_OPTS -Xloggc:@pkg.logFolder@/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly"
|
||||
export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=@pkg.logFolder@/gc.log:time,uptime,level,tags:filecount=10,filesize=10M"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10"
|
||||
export LOG_FILENAME=${pkg.name}.out
|
||||
export LOADER_PATH=${pkg.installFolder}/conf
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user