Commit 090babdf70a6be80565ef749af1889c11db00f48

Authored by nickAS21
1 parent 712bab43

lwm2m: back add resource(s)

... ... @@ -30,6 +30,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
30 30 import org.springframework.web.bind.annotation.RestController;
31 31 import org.thingsboard.server.common.data.TbResource;
32 32 import org.thingsboard.server.common.data.TbResourceInfo;
  33 +import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
33 34 import org.thingsboard.server.common.data.exception.ThingsboardException;
34 35 import org.thingsboard.server.common.data.id.TbResourceId;
35 36 import org.thingsboard.server.common.data.lwm2m.LwM2mObject;
... ... @@ -41,8 +42,10 @@ import org.thingsboard.server.queue.util.TbCoreComponent;
41 42 import org.thingsboard.server.service.security.permission.Operation;
42 43 import org.thingsboard.server.service.security.permission.Resource;
43 44
  45 +import java.util.ArrayList;
44 46 import java.util.Base64;
45 47 import java.util.List;
  48 +import java.util.StringJoiner;
46 49
47 50 @Slf4j
48 51 @RestController
... ... @@ -108,13 +111,22 @@ public class TbResourceController extends BaseController {
108 111 @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')")
109 112 @RequestMapping(value = "/resource", method = RequestMethod.POST)
110 113 @ResponseBody
111   - public TbResource saveResource(@RequestBody TbResource resource) throws ThingsboardException {
  114 + public List<TbResource> saveResources(@RequestBody List<TbResource> resources) throws ThingsboardException {
112 115 try {
113   - resource.setTenantId(getTenantId());
114   - checkEntity(resource.getId(), resource, Resource.TB_RESOURCE);
115   - TbResource savedResource = checkNotNull(resourceService.saveResource(resource));
116   - tbClusterService.onResourceChange(savedResource, null);
117   - return savedResource;
  116 + List<TbResource> addResources = new ArrayList<>();
  117 + StringJoiner noSaveResources = new StringJoiner("; ");
  118 + resources.forEach(resource -> {
  119 + try {
  120 + addResources.add(addResource(resource));
  121 + } catch (Exception e) {
  122 + noSaveResources.add(resource.getFileName());
  123 + log.warn("Fail save resource: [{}]", resource.getFileName(), e);
  124 + }
  125 + });
  126 + if (noSaveResources.length() > 0) {
  127 + throw new ThingsboardException(String.format("Fail save resource: %s", noSaveResources.toString()), ThingsboardErrorCode.INVALID_ARGUMENTS);
  128 + }
  129 + return addResources;
118 130 } catch (Exception e) {
119 131 throw handleException(e);
120 132 }
... ... @@ -183,4 +195,12 @@ public class TbResourceController extends BaseController {
183 195 throw handleException(e);
184 196 }
185 197 }
186   -}
  198 +
  199 + private TbResource addResource(TbResource resource) throws Exception {
  200 + resource.setTenantId(getTenantId());
  201 + checkEntity(resource.getId(), resource, Resource.TB_RESOURCE);
  202 + TbResource savedResource = checkNotNull(resourceService.saveResource(resource));
  203 + tbClusterService.onResourceChange(savedResource, null);
  204 + return savedResource;
  205 + }
  206 +}
\ No newline at end of file
... ...
... ... @@ -596,8 +596,7 @@ transport:
596 596 timeout: "${LWM2M_TIMEOUT:120000}"
597 597 recommended_ciphers: "${LWM2M_RECOMMENDED_CIPHERS:false}"
598 598 recommended_supported_groups: "${LWM2M_RECOMMENDED_SUPPORTED_GROUPS:true}"
599   - request_pool_size: "${LWM2M_REQUEST_POOL_SIZE:100}"
600   - request_error_pool_size: "${LWM2M_REQUEST_ERROR_POOL_SIZE:10}"
  599 + response_pool_size: "${LWM2M_RESPONSE_POOL_SIZE:100}"
