blob: 8821baffb3c92471495aa850bf9e0665aecd7f79 [file] [log] [blame]
/**
* Copyright (c) 2008-2011, http://www.snakeyaml.org
*
* Licensed 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.yaml.snakeyaml;
import java.io.StringWriter;
import java.io.Writer;
import org.yaml.snakeyaml.DumperOptions.FlowStyle;
import org.yaml.snakeyaml.introspector.BeanAccess;
import org.yaml.snakeyaml.nodes.Tag;
import org.yaml.snakeyaml.representer.Representer;
/**
* Convenience utility to serialize JavaBeans.
*
* @deprecated use Yaml.dumpAs(data, Tag.MAP) instead
*/
public class JavaBeanDumper {
private boolean useGlobalTag;
private FlowStyle flowStyle;
private DumperOptions options;
private Representer representer;
private final BeanAccess beanAccess;
/**
* Create Dumper for JavaBeans
*
* @param useGlobalTag
* true to emit the global tag with the class name
*/
public JavaBeanDumper(boolean useGlobalTag, BeanAccess beanAccess) {
this.useGlobalTag = useGlobalTag;
this.beanAccess = beanAccess;
this.flowStyle = FlowStyle.BLOCK;
}
public JavaBeanDumper(boolean useGlobalTag) {
this(useGlobalTag, BeanAccess.DEFAULT);
}
public JavaBeanDumper(BeanAccess beanAccess) {
this(false, beanAccess);
}
/**
* Create Dumper for JavaBeans. Use "tag:yaml.org,2002:map" as the root tag.
*/
public JavaBeanDumper() {
this(BeanAccess.DEFAULT);
}
public JavaBeanDumper(Representer representer, DumperOptions options) {
if (representer == null) {
throw new NullPointerException("Representer must be provided.");
}
if (options == null) {
throw new NullPointerException("DumperOptions must be provided.");
}
this.options = options;
this.representer = representer;
this.beanAccess = null; // bean access in not used if representer
// supplied
}
/**
* Serialize JavaBean
*
* @param data
* JavaBean instance to serialize
* @param output
* destination
*/
public void dump(Object data, Writer output) {
DumperOptions doptions;
if (this.options == null) {
doptions = new DumperOptions();
if (!useGlobalTag) {
doptions.setExplicitRoot(Tag.MAP);
}
doptions.setDefaultFlowStyle(flowStyle);
} else {
doptions = this.options;
}
Representer repr;
if (this.representer == null) {
repr = new Representer();
repr.getPropertyUtils().setBeanAccess(beanAccess);
} else {
repr = this.representer;
}
Yaml dumper = new Yaml(repr, doptions);
dumper.dump(data, output);
}
/**
* Serialize JavaBean
*
* @param data
* JavaBean instance to serialize
* @return serialized YAML document
*/
public String dump(Object data) {
StringWriter buffer = new StringWriter();
dump(data, buffer);
return buffer.toString();
}
public boolean isUseGlobalTag() {
return useGlobalTag;
}
public void setUseGlobalTag(boolean useGlobalTag) {
this.useGlobalTag = useGlobalTag;
}
public FlowStyle getFlowStyle() {
return flowStyle;
}
public void setFlowStyle(FlowStyle flowStyle) {
this.flowStyle = flowStyle;
}
}