All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.juneau.serializer.OutputStreamSerializer Maven / Gradle / Ivy

There is a newer version: 9.0.1
Show newest version
// ***************************************************************************************************************************
// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
// * with the License.  You may obtain a copy of the License at                                                              *
// *                                                                                                                         *
// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
// *                                                                                                                         *
// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
// * specific language governing permissions and limitations under the License.                                              *
// ***************************************************************************************************************************
package org.apache.juneau.serializer;

import org.apache.juneau.*;

/**
 * Subclass of {@link Serializer} for byte-based serializers.
 */
public abstract class OutputStreamSerializer extends Serializer {

	//-------------------------------------------------------------------------------------------------------------------
	// Configurable properties
	//-------------------------------------------------------------------------------------------------------------------

	private static final String PREFIX = "OutputStreamSerializer.";

	/**
	 * Configuration property:  Binary output format.
	 *
	 * 
Property:
*
    *
  • Name: "OutputStreamSerializer.binaryFormat.s" *
  • Data type: {@link BinaryFormat} *
  • Default: {@link BinaryFormat#HEX} *
  • Session property: false *
  • Methods: *
      *
    • {@link OutputStreamSerializerBuilder#binaryFormat(BinaryFormat)} *
    *
* *
Description:
*

* When using the {@link #serializeToString(Object)} method on stream-based serializers, this defines the format to use * when converting the resulting byte array to a string. * * *

Example:
*

* // Create a serializer that serializes to BASE64. * OutputStreamSerializer s = MsgPackSerializer * .create() * .binaryFormat(BASE64) * .build(); * * // Same, but use property. * OutputStreamSerializer s = MsgPackSerializer * .create() * .set(SERIALIZER_binaryOutputFormat, "BASE64") * .build(); * * // The bean we want to serialize. * public class MyBean {...} * * // MessagePack will generate BASE64-encoded string. * String msgPack = s.serializeToString(new MyBean()); *

*/ public static final String OSSERIALIZER_binaryFormat = PREFIX + "binaryFormat.s"; static final OutputStreamSerializer DEFAULT = new OutputStreamSerializer(PropertyStore.create().build(), "", "") { @Override public OutputStreamSerializerSession createSession(SerializerSessionArgs args) { throw new NoSuchMethodError(); } }; //------------------------------------------------------------------------------------------------------------------- // Instance //------------------------------------------------------------------------------------------------------------------- private final BinaryFormat binaryFormat; /** * Constructor. * * @param ps * The property store containing all the settings for this object. * @param produces * The media type that this serializer produces. * @param accept * The accept media types that the serializer can handle. *

* Can contain meta-characters per the media-type specification of {@doc RFC2616.section14.1} *

* If empty, then assumes the only media type supported is produces. *

* For example, if this serializer produces "application/json" but should handle media types of * "application/json" and "text/json", then the arguments should be: *

* super(ps, "application/json", "application/json,text/json"); *

*
...or... *

* super(ps, "application/json", "*​/json"); *

*

* The accept value can also contain q-values. */ protected OutputStreamSerializer(PropertyStore ps, String produces, String accept) { super(ps, produces, accept); binaryFormat = getProperty(OSSERIALIZER_binaryFormat, BinaryFormat.class, BinaryFormat.HEX); } //----------------------------------------------------------------------------------------------------------------- // Abstract methods //----------------------------------------------------------------------------------------------------------------- @Override /* SerializerSession */ public abstract OutputStreamSerializerSession createSession(SerializerSessionArgs args); //----------------------------------------------------------------------------------------------------------------- // Other methods //----------------------------------------------------------------------------------------------------------------- @Override /* Serializer */ public final boolean isWriterSerializer() { return false; } /** * Convenience method for serializing an object to a byte. * * @param o The object to serialize. * @return The output serialized to a byte array. * @throws SerializeException If a problem occurred trying to convert the output. */ @Override public final byte[] serialize(Object o) throws SerializeException { return createSession(createDefaultSessionArgs()).serialize(o); } //----------------------------------------------------------------------------------------------------------------- // Properties //----------------------------------------------------------------------------------------------------------------- /** * Configuration property: Binary output format. * * @see #OSSERIALIZER_binaryFormat * @return * The format to use for the {@link #serializeToString(Object)} method on stream-based serializers when converting byte arrays to strings. */ protected final BinaryFormat getBinaryFormat() { return binaryFormat; } @Override /* Context */ public ObjectMap asMap() { return super.asMap() .append("OutputStreamSerializer", new ObjectMap() .append("binaryFormat", binaryFormat) ); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy