Search in sources :

Example 1 with ObjectListField

use of net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField in project n2o-framework by i-novus-llc.

the class InvocationProcessorTest method testAdvancedNestingWithMapInvocationProvider.

@Test
public void testAdvancedNestingWithMapInvocationProvider() {
    N2oTestDataProvider invocation = new N2oTestDataProvider();
    invocation.setOperation(N2oTestDataProvider.Operation.echo);
    // STRUCTURE
    // Reference
    ObjectReferenceField refParam = new ObjectReferenceField();
    refParam.setId("entity");
    refParam.setEntityClass("net.n2oapp.framework.engine.util.TestEntity");
    refParam.setMapping("['refEntity']");
    // Simple
    ObjectSimpleField simpleParam = new ObjectSimpleField();
    simpleParam.setId("valueStr");
    // List
    ObjectListField listParam = new ObjectListField();
    listParam.setId("entities");
    listParam.setMapping("['innerObjList']");
    listParam.setEntityClass("net.n2oapp.framework.engine.util.TestEntity$InnerEntity");
    ObjectSimpleField childParam1 = new ObjectSimpleField();
    childParam1.setId("id");
    childParam1.setMapping("['valueInt']");
    ObjectSimpleField childParam2 = new ObjectSimpleField();
    childParam2.setId("name");
    childParam2.setMapping("['valueStr']");
    // List Set
    ObjectSetField setParam = new ObjectSetField();
    setParam.setId("set");
    setParam.setEntityClass("net.n2oapp.framework.engine.util.TestEntity$InnerEntity$InnerInnerEntity");
    setParam.setMapping("['innerInnerObjSet']");
    ObjectSimpleField setChildParam = new ObjectSimpleField();
    setChildParam.setId("name");
    setChildParam.setMapping("['innerName']");
    setParam.setFields(new AbstractParameter[] { setChildParam });
    listParam.setFields(new AbstractParameter[] { childParam1, childParam2, setParam });
    refParam.setFields(new AbstractParameter[] { simpleParam, listParam });
    // DATASET
    DataSet innerDataSet1 = new DataSet();
    innerDataSet1.put("id", 666);
    innerDataSet1.put("name", "testStr1");
    HashSet innerInnerDataSet = new HashSet();
    innerDataSet1.put("set", innerInnerDataSet);
    innerInnerDataSet.add(new DataSet("name", "code1"));
    innerInnerDataSet.add(new DataSet("name", "code2"));
    DataSet innerDataSet2 = new DataSet();
    innerDataSet2.put("id", 777);
    innerDataSet2.put("name", "testStr2");
    innerInnerDataSet = new HashSet();
    innerDataSet2.put("set", innerInnerDataSet);
    innerInnerDataSet.add(new DataSet("name", "code3"));
    List list = Arrays.asList(innerDataSet1, innerDataSet2);
    DataSet refParamFields = new DataSet();
    refParamFields.put("entities", list);
    refParamFields.put("valueStr", "test");
    DataSet dataSet = new DataSet();
    dataSet.put("entity", refParamFields);
    List<AbstractParameter> inParameters = Arrays.asList(refParam);
    List<ObjectSimpleField> outParameters = new ArrayList<>();
    // Result
    DataSet result = invocationProcessor.invoke(invocation, dataSet, inParameters, outParameters);
    TestEntity entity = (TestEntity) result.get("entity");
    assertThat(entity.getValueInt(), nullValue());
    assertThat(entity.getInnerObj(), nullValue());
    assertThat(entity.getValueStr(), is("test"));
    List<TestEntity.InnerEntity> innerObjList = entity.getInnerObjList();
    assertThat(innerObjList.size(), is(2));
    assertThat(innerObjList.get(0).getValueInt(), is(666));
    assertThat(innerObjList.get(0).getValueStr(), is("testStr1"));
    Set<TestEntity.InnerEntity.InnerInnerEntity> innerInnerObjSet = innerObjList.get(0).getInnerInnerObjSet();
    assertThat(innerInnerObjSet.size(), is(2));
    assertThat(innerInnerObjSet.contains(new TestEntity.InnerEntity.InnerInnerEntity("code1")), is(true));
    assertThat(innerInnerObjSet.contains(new TestEntity.InnerEntity.InnerInnerEntity("code2")), is(true));
    assertThat(innerObjList.get(1).getValueInt(), is(777));
    assertThat(innerObjList.get(1).getValueStr(), is("testStr2"));
    innerInnerObjSet = innerObjList.get(1).getInnerInnerObjSet();
    assertThat(innerInnerObjSet.size(), is(1));
    assertThat(innerInnerObjSet.contains(new TestEntity.InnerEntity.InnerInnerEntity("code3")), is(true));
}
Also used : TestEntity(net.n2oapp.framework.engine.util.TestEntity) ObjectReferenceField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectReferenceField) DataSet(net.n2oapp.criteria.dataset.DataSet) N2oTestDataProvider(net.n2oapp.framework.api.metadata.dataprovider.N2oTestDataProvider) ObjectSimpleField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSimpleField) ObjectSetField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSetField) AbstractParameter(net.n2oapp.framework.api.metadata.global.dao.object.AbstractParameter) ObjectListField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField) Test(org.junit.Test)

