@Before public void setUp() { serializer = new FileValueSerializer(); }
@Override protected boolean canWriteValue(TypedValue value) { if (value == null || value.getType() == null) { // untyped value return false; } return value.getType().getName().equals(getName()); }
@Override public FileValue readValue(ValueFields valueFields, boolean deserializeValue) { FileValueBuilder builder = Variables.fileValue(valueFields.getTextValue()); if (valueFields.getByteArrayValue() != null) { builder.file(valueFields.getByteArrayValue()); } // to ensure the same array size all the time if (valueFields.getTextValue2() != null) { String[] split = Arrays.copyOf(valueFields.getTextValue2().split(MIMETYPE_ENCODING_SEPARATOR, NR_OF_VALUES_IN_TEXTFIELD2), NR_OF_VALUES_IN_TEXTFIELD2); String mimeType = returnNullIfEmptyString(split[0]); String encoding = returnNullIfEmptyString(split[1]); builder.mimeType(mimeType); builder.encoding(encoding); } return builder.create(); }
@Test public void testWriteMimetypeFilenameAndBytesValueWithShortcutMethod() throws URISyntaxException, UnsupportedEncodingException { File file = new File(this.getClass().getClassLoader().getResource("org/camunda/bpm/engine/test/standalone/variables/simpleFile.txt").toURI()); FileValue fileValue = Variables.fileValue(file); ValueFields valueFields = new MockValueFields(); serializer.writeValue(fileValue, valueFields); assertThat(new String(valueFields.getByteArrayValue(), "UTF-8"), is("text")); assertThat(valueFields.getTextValue(), is("simpleFile.txt")); assertThat(valueFields.getTextValue2(), is("text/plain" + SEPARATOR)); }
@Test public void testReadFilenameAndByteArrayValue() throws IOException { InputStream is = this.getClass().getClassLoader().getResourceAsStream("org/camunda/bpm/engine/test/standalone/variables/simpleFile.txt"); byte[] data = new byte[is.available()]; DataInputStream dataInputStream = new DataInputStream(is); dataInputStream.readFully(data); dataInputStream.close(); MockValueFields valueFields = new MockValueFields(); String filename = "file.txt"; valueFields.setTextValue(filename); valueFields.setByteArrayValue(data); FileValue fileValue = serializer.readValue(valueFields, true); assertThat(fileValue.getFilename(), is(filename)); assertThat(fileValue.getMimeType(), is(nullValue())); checkStreamFromValue(fileValue, "text"); }
@Test(expected = UnsupportedOperationException.class) public void testThrowsExceptionWhenConvertingUnknownUntypedValueToTypedValue() { serializer.convertToTypedValue((UntypedValueImpl) Variables.untypedValue(new Object())); }
@Test public void testTypeIsFileValueType() { assertThat(serializer.getType(), is(instanceOf(FileValueTypeImpl.class))); }
@Test public void testWriteMimetypeFilenameAndBytesValue() throws UnsupportedEncodingException { String filename = "test.txt"; String mimeType = "text/json"; InputStream is = this.getClass().getClassLoader().getResourceAsStream("org/camunda/bpm/engine/test/standalone/variables/simpleFile.txt"); FileValue fileValue = Variables.fileValue(filename).mimeType(mimeType).file(is).create(); ValueFields valueFields = new MockValueFields(); serializer.writeValue(fileValue, valueFields); assertThat(new String(valueFields.getByteArrayValue(), "UTF-8"), is("text")); assertThat(valueFields.getTextValue(), is(filename)); assertThat(valueFields.getTextValue2(), is(mimeType + SEPARATOR)); }
@Test public void testReadFilenameValue() throws IOException { MockValueFields valueFields = new MockValueFields(); String filename = "file.txt"; valueFields.setTextValue(filename); FileValue fileValue = serializer.readValue(valueFields, true); assertThat(fileValue.getFilename(), is(filename)); assertThat(fileValue.getMimeType(), is(nullValue())); assertThat(fileValue.getValue(), is(nullValue())); }
@Test(expected = UnsupportedOperationException.class) public void testThrowsExceptionWhenConvertingUnknownUntypedValueToTypedValue() { serializer.convertToTypedValue((UntypedValueImpl) Variables.untypedValue(new Object())); }
@Test public void testTypeIsFileValueType() { assertThat(serializer.getType(), is(instanceOf(FileValueTypeImpl.class))); }
@Override protected boolean canWriteValue(TypedValue value) { if (value == null || value.getType() == null) { // untyped value return false; } return value.getType().getName().equals(getName()); }
protected void initSerialization() { if (variableSerializers == null) { variableSerializers = new DefaultVariableSerializers(); if (customPreVariableSerializers != null) { for (TypedValueSerializer<?> customVariableType : customPreVariableSerializers) { variableSerializers.addSerializer(customVariableType); } } // register built-in serializers variableSerializers.addSerializer(new NullValueSerializer()); variableSerializers.addSerializer(new StringValueSerializer()); variableSerializers.addSerializer(new BooleanValueSerializer()); variableSerializers.addSerializer(new ShortValueSerializer()); variableSerializers.addSerializer(new IntegerValueSerializer()); variableSerializers.addSerializer(new LongValueSerlializer()); variableSerializers.addSerializer(new DateValueSerializer()); variableSerializers.addSerializer(new DoubleValueSerializer()); variableSerializers.addSerializer(new ByteArrayValueSerializer()); variableSerializers.addSerializer(new JavaObjectSerializer()); variableSerializers.addSerializer(new FileValueSerializer()); if (customPostVariableSerializers != null) { for (TypedValueSerializer<?> customVariableType : customPostVariableSerializers) { variableSerializers.addSerializer(customVariableType); } } } }
@Test public void testWriteFilenameOnlyValue() { String filename = "test.txt"; FileValue fileValue = Variables.fileValue(filename).create(); ValueFields valueFields = new MockValueFields(); serializer.writeValue(fileValue, valueFields); assertThat(valueFields.getByteArrayValue(), is(nullValue())); assertThat(valueFields.getTextValue(), is(filename)); assertThat(valueFields.getTextValue2(), is(nullValue())); }
@Override public FileValue readValue(ValueFields valueFields, boolean deserializeValue) { FileValueBuilder builder = Variables.fileValue(valueFields.getTextValue()); if (valueFields.getByteArrayValue() != null) { builder.file(valueFields.getByteArrayValue()); } // to ensure the same array size all the time if (valueFields.getTextValue2() != null) { String[] split = Arrays.copyOf(valueFields.getTextValue2().split(MIMETYPE_ENCODING_SEPARATOR, NR_OF_VALUES_IN_TEXTFIELD2), NR_OF_VALUES_IN_TEXTFIELD2); String mimeType = returnNullIfEmptyString(split[0]); String encoding = returnNullIfEmptyString(split[1]); builder.mimeType(mimeType); builder.encoding(encoding); } return builder.create(); }
@Test public void testReadFileNameEncodingAndByteArray() throws IOException { InputStream is = this.getClass().getClassLoader().getResourceAsStream("org/camunda/bpm/engine/test/standalone/variables/simpleFile.txt"); byte[] data = new byte[is.available()]; DataInputStream dataInputStream = new DataInputStream(is); dataInputStream.readFully(data); dataInputStream.close(); MockValueFields valueFields = new MockValueFields(); String filename = "file.txt"; valueFields.setTextValue(filename); valueFields.setByteArrayValue(data); String encoding = SEPARATOR + "UTF-8"; valueFields.setTextValue2(encoding); FileValue fileValue = serializer.readValue(valueFields, true); assertThat(fileValue.getFilename(), is(filename)); assertThat(fileValue.getEncoding(), is("UTF-8")); assertThat(fileValue.getEncodingAsCharset(), is(Charset.forName("UTF-8"))); checkStreamFromValue(fileValue, "text"); }
@Test public void testNameIsFile() { assertThat(serializer.getName(), is("file")); }
protected void initSerialization() { if (variableSerializers == null) { variableSerializers = new DefaultVariableSerializers(); if (customPreVariableSerializers != null) { for (TypedValueSerializer<?> customVariableType : customPreVariableSerializers) { variableSerializers.addSerializer(customVariableType); } } // register built-in serializers variableSerializers.addSerializer(new NullValueSerializer()); variableSerializers.addSerializer(new StringValueSerializer()); variableSerializers.addSerializer(new BooleanValueSerializer()); variableSerializers.addSerializer(new ShortValueSerializer()); variableSerializers.addSerializer(new IntegerValueSerializer()); variableSerializers.addSerializer(new LongValueSerlializer()); variableSerializers.addSerializer(new DateValueSerializer()); variableSerializers.addSerializer(new DoubleValueSerializer()); variableSerializers.addSerializer(new ByteArrayValueSerializer()); variableSerializers.addSerializer(new JavaObjectSerializer()); variableSerializers.addSerializer(new FileValueSerializer()); if (customPostVariableSerializers != null) { for (TypedValueSerializer<?> customVariableType : customPostVariableSerializers) { variableSerializers.addSerializer(customVariableType); } } } }
@Test public void testWriteMimetypeFilenameBytesValueAndEncoding() throws UnsupportedEncodingException { String filename = "test.txt"; String mimeType = "text/json"; Charset encoding = Charset.forName("UTF-8"); InputStream is = this.getClass().getClassLoader().getResourceAsStream("org/camunda/bpm/engine/test/standalone/variables/simpleFile.txt"); FileValue fileValue = Variables.fileValue(filename).mimeType(mimeType).encoding(encoding).file(is).create(); ValueFields valueFields = new MockValueFields(); serializer.writeValue(fileValue, valueFields); assertThat(new String(valueFields.getByteArrayValue(), "UTF-8"), is("text")); assertThat(valueFields.getTextValue(), is(filename)); assertThat(valueFields.getTextValue2(), is(mimeType + SEPARATOR + encoding.name())); }
@Override public FileValue readValue(ValueFields valueFields, boolean deserializeValue) { FileValueBuilder builder = Variables.fileValue(valueFields.getTextValue()); if (valueFields.getByteArrayValue() != null) { builder.file(valueFields.getByteArrayValue()); } // to ensure the same array size all the time if (valueFields.getTextValue2() != null) { String[] split = Arrays.copyOf(valueFields.getTextValue2().split(MIMETYPE_ENCODING_SEPARATOR, NR_OF_VALUES_IN_TEXTFIELD2), NR_OF_VALUES_IN_TEXTFIELD2); String mimeType = returnNullIfEmptyString(split[0]); String encoding = returnNullIfEmptyString(split[1]); builder.mimeType(mimeType); builder.encoding(encoding); } return builder.create(); }