Example #1
0
        public virtual void testSelectHistoricSerializedValuesUpdate()
        {
            ProcessInstance instance = runtimeService.startProcessInstanceByKey("oneTaskProcess");

            JsonSerializable bean = new JsonSerializable("a String", 42, false);

            runtimeService.setVariable(instance.Id, "simpleBean", objectValue(bean).serializationDataFormat(JSON_FORMAT_NAME));

            if (ProcessEngineConfiguration.HISTORY_FULL.Equals(processEngineConfiguration.History))
            {
                HistoricVariableUpdate historicUpdate = (HistoricVariableUpdate)historyService.createHistoricDetailQuery().variableUpdates().singleResult();

                assertNotNull(historicUpdate.Value);
                assertNull(historicUpdate.ErrorMessage);

                assertEquals(ValueType.OBJECT.Name, historicUpdate.TypeName);
                assertEquals(ValueType.OBJECT.Name, historicUpdate.VariableTypeName);

                JsonSerializable historyValue = (JsonSerializable)historicUpdate.Value;
                assertEquals(bean.StringProperty, historyValue.StringProperty);
                assertEquals(bean.IntProperty, historyValue.IntProperty);
                assertEquals(bean.BooleanProperty, historyValue.BooleanProperty);

                ObjectValue typedValue = (ObjectValue)historicUpdate.TypedValue;
                assertEquals(JSON_FORMAT_NAME, typedValue.SerializationDataFormat);
                JSONAssert.assertEquals(bean.toExpectedJsonString(), new string(typedValue.ValueSerialized), true);
//JAVA TO C# CONVERTER WARNING: The .NET Type.FullName property will not always yield results identical to the Java Class.getName method:
                assertEquals(typeof(JsonSerializable).FullName, typedValue.ObjectTypeName);
            }
        }
Example #2
0
        public virtual void testSerializationAsJava()
        {
            ProcessInstance instance = runtimeService.startProcessInstanceByKey("oneTaskProcess");

            JavaSerializable bean = new JavaSerializable("a String", 42, true);

            // request object to be serialized as Java
            runtimeService.setVariable(instance.Id, "simpleBean", objectValue(bean).serializationDataFormat(Variables.SerializationDataFormats.JAVA).create());

            // validate untyped value
            object value = runtimeService.getVariable(instance.Id, "simpleBean");

            assertEquals(bean, value);

            // validate typed value
            ObjectValue typedValue = runtimeService.getVariableTyped(instance.Id, "simpleBean");

            assertEquals(ValueType.OBJECT, typedValue.Type);

            assertTrue(typedValue.Deserialized);

            assertEquals(bean, typedValue.Value);
            assertEquals(bean, typedValue.getValue(typeof(JavaSerializable)));
            assertEquals(typeof(JavaSerializable), typedValue.ObjectType);

            assertEquals(Variables.SerializationDataFormats.JAVA.Name, typedValue.SerializationDataFormat);
//JAVA TO C# CONVERTER WARNING: The .NET Type.FullName property will not always yield results identical to the Java Class.getName method:
            assertEquals(typeof(JavaSerializable).FullName, typedValue.ObjectTypeName);
        }
Example #3
0
        protected internal virtual T build <T>(T mockVariable) where T : org.camunda.bpm.engine.runtime.VariableInstance
        {
            when(mockVariable.Id).thenReturn(id_Renamed);
            when(mockVariable.Name).thenReturn(name_Renamed);
            when(mockVariable.TypeName).thenReturn(typedValue_Renamed.Type.Name);

            if (typedValue_Renamed.GetType().IsAssignableFrom(typeof(ObjectValue)))
            {
                ObjectValue objectValue = (ObjectValue)typedValue_Renamed;
                if (objectValue.Deserialized)
                {
                    when(mockVariable.Value).thenReturn(typedValue_Renamed.Value);
                }
                else
                {
                    when(mockVariable.Value).thenReturn(null);
                }
            }
            else
            {
                when(mockVariable.Value).thenReturn(typedValue_Renamed.Value);
            }

            when(mockVariable.TypedValue).thenReturn(typedValue_Renamed);
            when(mockVariable.ProcessInstanceId).thenReturn(processInstanceId_Renamed);
            when(mockVariable.ExecutionId).thenReturn(executionId_Renamed);
            when(mockVariable.CaseInstanceId).thenReturn(caseInstanceId_Renamed);
            when(mockVariable.CaseExecutionId).thenReturn(caseExecutionId_Renamed);
            when(mockVariable.TaskId).thenReturn(taskId_Renamed);
            when(mockVariable.ActivityInstanceId).thenReturn(activityInstanceId_Renamed);
            when(mockVariable.TenantId).thenReturn(tenantId_Renamed);
            when(mockVariable.ErrorMessage).thenReturn(errorMessage_Renamed);

            return(mockVariable);
        }