Example 2 with ObjectListField

use of net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField in project n2o-framework by i-novus-llc.

the class InvocationProcessorTest method testAdvancedNestingWithArgumentsInvocationProvider.

@Test
public void testAdvancedNestingWithArgumentsInvocationProvider() {
    N2oJavaDataProvider invocation = new N2oJavaDataProvider();
    invocation.setClassName("net.n2oapp.framework.engine.test.source.StaticInvocationTestClass");
    invocation.setMethod("methodReturnedEntity");
    Argument argument = new Argument();
    argument.setClassName("net.n2oapp.framework.engine.util.TestEntity");
    argument.setType(Argument.Type.ENTITY);
    invocation.setArguments(new Argument[] { argument });
    // STRUCTURE
    // Simple
    ObjectSimpleField simpleParam = new ObjectSimpleField();
    simpleParam.setId("valueStr");
    simpleParam.setMapping("[0].valueStr");
    // List
    ObjectListField listParam = new ObjectListField();
    listParam.setId("entities");
    listParam.setMapping("[0].innerObjList");
    listParam.setEntityClass("net.n2oapp.framework.engine.util.TestEntity$InnerEntity");
    ObjectSimpleField childParam1 = new ObjectSimpleField();
    childParam1.setId("id");
    childParam1.setMapping("valueInt");
    ObjectSimpleField childParam2 = new ObjectSimpleField();
    childParam2.setId("name");
    childParam2.setMapping("valueStr");
    // List Set
    ObjectSetField setParam = new ObjectSetField();
    setParam.setId("set");
    setParam.setEntityClass("net.n2oapp.framework.engine.util.TestEntity$InnerEntity$InnerInnerEntity");
    setParam.setMapping("innerInnerObjSet");
    ObjectSimpleField setChildParam = new ObjectSimpleField();
    setChildParam.setId("name");
    setChildParam.setMapping("innerName");
    setParam.setFields(new AbstractParameter[] { setChildParam });
    listParam.setFields(new AbstractParameter[] { setParam, childParam2, childParam1 });
    // DATASET
    DataSet innerDataSet1 = new DataSet();
    innerDataSet1.put("id", 666);
    innerDataSet1.put("name", "testStr1");
    HashSet innerInnerDataSet = new HashSet();
    innerDataSet1.put("set", innerInnerDataSet);
    innerInnerDataSet.add(new DataSet("name", "code1"));
    innerInnerDataSet.add(new DataSet("name", "code2"));
    DataSet innerDataSet2 = new DataSet();
    innerDataSet2.put("id", 777);
    innerDataSet2.put("name", "testStr2");
    innerInnerDataSet = new HashSet();
    innerDataSet2.put("set", innerInnerDataSet);
    innerInnerDataSet.add(new DataSet("name", "code3"));
    List list = Arrays.asList(innerDataSet1, innerDataSet2);
    DataSet dataSet = new DataSet();
    dataSet.put("entities", list);
    dataSet.put("valueStr", "test");
    List<AbstractParameter> inParameters = Arrays.asList(listParam, simpleParam);
    List<ObjectSimpleField> outParameters = new ArrayList<>();
    // Result
    DataSet result = invocationProcessor.invoke(invocation, dataSet, inParameters, outParameters);
    assertThat(result.size(), is(2));
    assertThat(result.get("valueStr"), is("test"));
    List<TestEntity.InnerEntity> innerObjList = (List<TestEntity.InnerEntity>) result.get("entities");
    assertThat(innerObjList.size(), is(2));
    assertThat(innerObjList.get(0).getValueInt(), is(666));
    assertThat(innerObjList.get(0).getValueStr(), is("testStr1"));
    Set<TestEntity.InnerEntity.InnerInnerEntity> innerInnerObjSet = innerObjList.get(0).getInnerInnerObjSet();
    assertThat(innerInnerObjSet.size(), is(2));
    assertThat(innerInnerObjSet.contains(new TestEntity.InnerEntity.InnerInnerEntity("code1")), is(true));
    assertThat(innerInnerObjSet.contains(new TestEntity.InnerEntity.InnerInnerEntity("code2")), is(true));
    assertThat(innerObjList.get(1).getValueInt(), is(777));
    assertThat(innerObjList.get(1).getValueStr(), is("testStr2"));
    innerInnerObjSet = innerObjList.get(1).getInnerInnerObjSet();
    assertThat(innerInnerObjSet.size(), is(1));
    assertThat(innerInnerObjSet.contains(new TestEntity.InnerEntity.InnerInnerEntity("code3")), is(true));
}
Also used : N2oJavaDataProvider(net.n2oapp.framework.api.metadata.dataprovider.N2oJavaDataProvider) TestEntity(net.n2oapp.framework.engine.util.TestEntity) Argument(net.n2oapp.framework.api.metadata.global.dao.invocation.model.Argument) DataSet(net.n2oapp.criteria.dataset.DataSet) ObjectSimpleField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSimpleField) ObjectSetField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSetField) AbstractParameter(net.n2oapp.framework.api.metadata.global.dao.object.AbstractParameter) ObjectListField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField) Test(org.junit.Test)