601 600 registered_pool_size: "${LWM2M_REGISTERED_POOL_SIZE:10}"
602 601 update_registered_pool_size: "${LWM2M_UPDATE_REGISTERED_POOL_SIZE:10}"
603 602 un_registered_pool_size: "${LWM2M_UN_REGISTERED_POOL_SIZE:10}"
... ... @@ -606,8 +605,7 @@ transport:
606 605 # To get helps about files format and how to generate it, see: https://github.com/eclipse/leshan/wiki/Credential-files-format
607 606 # Create new X509 Certificates: common/transport/lwm2m/src/main/resources/credentials/shell/lwM2M_credentials.sh
608 607 key_store_type: "${LWM2M_KEYSTORE_TYPE:JKS}"
609   - # key_store_type: "${LWM2M_KEYSTORE_TYPE:PKCS12}"
610   -# key_store_path_file: "${KEY_STORE_PATH_FILE:/common/transport/lwm2m/src/main/resources/credentials/serverKeyStore.jks"
  608 + # key_store_path_file: "${KEY_STORE_PATH_FILE:/common/transport/lwm2m/src/main/resources/credentials/serverKeyStore.jks"
611 609 key_store_path_file: "${KEY_STORE_PATH_FILE:}"
612 610 key_store_password: "${LWM2M_KEYSTORE_PASSWORD_SERVER:server_ks_password}"
613 611 root_alias: "${LWM2M_SERVER_ROOT_CA:rootca}"
... ... @@ -626,24 +624,26 @@ transport:
626 624 # - Elliptic Curve parameters : [secp256r1 [NIST P-256, X9.62 prime256v1] (1.2.840.10045.3.1.7)]
627 625 public_x: "${LWM2M_SERVER_PUBLIC_X:05064b9e6762dd8d8b8a52355d7b4d8b9a3d64e6d2ee277d76c248861353f358}"
628 626 public_y: "${LWM2M_SERVER_PUBLIC_Y:5eeb1838e4f9e37b31fa347aef5ce3431eb54e0a2506910c5e0298817445721b}"
629   - private_encoded: "${LWM2M_SERVER_PRIVATE_ENCODED:308193020100301306072a8648ce3d020106082a8648ce3d030107047930770201010420dc774b309e547ceb48fee547e104ce201a9c48c449dc5414cd04e7f5cf05f67ba00a06082a8648ce3d030107a1440342000405064b9e6762dd8d8b8a52355d7b4d8b9a3d64e6d2ee277d76c248861353f3585eeb1838e4f9e37b31fa347aef5ce3431eb54e0a2506910c5e0298817445721b}" # Only Certificate_x509:
  627 + private_encoded: "${LWM2M_SERVER_PRIVATE_ENCODED:308193020100301306072a8648ce3d020106082a8648ce3d030107047930770201010420dc774b309e547ceb48fee547e104ce201a9c48c449dc5414cd04e7f5cf05f67ba00a06082a8648ce3d030107a1440342000405064b9e6762dd8d8b8a52355d7b4d8b9a3d64e6d2ee277d76c248861353f3585eeb1838e4f9e37b31fa347aef5ce3431eb54e0a2506910c5e0298817445721b}"
  628 + # Only Certificate_x509:
630 629 alias: "${LWM2M_KEYSTORE_ALIAS_SERVER:server}"
631 630 bootstrap:
632   - enable: "${LWM2M_BOOTSTRAP_ENABLED:true}"
633   - id: "${LWM2M_SERVER_ID:111}"
  631 + enable: "${LWM2M_ENABLED_BS:true}"
  632 + id: "${LWM2M_SERVER_ID_BS:111}"
634 633 bind_address: "${LWM2M_BIND_ADDRESS_BS:0.0.0.0}"
635 634 bind_port_no_sec: "${LWM2M_BIND_PORT_NO_SEC_BS:5687}"
636 635 secure:
637 636 bind_address_security: "${LWM2M_BIND_ADDRESS_BS:0.0.0.0}"
638   - bind_port_security: "${LWM2M_BIND_PORT_SEC_BS:5688}"
  637 + bind_port_security: "${LWM2M_BIND_PORT_SECURITY_BS:5688}"
