Search in sources :

Example 1 with LazyField

use of com.infiniteautomation.mango.util.LazyField in project ma-core-public by infiniteautomation.

the class LazyFieldJsonTest method testLazyPermissionFromJsonObject.

@Test
public void testLazyPermissionFromJsonObject() {
    RoleService roleService = Common.getBean(RoleService.class);
    PermissionService permissionService = Common.getBean(PermissionService.class);
    Role role1 = roleService.insert(new RoleVO(Common.NEW_ID, "XID-1", "Role 1")).getRole();
    Role role2 = roleService.insert(new RoleVO(Common.NEW_ID, "XID-2", "Role 2")).getRole();
    LazyField<MangoPermission> permission = new LazyField<>(() -> MangoPermission.builder().minterm(role1, role2).build());
    try (StringWriter stringWriter = new StringWriter()) {
        JsonWriter writer = new JsonWriter(Common.JSON_CONTEXT, stringWriter);
        JsonTypeWriter typeWriter = new JsonTypeWriter(Common.JSON_CONTEXT);
        JsonValue value = typeWriter.writeObject(permission);
        writer.setPrettyIndent(0);
        writer.setPrettyOutput(true);
        writer.writeObject(value);
        String json = stringWriter.toString();
        JsonTypeReader typeReader = new JsonTypeReader(json);
        JsonValue read = typeReader.read();
        JsonArray root = read.toJsonArray();
        JsonReader reader = new JsonReader(Common.JSON_CONTEXT, root);
        ImportContext context = new ImportContext(reader, new ProcessResult(), Common.getTranslations());
        LazyField<MangoPermission> readPermission = new LazyField<>();
        TypeDefinition lazyType = new TypeDefinition(LazyField.class, MangoPermission.class);
        context.getReader().readInto(lazyType, readPermission, root);
        assertEquals(permission.get(), readPermission.get());
    } catch (IOException | JsonException e) {
        e.printStackTrace();
        fail(e.getMessage());
    }
}
Also used : JsonException(com.serotonin.json.JsonException) LazyField(com.infiniteautomation.mango.util.LazyField) JsonValue(com.serotonin.json.type.JsonValue) ProcessResult(com.serotonin.m2m2.i18n.ProcessResult) IOException(java.io.IOException) JsonWriter(com.serotonin.json.JsonWriter) JsonTypeWriter(com.serotonin.json.type.JsonTypeWriter) TypeDefinition(com.serotonin.json.util.TypeDefinition) PermissionService(com.infiniteautomation.mango.spring.service.PermissionService) Role(com.serotonin.m2m2.vo.role.Role) JsonArray(com.serotonin.json.type.JsonArray) ImportContext(com.infiniteautomation.mango.emport.ImportContext) RoleVO(com.serotonin.m2m2.vo.role.RoleVO) RoleService(com.infiniteautomation.mango.spring.service.RoleService) StringWriter(java.io.StringWriter) JsonReader(com.serotonin.json.JsonReader) JsonTypeReader(com.serotonin.json.type.JsonTypeReader) MangoPermission(com.infiniteautomation.mango.permission.MangoPermission) Test(org.junit.Test)

Example 2 with LazyField

use of com.infiniteautomation.mango.util.LazyField in project ma-core-public by infiniteautomation.

the class LazyFieldConverter method jsonRead.

@Override
public void jsonRead(JsonReader reader, JsonValue jsonValue, Object obj, Type type) throws JsonException {
    @SuppressWarnings("unchecked") LazyField<Object> field = (LazyField<Object>) obj;
    Type innerType = TypeUtils.getActualTypeArgument(type, 0);
    field.set(reader.read(innerType, jsonValue));
}
Also used : Type(java.lang.reflect.Type) LazyField(com.infiniteautomation.mango.util.LazyField)

Aggregations

LazyField (com.infiniteautomation.mango.util.LazyField)2 ImportContext (com.infiniteautomation.mango.emport.ImportContext)1 MangoPermission (com.infiniteautomation.mango.permission.MangoPermission)1 PermissionService (com.infiniteautomation.mango.spring.service.PermissionService)1 RoleService (com.infiniteautomation.mango.spring.service.RoleService)1 JsonException (com.serotonin.json.JsonException)1 JsonReader (com.serotonin.json.JsonReader)1 JsonWriter (com.serotonin.json.JsonWriter)1 JsonArray (com.serotonin.json.type.JsonArray)1 JsonTypeReader (com.serotonin.json.type.JsonTypeReader)1 JsonTypeWriter (com.serotonin.json.type.JsonTypeWriter)1 JsonValue (com.serotonin.json.type.JsonValue)1 TypeDefinition (com.serotonin.json.util.TypeDefinition)1 ProcessResult (com.serotonin.m2m2.i18n.ProcessResult)1 Role (com.serotonin.m2m2.vo.role.Role)1 RoleVO (com.serotonin.m2m2.vo.role.RoleVO)1 IOException (java.io.IOException)1 StringWriter (java.io.StringWriter)1 Type (java.lang.reflect.Type)1 Test (org.junit.Test)1