Commit 447bf05b7b9bd3e3d37bc53d42780b613d3a4ea9
1 parent
65f4ca58
Lwm2m: back: add tenantId and repositoryTenant - test2
Showing
15 changed files
with
113 additions
and
19 deletions
@@ -70,6 +70,18 @@ public class ResourceController extends BaseController { | @@ -70,6 +70,18 @@ public class ResourceController extends BaseController { | ||
70 | } | 70 | } |
71 | 71 | ||
72 | @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") | 72 | @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") |
73 | + @RequestMapping(value = "/resource/{resourceType}", method = RequestMethod.GET) | ||
74 | + @ResponseBody | ||
75 | + public List<Resource> getResources(@RequestParam(required = false) boolean system, | ||
76 | + @PathVariable("resourceType") ResourceType resourceType) throws ThingsboardException { | ||
77 | + try { | ||
78 | + return checkNotNull(resourceService.findResourcesByTenantIdResourceType(system ? TenantId.SYS_TENANT_ID : getTenantId(), resourceType)); | ||
79 | + } catch (Exception e) { | ||
80 | + throw handleException(e); | ||
81 | + } | ||
82 | + } | ||
83 | + | ||
84 | + @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") | ||
73 | @RequestMapping(value = "/resource/{resourceType}/{resourceId}", method = RequestMethod.DELETE) | 85 | @RequestMapping(value = "/resource/{resourceType}/{resourceId}", method = RequestMethod.DELETE) |
74 | @ResponseBody | 86 | @ResponseBody |
75 | public void deleteResource(@PathVariable("resourceType") ResourceType resourceType, | 87 | public void deleteResource(@PathVariable("resourceType") ResourceType resourceType, |
@@ -373,9 +373,14 @@ public class DefaultTransportApiService implements TransportApiService { | @@ -373,9 +373,14 @@ public class DefaultTransportApiService implements TransportApiService { | ||
373 | 373 | ||
374 | List<TransportProtos.ResourceMsg> resources; | 374 | List<TransportProtos.ResourceMsg> resources; |
375 | 375 | ||
376 | - if (resourceType != null && resourceId != null) { | 376 | + if (resourceType != null && resourceId != null && !resourceId.isEmpty()) { |
377 | resources = Collections.singletonList(toProto( | 377 | resources = Collections.singletonList(toProto( |
378 | resourceService.getResource(tenantId, ResourceType.valueOf(resourceType), resourceId))); | 378 | resourceService.getResource(tenantId, ResourceType.valueOf(resourceType), resourceId))); |
379 | + } else if (resourceType != null && !resourceType.isEmpty()) { | ||
380 | + resources = resourceService.findResourcesByTenantIdResourceType(tenantId, ResourceType.valueOf(resourceType)) | ||
381 | + .stream() | ||
382 | + .map(this::toProto) | ||
383 | + .collect(Collectors.toList()); | ||
379 | } else { | 384 | } else { |
380 | resources = resourceService.findResourcesByTenantId(tenantId) | 385 | resources = resourceService.findResourcesByTenantId(tenantId) |
381 | .stream() | 386 | .stream() |
@@ -29,6 +29,8 @@ public interface ResourceService { | @@ -29,6 +29,8 @@ public interface ResourceService { | ||
29 | 29 | ||
30 | List<Resource> findResourcesByTenantId(TenantId tenantId); | 30 | List<Resource> findResourcesByTenantId(TenantId tenantId); |
31 | 31 | ||
32 | + List<Resource> findResourcesByTenantIdResourceType(TenantId tenantId, ResourceType resourceType); | ||
33 | + | ||
32 | void deleteResource(TenantId tenantId, ResourceType resourceType, String resourceId); | 34 | void deleteResource(TenantId tenantId, ResourceType resourceType, String resourceId); |
33 | 35 | ||
34 | void deleteResourcesByTenantId(TenantId tenantId); | 36 | void deleteResourcesByTenantId(TenantId tenantId); |
@@ -34,16 +34,25 @@ import com.google.gson.JsonElement; | @@ -34,16 +34,25 @@ import com.google.gson.JsonElement; | ||
34 | import com.google.gson.JsonObject; | 34 | import com.google.gson.JsonObject; |
35 | import lombok.Getter; | 35 | import lombok.Getter; |
36 | import lombok.extern.slf4j.Slf4j; | 36 | import lombok.extern.slf4j.Slf4j; |
37 | +import org.eclipse.leshan.core.model.ObjectModel; | ||
37 | import org.springframework.stereotype.Component; | 38 | import org.springframework.stereotype.Component; |
38 | import org.thingsboard.server.common.transport.TransportContext; | 39 | import org.thingsboard.server.common.transport.TransportContext; |
39 | import org.thingsboard.server.common.transport.TransportService; | 40 | import org.thingsboard.server.common.transport.TransportService; |
40 | import org.thingsboard.server.common.transport.TransportServiceCallback; | 41 | import org.thingsboard.server.common.transport.TransportServiceCallback; |
41 | import org.thingsboard.server.common.transport.adaptor.AdaptorException; | 42 | import org.thingsboard.server.common.transport.adaptor.AdaptorException; |
42 | import org.thingsboard.server.common.transport.lwm2m.LwM2MTransportConfigServer; | 43 | import org.thingsboard.server.common.transport.lwm2m.LwM2MTransportConfigServer; |
43 | -import org.thingsboard.server.gen.transport.TransportProtos; | 44 | +import org.thingsboard.server.gen.transport.TransportProtos.GetResourcesRequestMsg; |
45 | +import org.thingsboard.server.gen.transport.TransportProtos.GetResourcesResponseMsg; | ||
46 | +import org.thingsboard.server.gen.transport.TransportProtos.PostAttributeMsg; | ||
47 | +import org.thingsboard.server.gen.transport.TransportProtos.PostTelemetryMsg; | ||
48 | +import org.thingsboard.server.gen.transport.TransportProtos.SessionInfoProto; | ||
49 | +import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceCredentialsResponseMsg; | ||
44 | import org.thingsboard.server.queue.util.TbLwM2mTransportComponent; | 50 | import org.thingsboard.server.queue.util.TbLwM2mTransportComponent; |
45 | import org.thingsboard.server.transport.lwm2m.server.adaptors.LwM2MJsonAdaptor; | 51 | import org.thingsboard.server.transport.lwm2m.server.adaptors.LwM2MJsonAdaptor; |
46 | 52 | ||
53 | +import java.util.List; | ||
54 | +import java.util.UUID; | ||
55 | + | ||
47 | import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportHandler.LOG_LW2M_TELEMETRY; | 56 | import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportHandler.LOG_LW2M_TELEMETRY; |
48 | 57 | ||
49 | @Slf4j | 58 | @Slf4j |
@@ -56,6 +65,8 @@ public class LwM2mTransportContextServer extends TransportContext { | @@ -56,6 +65,8 @@ public class LwM2mTransportContextServer extends TransportContext { | ||
56 | 65 | ||
57 | private final TransportService transportService; | 66 | private final TransportService transportService; |
58 | 67 | ||
68 | + private List<ObjectModel> modelsValueServer; | ||
69 | + | ||
59 | @Getter | 70 | @Getter |
60 | private final LwM2MJsonAdaptor adaptor; | 71 | private final LwM2MJsonAdaptor adaptor; |
61 | 72 | ||
@@ -89,14 +100,14 @@ public class LwM2mTransportContextServer extends TransportContext { | @@ -89,14 +100,14 @@ public class LwM2mTransportContextServer extends TransportContext { | ||
89 | }; | 100 | }; |
90 | } | 101 | } |
91 | 102 | ||
92 | - public void sentParametersOnThingsboard(JsonElement msg, String topicName, TransportProtos.SessionInfoProto sessionInfo) { | 103 | + public void sentParametersOnThingsboard(JsonElement msg, String topicName, SessionInfoProto sessionInfo) { |
93 | try { | 104 | try { |
94 | if (topicName.equals(LwM2mTransportHandler.DEVICE_ATTRIBUTES_TOPIC)) { | 105 | if (topicName.equals(LwM2mTransportHandler.DEVICE_ATTRIBUTES_TOPIC)) { |
95 | - TransportProtos.PostAttributeMsg postAttributeMsg = adaptor.convertToPostAttributes(msg); | 106 | + PostAttributeMsg postAttributeMsg = adaptor.convertToPostAttributes(msg); |
96 | TransportServiceCallback call = this.getPubAckCallbackSentAttrTelemetry(postAttributeMsg); | 107 | TransportServiceCallback call = this.getPubAckCallbackSentAttrTelemetry(postAttributeMsg); |
97 | transportService.process(sessionInfo, postAttributeMsg, this.getPubAckCallbackSentAttrTelemetry(call)); | 108 | transportService.process(sessionInfo, postAttributeMsg, this.getPubAckCallbackSentAttrTelemetry(call)); |
98 | } else if (topicName.equals(LwM2mTransportHandler.DEVICE_TELEMETRY_TOPIC)) { | 109 | } else if (topicName.equals(LwM2mTransportHandler.DEVICE_TELEMETRY_TOPIC)) { |
99 | - TransportProtos.PostTelemetryMsg postTelemetryMsg = adaptor.convertToPostTelemetry(msg); | 110 | + PostTelemetryMsg postTelemetryMsg = adaptor.convertToPostTelemetry(msg); |
100 | TransportServiceCallback call = this.getPubAckCallbackSentAttrTelemetry(postTelemetryMsg); | 111 | TransportServiceCallback call = this.getPubAckCallbackSentAttrTelemetry(postTelemetryMsg); |
101 | transportService.process(sessionInfo, postTelemetryMsg, this.getPubAckCallbackSentAttrTelemetry(call)); | 112 | transportService.process(sessionInfo, postTelemetryMsg, this.getPubAckCallbackSentAttrTelemetry(call)); |
102 | } | 113 | } |
@@ -115,8 +126,8 @@ public class LwM2mTransportContextServer extends TransportContext { | @@ -115,8 +126,8 @@ public class LwM2mTransportContextServer extends TransportContext { | ||
115 | /** | 126 | /** |
116 | * @return - sessionInfo after access connect client | 127 | * @return - sessionInfo after access connect client |
117 | */ | 128 | */ |
118 | - public TransportProtos.SessionInfoProto getValidateSessionInfo(TransportProtos.ValidateDeviceCredentialsResponseMsg msg, long mostSignificantBits, long leastSignificantBits) { | ||
119 | - return TransportProtos.SessionInfoProto.newBuilder() | 129 | + public SessionInfoProto getValidateSessionInfo(ValidateDeviceCredentialsResponseMsg msg, long mostSignificantBits, long leastSignificantBits) { |
130 | + return SessionInfoProto.newBuilder() | ||
120 | .setNodeId(this.getNodeId()) | 131 | .setNodeId(this.getNodeId()) |
121 | .setSessionIdMSB(mostSignificantBits) | 132 | .setSessionIdMSB(mostSignificantBits) |
122 | .setSessionIdLSB(leastSignificantBits) | 133 | .setSessionIdLSB(leastSignificantBits) |
@@ -131,4 +142,25 @@ public class LwM2mTransportContextServer extends TransportContext { | @@ -131,4 +142,25 @@ public class LwM2mTransportContextServer extends TransportContext { | ||
131 | .build(); | 142 | .build(); |
132 | } | 143 | } |
133 | 144 | ||
145 | + | ||
146 | + | ||
147 | + | ||
148 | + /** | ||
149 | + * ResourcesRequestMsg | ||
150 | + * | ||
151 | + * @param resourceType | ||
152 | + * @return | ||
153 | + */ | ||
154 | + public GetResourcesResponseMsg getResourceTenant (UUID tenantId, String resourceType) { | ||
155 | + | ||
156 | + GetResourcesResponseMsg responseMsg = | ||
157 | + this.getTransportService() | ||
158 | + .getResources(GetResourcesRequestMsg.newBuilder() | ||
159 | + .setResourceType(resourceType) | ||
160 | + .setTenantIdLSB(tenantId.getLeastSignificantBits()) | ||
161 | + .setTenantIdMSB(tenantId.getMostSignificantBits()) | ||
162 | + .build()); | ||
163 | + return responseMsg; | ||
164 | + } | ||
165 | + | ||
134 | } | 166 | } |
@@ -45,6 +45,7 @@ import java.util.Arrays; | @@ -45,6 +45,7 @@ import java.util.Arrays; | ||
45 | import java.util.Date; | 45 | import java.util.Date; |
46 | import java.util.LinkedList; | 46 | import java.util.LinkedList; |
47 | import java.util.Optional; | 47 | import java.util.Optional; |
48 | +import java.util.UUID; | ||
48 | 49 | ||
49 | @Slf4j | 50 | @Slf4j |
50 | //@Component("LwM2MTransportHandler") | 51 | //@Component("LwM2MTransportHandler") |
@@ -188,7 +189,7 @@ public class LwM2mTransportHandler { | @@ -188,7 +189,7 @@ public class LwM2mTransportHandler { | ||
188 | return null; | 189 | return null; |
189 | } | 190 | } |
190 | 191 | ||
191 | - public static LwM2mClientProfile getNewProfileParameters(JsonObject profilesConfigData, String tenantId) { | 192 | + public static LwM2mClientProfile getNewProfileParameters(JsonObject profilesConfigData, UUID tenantId) { |
192 | LwM2mClientProfile lwM2MClientProfile = new LwM2mClientProfile(); | 193 | LwM2mClientProfile lwM2MClientProfile = new LwM2mClientProfile(); |
193 | lwM2MClientProfile.setTenantId(tenantId); | 194 | lwM2MClientProfile.setTenantId(tenantId); |
194 | lwM2MClientProfile.setPostClientLwM2mSettings(profilesConfigData.get(CLIENT_LWM2M_SETTINGS).getAsJsonObject()); | 195 | lwM2MClientProfile.setPostClientLwM2mSettings(profilesConfigData.get(CLIENT_LWM2M_SETTINGS).getAsJsonObject()); |
@@ -222,7 +223,7 @@ public class LwM2mTransportHandler { | @@ -222,7 +223,7 @@ public class LwM2mTransportHandler { | ||
222 | ObjectMapper mapper = new ObjectMapper(); | 223 | ObjectMapper mapper = new ObjectMapper(); |
223 | String profileStr = mapper.writeValueAsString(profile); | 224 | String profileStr = mapper.writeValueAsString(profile); |
224 | JsonObject profileJson = (profileStr != null) ? validateJson(profileStr) : null; | 225 | JsonObject profileJson = (profileStr != null) ? validateJson(profileStr) : null; |
225 | - return (getValidateCredentialsBodyFromThingsboard(profileJson)) ? LwM2mTransportHandler.getNewProfileParameters(profileJson, deviceProfile.getTenantId().getId().toString()) : null; | 226 | + return (getValidateCredentialsBodyFromThingsboard(profileJson)) ? LwM2mTransportHandler.getNewProfileParameters(profileJson, deviceProfile.getTenantId().getId()) : null; |
226 | } catch (IOException e) { | 227 | } catch (IOException e) { |
227 | log.error("", e); | 228 | log.error("", e); |
228 | } | 229 | } |
@@ -47,7 +47,6 @@ import org.eclipse.leshan.core.util.Hex; | @@ -47,7 +47,6 @@ import org.eclipse.leshan.core.util.Hex; | ||
47 | import org.eclipse.leshan.core.util.NamedThreadFactory; | 47 | import org.eclipse.leshan.core.util.NamedThreadFactory; |
48 | import org.eclipse.leshan.server.californium.LeshanServer; | 48 | import org.eclipse.leshan.server.californium.LeshanServer; |
49 | import org.eclipse.leshan.server.registration.Registration; | 49 | import org.eclipse.leshan.server.registration.Registration; |
50 | -import org.springframework.beans.factory.annotation.Autowired; | ||
51 | import org.springframework.stereotype.Service; | 50 | import org.springframework.stereotype.Service; |
52 | import org.thingsboard.server.queue.util.TbLwM2mTransportComponent; | 51 | import org.thingsboard.server.queue.util.TbLwM2mTransportComponent; |
53 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; | 52 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; |
@@ -88,13 +87,16 @@ public class LwM2mTransportRequest { | @@ -88,13 +87,16 @@ public class LwM2mTransportRequest { | ||
88 | 87 | ||
89 | private final LeshanServer leshanServer; | 88 | private final LeshanServer leshanServer; |
90 | 89 | ||
91 | - @Autowired | ||
92 | - private LwM2mTransportServiceImpl serviceImpl; | 90 | +// @Autowired |
91 | +// private LwM2mTransportServiceImpl serviceImpl; | ||
93 | 92 | ||
94 | - public LwM2mTransportRequest(LwM2mTransportContextServer context, LwM2mClientContext lwM2mClientContext, LeshanServer leshanServer) { | 93 | + private final LwM2mTransportServiceImpl serviceImpl; |
94 | + | ||
95 | + public LwM2mTransportRequest(LwM2mTransportContextServer context, LwM2mClientContext lwM2mClientContext, LeshanServer leshanServer, LwM2mTransportServiceImpl serviceImpl) { | ||
95 | this.context = context; | 96 | this.context = context; |
96 | this.lwM2mClientContext = lwM2mClientContext; | 97 | this.lwM2mClientContext = lwM2mClientContext; |
97 | this.leshanServer = leshanServer; | 98 | this.leshanServer = leshanServer; |
99 | + this.serviceImpl = serviceImpl; | ||
98 | } | 100 | } |
99 | 101 | ||
100 | @PostConstruct | 102 | @PostConstruct |
@@ -30,6 +30,9 @@ import org.eclipse.leshan.server.security.SecurityChecker; | @@ -30,6 +30,9 @@ import org.eclipse.leshan.server.security.SecurityChecker; | ||
30 | import org.springframework.beans.factory.annotation.Autowired; | 30 | import org.springframework.beans.factory.annotation.Autowired; |
31 | import org.springframework.context.annotation.Bean; | 31 | import org.springframework.context.annotation.Bean; |
32 | import org.springframework.stereotype.Component; | 32 | import org.springframework.stereotype.Component; |
33 | +import org.thingsboard.server.common.data.id.TenantId; | ||
34 | +import org.thingsboard.server.common.data.transport.resource.ResourceType; | ||
35 | +import org.thingsboard.server.gen.transport.TransportProtos; | ||
33 | import org.thingsboard.server.queue.util.TbLwM2mTransportComponent; | 36 | import org.thingsboard.server.queue.util.TbLwM2mTransportComponent; |
34 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClientContext; | 37 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClientContext; |
35 | import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl; | 38 | import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl; |
@@ -98,6 +101,7 @@ public class LwM2mTransportServerConfiguration { | @@ -98,6 +101,7 @@ public class LwM2mTransportServerConfiguration { | ||
98 | builder.setCoapConfig(getCoapConfig(serverPortNoSec, serverSecurePort)); | 101 | builder.setCoapConfig(getCoapConfig(serverPortNoSec, serverSecurePort)); |
99 | 102 | ||
100 | /** Define model provider (Create Models )*/ | 103 | /** Define model provider (Create Models )*/ |
104 | + TransportProtos.GetResourcesResponseMsg responseMsg= this.context.getResourceTenant(TenantId.SYS_TENANT_ID.getId(), ResourceType.LWM2M_MODEL.name()); | ||
101 | // LwM2mModelProvider modelProvider = new VersionedModelProvider(this.context.getLwM2MTransportConfigServer().getModelsValueCommon()); | 105 | // LwM2mModelProvider modelProvider = new VersionedModelProvider(this.context.getLwM2MTransportConfigServer().getModelsValueCommon()); |
102 | LwM2mModelProvider modelProvider = new LwM2mVersionedModelProvider(this.context.getLwM2MTransportConfigServer().getModelsValueServer(), this.lwM2mClientContext); | 106 | LwM2mModelProvider modelProvider = new LwM2mVersionedModelProvider(this.context.getLwM2MTransportConfigServer().getModelsValueServer(), this.lwM2mClientContext); |
103 | builder.setObjectModelProvider(modelProvider); | 107 | builder.setObjectModelProvider(modelProvider); |
1 | +/** | ||
2 | + * Copyright © 2016-2021 The Thingsboard Authors | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
1 | package org.thingsboard.server.transport.lwm2m.server; | 16 | package org.thingsboard.server.transport.lwm2m.server; |
2 | 17 | ||
3 | import org.eclipse.leshan.core.model.LwM2mModel; | 18 | import org.eclipse.leshan.core.model.LwM2mModel; |
@@ -11,6 +26,7 @@ import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClientContext; | @@ -11,6 +26,7 @@ import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClientContext; | ||
11 | import java.util.ArrayList; | 26 | import java.util.ArrayList; |
12 | import java.util.Collection; | 27 | import java.util.Collection; |
13 | import java.util.Map; | 28 | import java.util.Map; |
29 | +import java.util.UUID; | ||
14 | import java.util.concurrent.ConcurrentHashMap; | 30 | import java.util.concurrent.ConcurrentHashMap; |
15 | 31 | ||
16 | public class LwM2mVersionedModelProvider implements LwM2mModelProvider { | 32 | public class LwM2mVersionedModelProvider implements LwM2mModelProvider { |
@@ -57,9 +73,9 @@ public class LwM2mVersionedModelProvider implements LwM2mModelProvider { | @@ -57,9 +73,9 @@ public class LwM2mVersionedModelProvider implements LwM2mModelProvider { | ||
57 | private class DynamicModel implements LwM2mModel { | 73 | private class DynamicModel implements LwM2mModel { |
58 | 74 | ||
59 | private final Registration registration; | 75 | private final Registration registration; |
60 | - private final String tenantId; | 76 | + private final UUID tenantId; |
61 | 77 | ||
62 | - public DynamicModel(Registration registration, String tenantId) { | 78 | + public DynamicModel(Registration registration, UUID tenantId) { |
63 | this.registration = registration; | 79 | this.registration = registration; |
64 | this.tenantId = tenantId; | 80 | this.tenantId = tenantId; |
65 | } | 81 | } |
@@ -15,7 +15,6 @@ | @@ -15,7 +15,6 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.transport.lwm2m.server.client; | 16 | package org.thingsboard.server.transport.lwm2m.server.client; |
17 | 17 | ||
18 | -import lombok.extern.slf4j.Slf4j; | ||
19 | import org.eclipse.leshan.server.registration.Registration; | 18 | import org.eclipse.leshan.server.registration.Registration; |
20 | import org.eclipse.leshan.server.security.EditableSecurityStore; | 19 | import org.eclipse.leshan.server.security.EditableSecurityStore; |
21 | import org.springframework.stereotype.Service; | 20 | import org.springframework.stereotype.Service; |
@@ -105,6 +104,7 @@ public class LwM2mClientContextImpl implements LwM2mClientContext { | @@ -105,6 +104,7 @@ public class LwM2mClientContextImpl implements LwM2mClientContext { | ||
105 | 104 | ||
106 | /** | 105 | /** |
107 | * Add new LwM2MClient to session | 106 | * Add new LwM2MClient to session |
107 | + * | ||
108 | * @param identity- | 108 | * @param identity- |
109 | * @return SecurityInfo. If error - SecurityInfoError | 109 | * @return SecurityInfo. If error - SecurityInfoError |
110 | * and log: | 110 | * and log: |
@@ -168,4 +168,5 @@ public class LwM2mClientContextImpl implements LwM2mClientContext { | @@ -168,4 +168,5 @@ public class LwM2mClientContextImpl implements LwM2mClientContext { | ||
168 | } | 168 | } |
169 | return false; | 169 | return false; |
170 | } | 170 | } |
171 | + | ||
171 | } | 172 | } |
@@ -20,10 +20,12 @@ import com.google.gson.JsonArray; | @@ -20,10 +20,12 @@ import com.google.gson.JsonArray; | ||
20 | import com.google.gson.JsonObject; | 20 | import com.google.gson.JsonObject; |
21 | import lombok.Data; | 21 | import lombok.Data; |
22 | 22 | ||
23 | +import java.util.UUID; | ||
24 | + | ||
23 | @Data | 25 | @Data |
24 | public class LwM2mClientProfile { | 26 | public class LwM2mClientProfile { |
25 | 27 | ||
26 | - private String tenantId; | 28 | + private UUID tenantId; |
27 | /** | 29 | /** |
28 | * {"clientLwM2mSettings": { | 30 | * {"clientLwM2mSettings": { |
29 | * clientUpdateValueAfterConnect: false; | 31 | * clientUpdateValueAfterConnect: false; |
@@ -47,7 +47,6 @@ import java.util.stream.Collectors; | @@ -47,7 +47,6 @@ import java.util.stream.Collectors; | ||
47 | @ConditionalOnExpression("('${service.type:null}'=='tb-transport' && '${transport.lwm2m.enabled:false}'=='true') || '${service.type:null}'=='monolith' || '${service.type:null}'=='tb-core'") | 47 | @ConditionalOnExpression("('${service.type:null}'=='tb-transport' && '${transport.lwm2m.enabled:false}'=='true') || '${service.type:null}'=='monolith' || '${service.type:null}'=='tb-core'") |
48 | public class LwM2MTransportConfigServer { | 48 | public class LwM2MTransportConfigServer { |
49 | 49 | ||
50 | - | ||
51 | @Getter | 50 | @Getter |
52 | private String MODEL_PATH_DEFAULT = "models"; | 51 | private String MODEL_PATH_DEFAULT = "models"; |
53 | 52 | ||
@@ -190,6 +189,8 @@ public class LwM2MTransportConfigServer { | @@ -190,6 +189,8 @@ public class LwM2MTransportConfigServer { | ||
190 | @Value("${transport.lwm2m.server.secure.alias:}") | 189 | @Value("${transport.lwm2m.server.secure.alias:}") |
191 | private String serverAlias; | 190 | private String serverAlias; |
192 | 191 | ||
192 | + | ||
193 | + | ||
193 | @PostConstruct | 194 | @PostConstruct |
194 | public void init() { | 195 | public void init() { |
195 | modelsValueServer = ObjectLoader.loadDefault(); | 196 | modelsValueServer = ObjectLoader.loadDefault(); |
@@ -276,4 +277,5 @@ public class LwM2MTransportConfigServer { | @@ -276,4 +277,5 @@ public class LwM2MTransportConfigServer { | ||
276 | ResourceModel resource = this.getResourceModel(registration, pathIds); | 277 | ResourceModel resource = this.getResourceModel(registration, pathIds); |
277 | return (resource == null) ? ResourceModel.Operations.NONE : resource.operations; | 278 | return (resource == null) ? ResourceModel.Operations.NONE : resource.operations; |
278 | } | 279 | } |
280 | + | ||
279 | } | 281 | } |
@@ -66,6 +66,13 @@ public class BaseResourceService implements ResourceService { | @@ -66,6 +66,13 @@ public class BaseResourceService implements ResourceService { | ||
66 | } | 66 | } |
67 | 67 | ||
68 | @Override | 68 | @Override |
69 | + public List<Resource> findResourcesByTenantIdResourceType(TenantId tenantId, ResourceType resourceType) { | ||
70 | + log.trace("Executing findByTenantId [{}]", tenantId); | ||
71 | + validateId(tenantId, INCORRECT_TENANT_ID + tenantId); | ||
72 | + return resourceDao.findAllByTenantIdResourceType(tenantId, resourceType); | ||
73 | + } | ||
74 | + | ||
75 | + @Override | ||
69 | public void deleteResourcesByTenantId(TenantId tenantId) { | 76 | public void deleteResourcesByTenantId(TenantId tenantId) { |
70 | log.trace("Executing deleteDevicesByTenantId, tenantId [{}]", tenantId); | 77 | log.trace("Executing deleteDevicesByTenantId, tenantId [{}]", tenantId); |
71 | validateId(tenantId, INCORRECT_TENANT_ID + tenantId); | 78 | validateId(tenantId, INCORRECT_TENANT_ID + tenantId); |
@@ -31,5 +31,7 @@ public interface ResourceDao { | @@ -31,5 +31,7 @@ public interface ResourceDao { | ||
31 | 31 | ||
32 | List<Resource> findAllByTenantId(TenantId tenantId); | 32 | List<Resource> findAllByTenantId(TenantId tenantId); |
33 | 33 | ||
34 | + List<Resource> findAllByTenantIdResourceType(TenantId tenantId, ResourceType resourceType); | ||
35 | + | ||
34 | void removeAllByTenantId(TenantId tenantId); | 36 | void removeAllByTenantId(TenantId tenantId); |
35 | } | 37 | } |
@@ -71,6 +71,11 @@ public class ResourceDaoImpl implements ResourceDao { | @@ -71,6 +71,11 @@ public class ResourceDaoImpl implements ResourceDao { | ||
71 | } | 71 | } |
72 | 72 | ||
73 | @Override | 73 | @Override |
74 | + public List<Resource> findAllByTenantIdResourceType(TenantId tenantId, ResourceType resourceType) { | ||
75 | + return DaoUtil.convertDataList(resourceRepository.findAllByTenantIdAndResourceType(tenantId.getId(), resourceType.name())); | ||
76 | + } | ||
77 | + | ||
78 | + @Override | ||
74 | public void removeAllByTenantId(TenantId tenantId) { | 79 | public void removeAllByTenantId(TenantId tenantId) { |
75 | resourceRepository.removeAllByTenantId(tenantId.getId()); | 80 | resourceRepository.removeAllByTenantId(tenantId.getId()); |
76 | } | 81 | } |
@@ -16,7 +16,6 @@ | @@ -16,7 +16,6 @@ | ||
16 | package org.thingsboard.server.dao.sql.resource; | 16 | package org.thingsboard.server.dao.sql.resource; |
17 | 17 | ||
18 | import org.springframework.data.repository.CrudRepository; | 18 | import org.springframework.data.repository.CrudRepository; |
19 | -import org.thingsboard.server.common.data.id.TenantId; | ||
20 | import org.thingsboard.server.dao.model.sql.ResourceCompositeKey; | 19 | import org.thingsboard.server.dao.model.sql.ResourceCompositeKey; |
21 | import org.thingsboard.server.dao.model.sql.ResourceEntity; | 20 | import org.thingsboard.server.dao.model.sql.ResourceEntity; |
22 | 21 | ||
@@ -27,5 +26,7 @@ public interface ResourceRepository extends CrudRepository<ResourceEntity, Resou | @@ -27,5 +26,7 @@ public interface ResourceRepository extends CrudRepository<ResourceEntity, Resou | ||
27 | 26 | ||
28 | List<ResourceEntity> findAllByTenantId(UUID tenantId); | 27 | List<ResourceEntity> findAllByTenantId(UUID tenantId); |
29 | 28 | ||
29 | + List<ResourceEntity> findAllByTenantIdAndResourceType(UUID tenantId, String resourceType); | ||
30 | + | ||
30 | void removeAllByTenantId(UUID tenantId); | 31 | void removeAllByTenantId(UUID tenantId); |
31 | } | 32 | } |