Example #4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testFallbackSerializerDoesNotOverrideRegularSerializer()
        public virtual void testFallbackSerializerDoesNotOverrideRegularSerializer()
        {
            // given
            // that the process engine is configured with a serializer for a certain format
            // and a fallback serializer factory for the same format
            ProcessEngineConfigurationImpl engineConfiguration = (new StandaloneInMemProcessEngineConfiguration()).setJdbcUrl("jdbc:h2:mem:camunda-forceclose").setProcessEngineName("engine-forceclose");

            engineConfiguration.CustomPreVariableSerializers = Arrays.asList <TypedValueSerializer>(new ExampleConstantSerializer());
            engineConfiguration.FallbackSerializerFactory    = new ExampleSerializerFactory();

            processEngine = engineConfiguration.buildProcessEngine();
            deployOneTaskProcess(processEngine);

            // when setting a variable that no regular serializer can handle
            ObjectValue objectValue = Variables.objectValue("foo").serializationDataFormat(ExampleSerializer.FORMAT).create();

            ProcessInstance pi = processEngine.RuntimeService.startProcessInstanceByKey("oneTaskProcess", Variables.createVariables().putValueTyped("var", objectValue));

            ObjectValue fetchedValue = processEngine.RuntimeService.getVariableTyped(pi.Id, "var", true);

            // then the fallback serializer is used
            Assert.assertNotNull(fetchedValue);
            Assert.assertEquals(ExampleSerializer.FORMAT, fetchedValue.SerializationDataFormat);
            Assert.assertEquals(ExampleConstantSerializer.DESERIALIZED_VALUE, fetchedValue.Value);
        }
Example #5
0
        public virtual void testSerializationOfUnknownFormat()
        {
            // given
            ProcessInstance instance = runtimeService.startProcessInstanceByKey("oneTaskProcess");

            // when
            ObjectValue objectValue = Variables.serializedObjectValue("foo").serializationDataFormat("application/foo").objectTypeName("org.camunda.Foo").create();

            runtimeService.setVariable(instance.Id, "var", objectValue);

            // then
            try
            {
                runtimeService.getVariable(instance.Id, "var");
                fail();
            }
            catch (ProcessEngineException e)
            {
                assertTextPresent("Fallback serializer cannot handle deserialized objects", e.Message);
            }

            ObjectValue returnedValue = runtimeService.getVariableTyped(instance.Id, "var", false);

            assertFalse(returnedValue.Deserialized);
            assertEquals("application/foo", returnedValue.SerializationDataFormat);
            assertEquals("foo", returnedValue.ValueSerialized);
            assertEquals("org.camunda.Foo", returnedValue.ObjectTypeName);
        }
Example #6
0
        public static MockObjectValue fromObjectValue(ObjectValue objectValue)
        {
            MockObjectValue result = new MockObjectValue(objectValue.Value);

            result.isDeserialized          = objectValue.Deserialized;
            result.objectTypeName          = objectValue.ObjectTypeName;
            result.serializationDataFormat = objectValue.SerializationDataFormat;
            result.serializedValue         = objectValue.ValueSerialized;
            result.type = objectValue.Type;

            return(result);
        }