Example 3 with ObjectListField

use of net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField in project n2o-framework by i-novus-llc.

the class InvocationProcessorTest method fullMappingTest.

@Test
public void fullMappingTest() {
    N2oJavaDataProvider method = new N2oJavaDataProvider();
    method.setMethod("methodReturnedEntity");
    method.setClassName("net.n2oapp.framework.engine.test.source.StaticInvocationTestClass");
    Argument entityTypeArgument = new Argument();
    entityTypeArgument.setName("argument");
    entityTypeArgument.setClassName("net.n2oapp.framework.engine.util.TestEntity");
    entityTypeArgument.setType(Argument.Type.ENTITY);
    method.setArguments(new Argument[] { entityTypeArgument });
    DataSet dataSet = new DataSet();
    DataSet inDataSet = new DataSet();
    inDataSet.put("name", "testName");
    inDataSet.put("id", 123);
    dataSet.put("entity", inDataSet);
    List<DataSet> list = new ArrayList<>();
    inDataSet = new DataSet();
    inDataSet.put("id", 1234);
    inDataSet.put("name", "testName1");
    list.add(inDataSet);
    inDataSet = new DataSet();
    inDataSet.put("name", "testName2");
    inDataSet.put("id", 12345);
    list.add(inDataSet);
    dataSet.put("entities", list);
    List<AbstractParameter> inMapping = new ArrayList<>();
    ObjectReferenceField param = new ObjectReferenceField();
    param.setId("entity");
    param.setMapping("[0].innerObj");
    param.setEntityClass("net.n2oapp.framework.engine.util.TestEntity$InnerEntity");
    ObjectSimpleField inParam1 = new ObjectSimpleField();
    inParam1.setId("name");
    inParam1.setMapping("valueStr");
    ObjectSimpleField inParam2 = new ObjectSimpleField();
    inParam2.setId("id");
    inParam2.setMapping("valueInt");
    param.setFields(new AbstractParameter[] { inParam1, inParam2 });
    inMapping.add(param);
    ObjectListField listParam = new ObjectListField();
    listParam.setId("entities");
    listParam.setMapping("[0].innerObjList");
    listParam.setEntityClass("net.n2oapp.framework.engine.util.TestEntity$InnerEntity");
    inParam1 = new ObjectSimpleField();
    inParam1.setId("name");
    inParam1.setMapping("valueStr");
    inParam1.setDefaultValue("testName1");
    inParam1.setNormalize("#this.toLowerCase()");
    inParam2 = new ObjectSimpleField();
    inParam2.setId("id");
    inParam2.setMapping("valueInt");
    listParam.setFields(new AbstractParameter[] { inParam1, inParam2 });
    inMapping.add(listParam);
    List<ObjectSimpleField> outMapping = new ArrayList<>();
    ObjectSimpleField outParam = new ObjectSimpleField();
    outParam.setId("testValue");
    outParam.setMapping("#this");
    outMapping.add(outParam);
    DataSet resultDataSet = invocationProcessor.invoke(method, dataSet, inMapping, outMapping);
    assertThat(resultDataSet.size(), is(3));
    assertThat(((TestEntity.InnerEntity) resultDataSet.get("entity")).getValueInt(), is(123));
    assertThat(((TestEntity.InnerEntity) resultDataSet.get("entity")).getValueStr(), is("testName"));
    assertThat(((List<TestEntity.InnerEntity>) resultDataSet.get("entities")).get(0).getValueStr(), is("testname1"));
    assertThat(((List<TestEntity.InnerEntity>) resultDataSet.get("entities")).get(1).getValueInt(), is(12345));
    assertThat(((List<TestEntity.InnerEntity>) resultDataSet.get("entities")).get(1).getValueStr(), is("testname2"));
}
Also used : N2oJavaDataProvider(net.n2oapp.framework.api.metadata.dataprovider.N2oJavaDataProvider) TestEntity(net.n2oapp.framework.engine.util.TestEntity) ObjectReferenceField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectReferenceField) Argument(net.n2oapp.framework.api.metadata.global.dao.invocation.model.Argument) DataSet(net.n2oapp.criteria.dataset.DataSet) ObjectSimpleField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSimpleField) AbstractParameter(net.n2oapp.framework.api.metadata.global.dao.object.AbstractParameter) ObjectListField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField) Test(org.junit.Test)

