Lwm2m: backEnd: add PUT_TYPE_OPER_WRITE_UPDATE
This commit is contained in:
		
							parent
							
								
									ff56bd8863
								
							
						
					
					
						commit
						4f3707c1e1
					
				@ -99,11 +99,13 @@ public class LwM2MTransportHandler {
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces the Object Instance or the Resource(s) with the new value provided in the “Write” operation. (see
 | 
			
		||||
     * section 5.3.3 of the LW M2M spec).
 | 
			
		||||
     * if all resources are to be replaced
 | 
			
		||||
     */
 | 
			
		||||
    public static final String POST_TYPE_OPER_WRITE_REPLACE = "replace";
 | 
			
		||||
    /**
 | 
			
		||||
     * Adds or updates Resources provided in the new value and leaves other existing Resources unchanged. (see section
 | 
			
		||||
     * 5.3.3 of the LW M2M spec).
 | 
			
		||||
     * if this is a partial update request
 | 
			
		||||
     */
 | 
			
		||||
    public static final String PUT_TYPE_OPER_WRITE_UPDATE = "update";
 | 
			
		||||
    public static final String PUT_TYPE_OPER_WRITE_ATTRIBUTES = "wright-attributes";
 | 
			
		||||
@ -152,34 +154,6 @@ public class LwM2MTransportHandler {
 | 
			
		||||
        return coapConfig;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
//    public static String getValueTypeToString (Object value, ResourceModel.Type type, int val) {
 | 
			
		||||
//        try{
 | 
			
		||||
//        switch (type) {
 | 
			
		||||
//            case STRING:    // String
 | 
			
		||||
//            case OBJLNK:    // ObjectLink
 | 
			
		||||
//                return value.toString();
 | 
			
		||||
//            case INTEGER:   // Long
 | 
			
		||||
//                return Long.toString((long) value);
 | 
			
		||||
//            case BOOLEAN:   // Boolean
 | 
			
		||||
//                return Boolean.toString((Boolean) value);
 | 
			
		||||
//            case FLOAT:     // Double
 | 
			
		||||
//                return Double.toString((Double) value);
 | 
			
		||||
//            case TIME:      // Date
 | 
			
		||||
//                return Long.toString(((Date) value).getTime());
 | 
			
		||||
////                String DATE_FORMAT = "MMM d, yyyy HH:mm a";
 | 
			
		||||
////                DateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
 | 
			
		||||
////                return formatter.format(new Date(Integer.toUnsignedLong((Integer) value)));
 | 
			
		||||
//            case OPAQUE:    // byte[] value, base64
 | 
			
		||||
//                return Hex.encodeHexString((byte[])value);
 | 
			
		||||
//            default:
 | 
			
		||||
//                return null;
 | 
			
		||||
//        }
 | 
			
		||||
//        } catch (Exception e) {
 | 
			
		||||
//            log.error(e.getStackTrace().toString());
 | 
			
		||||
//            return null;
 | 
			
		||||
//        }
 | 
			
		||||
//    }
 | 
			
		||||
 | 
			
		||||
    public static boolean equalsResourceValue(Object valueOld, Object valueNew, ResourceModel.Type type, LwM2mPath resourcePath) throws CodecException {
 | 
			
		||||
        switch (type) {
 | 
			
		||||
            case BOOLEAN:
 | 
			
		||||
 | 
			
		||||
@ -20,6 +20,7 @@ import org.eclipse.californium.core.coap.Response;
 | 
			
		||||
import org.eclipse.leshan.core.attributes.Attribute;
 | 
			
		||||
import org.eclipse.leshan.core.attributes.AttributeSet;
 | 
			
		||||
import org.eclipse.leshan.core.model.ResourceModel;
 | 
			
		||||
import org.eclipse.leshan.core.node.LwM2mNode;
 | 
			
		||||
import org.eclipse.leshan.core.node.LwM2mPath;
 | 
			
		||||
import org.eclipse.leshan.core.node.LwM2mSingleResource;
 | 
			
		||||
import org.eclipse.leshan.core.node.ObjectLink;
 | 
			
		||||
@ -146,7 +147,6 @@ public class LwM2MTransportRequest {
 | 
			
		||||
                    break;
 | 
			
		||||
                case POST_TYPE_OPER_EXECUTE:
 | 
			
		||||
                    if (params != null && resource != null && !resource.multiple) {
 | 
			
		||||
//                        request = new ExecuteRequest(target, LwM2MTransportHandler.getValueTypeToString(params, resType));
 | 
			
		||||
                        request = new ExecuteRequest(target, (String) this.converter.convertValue(params, resource.type, ResourceModel.Type.STRING, resultIds));
 | 
			
		||||
                    } else {
 | 
			
		||||
                        request = new ExecuteRequest(target);
 | 
			
		||||
@ -168,7 +168,8 @@ public class LwM2MTransportRequest {
 | 
			
		||||
                    if (resultIds.getResourceId() >= 0) {
 | 
			
		||||
                        ResourceModel resourceModel = lwServer.getModelProvider().getObjectModel(registration).getObjectModel(resultIds.getObjectId()).resources.get(resultIds.getResourceId());
 | 
			
		||||
                        ResourceModel.Type typeRes = resourceModel.type;
 | 
			
		||||
//                        request = getWriteRequestResource(resultIds.getObjectId(), resultIds.getInstanceId(), resultIds.getResourceId(), params, typeRes);
 | 
			
		||||
                        LwM2mNode node = LwM2mSingleResource.newStringResource(resultIds.getResourceId(), (String) this.converter.convertValue(params, resource.type, ResourceModel.Type.STRING, resultIds));
 | 
			
		||||
                        request = new WriteRequest(WriteRequest.Mode.UPDATE, contentFormat, target, node);
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                case PUT_TYPE_OPER_WRITE_ATTRIBUTES:
 | 
			
		||||
 | 
			
		||||
@ -515,7 +515,6 @@ public class LwM2MTransportService {
 | 
			
		||||
    private void getParametersFromProfile(JsonObject attributes, JsonObject telemetry, Registration registration, Set<String> path) {
 | 
			
		||||
        AttrTelemetryObserveValue attrTelemetryObserveValue = lwM2mInMemorySecurityStore.getProfiles().get(lwM2mInMemorySecurityStore.getSessions().get(registration.getId()).getProfileUuid());
 | 
			
		||||
        attrTelemetryObserveValue.getPostAttributeProfile().forEach(p -> {
 | 
			
		||||
//            ResultIds pathIds = new ResultIds(p.getAsString().toString());
 | 
			
		||||
            LwM2mPath pathIds = new LwM2mPath(p.getAsString().toString());
 | 
			
		||||
            if (pathIds.isResource()) {
 | 
			
		||||
                if (path == null || path.contains(p.getAsString())) {
 | 
			
		||||
@ -524,7 +523,6 @@ public class LwM2MTransportService {
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        attrTelemetryObserveValue.getPostTelemetryProfile().forEach(p -> {
 | 
			
		||||
//            ResultIds pathIds = new ResultIds(p.getAsString().toString());
 | 
			
		||||
            LwM2mPath pathIds = new LwM2mPath(p.getAsString().toString());
 | 
			
		||||
            if (pathIds.isResource()) {
 | 
			
		||||
                if (path == null || path.contains(p.getAsString())) {
 | 
			
		||||
@ -545,10 +543,8 @@ public class LwM2MTransportService {
 | 
			
		||||
        if (resName != null && !resName.isEmpty()) {
 | 
			
		||||
            String resValue = null;
 | 
			
		||||
            try {
 | 
			
		||||
//                resValue = lwM2mInMemorySecurityStore.getSessions().get(registration.getId()).getResourceValueString(path);
 | 
			
		||||
                resValue = this.getResourceValueToString(lwM2MClient, path);
 | 
			
		||||
                if (resValue != null) {
 | 
			
		||||
//                    log.info("addParameters Path: [{}] ResValue : [{}] nameParam [{}]", path, lwM2mInMemorySecurityStore.getSessions().get(registration.getId()).getResourceValue(path), nameParam);
 | 
			
		||||
                    parameters.addProperty(resName, resValue);
 | 
			
		||||
                }
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
@ -1061,10 +1057,7 @@ public class LwM2MTransportService {
 | 
			
		||||
     */
 | 
			
		||||
    private void updateResourceValueObserve(LeshanServer lwServer, Registration registration, LwM2MClient lwM2MClient, Set<String> targets, String typeOper) {
 | 
			
		||||
        targets.forEach(target -> {
 | 
			
		||||
//            ResultIds pathIds = new ResultIds(target);
 | 
			
		||||
            LwM2mPath pathIds = new LwM2mPath(target);
 | 
			
		||||
//            if (pathIds.isResource() && lwM2MClient.getModelObjects().get(pathIds.getObjectId())
 | 
			
		||||
//                    .getInstances().get(pathIds.getObjectInstanceId()).getResource(pathIds.getResourceId()).getValue() != null) {
 | 
			
		||||
            if (pathIds.isResource()) {
 | 
			
		||||
                if (GET_TYPE_OPER_READ.equals(typeOper)) {
 | 
			
		||||
                    lwM2MTransportRequest.sendAllRequest(lwServer, registration, target, typeOper,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user