Commit d8ea6ac37d568bb31be72fa4115e15e1691d2789
1 parent
447bf05b
Lwm2m: back: add tenantId and repositoryTenant - test3
Showing
5 changed files
with
59 additions
and
6 deletions
... | ... | @@ -52,6 +52,8 @@ import org.thingsboard.server.transport.lwm2m.server.adaptors.LwM2MJsonAdaptor; |
52 | 52 | |
53 | 53 | import java.util.List; |
54 | 54 | import java.util.UUID; |
55 | +import java.util.concurrent.CountDownLatch; | |
56 | +import java.util.concurrent.TimeUnit; | |
55 | 57 | |
56 | 58 | import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportHandler.LOG_LW2M_TELEMETRY; |
57 | 59 | |
... | ... | @@ -152,7 +154,7 @@ public class LwM2mTransportContextServer extends TransportContext { |
152 | 154 | * @return |
153 | 155 | */ |
154 | 156 | public GetResourcesResponseMsg getResourceTenant (UUID tenantId, String resourceType) { |
155 | - | |
157 | + CountDownLatch latch = new CountDownLatch(1); | |
156 | 158 | GetResourcesResponseMsg responseMsg = |
157 | 159 | this.getTransportService() |
158 | 160 | .getResources(GetResourcesRequestMsg.newBuilder() |
... | ... | @@ -160,7 +162,41 @@ public class LwM2mTransportContextServer extends TransportContext { |
160 | 162 | .setTenantIdLSB(tenantId.getLeastSignificantBits()) |
161 | 163 | .setTenantIdMSB(tenantId.getMostSignificantBits()) |
162 | 164 | .build()); |
165 | + latch.countDown(); | |
166 | + try { | |
167 | + latch.await(this.getLwM2MTransportConfigServer().getTimeout(), TimeUnit.MILLISECONDS); | |
168 | + } catch (InterruptedException e) { | |
169 | + log.error("Failed to await credentials!", e); | |
170 | + } | |
171 | + | |
163 | 172 | return responseMsg; |
164 | 173 | } |
165 | 174 | |
175 | + public GetResourcesResponseMsg getResourceTenantProcess (UUID tenantId, String resourceType) { | |
176 | + CountDownLatch latch = new CountDownLatch(2); | |
177 | + final GetResourcesResponseMsg[] responseMsg = {null}; | |
178 | + this.getTransportService().process(GetResourcesRequestMsg.newBuilder() | |
179 | + .setResourceType(resourceType) | |
180 | + .setTenantIdLSB(tenantId.getLeastSignificantBits()) | |
181 | + .setTenantIdMSB(tenantId.getMostSignificantBits()) | |
182 | + .build(), | |
183 | + new TransportServiceCallback<>() { | |
184 | + @Override | |
185 | + public void onSuccess(GetResourcesResponseMsg msg) { responseMsg[0] = msg; | |
186 | + latch.countDown(); | |
187 | + } | |
188 | + | |
189 | + @Override | |
190 | + public void onError(Throwable e) { | |
191 | + log.trace("[{}] [{}] Failed to process credentials ", tenantId, e); | |
192 | + latch.countDown(); | |
193 | + } | |
194 | + }); | |
195 | + try { | |
196 | + latch.await(this.getLwM2MTransportConfigServer().getTimeout(), TimeUnit.MILLISECONDS); | |
197 | + } catch (InterruptedException e) { | |
198 | + log.error("Failed to await credentials!", e); | |
199 | + } | |
200 | + return responseMsg[0]; | |
201 | + } | |
166 | 202 | } | ... | ... |
... | ... | @@ -101,7 +101,8 @@ public class LwM2mTransportServerConfiguration { |
101 | 101 | builder.setCoapConfig(getCoapConfig(serverPortNoSec, serverSecurePort)); |
102 | 102 | |
103 | 103 | /** Define model provider (Create Models )*/ |
104 | - TransportProtos.GetResourcesResponseMsg responseMsg= this.context.getResourceTenant(TenantId.SYS_TENANT_ID.getId(), ResourceType.LWM2M_MODEL.name()); | |
104 | + TransportProtos.GetResourcesResponseMsg responseMsg= this.context.getResourceTenantProcess(TenantId.SYS_TENANT_ID.getId(), ResourceType.LWM2M_MODEL.name()); | |
105 | +// TransportProtos.GetResourcesResponseMsg responseMsg= this.context.getResourceTenant(TenantId.SYS_TENANT_ID.getId(), ResourceType.LWM2M_MODEL.name()); | |
105 | 106 | // LwM2mModelProvider modelProvider = new VersionedModelProvider(this.context.getLwM2MTransportConfigServer().getModelsValueCommon()); |
106 | 107 | LwM2mModelProvider modelProvider = new LwM2mVersionedModelProvider(this.context.getLwM2MTransportConfigServer().getModelsValueServer(), this.lwM2mClientContext); |
107 | 108 | builder.setObjectModelProvider(modelProvider); | ... | ... |
... | ... | @@ -40,6 +40,8 @@ import org.springframework.stereotype.Service; |
40 | 40 | import org.thingsboard.common.util.JacksonUtil; |
41 | 41 | import org.thingsboard.server.common.data.Device; |
42 | 42 | import org.thingsboard.server.common.data.DeviceProfile; |
43 | +import org.thingsboard.server.common.data.id.TenantId; | |
44 | +import org.thingsboard.server.common.data.transport.resource.ResourceType; | |
43 | 45 | import org.thingsboard.server.common.transport.TransportService; |
44 | 46 | import org.thingsboard.server.common.transport.adaptor.AdaptorException; |
45 | 47 | import org.thingsboard.server.common.transport.adaptor.JsonConverter; |
... | ... | @@ -154,7 +156,10 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService { |
154 | 156 | try { |
155 | 157 | log.warn("[{}] [{{}] Client: create after Registration", registration.getEndpoint(), registration.getId()); |
156 | 158 | ((LwM2mVersionedModelProvider)leshanServer.getModelProvider()).setRepository(this.lwM2mTransportContextServer.getLwM2MTransportConfigServer().getModelsValueCommon()); |
157 | -// (((VersionedModelProvider) (leshanServer)).modelProvider).repository; | |
159 | + TransportProtos.GetResourcesResponseMsg responseMsg= this.lwM2mTransportContextServer.getResourceTenantProcess(TenantId.SYS_TENANT_ID.getId(), ResourceType.LWM2M_MODEL.name()); | |
160 | +// TransportProtos.GetResourcesResponseMsg responseMsg= this.lwM2mTransportContextServer.getResourceTenant(TenantId.SYS_TENANT_ID.getId(), ResourceType.LWM2M_MODEL.name()); | |
161 | + | |
162 | + // (((VersionedModelProvider) (leshanServer)).modelProvider).repository; | |
158 | 163 | LwM2mClient lwM2MClient = this.lwM2mClientContext.updateInSessionsLwM2MClient(registration); |
159 | 164 | if (lwM2MClient != null) { |
160 | 165 | SessionInfoProto sessionInfo = this.getValidateSessionInfo(registration); | ... | ... |
... | ... | @@ -75,8 +75,9 @@ public interface TransportService { |
75 | 75 | |
76 | 76 | void onProfileUpdate(DeviceProfile deviceProfile); |
77 | 77 | |
78 | - void process(LwM2MRequestMsg msg, | |
79 | - TransportServiceCallback<LwM2MResponseMsg> callback); | |
78 | + void process(LwM2MRequestMsg msg, TransportServiceCallback<LwM2MResponseMsg> callback); | |
79 | + | |
80 | + void process(GetResourcesRequestMsg msg, TransportServiceCallback<GetResourcesResponseMsg> callback); | |
80 | 81 | |
81 | 82 | void process(SessionInfoProto sessionInfo, SessionEventMsg msg, TransportServiceCallback<Void> callback); |
82 | 83 | ... | ... |
... | ... | @@ -61,7 +61,6 @@ import org.thingsboard.server.common.transport.util.JsonUtils; |
61 | 61 | import org.thingsboard.server.gen.transport.TransportProtos; |
62 | 62 | import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceRequestMsg; |
63 | 63 | import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceResponseMsg; |
64 | -import org.thingsboard.server.gen.transport.TransportProtos.SessionInfoProto; | |
65 | 64 | import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg; |
66 | 65 | import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg; |
67 | 66 | import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg; |
... | ... | @@ -267,6 +266,16 @@ public class DefaultTransportService implements TransportService { |
267 | 266 | } |
268 | 267 | |
269 | 268 | @Override |
269 | + public void process(TransportProtos.GetResourcesRequestMsg msg, TransportServiceCallback<TransportProtos.GetResourcesResponseMsg> callback) { | |
270 | + log.trace("Processing msg: {}", msg); | |
271 | + TbProtoQueueMsg<TransportProtos.TransportApiRequestMsg> protoMsg = | |
272 | + new TbProtoQueueMsg<>(UUID.randomUUID(), TransportProtos.TransportApiRequestMsg.newBuilder().setResourcesRequestMsg(msg).build()); | |
273 | + AsyncCallbackTemplate.withCallback(transportApiRequestTemplate.send(protoMsg), | |
274 | + response -> callback.onSuccess(response.getValue().getResourcesResponseMsg()), callback::onError, transportCallbackExecutor); | |
275 | + } | |
276 | + | |
277 | + | |
278 | + @Override | |
270 | 279 | public void process(DeviceTransportType transportType, TransportProtos.ValidateDeviceTokenRequestMsg msg, |
271 | 280 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { |
272 | 281 | log.trace("Processing msg: {}", msg); |
... | ... | @@ -292,6 +301,7 @@ public class DefaultTransportService implements TransportService { |
292 | 301 | response -> callback.onSuccess(response.getValue().getValidateCredResponseMsg()), callback::onError, transportCallbackExecutor); |
293 | 302 | } |
294 | 303 | |
304 | + @Override | |
295 | 305 | public void process(DeviceTransportType transportType, TransportProtos.ValidateDeviceX509CertRequestMsg msg, TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { |
296 | 306 | log.trace("Processing msg: {}", msg); |
297 | 307 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), TransportApiRequestMsg.newBuilder().setValidateX509CertRequestMsg(msg).build()); | ... | ... |