Example 4 with ObjectListField

use of net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField in project n2o-framework by i-novus-llc.

the class MappingProcessorTest method testEntityCollectionMapping.

private void testEntityCollectionMapping() {
    // List
    ObjectListField listParam = new ObjectListField();
    listParam.setId("entities");
    listParam.setEntityClass("net.n2oapp.framework.engine.util.TestEntity$InnerEntity");
    ObjectSimpleField childParam1 = new ObjectSimpleField();
    childParam1.setId("id");
    childParam1.setMapping("valueInt");
    ObjectSimpleField childParam2 = new ObjectSimpleField();
    childParam2.setId("name");
    childParam2.setMapping("valueStr");
    listParam.setFields(new AbstractParameter[] { childParam1, childParam2 });
    DataSet innerDataSet1 = new DataSet();
    innerDataSet1.put("id", 666);
    innerDataSet1.put("name", "testStr1");
    DataSet innerDataSet2 = new DataSet();
    innerDataSet2.put("id", 777);
    innerDataSet2.put("name", "testStr2");
    List list = new ArrayList();
    list.add(innerDataSet1);
    list.add(innerDataSet2);
    DataSet outerDataSetWithList = new DataSet();
    outerDataSetWithList.put("entities", list);
    MappingProcessor.mapParameter(listParam, outerDataSetWithList);
    assert outerDataSetWithList.get("entities") instanceof List;
    assert ((TestEntity.InnerEntity) ((List) outerDataSetWithList.get("entities")).get(0)).getValueInt().equals(666);
    assert ((TestEntity.InnerEntity) ((List) outerDataSetWithList.get("entities")).get(0)).getValueStr().equals("testStr1");
    assert ((TestEntity.InnerEntity) ((List) outerDataSetWithList.get("entities")).get(1)).getValueInt().equals(777);
    assert ((TestEntity.InnerEntity) ((List) outerDataSetWithList.get("entities")).get(1)).getValueStr().equals("testStr2");
    // Set
    ObjectSetField setParam = new ObjectSetField();
    setParam.setId("entities");
    setParam.setEntityClass("net.n2oapp.framework.engine.util.TestEntity$InnerEntity");
    childParam1 = new ObjectSimpleField();
    childParam1.setId("id");
    childParam1.setMapping("valueInt");
    childParam2 = new ObjectSimpleField();
    childParam2.setId("name");
    childParam2.setMapping("valueStr");
    setParam.setFields(new AbstractParameter[] { childParam1, childParam2 });
    innerDataSet1 = new DataSet();
    innerDataSet1.put("id", 666);
    innerDataSet1.put("name", "testStr1");
    innerDataSet2 = new DataSet();
    innerDataSet2.put("id", 777);
    innerDataSet2.put("name", "testStr2");
    Set set = new HashSet();
    set.add(innerDataSet1);
    set.add(innerDataSet2);
    DataSet outerDataSetWithSet = new DataSet();
    outerDataSetWithSet.put("entities", set);
    MappingProcessor.mapParameter(setParam, outerDataSetWithSet);
    assert outerDataSetWithSet.get("entities") instanceof Set;
    assert ((Set) outerDataSetWithSet.get("entities")).containsAll((List) outerDataSetWithList.get("entities"));
}
Also used : ObjectSimpleField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSimpleField) DataSet(net.n2oapp.criteria.dataset.DataSet) DataSet(net.n2oapp.criteria.dataset.DataSet) ObjectSetField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSetField) ObjectListField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField)

