org.apache.juneau.plaintext.PlainTextSerializer Maven / Gradle / Ivy
// ***************************************************************************************************************************
// * 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.plaintext;
import org.apache.juneau.*;
import org.apache.juneau.serializer.*;
import org.apache.juneau.transform.*;
/**
* Serializes POJOs to plain text using just the toString()
method on the serialized object.
*
* Media types:
*
* Handles Accept
types: text/plain
*
*
* Produces Content-Type
types: text/plain
*
*
Description:
*
* Essentially converts POJOs to plain text using the toString()
method.
*
*
* Also serializes objects using a transform if the object class has an {@link PojoSwap PojoSwap<?,String>}
* transform defined on it.
*/
public class PlainTextSerializer extends WriterSerializer {
//-------------------------------------------------------------------------------------------------------------------
// Predefined instances
//-------------------------------------------------------------------------------------------------------------------
/** Default serializer, all default settings.*/
public static final PlainTextSerializer DEFAULT = new PlainTextSerializer(PropertyStore.create());
//-------------------------------------------------------------------------------------------------------------------
// Instance
//-------------------------------------------------------------------------------------------------------------------
private final SerializerContext ctx;
/**
* Constructor.
*
* @param propertyStore
* The property store containing all the settings for this object.
*/
public PlainTextSerializer(PropertyStore propertyStore) {
this(propertyStore, "text/plain");
}
/**
* Constructor.
*
* @param propertyStore
* 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
* RFC2616/14.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 (propertyStore, "application/json" , "application/json" , "text/json" );
*
...or...
*
super (propertyStore, "application/json" , "*/json" );
*/
public PlainTextSerializer(PropertyStore propertyStore, String produces, String...accept) {
super(propertyStore, produces, accept);
this.ctx = createContext(SerializerContext.class);
}
@Override /* CoreObject */
public PlainTextSerializerBuilder builder() {
return new PlainTextSerializerBuilder(propertyStore);
}
@Override /* Serializer */
public WriterSerializerSession createSession(SerializerSessionArgs args) {
return new PlainTextSerializerSession(ctx, args);
}
}