public Map<String, Object> getValueInfo(TypedValue typedValue) { if(!(typedValue instanceof ObjectValue)) { throw new IllegalArgumentException("Value not of type Object."); } ObjectValue objectValue = (ObjectValue) typedValue; Map<String, Object> valueInfo = new HashMap<String, Object>(); String serializationDataFormat = objectValue.getSerializationDataFormat(); if(serializationDataFormat != null) { valueInfo.put(VALUE_INFO_SERIALIZATION_DATA_FORMAT, serializationDataFormat); } String objectTypeName = objectValue.getObjectTypeName(); if(objectTypeName != null) { valueInfo.put(VALUE_INFO_OBJECT_TYPE_NAME, objectTypeName); } if (objectValue.isTransient()) { valueInfo.put(VALUE_INFO_TRANSIENT, objectValue.isTransient()); } return valueInfo; }
protected String getObjectTypeName(ObjectValue value, ValueFields valueFields) { String objectTypeName = value.getObjectTypeName(); if (objectTypeName == null && !value.isDeserialized() && value.getValueSerialized() != null) { throw new ProcessEngineException("Cannot write serialized value for variable '" + valueFields.getName() + "': no 'objectTypeName' provided for non-null value."); } // update type name if the object is deserialized if (value.isDeserialized() && value.getValue() != null) { objectTypeName = getTypeNameForDeserialized(value.getValue()); } return objectTypeName; }
protected String getObjectTypeName(ObjectValue value, ValueFields valueFields) { String objectTypeName = value.getObjectTypeName(); if (objectTypeName == null && !value.isDeserialized() && value.getValueSerialized() != null) { throw new ProcessEngineException("Cannot write serialized value for variable '" + valueFields.getName() + "': no 'objectTypeName' provided for non-null value."); } // update type name if the object is deserialized if (value.isDeserialized() && value.getValue() != null) { objectTypeName = getTypeNameForDeserialized(value.getValue()); } return objectTypeName; }
if (objectValue.getObjectTypeName() != null) { return false; if (!objectTypeName.equals(objectValue.getObjectTypeName())) { return false;
public static MockObjectValue fromObjectValue(ObjectValue objectValue) { MockObjectValue result = new MockObjectValue(objectValue.getValue()); result.isDeserialized = objectValue.isDeserialized(); result.objectTypeName = objectValue.getObjectTypeName(); result.serializationDataFormat = objectValue.getSerializationDataFormat(); result.serializedValue = objectValue.getValueSerialized(); result.type = objectValue.getType(); return result; }
public static void assertObjectValueDeserialized(ObjectValue typedValue, Object value) { Class<? extends Object> expectedObjectType = value.getClass(); assertTrue(typedValue.isDeserialized()); assertEquals(ValueType.OBJECT, typedValue.getType()); assertEquals(value, typedValue.getValue()); assertEquals(value, typedValue.getValue(expectedObjectType)); assertEquals(expectedObjectType, typedValue.getObjectType()); assertEquals(expectedObjectType.getName(), typedValue.getObjectTypeName()); }
assertFalse(variableTyped.isDeserialized()); assertEquals(serializedObject, variableTyped.getValueSerialized()); assertEquals(FailingJavaSerializable.class.getName(), variableTyped.getObjectTypeName()); assertEquals(SerializationDataFormats.JAVA.getName(), variableTyped.getSerializationDataFormat());
assertFalse(variableTyped.isDeserialized()); assertEquals(serializedObject, variableTyped.getValueSerialized()); assertEquals(FailingJavaSerializable.class.getName(), variableTyped.getObjectTypeName()); assertEquals(SerializationDataFormats.JAVA.getName(), variableTyped.getSerializationDataFormat());
assertFalse(variableTyped.isDeserialized()); assertEquals(serializedObject, variableTyped.getValueSerialized()); assertEquals(FailingJavaSerializable.class.getName(), variableTyped.getObjectTypeName()); assertEquals(SerializationDataFormats.JAVA.getName(), variableTyped.getSerializationDataFormat());
public static void assertObjectValueSerializedNull(ObjectValue typedValue) { assertNotNull(typedValue); assertFalse(typedValue.isDeserialized()); assertNotNull(typedValue.getSerializationDataFormat()); assertNull(typedValue.getValueSerialized()); assertNull(typedValue.getObjectTypeName()); }
assertFalse(variableTyped.isDeserialized()); assertEquals(serializedObject, variableTyped.getValueSerialized()); assertEquals(FailingJavaSerializable.class.getName(), variableTyped.getObjectTypeName()); assertEquals(SerializationDataFormats.JAVA.getName(), variableTyped.getSerializationDataFormat());
assertFalse(variableTyped.isDeserialized()); assertEquals(serializedObject, variableTyped.getValueSerialized()); assertEquals(FailingJavaSerializable.class.getName(), variableTyped.getObjectTypeName()); assertEquals(SerializationDataFormats.JAVA.getName(), variableTyped.getSerializationDataFormat());
assertFalse(variableTyped.isDeserialized()); assertEquals(serializedObject, variableTyped.getValueSerialized()); assertEquals(FailingJavaSerializable.class.getName(), variableTyped.getObjectTypeName()); assertEquals(SerializationDataFormats.JAVA.getName(), variableTyped.getSerializationDataFormat());
@SuppressWarnings("unchecked") protected void verifySerializedValue(Map<String, Object> serializedValue) { ObjectValue exampleValue = MockProvider.EXAMPLE_HISTORIC_DECISION_SERIALIZED_VALUE; assertThat(serializedValue, hasEntry("type", (Object) VariableValueDto.toRestApiTypeName(exampleValue.getType().getName()))); assertThat(serializedValue, hasEntry("value", exampleValue.getValue())); Map<String, String> valueInfo = (Map<String, String>) serializedValue.get("valueInfo"); assertThat(valueInfo, hasEntry("serializationDataFormat", exampleValue.getSerializationDataFormat())); assertThat(valueInfo, hasEntry("objectTypeName", exampleValue.getObjectTypeName())); }
public static void assertObjectValueDeserializedNull(ObjectValue typedValue) { assertNotNull(typedValue); assertTrue(typedValue.isDeserialized()); assertNotNull(typedValue.getSerializationDataFormat()); assertNull(typedValue.getValue()); assertNull(typedValue.getValueSerialized()); assertNull(typedValue.getObjectType()); assertNull(typedValue.getObjectTypeName()); }
@Test public void testCanMigrateWithObjectVariableThatFailsOnDeserialization() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceProcessDefinition.getId()); ObjectValue objectValue = Variables .serializedObjectValue("does/not/deserialize") .serializationDataFormat(SerializationDataFormats.JAVA) .objectTypeName("and.this.is.a.nonexisting.Class") .create(); runtimeService.setVariable( processInstance.getId(), "var", objectValue); // when testHelper.migrateProcessInstance(migrationPlan, processInstance); // then ObjectValue migratedValue = runtimeService.getVariableTyped(processInstance.getId(), "var", false); Assert.assertEquals(objectValue.getValueSerialized(), migratedValue.getValueSerialized()); Assert.assertEquals(objectValue.getObjectTypeName(), migratedValue.getObjectTypeName()); }
@Test @Deployment(resources = ONE_TASK_PROCESS) public void testSetJavaObjectNullSerializedObjectTypeName() throws Exception { ProcessInstance instance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); String typeName = "some.type.Name"; // set null value as "serialized" object runtimeService.setVariable(instance.getId(), "nullObject", serializedObjectValue() .serializationDataFormat(JAVA_DATA_FORMAT) .objectTypeName(typeName) // This time an objectTypeName is provided .create()); // get null value via untyped api assertNull(runtimeService.getVariable(instance.getId(), "nullObject")); // get null via typed api ObjectValue deserializedTypedValue = runtimeService.getVariableTyped(instance.getId(), "nullObject"); assertNotNull(deserializedTypedValue); assertTrue(deserializedTypedValue.isDeserialized()); assertEquals(JAVA_DATA_FORMAT, deserializedTypedValue.getSerializationDataFormat()); assertNull(deserializedTypedValue.getValue()); assertNull(deserializedTypedValue.getValueSerialized()); assertNull(deserializedTypedValue.getObjectType()); assertEquals(typeName, deserializedTypedValue.getObjectTypeName()); ObjectValue serializedTypedValue = runtimeService.getVariableTyped(instance.getId(), "nullObject", false); assertNotNull(serializedTypedValue); assertFalse(serializedTypedValue.isDeserialized()); assertEquals(JAVA_DATA_FORMAT, serializedTypedValue.getSerializationDataFormat()); assertNull(serializedTypedValue.getValueSerialized()); assertEquals(typeName, serializedTypedValue.getObjectTypeName()); }
protected String getObjectTypeName(ObjectValue value, ValueFields valueFields) { String objectTypeName = value.getObjectTypeName(); if (objectTypeName == null && !value.isDeserialized() && value.getValueSerialized() != null) { throw new ProcessEngineException("Cannot write serialized value for variable '" + valueFields.getName() + "': no 'objectTypeName' provided for non-null value."); } // update type name if the object is deserialized if (value.isDeserialized() && value.getValue() != null) { objectTypeName = getTypeNameForDeserialized(value.getValue()); } return objectTypeName; }
public static void assertObjectValueDeserialized(ObjectValue typedValue, Object value) { Class<? extends Object> expectedObjectType = value.getClass(); assertTrue(typedValue.isDeserialized()); assertEquals(ValueType.OBJECT, typedValue.getType()); assertEquals(value, typedValue.getValue()); assertEquals(value, typedValue.getValue(expectedObjectType)); assertEquals(expectedObjectType, typedValue.getObjectType()); assertEquals(expectedObjectType.getName(), typedValue.getObjectTypeName()); }
public static void assertObjectValueDeserializedNull(ObjectValue typedValue) { assertNotNull(typedValue); assertTrue(typedValue.isDeserialized()); assertNotNull(typedValue.getSerializationDataFormat()); assertNull(typedValue.getValue()); assertNull(typedValue.getValueSerialized()); assertNull(typedValue.getObjectType()); assertNull(typedValue.getObjectTypeName()); }