Example 5 with ObjectListField

use of net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField in project n2o-framework by i-novus-llc.

the class ActionRequestInfo method setOperation.

public void setOperation(CompiledObject.Operation operation) {
    this.operation = operation;
    if (operation.getInParametersMap() != null)
        for (String paramId : operation.getInParametersMap().keySet()) {
            AbstractParameter sourceParam = operation.getInParametersMap().get(paramId);
            AbstractParameter param;
            if (sourceParam instanceof ObjectSimpleField)
                param = new ObjectSimpleField((ObjectSimpleField) sourceParam);
            else if (sourceParam instanceof ObjectListField)
                param = new ObjectListField((ObjectListField) sourceParam);
            else if (sourceParam instanceof ObjectSetField)
                param = new ObjectSetField((ObjectSetField) sourceParam);
            else
                param = new ObjectReferenceField((ObjectReferenceField) sourceParam);
            inParametersMap.put(paramId, param);
        }
    if (operation.getOutParametersMap() != null)
        for (String paramName : operation.getOutParametersMap().keySet()) {
            ObjectSimpleField srcParam = operation.getOutParametersMap().get(paramName);
            outParametersMap.put(paramName, new ObjectSimpleField(srcParam));
        }
}
Also used : ObjectSimpleField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSimpleField) ObjectReferenceField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectReferenceField) ObjectSetField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSetField) AbstractParameter(net.n2oapp.framework.api.metadata.global.dao.object.AbstractParameter) ObjectListField(net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField)

Aggregations

ObjectListField (net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectListField)6 ObjectSimpleField (net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSimpleField)6 AbstractParameter (net.n2oapp.framework.api.metadata.global.dao.object.AbstractParameter)5 ObjectSetField (net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectSetField)5 DataSet (net.n2oapp.criteria.dataset.DataSet)4 ObjectReferenceField (net.n2oapp.framework.api.metadata.global.dao.object.field.ObjectReferenceField)4 Test (org.junit.Test)4 TestEntity (net.n2oapp.framework.engine.util.TestEntity)3 N2oJavaDataProvider (net.n2oapp.framework.api.metadata.dataprovider.N2oJavaDataProvider)2 Argument (net.n2oapp.framework.api.metadata.global.dao.invocation.model.Argument)2 N2oTestDataProvider (net.n2oapp.framework.api.metadata.dataprovider.N2oTestDataProvider)1 CompiledObject (net.n2oapp.framework.api.metadata.local.CompiledObject)1 ObjectContext (net.n2oapp.framework.config.metadata.compile.context.ObjectContext)1