Example #7
0
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: public org.camunda.bpm.engine.impl.variable.serializer.TypedValueSerializer<?> getSerializer(org.camunda.bpm.engine.variable.value.TypedValue value)
        public virtual TypedValueSerializer <object> getSerializer(TypedValue value)
        {
            if (value is ObjectValue)
            {
                ObjectValue objectValue = (ObjectValue)value;
                if (objectValue.SerializationDataFormat != null && !objectValue.Deserialized)
                {
                    return(new FallbackSpinObjectValueSerializer(objectValue.SerializationDataFormat));
                }
            }
            return(null);
        }
Example #8
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testGetSingleVariableInstanceDeserialized()
        public virtual void testGetSingleVariableInstanceDeserialized()
        {
            ObjectValue serializedValue = MockObjectValue.fromObjectValue(Variables.objectValue("a value").serializationDataFormat("aDataFormat").create()).objectTypeName("aTypeName");

            MockHistoricVariableInstanceBuilder builder = MockProvider.mockHistoricVariableInstance().typedValue(serializedValue);
            HistoricVariableInstance            variableInstanceMock = builder.build();

            when(variableInstanceQueryMock.variableId(variableInstanceMock.Id)).thenReturn(variableInstanceQueryMock);
            when(variableInstanceQueryMock.disableBinaryFetching()).thenReturn(variableInstanceQueryMock);
            when(variableInstanceQueryMock.singleResult()).thenReturn(variableInstanceMock);

            given().pathParam("id", MockProvider.EXAMPLE_VARIABLE_INSTANCE_ID).then().expect().statusCode(Status.OK.StatusCode).and().body("id", equalTo(builder.Id)).body("name", equalTo(builder.Name)).body("type", equalTo(VariableTypeHelper.toExpectedValueTypeName(builder.TypedValue.Type))).body("value", equalTo("a value")).body("valueInfo.serializationDataFormat", equalTo("aDataFormat")).body("valueInfo.objectTypeName", equalTo("aTypeName")).body("processDefinitionKey", equalTo(builder.ProcessDefinitionKey)).body("processDefinitionId", equalTo(builder.ProcessDefinitionId)).body("processInstanceId", equalTo(builder.ProcessInstanceId)).body("executionId", equalTo(builder.ExecutionId)).body("errorMessage", equalTo(builder.ErrorMessage)).body("activityInstanceId", equalTo(builder.ActivityInstanceId)).body("caseDefinitionKey", equalTo(builder.CaseDefinitionKey)).body("caseDefinitionId", equalTo(builder.CaseDefinitionId)).body("caseInstanceId", equalTo(builder.CaseInstanceId)).body("caseExecutionId", equalTo(builder.CaseExecutionId)).body("taskId", equalTo(builder.TaskId)).body("tenantId", equalTo(builder.TenantId)).body("createTime", equalTo(MockProvider.EXAMPLE_HISTORIC_VARIABLE_INSTANCE_CREATE_TIME)).body("removalTime", equalTo(MockProvider.EXAMPLE_HISTORIC_VARIABLE_INSTANCE_REMOVAL_TIME)).body("rootProcessInstanceId", equalTo(builder.RootProcessInstanceId)).when().get(VARIABLE_INSTANCE_URL);

            verify(variableInstanceQueryMock, times(1)).disableBinaryFetching();
            verify(variableInstanceQueryMock, never()).disableCustomObjectDeserialization();
        }
