use of net.n2oapp.framework.api.metadata.global.dao.invocation.model.Argument in project n2o-framework by i-novus-llc.
the class InvocationProcessorTest method testNameMappingWithArgumentsInvocationProvider.
/**
* Тестирование маппинга аргументов java провайдера с использованием name аргументов, а не через заданный порядок
*/
@Test
public void testNameMappingWithArgumentsInvocationProvider() {
N2oJavaDataProvider invocation = new N2oJavaDataProvider();
invocation.setClassName("net.n2oapp.framework.engine.test.source.StaticInvocationTestClass");
invocation.setMethod("methodWithThreeArguments");
Argument argument1 = new Argument();
argument1.setName("first");
argument1.setType(Argument.Type.PRIMITIVE);
Argument argument2 = new Argument();
argument2.setName("second");
argument2.setType(Argument.Type.PRIMITIVE);
Argument argument3 = new Argument();
argument3.setName("third");
argument3.setType(Argument.Type.PRIMITIVE);
invocation.setArguments(new Argument[] { argument1, argument2, argument3 });
// STRUCTURE
ObjectSimpleField firstArg = new ObjectSimpleField();
firstArg.setId("a");
firstArg.setMapping("['first']");
ObjectSimpleField secondArg = new ObjectSimpleField();
secondArg.setId("b");
secondArg.setMapping("[second]");
ObjectSimpleField thirdArg = new ObjectSimpleField();
thirdArg.setId("c");
thirdArg.setMapping("['third']");
List<AbstractParameter> inParameters = Arrays.asList(secondArg, firstArg, thirdArg);
// DATASET
DataSet dataSet = new DataSet();
dataSet.put("c", true);
dataSet.put("b", 123);
dataSet.put("a", "test");
ObjectSimpleField response = new ObjectSimpleField();
response.setId("result");
response.setMapping("#this");
List<ObjectSimpleField> outParameters = Arrays.asList(response);
// Result
DataSet result = invocationProcessor.invoke(invocation, dataSet, inParameters, outParameters);
assertThat(result.get("result"), is("Invocation success. First argument: test, Second argument: 123, Third argument: true"));
}
use of net.n2oapp.framework.api.metadata.global.dao.invocation.model.Argument 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));
}
use of net.n2oapp.framework.api.metadata.global.dao.invocation.model.Argument in project n2o-framework by i-novus-llc.
the class InvocationProcessorTest method testNormalizing.
@Test
public void testNormalizing() {
N2oJavaDataProvider method = new N2oJavaDataProvider();
method.setMethod("methodReturnedEntity");
method.setClassName("net.n2oapp.framework.engine.test.source.StaticInvocationTestClass");
Argument entityTypeArgument = new Argument();
entityTypeArgument.setClassName("net.n2oapp.framework.engine.util.TestEntity");
entityTypeArgument.setType(Argument.Type.ENTITY);
method.setArguments(new Argument[] { entityTypeArgument });
ObjectSimpleField childParam = new ObjectSimpleField();
childParam.setId("name");
childParam.setMapping("[0].valueStr");
childParam.setNormalize("#this.toLowerCase()");
DataSet innerDataSet = new DataSet();
innerDataSet.put("name", "TESTSTRING");
ObjectSimpleField outField = new ObjectSimpleField();
outField.setId("entity");
outField.setMapping("#this");
Collection<ObjectSimpleField> outMapping = Arrays.asList(outField);
DataSet resultDataSet = invocationProcessor.invoke(method, innerDataSet, Arrays.asList(childParam), outMapping);
assertThat(((TestEntity) resultDataSet.get("entity")).getValueStr(), is("teststring"));
}
use of net.n2oapp.framework.api.metadata.global.dao.invocation.model.Argument 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"));
}
use of net.n2oapp.framework.api.metadata.global.dao.invocation.model.Argument in project n2o-framework by i-novus-llc.
the class SpringDataProviderEngineTest method testMethodWithModelArgument.
/**
* Вызов spring метода с моделью в качестве аргумента
*/
@Test
public void testMethodWithModelArgument() {
N2oJavaDataProvider method = new N2oJavaDataProvider();
method.setMethod("methodWithModel");
SpringProvider props = new SpringProvider();
props.setSpringBean("testBean");
method.setDiProvider(props);
Argument argument = new Argument();
argument.setName("argument");
argument.setClassName("net.n2oapp.framework.engine.test.source.SpringInvocationTestClass$Model");
method.setArguments(new Argument[] { argument });
SpringInvocationTestClass.Model model = new SpringInvocationTestClass.Model();
model.setTestField("success");
Object[] dataSet = new Object[1];
dataSet[0] = model;
JavaDataProviderEngine javaInvocation = new JavaDataProviderEngine();
SpringObjectLocator springObjectLocator = new SpringObjectLocator();
springObjectLocator.setApplicationContext(applicationContext);
javaInvocation.setLocators(Arrays.asList(springObjectLocator));
String resultDataSet = (String) javaInvocation.invoke(method, dataSet);
assertThat(resultDataSet, is("success"));
}
Aggregations