use of org.eclipse.vorto.model.runtime.FunctionblockValue in project vorto by eclipse.
the class BinaryMappingLoadTest method tripleNestedConverter4.
@Test
@JUnitPerfTest(threads = THREAD_AMOUNT_4, durationMs = TEST_DURATION_4, rampUpPeriodMs = RAMP_PERIOD, warmUpMs = WARMUP_DURATION_4, maxExecutionsPerSecond = EXECUTIONS_PER_SECOND_4)
public void tripleNestedConverter4() throws Exception {
InfomodelValue mappedDittoOutput = testCaseThreeMapper.mapSource(gson.fromJson(testCaseThreeJson, Object.class));
FunctionblockValue button = mappedDittoOutput.get("button");
assertEquals(2, button.getStatusProperty("sensor_value").get().getValue());
}
use of org.eclipse.vorto.model.runtime.FunctionblockValue in project vorto by eclipse.
the class JsonMappingTest method testMapDevicePayloadWithInitialValue.
@Test
public void testMapDevicePayloadWithInitialValue() {
IDataMapper mapper = IDataMapper.newBuilder().withSpecification(new SpecWithCustomFunction()).registerConverterFunction(TypeFunctionFactory.createFunctions()).registerConverterFunction(StringFunctionFactory.createFunctions()).registerScriptEvalProvider(new JavascriptEvalProvider()).build();
String json = "{\"clickType\" : \"DOUBLE\", \"batteryVoltage\": \"0mV\"}";
InfomodelValue mappedOutput = mapper.mapSource(gson.fromJson(json, Object.class));
FunctionblockValue buttonFunctionblockData = mappedOutput.get("button");
assertEquals(true, (Boolean) buttonFunctionblockData.getStatusProperty("digital_input_state").get().getValue());
assertEquals(2, buttonFunctionblockData.getStatusProperty("digital_input_count").get().getValue());
FunctionblockValue voltageFunctionblockData = mappedOutput.get("voltage");
assertEquals(0f, voltageFunctionblockData.getStatusProperty("sensor_value").get().getValue());
assertEquals("mV", voltageFunctionblockData.getStatusProperty("sensor_units").get().getValue());
System.out.println(mappedOutput);
}
use of org.eclipse.vorto.model.runtime.FunctionblockValue in project vorto by eclipse.
the class BinaryMappingTest method testMappingWithBinary.
@Test
public void testMappingWithBinary() throws Exception {
IDataMapper mapper = IDataMapper.newBuilder().withSpecification(new SpecWithByteArrayConverter()).registerConverterFunction(StringFunctionFactory.createFunctions()).registerConverterFunction(TypeFunctionFactory.createFunctions()).registerConverterFunction(BinaryFunctionFactory.createFunctions()).registerScriptEvalProvider(new JavascriptEvalProvider()).build();
String x = "4f00630063007500700061006e0063007900200002";
String json = "{\"data\" : \"" + x + "\"}";
InfomodelValue mappedDittoOutput = mapper.mapSource(gson.fromJson(json, Object.class));
FunctionblockValue button = mappedDittoOutput.get("button");
assertEquals(2, button.getStatusProperty("sensor_value").get().getValue());
System.out.println(mappedDittoOutput);
}
use of org.eclipse.vorto.model.runtime.FunctionblockValue in project vorto by eclipse.
the class DataMapperJxpath method map.
public InfomodelValue map(Object input, MappingContext mappingContext) {
JXPathContext context = jxpathHelper.newContext(input);
InfomodelValue normalized = new InfomodelValue(specification.getInfoModel());
final Infomodel deviceInfoModel = specification.getInfoModel();
for (ModelProperty fbProperty : deviceInfoModel.getFunctionblocks()) {
FunctionblockValue mappedFb = mapFunctionBlock(fbProperty, context);
if (mappedFb != null) {
normalized.withFunctionblock(fbProperty.getName(), mappedFb);
}
}
return normalized;
}
use of org.eclipse.vorto.model.runtime.FunctionblockValue in project vorto by eclipse.
the class DataMapperJxpath method mapFunctionBlock.
private FunctionblockValue mapFunctionBlock(ModelProperty fbProperty, JXPathContext context) {
FunctionblockModel fbModel = specification.getFunctionBlock(fbProperty.getName());
if (!matchesCondition(fbModel, context)) {
return null;
}
FunctionblockValue fbData = new FunctionblockValue(fbModel);
for (ModelProperty statusProperty : fbModel.getStatusProperties()) {
try {
Object mapped = this.mapProperty(fbModel, statusProperty, context);
if (mapped != null) {
fbData.withStatusProperty(statusProperty.getName(), mapped);
}
} catch (JXPathNotFoundException ex) {
if (statusProperty.isMandatory()) {
return null;
}
} catch (JXPathInvalidAccessException ex) {
if (ex.getCause() instanceof JXPathNotFoundException) {
if (statusProperty.isMandatory()) {
return null;
}
}
throw new MappingException("A problem occured during mapping", ex);
}
}
for (ModelProperty configProperty : fbModel.getConfigurationProperties()) {
try {
Object mapped = this.mapProperty(fbModel, configProperty, context);
if (mapped != null) {
fbData.withConfigurationProperty(configProperty.getName(), mapped);
}
} catch (JXPathNotFoundException ex) {
if (configProperty.isMandatory()) {
return null;
}
} catch (JXPathInvalidAccessException ex) {
if (ex.getCause() instanceof JXPathNotFoundException) {
if (configProperty.isMandatory()) {
return null;
}
}
throw new MappingException("A problem occured during mapping", ex);
}
}
return onlyReturnIfPopulated(fbData);
}
Aggregations