Example #9
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testGetSingleVariableUpdateDeserialized()
        public virtual void testGetSingleVariableUpdateDeserialized()
        {
            ObjectValue serializedValue = MockObjectValue.fromObjectValue(Variables.objectValue("a value").serializationDataFormat("aDataFormat").create()).objectTypeName("aTypeName");

            MockHistoricVariableUpdateBuilder builder = MockProvider.mockHistoricVariableUpdate().typedValue(serializedValue);
            HistoricVariableUpdate            variableInstanceMock = builder.build();

            when(historicDetailQueryMock.detailId(variableInstanceMock.Id)).thenReturn(historicDetailQueryMock);
            when(historicDetailQueryMock.disableBinaryFetching()).thenReturn(historicDetailQueryMock);
            when(historicDetailQueryMock.singleResult()).thenReturn(variableInstanceMock);

            given().pathParam("id", builder.Id).then().expect().statusCode(Status.OK.StatusCode).and().body("id", equalTo(builder.Id)).body("variableName", equalTo(builder.Name)).body("variableInstanceId", equalTo(builder.VariableInstanceId)).body("variableType", equalTo(VariableTypeHelper.toExpectedValueTypeName(builder.TypedValue.Type))).body("value", equalTo("a value")).body("valueInfo.serializationDataFormat", equalTo("aDataFormat")).body("valueInfo.objectTypeName", equalTo("aTypeName")).body("processDefinitionKey", equalTo(builder.ProcessDefinitionKey)).body("processDefinitionId", equalTo(builder.ProcessDefinitionId)).body("processInstanceId", equalTo(builder.ProcessInstanceId)).body("errorMessage", equalTo(builder.ErrorMessage)).body("activityInstanceId", equalTo(builder.ActivityInstanceId)).body("revision", equalTo(builder.Revision)).body("time", equalTo(builder.Time)).body("taskId", equalTo(builder.TaskId)).body("executionId", equalTo(builder.ExecutionId)).body("caseDefinitionKey", equalTo(builder.CaseDefinitionKey)).body("caseDefinitionId", equalTo(builder.CaseDefinitionId)).body("caseInstanceId", equalTo(builder.CaseInstanceId)).body("caseExecutionId", equalTo(builder.CaseExecutionId)).body("tenantId", equalTo(builder.TenantId)).when().get(HISTORIC_DETAIL_URL);

            verify(historicDetailQueryMock, times(1)).disableBinaryFetching();
            verify(historicDetailQueryMock, never()).disableCustomObjectDeserialization();
        }
Example #10
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testGetSingleVariableInstanceSerialized()
        public virtual void testGetSingleVariableInstanceSerialized()
        {
            ObjectValue serializedValue = Variables.serializedObjectValue("a serialized value").serializationDataFormat("aDataFormat").objectTypeName("aTypeName").create();

            MockVariableInstanceBuilder builder = MockProvider.mockVariableInstance().typedValue(serializedValue);
            VariableInstance            variableInstanceMock = builder.build();

            when(variableInstanceQueryMock.variableId(variableInstanceMock.Id)).thenReturn(variableInstanceQueryMock);
            when(variableInstanceQueryMock.disableBinaryFetching()).thenReturn(variableInstanceQueryMock);
            when(variableInstanceQueryMock.disableCustomObjectDeserialization()).thenReturn(variableInstanceQueryMock);
            when(variableInstanceQueryMock.singleResult()).thenReturn(variableInstanceMock);

            given().pathParam("id", MockProvider.EXAMPLE_VARIABLE_INSTANCE_ID).queryParam("deserializeValue", false).then().expect().statusCode(Status.OK.StatusCode).and().body("id", equalTo(builder.Id)).body("name", equalTo(builder.Name)).body("type", equalTo(VariableTypeHelper.toExpectedValueTypeName(builder.TypedValue.Type))).body("value", equalTo("a serialized value")).body("valueInfo.serializationDataFormat", equalTo("aDataFormat")).body("valueInfo.objectTypeName", equalTo("aTypeName")).body("processInstanceId", equalTo(builder.ProcessInstanceId)).body("executionId", equalTo(builder.ExecutionId)).body("caseInstanceId", equalTo(builder.CaseInstanceId)).body("caseExecutionId", equalTo(builder.CaseExecutionId)).body("taskId", equalTo(builder.TaskId)).body("activityInstanceId", equalTo(builder.ActivityInstanceId)).body("tenantId", equalTo(builder.TenantId)).body("errorMessage", equalTo(builder.ErrorMessage)).when().get(VARIABLE_INSTANCE_URL);

            verify(variableInstanceQueryMock, times(1)).disableBinaryFetching();
            verify(variableInstanceQueryMock, times(1)).disableCustomObjectDeserialization();
        }
