/* * #%L * restdoc-doclet * %% * Copyright (C) 2012 IG Group * %% * 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. * #L% */ package com.iggroup.oss.restdoclet.doclet.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.Writer; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import com.iggroup.oss.restdoclet.doclet.type.Controller; import com.iggroup.oss.restdoclet.doclet.type.Service; import com.iggroup.oss.restdoclet.doclet.type.Services; /** * Utility class for marshalling and unmarshalling using JiBX. */ public final class JiBXUtils { /** * Encoding for XML data. */ public static final String ENCODING = "UTF-8"; /** * The indent to be used while marshalling XML. */ public static final int INDENT = 3; /** * Constructor to "silence" PMD warning. */ private JiBXUtils() { super(); } /** * Static method for marshalling a controller. * * @param controller the controller to be marshalled. * @param file the file the controller has to be marshalled to. * @throws JiBXException if JiBX fails. * @throws IOException if an input- or output-exception occurs. */ public static void marshallController(final Controller controller, final File file) throws JiBXException, IOException { final Writer writer = new FileWriter(file); final IBindingFactory factory = BindingDirectory.getFactory(Controller.class); final IMarshallingContext context = factory.createMarshallingContext(); context.setIndent(INDENT); context.setOutput(writer); context.marshalDocument(controller, ENCODING, null); } /** * Static method for unmarshalling a controller. * * @param file the file the controller has to be unmarshalled from. * @return the unmarshalled controller. * @throws JiBXException if JiBX fails. * @throws FileNotFoundException if the input file can't be found. */ public static Controller unmarshallController(final File file) throws JiBXException, FileNotFoundException { final IBindingFactory factory = BindingDirectory.getFactory(Controller.class); final IUnmarshallingContext context = factory.createUnmarshallingContext(); final InputStream stream = new FileInputStream(file); return (Controller) context.unmarshalDocument(stream, ENCODING); } /** * Static method for marshalling a service. * * @param service the service to be marshalled. * @param file the file the service has to be marshalled to. * @throws JiBXException if JiBX fails. * @throws IOException if an input- or output-exception occurs. */ public static void marshallService(final Service service, final File file) throws JiBXException, IOException { final Writer writer = new FileWriter(file); final IBindingFactory factory = BindingDirectory.getFactory(Service.class); final IMarshallingContext context = factory.createMarshallingContext(); context.setIndent(INDENT); context.setOutput(writer); context.marshalDocument(service, ENCODING, null); } /** * Static method for unmarshalling a service. * * @param input the input-stream the service has to be unmarshalled from. * @return the unmarshalled service. * @throws JiBXException if JiBX fails. */ public static Service unmarshallService(final InputStream input) throws JiBXException { final IBindingFactory factory = BindingDirectory.getFactory(Service.class); final IUnmarshallingContext context = factory.createUnmarshallingContext(); return (Service) context.unmarshalDocument(input, ENCODING); } /** * Static method for marshalling services (list). * * @param services the services to be marshalled. * @param file the file the services have to be marshalled to. * @throws JiBXException if JiBX fails. * @throws IOException if an input- or output-exception occurs. */ public static void marshallServices(final Services services, final File file) throws JiBXException, IOException { final Writer writer = new FileWriter(file); final IBindingFactory factory = BindingDirectory.getFactory(Services.class); final IMarshallingContext context = factory.createMarshallingContext(); context.setIndent(INDENT); context.setOutput(writer); context.marshalDocument(services, ENCODING, null); } /** * Static method for unmarshalling services. * * @param input the input-stream services have to be unmarshalled from. * @return the unmarshalled services.. * @throws JiBXException if JiBX fails. * @throws FileNotFoundException if the input file can't be found. */ public static Services unmarshallServices(final InputStream input) throws JiBXException, FileNotFoundException { final IBindingFactory factory = BindingDirectory.getFactory(Services.class); final IUnmarshallingContext context = factory.createUnmarshallingContext(); return (Services) context.unmarshalDocument(input, ENCODING); } }