public String getName() { // default implementation returns the name of the type. This is OK since we assume that // there is only a single serializer for a primitive variable type. // If multiple serializers exist for the same type, they must override // this method and return distinct values. return valueType.getName(); }
public Collection<ValueType> getSubTypes(ValueType type) { List<ValueType> types = new ArrayList<ValueType>(); Set<ValueType> validParents = new HashSet<ValueType>(); validParents.add(type); for (ValueType knownType : knownTypes.values()) { if (validParents.contains(knownType.getParent())) { validParents.add(knownType); if (!knownType.isAbstract()) { types.add(knownType); } } } return types; }
if (type != null && type.isAbstract()) { throw new ProcessEngineException("Cannot serialize value of abstract type " + type.getName()); if(serializer.getType().isPrimitiveValueType()) { break;
public static void fromTypedValue(VariableValueDto dto, TypedValue typedValue, boolean preferSerializedValue) { ValueType type = typedValue.getType(); if (type != null) { String typeName = type.getName(); dto.setType(toRestApiTypeName(typeName)); dto.setValueInfo(type.getValueInfo(typedValue)); } if(typedValue instanceof SerializableValue) { SerializableValue serializableValue = (SerializableValue) typedValue; if(serializableValue.isDeserialized() && !preferSerializedValue) { dto.setValue(serializableValue.getValue()); } else { dto.setValue(serializableValue.getValueSerialized()); } } else if(typedValue instanceof FileValue){ //do not set the value for FileValues since we don't want to send megabytes over the network without explicit request } else { dto.setValue(typedValue.getValue()); } }
public void initializeValue(VariableSerializers serializers) { TypedValue typedValue = wrappedQueryValue.getTypedValue(); ValueTypeResolver resolver = Context.getProcessEngineConfiguration().getValueTypeResolver(); Collection<ValueType> concreteTypes = resolver.getSubTypes(typedValue.getType()); for (ValueType type : concreteTypes) { if (type.canConvertFromTypedValue(typedValue)) { TypedValue convertedValue = type.convertFromTypedValue(typedValue); SingleQueryVariableValueCondition aggregatedValue = new SingleQueryVariableValueCondition(wrappedQueryValue); aggregatedValue.initializeValue(serializers, convertedValue); aggregatedValues.add(aggregatedValue); } } }
public void initialize(VariableSerializers serializers) { if (value.getType() != null && value.getType().isAbstract()) { valueCondition = new CompositeQueryVariableValueCondition(this); } else { valueCondition = new SingleQueryVariableValueCondition(this); } valueCondition.initializeValue(serializers); }
protected TypedValueSerializer determineSerializer(VariableSerializers serializers, TypedValue value) { TypedValueSerializer serializer = serializers.findSerializerForValue(value); if(serializer.getType() == ValueType.BYTES){ throw new ProcessEngineException("Variables of type ByteArray cannot be used to query"); } else if(serializer.getType() == ValueType.FILE){ throw new ProcessEngineException("Variables of type File cannot be used to query"); } else if(serializer instanceof JPAVariableSerializer) { if(wrappedQueryValue.getOperator() != QueryOperator.EQUALS) { throw new ProcessEngineException("JPA entity variables can only be used in 'variableValueEquals'"); } } else { if(!serializer.getType().isPrimitiveValueType()) { throw new ProcessEngineException("Object values cannot be used to query"); } } return serializer; }
return valueType.createValue(mappedValue, valueInfo); return valueType.createValue(value, valueInfo); } else { return valueType.createValue(value, valueInfo);
if (type != null && type.isAbstract()) { throw new ProcessEngineException("Cannot serialize value of abstract type " + type.getName()); if(serializer.getType().isPrimitiveValueType()) { break;
public static void fromTypedValue(VariableValueDto dto, TypedValue typedValue, boolean preferSerializedValue) { ValueType type = typedValue.getType(); if (type != null) { String typeName = type.getName(); dto.setType(toRestApiTypeName(typeName)); dto.setValueInfo(type.getValueInfo(typedValue)); } if(typedValue instanceof SerializableValue) { SerializableValue serializableValue = (SerializableValue) typedValue; if(serializableValue.isDeserialized() && !preferSerializedValue) { dto.setValue(serializableValue.getValue()); } else { dto.setValue(serializableValue.getValueSerialized()); } } else if(typedValue instanceof FileValue){ //do not set the value for FileValues since we don't want to send megabytes over the network without explicit request } else { dto.setValue(typedValue.getValue()); } }
public void initializeValue(VariableSerializers serializers) { TypedValue typedValue = wrappedQueryValue.getTypedValue(); ValueTypeResolver resolver = Context.getProcessEngineConfiguration().getValueTypeResolver(); Collection<ValueType> concreteTypes = resolver.getSubTypes(typedValue.getType()); for (ValueType type : concreteTypes) { if (type.canConvertFromTypedValue(typedValue)) { TypedValue convertedValue = type.convertFromTypedValue(typedValue); SingleQueryVariableValueCondition aggregatedValue = new SingleQueryVariableValueCondition(wrappedQueryValue); aggregatedValue.initializeValue(serializers, convertedValue); aggregatedValues.add(aggregatedValue); } } }
public void initialize(VariableSerializers serializers) { if (value.getType() != null && value.getType().isAbstract()) { valueCondition = new CompositeQueryVariableValueCondition(this); } else { valueCondition = new SingleQueryVariableValueCondition(this); } valueCondition.initializeValue(serializers); }
protected TypedValueSerializer determineSerializer(VariableSerializers serializers, TypedValue value) { TypedValueSerializer serializer = serializers.findSerializerForValue(value); if(serializer.getType() == ValueType.BYTES){ throw new ProcessEngineException("Variables of type ByteArray cannot be used to query"); } else if(serializer.getType() == ValueType.FILE){ throw new ProcessEngineException("Variables of type File cannot be used to query"); } else if(serializer instanceof JPAVariableSerializer) { if(wrappedQueryValue.getOperator() != QueryOperator.EQUALS) { throw new ProcessEngineException("JPA entity variables can only be used in 'variableValueEquals'"); } } else { if(!serializer.getType().isPrimitiveValueType()) { throw new ProcessEngineException("Object values cannot be used to query"); } } return serializer; }
return valueType.createValue(mappedValue, valueInfo); return valueType.createValue(value, valueInfo); } else { return valueType.createValue(value, valueInfo);
public String getName() { // default implementation returns the name of the type. This is OK since we assume that // there is only a single serializer for a primitive variable type. // If multiple serializers exist for the same type, they must override // this method and return distinct values. return valueType.getName(); }
if (type != null && type.isAbstract()) { throw new ProcessEngineException("Cannot serialize value of abstract type " + type.getName()); if(serializer.getType().isPrimitiveValueType()) { break;
public static void fromTypedValue(VariableValueDto dto, TypedValue typedValue, boolean preferSerializedValue) { ValueType type = typedValue.getType(); if (type != null) { String typeName = type.getName(); dto.setType(toRestApiTypeName(typeName)); dto.setValueInfo(type.getValueInfo(typedValue)); } if(typedValue instanceof SerializableValue) { SerializableValue serializableValue = (SerializableValue) typedValue; if(serializableValue.isDeserialized() && !preferSerializedValue) { dto.setValue(serializableValue.getValue()); } else { dto.setValue(serializableValue.getValueSerialized()); } } else if(typedValue instanceof FileValue){ //do not set the value for FileValues since we don't want to send megabytes over the network without explicit request } else { dto.setValue(typedValue.getValue()); } }
public void initializeValue(VariableSerializers serializers) { TypedValue typedValue = wrappedQueryValue.getTypedValue(); ValueTypeResolver resolver = Context.getProcessEngineConfiguration().getValueTypeResolver(); Collection<ValueType> concreteTypes = resolver.getSubTypes(typedValue.getType()); for (ValueType type : concreteTypes) { if (type.canConvertFromTypedValue(typedValue)) { TypedValue convertedValue = type.convertFromTypedValue(typedValue); SingleQueryVariableValueCondition aggregatedValue = new SingleQueryVariableValueCondition(wrappedQueryValue); aggregatedValue.initializeValue(serializers, convertedValue); aggregatedValues.add(aggregatedValue); } } }
public Collection<ValueType> getSubTypes(ValueType type) { List<ValueType> types = new ArrayList<ValueType>(); Set<ValueType> validParents = new HashSet<ValueType>(); validParents.add(type); for (ValueType knownType : knownTypes.values()) { if (validParents.contains(knownType.getParent())) { validParents.add(knownType); if (!knownType.isAbstract()) { types.add(knownType); } } } return types; }
public void initialize(VariableSerializers serializers) { if (value.getType() != null && value.getType().isAbstract()) { valueCondition = new CompositeQueryVariableValueCondition(this); } else { valueCondition = new SingleQueryVariableValueCondition(this); } valueCondition.initializeValue(serializers); }