639 638 # Only for RPK: Public & Private Key. If the keystore file is missing or not working
640 639 # - Elliptic Curve parameters : [secp256r1 [NIST P-256, X9.62 prime256v1] (1.2.840.10045.3.1.7)]
641 640 # - Public Key (Hex): [3059301306072a8648ce3d020106082a8648ce3d030107034200045017c87a1c1768264656b3b355434b0def6edb8b9bf166a4762d9930cd730f913fc4e61bcd8901ec27c424114c3e887ed372497f0c2cf85839b8443e76988b34]
642 641 # - Private Key (Hex): [308193020100301306072a8648ce3d020106082a8648ce3d0301070479307702010104205ecafd90caa7be45c42e1f3f32571632b8409e6e6249d7124f4ba56fab3c8083a00a06082a8648ce3d030107a144034200045017c87a1c1768264656b3b355434b0def6edb8b9bf166a4762d9930cd730f913fc4e61bcd8901ec27c424114c3e887ed372497f0c2cf85839b8443e76988b34],
643 642 public_x: "${LWM2M_SERVER_PUBLIC_X_BS:5017c87a1c1768264656b3b355434b0def6edb8b9bf166a4762d9930cd730f91}"
644 643 public_y: "${LWM2M_SERVER_PUBLIC_Y_BS:3fc4e61bcd8901ec27c424114c3e887ed372497f0c2cf85839b8443e76988b34}"
645   - private_encoded: "${LWM2M_SERVER_PRIVATE_ENCODED_BS:308193020100301306072a8648ce3d020106082a8648ce3d0301070479307702010104205ecafd90caa7be45c42e1f3f32571632b8409e6e6249d7124f4ba56fab3c8083a00a06082a8648ce3d030107a144034200045017c87a1c1768264656b3b355434b0def6edb8b9bf166a4762d9930cd730f913fc4e61bcd8901ec27c424114c3e887ed372497f0c2cf85839b8443e76988b34}" # Only Certificate_x509:
646   - alias: "${LWM2M_KEYSTORE_ALIAS_BOOTSTRAP:bootstrap}"
  644 + private_encoded: "${LWM2M_SERVER_PRIVATE_ENCODED_BS:308193020100301306072a8648ce3d020106082a8648ce3d0301070479307702010104205ecafd90caa7be45c42e1f3f32571632b8409e6e6249d7124f4ba56fab3c8083a00a06082a8648ce3d030107a144034200045017c87a1c1768264656b3b355434b0def6edb8b9bf166a4762d9930cd730f913fc4e61bcd8901ec27c424114c3e887ed372497f0c2cf85839b8443e76988b34}"
  645 + # Only Certificate_x509:
  646 + alias: "${LWM2M_KEYSTORE_ALIAS_BS:bootstrap}"