Example #11
0
        public virtual HistoricVariableUpdate build()
        {
            HistoricVariableUpdate mockVariable = mock(typeof(HistoricVariableUpdate));

            when(mockVariable.Id).thenReturn(id_Renamed);
            when(mockVariable.VariableName).thenReturn(name_Renamed);
            when(mockVariable.VariableInstanceId).thenReturn(variableInstanceId_Renamed);
            when(mockVariable.VariableTypeName).thenReturn(typedValue_Renamed.Type.Name);

            if (typedValue_Renamed.GetType().IsAssignableFrom(typeof(ObjectValue)))
            {
                ObjectValue objectValue = (ObjectValue)typedValue_Renamed;
                if (objectValue.Deserialized)
                {
                    when(mockVariable.Value).thenReturn(typedValue_Renamed.Value);
                }
                else
                {
                    when(mockVariable.Value).thenReturn(null);
                }
            }
            else
            {
                when(mockVariable.Value).thenReturn(typedValue_Renamed.Value);
            }

            when(mockVariable.TypedValue).thenReturn(typedValue_Renamed);
            when(mockVariable.ProcessDefinitionKey).thenReturn(processDefinitionKey_Renamed);
            when(mockVariable.ProcessDefinitionId).thenReturn(processDefinitionId_Renamed);
            when(mockVariable.ProcessInstanceId).thenReturn(processInstanceId_Renamed);
            when(mockVariable.ErrorMessage).thenReturn(errorMessage_Renamed);
            when(mockVariable.Revision).thenReturn(revision_Renamed);
            when(mockVariable.Time).thenReturn(DateTimeUtil.parseDate(time_Renamed));
            when(mockVariable.ActivityInstanceId).thenReturn(activityInstanceId_Renamed);
            when(mockVariable.TaskId).thenReturn(taskId_Renamed);
            when(mockVariable.ExecutionId).thenReturn(executionId_Renamed);
            when(mockVariable.TypeName).thenReturn(typedValue_Renamed.Type.Name);
            when(mockVariable.CaseDefinitionKey).thenReturn(caseDefinitionKey_Renamed);
            when(mockVariable.CaseDefinitionId).thenReturn(caseDefinitionId_Renamed);
            when(mockVariable.CaseInstanceId).thenReturn(caseInstanceId_Renamed);
            when(mockVariable.CaseExecutionId).thenReturn(caseExecutionId_Renamed);
            when(mockVariable.TenantId).thenReturn(tenantId_Renamed);
            when(mockVariable.UserOperationId).thenReturn(userOperationId_Renamed);

            return(mockVariable);
        }
Example #12
0
        public virtual void testSelectHistoricSerializedValues()
        {
            if (processEngineConfiguration.HistoryLevel.Id >= org.camunda.bpm.engine.impl.history.HistoryLevel_Fields.HISTORY_LEVEL_AUDIT.Id)
            {
                ProcessInstance instance = runtimeService.startProcessInstanceByKey("oneTaskProcess");

                JsonSerializable bean = new JsonSerializable("a String", 42, false);
                runtimeService.setVariable(instance.Id, "simpleBean", objectValue(bean).serializationDataFormat(JSON_FORMAT_NAME));

                HistoricVariableInstance historicVariable = historyService.createHistoricVariableInstanceQuery().singleResult();
                assertNotNull(historicVariable.Value);
                assertNull(historicVariable.ErrorMessage);

                ObjectValue typedValue = (ObjectValue)historicVariable.TypedValue;
                assertEquals(JSON_FORMAT_NAME, typedValue.SerializationDataFormat);
                JSONAssert.assertEquals(bean.toExpectedJsonString(), new string(typedValue.ValueSerialized), true);
//JAVA TO C# CONVERTER WARNING: The .NET Type.FullName property will not always yield results identical to the Java Class.getName method:
                assertEquals(typeof(JsonSerializable).FullName, typedValue.ObjectTypeName);
            }
        }
