2 * ============LICENSE_START====================================================
\r
4 * ===========================================================================
\r
5 * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
\r
6 * ===========================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END====================================================
\r
22 package org.onap.aaf.misc.env.jaxb;
\r
24 import java.io.InputStream;
\r
25 import java.io.OutputStream;
\r
26 import java.io.Reader;
\r
27 import java.io.StringWriter;
\r
28 import java.io.Writer;
\r
30 import javax.xml.bind.JAXBException;
\r
31 import javax.xml.namespace.QName;
\r
32 import javax.xml.validation.Schema;
\r
34 import org.onap.aaf.misc.env.APIException;
\r
35 import org.onap.aaf.misc.env.BaseDataFactory;
\r
36 import org.onap.aaf.misc.env.Data;
\r
37 import org.onap.aaf.misc.env.Env;
\r
38 import org.onap.aaf.misc.env.EnvJAXB;
\r
39 import org.onap.aaf.misc.env.TimeTaken;
\r
40 import org.onap.aaf.misc.env.old.IOObjectifier;
\r
41 import org.onap.aaf.misc.env.old.IOStringifier;
\r
42 import org.onap.aaf.misc.env.old.OldDataFactory;
\r
44 public class JAXBDF<T> extends BaseDataFactory implements OldDataFactory<T>,IOObjectifier<T>, IOStringifier<T> {
\r
45 // Package on purpose
\r
50 public JAXBDF(EnvJAXB env, Class<?> ... classes) throws APIException {
\r
53 jumar = new JAXBumar(classes);
\r
54 jmar = new JAXBmar(classes) ;
\r
55 } catch (JAXBException e) {
\r
56 throw new APIException(e);
\r
60 public JAXBDF(EnvJAXB env, Schema schema, Class<?> ... classes) throws APIException {
\r
63 jumar = new JAXBumar(schema, classes);
\r
64 jmar = new JAXBmar(classes);
\r
65 } catch (JAXBException e) {
\r
66 throw new APIException(e);
\r
70 public JAXBDF(EnvJAXB env, QName qname, Class<?> ... classes) throws APIException {
\r
73 jumar = new JAXBumar(classes);
\r
74 jmar = new JAXBmar(qname, classes);
\r
75 } catch (JAXBException e) {
\r
76 throw new APIException(e);
\r
80 public JAXBDF(EnvJAXB env, Schema schema, QName qname, Class<?> ... classes) throws APIException {
\r
83 jumar = new JAXBumar(schema, classes);
\r
84 jmar = new JAXBmar(qname, classes);
\r
85 } catch (JAXBException e) {
\r
86 throw new APIException(e);
\r
91 public T newInstance() throws APIException {
\r
93 return jumar.newInstance();
\r
94 } catch (Exception e) {
\r
95 throw new APIException(e);
\r
100 public IOStringifier<T> pretty(boolean pretty) {
\r
101 jmar.pretty(pretty);
\r
106 public IOStringifier<T> asFragment(boolean fragment) {
\r
107 jmar.asFragment(fragment);
\r
112 public void servicePrestart(Env env) throws APIException {
\r
116 public void threadPrestart(Env env) throws APIException {
\r
120 public void refresh(Env env) throws APIException {
\r
124 public void threadDestroy(Env env) throws APIException {
\r
128 public void serviceDestroy(Env env) throws APIException {
\r
131 @SuppressWarnings("unchecked")
\r
133 public Data<T> newData() {
\r
134 return new JAXBData<T>(primaryEnv, this, new JAXBStringifier<T>(jmar), new JAXBObjectifier<T>(jumar),"",(Class<T>)jmar.getMarshalClass());
\r
137 @SuppressWarnings("unchecked")
\r
139 public Data<T> newData(Env env) {
\r
140 return new JAXBData<T>(env, this,new JAXBStringifier<T>(jmar), new JAXBObjectifier<T>(jumar),"",(Class<T>)jmar.getMarshalClass());
\r
144 public Data<T> newData(T type) {
\r
145 return new JAXBData<T>(primaryEnv, this, new JAXBStringifier<T>(jmar), new JAXBObjectifier<T>(jumar), type);
\r
149 public Data<T> newDataFromStream(Env env, InputStream input) throws APIException {
\r
150 //TODO Write an unvalidated String using STAX checking for end of Doc?
\r
151 // perhaps key evaluation as well.
\r
153 T t = jumar.unmarshal(env.debug(), input);
\r
154 return new JAXBData<T>(primaryEnv, this, new JAXBStringifier<T>(jmar), new JAXBObjectifier<T>(jumar),t);
\r
155 } catch(JAXBException e) {
\r
156 throw new APIException(e);
\r
160 @SuppressWarnings("unchecked")
\r
162 public Data<T> newDataFromString(String string) {
\r
163 return new JAXBData<T>(primaryEnv, this,new JAXBStringifier<T>(jmar), new JAXBObjectifier<T>(jumar), string,(Class<T>)jmar.getMarshalClass());
\r
166 /////////// Old DataFactory Interface
\r
168 public String stringify(T type) throws APIException {
\r
170 StringWriter sw = new StringWriter();
\r
171 jmar.marshal(primaryEnv.debug(), type, sw);
\r
172 return sw.toString();
\r
173 } catch (JAXBException e) {
\r
174 throw new APIException(e);
\r
179 public void stringify(T type, Writer writer) throws APIException {
\r
181 jmar.marshal(primaryEnv.debug(), type, writer);
\r
182 } catch (JAXBException e) {
\r
183 throw new APIException(e);
\r
188 public void stringify(T type, OutputStream os) throws APIException {
\r
190 jmar.marshal(primaryEnv.debug(), type, os);
\r
191 } catch (JAXBException e) {
\r
192 throw new APIException(e);
\r
196 /////////// New DataFactory Interface
\r
198 public String stringify(Env env, T input, boolean ... options) throws APIException {
\r
200 StringWriter sw = new StringWriter();
\r
201 TimeTaken tt = env.start("JAXB Stringify", Env.XML);
\r
203 jmar.marshal(env.debug(), input, sw, options);
\r
207 String str = sw.toString();
\r
208 tt.size(str.getBytes().length);
\r
210 } catch (JAXBException e) {
\r
211 throw new APIException(e);
\r
216 public void stringify(Env env, T input, Writer writer, boolean ... options) throws APIException {
\r
217 TimeTaken tt = env.start("JAXB Stringify", Env.XML);
\r
219 jmar.marshal(env.debug(), input, writer, options);
\r
220 } catch (JAXBException e) {
\r
221 throw new APIException(e);
\r
228 public void stringify(Env env, T input, OutputStream os, boolean ... options) throws APIException {
\r
229 TimeTaken tt = env.start("JAXB Stringify", Env.XML);
\r
231 jmar.marshal(env.debug(), input, os, options);
\r
232 } catch (JAXBException e) {
\r
233 throw new APIException(e);
\r
240 public T objectify(Env env, Reader rdr) throws APIException {
\r
241 TimeTaken tt = env.start("JAXB Objectify", Env.XML);
\r
243 return jumar.unmarshal(env.debug(), rdr);
\r
244 } catch (JAXBException e) {
\r
245 throw new APIException(e);
\r
252 public T objectify(Reader rdr) throws APIException {
\r
254 return jumar.unmarshal(primaryEnv.debug(), rdr);
\r
255 } catch (JAXBException e) {
\r
256 throw new APIException(e);
\r
261 public T objectify(Env env, InputStream is) throws APIException {
\r
262 TimeTaken tt = env.start("JAXB Objectify", Env.XML);
\r
264 return jumar.unmarshal(env.debug(), is);
\r
265 } catch (JAXBException e) {
\r
266 throw new APIException(e);
\r
273 public T objectify(InputStream is) throws APIException {
\r
275 return jumar.unmarshal(primaryEnv.debug(), is);
\r
276 } catch (JAXBException e) {
\r
277 throw new APIException(e);
\r
282 public T objectify(Env env, String input) throws APIException {
\r
283 TimeTaken tt = env.start("JAXB Objectify", Env.XML);
\r
284 tt.size(input.getBytes().length);
\r
286 return jumar.unmarshal(env.debug(), input);
\r
287 } catch (JAXBException e) {
\r
288 throw new APIException(e);
\r
295 public T objectify(String text) throws APIException {
\r
297 return jumar.unmarshal(primaryEnv.debug(), text);
\r
298 } catch (JAXBException e) {
\r
299 throw new APIException(e);
\r
303 @SuppressWarnings("unchecked")
\r
305 public Class<T> getTypeClass() {
\r
306 return (Class<T>)jmar.getMarshalClass();
\r