647 647 # Use redis for Security and Registration stores
648 648 redis.enabled: "${LWM2M_REDIS_ENABLED:false}"
649 649
... ...
... ... @@ -101,7 +101,7 @@ public class LwM2mTransportRequest {
101 101 @PostConstruct
102 102 public void init() {
103 103 this.converter = LwM2mValueConverterImpl.getInstance();
104   - executorResponse = Executors.newFixedThreadPool(this.lwM2mTransportContextServer.getLwM2MTransportConfigServer().getRequestPoolSize(),
  104 + executorResponse = Executors.newFixedThreadPool(this.lwM2mTransportContextServer.getLwM2MTransportConfigServer().getResponsePoolSize(),
105 105 new NamedThreadFactory(String.format("LwM2M %s channel response", RESPONSE_CHANNEL)));
106 106 }
107 107
... ...
... ... @@ -92,12 +92,8 @@ public class LwM2MTransportConfigServer {
92 92 private boolean recommendedSupportedGroups;
93 93
94 94 @Getter
95   - @Value("${transport.lwm2m.request_pool_size:}")
96   - private int requestPoolSize;
97   -
98   - @Getter
99   - @Value("${transport.lwm2m.request_error_pool_size:}")
100   - private int requestErrorPoolSize;
  95 + @Value("${transport.lwm2m.response_pool_size:}")
  96 + private int responsePoolSize;
101 97
102 98 @Getter
103 99 @Value("${transport.lwm2m.registered_pool_size:}")
... ...
... ... @@ -129,8 +129,7 @@ transport:
129 129 timeout: "${LWM2M_TIMEOUT:120000}"
130 130 recommended_ciphers: "${LWM2M_RECOMMENDED_CIPHERS:false}"
131 131 recommended_supported_groups: "${LWM2M_RECOMMENDED_SUPPORTED_GROUPS:true}"
132   - request_pool_size: "${LWM2M_REQUEST_POOL_SIZE:100}"
133   - request_error_pool_size: "${LWM2M_REQUEST_ERROR_POOL_SIZE:10}"
  132 + response_pool_size: "${LWM2M_RESPONSE_POOL_SIZE:100}"
134 133 registered_pool_size: "${LWM2M_REGISTERED_POOL_SIZE:10}"
135 134 update_registered_pool_size: "${LWM2M_UPDATE_REGISTERED_POOL_SIZE:10}"
136 135 un_registered_pool_size: "${LWM2M_UN_REGISTERED_POOL_SIZE:10}"
... ... @@ -139,8 +138,7 @@ transport:
139 138 # To get helps about files format and how to generate it, see: https://github.com/eclipse/leshan/wiki/Credential-files-format
140 139 # Create new X509 Certificates: common/transport/lwm2m/src/main/resources/credentials/shell/lwM2M_credentials.sh
141 140 key_store_type: "${LWM2M_KEYSTORE_TYPE:JKS}"
142   - # key_store_type: "${LWM2M_KEYSTORE_TYPE:PKCS12}"
143   - # key_store_path_file: "${KEY_STORE_PATH_FILE:/transport/lwm2m/src/main/data/credentials/serverKeyStore.jks}"
  141 + # key_store_path_file: "${KEY_STORE_PATH_FILE:/transport/lwm2m/src/main/data/credentials/serverKeyStore.jks}"
144 142 key_store_path_file: "${KEY_STORE_PATH_FILE:}"
145 143 key_store_password: "${LWM2M_KEYSTORE_PASSWORD_SERVER:server_ks_password}"
146 144 root_alias: "${LWM2M_SERVER_ROOT_CA:rootca}"
... ... @@ -159,24 +157,26 @@ transport:
159 157 # - Elliptic Curve parameters : [secp256r1 [NIST P-256, X9.62 prime256v1] (1.2.840.10045.3.1.7)]
160 158 public_x: "${LWM2M_SERVER_PUBLIC_X:05064b9e6762dd8d8b8a52355d7b4d8b9a3d64e6d2ee277d76c248861353f358}"
161 159 public_y: "${LWM2M_SERVER_PUBLIC_Y:5eeb1838e4f9e37b31fa347aef5ce3431eb54e0a2506910c5e0298817445721b}"
162   - private_encoded: "${LWM2M_SERVER_PRIVATE_ENCODED:308193020100301306072a8648ce3d020106082a8648ce3d030107047930770201010420dc774b309e547ceb48fee547e104ce201a9c48c449dc5414cd04e7f5cf05f67ba00a06082a8648ce3d030107a1440342000405064b9e6762dd8d8b8a52355d7b4d8b9a3d64e6d2ee277d76c248861353f3585eeb1838e4f9e37b31fa347aef5ce3431eb54e0a2506910c5e0298817445721b}" # Only Certificate_x509:
  160 + private_encoded: "${LWM2M_SERVER_PRIVATE_ENCODED:308193020100301306072a8648ce3d020106082a8648ce3d030107047930770201010420dc774b309e547ceb48fee547e104ce201a9c48c449dc5414cd04e7f5cf05f67ba00a06082a8648ce3d030107a1440342000405064b9e6762dd8d8b8a52355d7b4d8b9a3d64e6d2ee277d76c248861353f3585eeb1838e4f9e37b31fa347aef5ce3431eb54e0a2506910c5e0298817445721b}"
  161 + # Only Certificate_x509:
163 162 alias: "${LWM2M_KEYSTORE_ALIAS_SERVER:server}"
164 163 bootstrap:
165   - enable: "${LWM2M_BOOTSTRAP_ENABLED:true}"
166   - id: "${LWM2M_SERVER_ID:111}"
  164 + enable: "${LWM2M_ENABLED_BS:true}"
  165 + id: "${LWM2M_SERVER_ID_BS:111}"
167 166 bind_address: "${LWM2M_BIND_ADDRESS_BS:0.0.0.0}"
168 167 bind_port_no_sec: "${LWM2M_BIND_PORT_NO_SEC_BS:5687}"
169 168 secure:
170 169 bind_address_security: "${LWM2M_BIND_ADDRESS_BS:0.0.0.0}"
171   - bind_port_security: "${LWM2M_BIND_PORT_SEC_BS:5688}"
  170 + bind_port_security: "${LWM2M_BIND_PORT_SECURITY_BS:5688}"
172 171 # Only for RPK: Public & Private Key. If the keystore file is missing or not working
173 172 # - Elliptic Curve parameters : [secp256r1 [NIST P-256, X9.62 prime256v1] (1.2.840.10045.3.1.7)]
174 173 # - Public Key (Hex): [3059301306072a8648ce3d020106082a8648ce3d030107034200045017c87a1c1768264656b3b355434b0def6edb8b9bf166a4762d9930cd730f913fc4e61bcd8901ec27c424114c3e887ed372497f0c2cf85839b8443e76988b34]
175 174 # - Private Key (Hex): [308193020100301306072a8648ce3d020106082a8648ce3d0301070479307702010104205ecafd90caa7be45c42e1f3f32571632b8409e6e6249d7124f4ba56fab3c8083a00a06082a8648ce3d030107a144034200045017c87a1c1768264656b3b355434b0def6edb8b9bf166a4762d9930cd730f913fc4e61bcd8901ec27c424114c3e887ed372497f0c2cf85839b8443e76988b34],
176 175 public_x: "${LWM2M_SERVER_PUBLIC_X_BS:5017c87a1c1768264656b3b355434b0def6edb8b9bf166a4762d9930cd730f91}"
177 176 public_y: "${LWM2M_SERVER_PUBLIC_Y_BS:3fc4e61bcd8901ec27c424114c3e887ed372497f0c2cf85839b8443e76988b34}"
178   - private_encoded: "${LWM2M_SERVER_PRIVATE_ENCODED_BS:308193020100301306072a8648ce3d020106082a8648ce3d0301070479307702010104205ecafd90caa7be45c42e1f3f32571632b8409e6e6249d7124f4ba56fab3c8083a00a06082a8648ce3d030107a144034200045017c87a1c1768264656b3b355434b0def6edb8b9bf166a4762d9930cd730f913fc4e61bcd8901ec27c424114c3e887ed372497f0c2cf85839b8443e76988b34}" # Only Certificate_x509:
179   - alias: "${LWM2M_KEYSTORE_ALIAS_BOOTSTRAP:bootstrap}"
  177 + private_encoded: "${LWM2M_SERVER_PRIVATE_ENCODED_BS:308193020100301306072a8648ce3d020106082a8648ce3d0301070479307702010104205ecafd90caa7be45c42e1f3f32571632b8409e6e6249d7124f4ba56fab3c8083a00a06082a8648ce3d030107a144034200045017c87a1c1768264656b3b355434b0def6edb8b9bf166a4762d9930cd730f913fc4e61bcd8901ec27c424114c3e887ed372497f0c2cf85839b8443e76988b34}"
  178 + # Only Certificate_x509:
  179 + alias: "${LWM2M_KEYSTORE_ALIAS_BS:bootstrap}"
180 180 # Use redis for Security and Registration stores
181 181 redis.enabled: "${LWM2M_REDIS_ENABLED:false}"
182 182
... ...