Example #13
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: public void execute(org.camunda.bpm.engine.delegate.DelegateExecution execution) throws Exception
        public virtual void execute(DelegateExecution execution)
        {
            // validate integer variable
            int?expectedIntValue = 1234;

            assertEquals(expectedIntValue, execution.getVariable("anIntegerVariable"));
            assertEquals(expectedIntValue, execution.getVariableTyped("anIntegerVariable").Value);
            assertEquals(ValueType.INTEGER, execution.getVariableTyped("anIntegerVariable").Type);
            assertNull(execution.getVariableLocal("anIntegerVariable"));
            assertNull(execution.getVariableLocalTyped("anIntegerVariable"));

            // set an additional local variable
            execution.setVariableLocal("aStringVariable", "aStringValue");

            string expectedStringValue = "aStringValue";

            assertEquals(expectedStringValue, execution.getVariable("aStringVariable"));
            assertEquals(expectedStringValue, execution.getVariableTyped("aStringVariable").Value);
            assertEquals(ValueType.STRING, execution.getVariableTyped("aStringVariable").Type);
            assertEquals(expectedStringValue, execution.getVariableLocal("aStringVariable"));
            assertEquals(expectedStringValue, execution.getVariableLocalTyped("aStringVariable").Value);
            assertEquals(ValueType.STRING, execution.getVariableLocalTyped("aStringVariable").Type);

            SimpleSerializableBean objectValue = (SimpleSerializableBean)execution.getVariable("anObjectValue");

            assertNotNull(objectValue);
            assertEquals(10, objectValue.IntProperty);
            ObjectValue variableTyped = execution.getVariableTyped("anObjectValue");

            assertEquals(10, variableTyped.getValue(typeof(SimpleSerializableBean)).IntProperty);
            assertEquals(Variables.SerializationDataFormats.JAVA.Name, variableTyped.SerializationDataFormat);

            objectValue = (SimpleSerializableBean)execution.getVariable("anUntypedObjectValue");
            assertNotNull(objectValue);
            assertEquals(30, objectValue.IntProperty);
            variableTyped = execution.getVariableTyped("anUntypedObjectValue");
            assertEquals(30, variableTyped.getValue(typeof(SimpleSerializableBean)).IntProperty);
            assertEquals(Context.ProcessEngineConfiguration.DefaultSerializationFormat, variableTyped.SerializationDataFormat);
        }
Example #14
0
        /// <summary>
        /// Tests that
        /// 1) a serialized value can be set OUT OF process application context
        ///   even if the data format is not available (using the fallback serializer)
        /// 2) and that this value can be deserialized IN process application context
        ///   by using the PA-local serializer
        /// </summary>
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void customFormatCanBeUsedForVariableSerialization()
        public virtual void customFormatCanBeUsedForVariableSerialization()
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.runtime.ProcessInstance pi = runtimeService.startProcessInstanceByKey("testProcess", org.camunda.bpm.engine.variable.Variables.createVariables().putValue("serializedObject", serializedObjectValue("foo").serializationDataFormat(org.camunda.bpm.integrationtest.functional.spin.dataformat.FooDataFormat.NAME).objectTypeName(org.camunda.bpm.integrationtest.functional.spin.dataformat.Foo.class.getName())));
//JAVA TO C# CONVERTER WARNING: The .NET Type.FullName property will not always yield results identical to the Java Class.getName method:
            ProcessInstance pi = runtimeService.startProcessInstanceByKey("testProcess", Variables.createVariables().putValue("serializedObject", serializedObjectValue("foo").serializationDataFormat(FooDataFormat.NAME).objectTypeName(typeof(Foo).FullName)));

            ObjectValue objectValue = null;

            try
            {
                ProcessApplicationContext.CurrentProcessApplication = ReferenceStoringProcessApplication.INSTANCE;
                objectValue = runtimeService.getVariableTyped(pi.Id, "serializedObject", true);
            }
            finally
            {
                ProcessApplicationContext.clear();
            }

            object value = objectValue.Value;

            Assert.assertNotNull(value);
            Assert.assertTrue(value is Foo);
        }
Example #15
0
 public SerializedObjectValueBuilderImpl(ObjectValue value)
 {
     variableValue = (ObjectValueImpl)value;
 }
Example #16
0
 public ObjectVariableBuilderImpl(ObjectValue value)
 {
     variableValue = (ObjectValueImpl)value;
 }