Example #1
0
        protected internal virtual TypedValueSerializer determineSerializer(VariableSerializers serializers, TypedValue value)
        {
            TypedValueSerializer serializer = serializers.findSerializerForValue(value);

            if (serializer.Type == ValueType.BYTES)
            {
                throw new ProcessEngineException("Variables of type ByteArray cannot be used to query");
            }
            else if (serializer.Type == ValueType.FILE)
            {
                throw new ProcessEngineException("Variables of type File cannot be used to query");
            }
            else if (serializer is JPAVariableSerializer)
            {
                if (wrappedQueryValue.Operator != QueryOperator.EQUALS)
                {
                    throw new ProcessEngineException("JPA entity variables can only be used in 'variableValueEquals'");
                }
            }
            else
            {
                if (!serializer.Type.PrimitiveValueType)
                {
                    throw new ProcessEngineException("Object values cannot be used to query");
                }
            }

            return(serializer);
        }
Example #2
0
        /// <summary>
        /// Checks, if Java serialization will be used and if it is allowed to be used. </summary>
        /// <param name="variableName"> </param>
        /// <param name="value"> </param>
        protected internal virtual void checkJavaSerialization(string variableName, TypedValue value)
        {
            ProcessEngineConfigurationImpl processEngineConfiguration = Context.ProcessEngineConfiguration;

            if (value is SerializableValue && !processEngineConfiguration.JavaSerializationFormatEnabled)
            {
                SerializableValue serializableValue = (SerializableValue)value;

                // if Java serialization is prohibited
                if (!serializableValue.Deserialized)
                {
                    string javaSerializationDataFormat = Variables.SerializationDataFormats.JAVA.Name;
                    string requestedDataFormat         = serializableValue.SerializationDataFormat;

                    if (string.ReferenceEquals(requestedDataFormat, null))
                    {
                        // check if Java serializer will be used
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.impl.variable.serializer.TypedValueSerializer serializerForValue = org.camunda.bpm.engine.impl.persistence.entity.util.TypedValueField.getSerializers().findSerializerForValue(serializableValue, processEngineConfiguration.getFallbackSerializerFactory());
                        TypedValueSerializer serializerForValue = TypedValueField.Serializers.findSerializerForValue(serializableValue, processEngineConfiguration.FallbackSerializerFactory);
                        if (serializerForValue != null)
                        {
                            requestedDataFormat = serializerForValue.SerializationDataformat;
                        }
                    }

                    if (javaSerializationDataFormat.Equals(requestedDataFormat))
                    {
                        throw ProcessEngineLogger.CORE_LOGGER.javaSerializationProhibitedException(variableName);
                    }
                }
            }
        }
Example #3
0
        public virtual TypedValue setValue(TypedValue value)
        {
            // determine serializer to use
            serializer     = Serializers.findSerializerForValue(value, Context.ProcessEngineConfiguration.FallbackSerializerFactory);
            serializerName = serializer.Name;

            if (value is UntypedValueImpl)
            {
                // type has been detected
                value = serializer.convertToTypedValue((UntypedValueImpl)value);
            }

            // set new value
            writeValue(value, valueFields);

            // cache the value
            cachedValue = value;

            // ensure that we serialize the object on command context flush
            // if it can be implicitly changed
            if (notifyOnImplicitUpdates && isMutableValue(cachedValue))
            {
                Context.CommandContext.registerCommandContextListener(this);
            }

            return(value);
        }
Example #4
0
        public virtual VariableSerializers join(VariableSerializers other)
        {
            DefaultVariableSerializers copy = new DefaultVariableSerializers();

            // "other" serializers override existing ones if their names match
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: for (TypedValueSerializer<?> thisSerializer : serializerList)
            foreach (TypedValueSerializer <object> thisSerializer in serializerList)
            {
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: TypedValueSerializer<?> serializer = other.getSerializerByName(thisSerializer.getName());
                TypedValueSerializer <object> serializer = other.getSerializerByName(thisSerializer.Name);

                if (serializer == null)
                {
                    serializer = thisSerializer;
                }

                copy.addSerializer(serializer);
            }

            // add all "other" serializers that did not exist before to the end of the list
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: for (TypedValueSerializer<?> otherSerializer : other.getSerializers())
            foreach (TypedValueSerializer <object> otherSerializer in other.Serializers)
            {
                if (!copy.serializerMap.ContainsKey(otherSerializer.Name))
                {
                    copy.addSerializer(otherSerializer);
                }
            }


            return(copy);
        }
Example #5
0
        public virtual void initializeValue(VariableSerializers serializers, TypedValue typedValue)
        {
            TypedValueSerializer serializer = determineSerializer(serializers, typedValue);

            if (typedValue is UntypedValueImpl)
            {
                // type has been detected
                typedValue = serializer.convertToTypedValue((UntypedValueImpl)typedValue);
            }
            serializer.writeValue(typedValue, this);
            this.type = serializer.Name;
        }
Example #6
0
        public virtual int getSerializerIndexByName(string serializerName)
        {
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: TypedValueSerializer<?> serializer = serializerMap.get(serializerName);
            TypedValueSerializer <object> serializer = serializerMap[serializerName];

            if (serializer != null)
            {
                return(getSerializerIndex(serializer));
            }
            else
            {
                return(-1);
            }
        }
Example #7
0
        protected internal virtual void ensureSerializerInitialized()
        {
            if (!string.ReferenceEquals(serializerName, null) && serializer == null)
            {
                serializer = Serializers.getSerializerByName(serializerName);

                if (serializer == null)
                {
                    serializer = getFallbackSerializer(serializerName);
                }

                if (serializer == null)
                {
                    throw LOG.serializerNotDefinedException(this);
                }
            }
        }
Example #8
0
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: public TypedValueSerializer<?> findSerializerForValue(org.camunda.bpm.engine.variable.value.TypedValue value, VariableSerializerFactory fallBackSerializerFactory)
        public virtual TypedValueSerializer <object> findSerializerForValue(TypedValue value, VariableSerializerFactory fallBackSerializerFactory)
        {
            string defaultSerializationFormat = Context.ProcessEngineConfiguration.DefaultSerializationFormat;

//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.List<TypedValueSerializer<?>> matchedSerializers = new java.util.ArrayList<TypedValueSerializer<?>>();
            IList <TypedValueSerializer <object> > matchedSerializers = new List <TypedValueSerializer <object> >();

            ValueType type = value.Type;

            if (type != null && type.Abstract)
            {
                throw new ProcessEngineException("Cannot serialize value of abstract type " + type.Name);
            }

//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: for (TypedValueSerializer<?> serializer : serializerList)
            foreach (TypedValueSerializer <object> serializer in serializerList)
            {
                if (type == null || serializer.Type.Equals(type))
                {
                    // if type is null => ask handler whether it can handle the value
                    // OR if types match, this handler can handle values of this type
                    //    => BUT we still need to ask as the handler may not be able to handle ALL values of this type.

                    if (serializer.canHandle(value))
                    {
                        matchedSerializers.Add(serializer);
                        if (serializer.Type.PrimitiveValueType)
                        {
                            break;
                        }
                    }
                }
            }

            if (matchedSerializers.Count == 0)
            {
                if (fallBackSerializerFactory != null)
                {
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: TypedValueSerializer<?> serializer = fallBackSerializerFactory.getSerializer(value);
                    TypedValueSerializer <object> serializer = fallBackSerializerFactory.getSerializer(value);
                    if (serializer != null)
                    {
                        return(serializer);
                    }
                }

                throw new ProcessEngineException("Cannot find serializer for value '" + value + "'.");
            }
            else if (matchedSerializers.Count == 1)
            {
                return(matchedSerializers[0]);
            }
            else
            {
                // ambiguous match, use default serializer
                if (!string.ReferenceEquals(defaultSerializationFormat, null))
                {
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: for (TypedValueSerializer<?> typedValueSerializer : matchedSerializers)
                    foreach (TypedValueSerializer <object> typedValueSerializer in matchedSerializers)
                    {
                        if (defaultSerializationFormat.Equals(typedValueSerializer.SerializationDataformat))
                        {
                            return(typedValueSerializer);
                        }
                    }
                }
                // no default serialization dataformat defined or default dataformat cannot serialize this value => use first serializer
                return(matchedSerializers[0]);
            }
        }
Example #9
0
 public virtual VariableSerializers removeSerializer <T1>(TypedValueSerializer <T1> serializer)
 {
     serializerList.Remove(serializer);
     serializerMap.Remove(serializer.Name);
     return(this);
 }
Example #10
0
 public virtual int getSerializerIndex <T1>(TypedValueSerializer <T1> serializer)
 {
     return(serializerList.IndexOf(serializer));
 }
Example #11
0
 public virtual DefaultVariableSerializers addSerializer <T1>(TypedValueSerializer <T1> serializer, int index)
 {
     serializerList.Insert(index, serializer);
     serializerMap[serializer.Name] = serializer;
     return(this);
 }
Example #12
0
 public virtual DefaultVariableSerializers addSerializer <T1>(TypedValueSerializer <T1> serializer)
 {
     return(addSerializer(serializer, serializerList.Count));
 }