Mass removal of all Tabs (Style Warnings)
[aaf/authz.git] / misc / env / src / main / java / org / onap / aaf / misc / env / jaxb / JAXBDF.java
1 /**\r
2  * ============LICENSE_START====================================================\r
3  * org.onap.aaf\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
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \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
19  *\r
20  */\r
21 \r
22 package org.onap.aaf.misc.env.jaxb;\r
23 \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
29 \r
30 import javax.xml.bind.JAXBException;\r
31 import javax.xml.namespace.QName;\r
32 import javax.xml.validation.Schema;\r
33 \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
43 \r
44 public class JAXBDF<T> extends BaseDataFactory implements OldDataFactory<T>,IOObjectifier<T>, IOStringifier<T> {\r
45     // Package on purpose\r
46     EnvJAXB primaryEnv;\r
47     JAXBumar jumar;\r
48     JAXBmar jmar;\r
49 \r
50     public JAXBDF(EnvJAXB env, Class<?> ... classes) throws APIException {\r
51         try {\r
52             primaryEnv = env;\r
53             jumar = new JAXBumar(classes);\r
54             jmar = new JAXBmar(classes) ;\r
55         } catch (JAXBException e) {\r
56             throw new APIException(e);\r
57         }\r
58     }\r
59     \r
60     public JAXBDF(EnvJAXB env, Schema schema, Class<?> ... classes) throws APIException {\r
61         try {\r
62             primaryEnv = env;\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
67         }\r
68     }\r
69     \r
70     public JAXBDF(EnvJAXB env, QName qname, Class<?> ... classes) throws APIException {\r
71         try {\r
72             primaryEnv = env;\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
77         }\r
78     }\r
79 \r
80     public JAXBDF(EnvJAXB env, Schema schema, QName qname, Class<?> ... classes) throws APIException {\r
81         try {\r
82             primaryEnv = env;\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
87         }\r
88     }\r
89     \r
90     // @Override\r
91     public T newInstance() throws APIException {\r
92         try {\r
93             return jumar.newInstance();\r
94         } catch (Exception e) {\r
95             throw new APIException(e);\r
96         }\r
97     }\r
98 \r
99     // @Override\r
100     public IOStringifier<T> pretty(boolean pretty) {\r
101         jmar.pretty(pretty);\r
102         return this;\r
103     }\r
104 \r
105     // @Override\r
106     public IOStringifier<T> asFragment(boolean fragment) {\r
107         jmar.asFragment(fragment);\r
108         return this;\r
109     }\r
110 \r
111     // @Override\r
112     public void servicePrestart(Env env) throws APIException {\r
113     }\r
114 \r
115     // @Override\r
116     public void threadPrestart(Env env) throws APIException {\r
117     }\r
118 \r
119     // @Override\r
120     public void refresh(Env env) throws APIException {\r
121     }\r
122 \r
123     // @Override\r
124     public void threadDestroy(Env env) throws APIException {\r
125     }\r
126 \r
127     // @Override\r
128     public void serviceDestroy(Env env) throws APIException {\r
129     }\r
130 \r
131     @SuppressWarnings("unchecked")\r
132     // @Override\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
135     }\r
136 \r
137     @SuppressWarnings("unchecked")\r
138     // @Override\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
141     }\r
142 \r
143     // @Override\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
146     }\r
147 \r
148     // @Override\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
152         try {\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
157         }\r
158     }\r
159 \r
160     @SuppressWarnings("unchecked")\r
161     // @Override\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
164     }\r
165 \r
166     /////////// Old DataFactory Interface \r
167     // @Override\r
168     public String stringify(T type) throws APIException {\r
169         try {\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
175         }    \r
176     }\r
177 \r
178     // @Override\r
179     public void stringify(T type, Writer writer) throws APIException {\r
180         try {\r
181             jmar.marshal(primaryEnv.debug(), type, writer);\r
182         } catch (JAXBException e) {\r
183             throw new APIException(e);\r
184         }    \r
185     }\r
186 \r
187     // @Override\r
188     public void stringify(T type, OutputStream os) throws APIException {\r
189         try {\r
190             jmar.marshal(primaryEnv.debug(), type, os);\r
191         } catch (JAXBException e) {\r
192             throw new APIException(e);\r
193         }    \r
194     }\r
195 \r
196     /////////// New DataFactory Interface \r
197     // @Override\r
198     public String stringify(Env env, T input, boolean ... options) throws APIException {\r
199         try {\r
200             StringWriter sw = new StringWriter();\r
201             TimeTaken tt = env.start("JAXB Stringify", Env.XML);\r
202             try {\r
203                 jmar.marshal(env.debug(), input, sw, options);\r
204             } finally {\r
205                 tt.done();\r
206             }\r
207             String str = sw.toString();\r
208             tt.size(str.getBytes().length);\r
209             return str;\r
210         } catch (JAXBException e) {\r
211             throw new APIException(e);\r
212         }\r
213     }\r
214 \r
215     // @Override\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
218         try {\r
219             jmar.marshal(env.debug(), input, writer, options);\r
220         } catch (JAXBException e) {\r
221             throw new APIException(e);\r
222         } finally {\r
223             tt.done();\r
224         }\r
225     }\r
226 \r
227     // @Override\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
230         try {\r
231             jmar.marshal(env.debug(), input, os, options);\r
232         } catch (JAXBException e) {\r
233             throw new APIException(e);\r
234         } finally {\r
235             tt.done();\r
236         }\r
237     }\r
238 \r
239     // @Override\r
240     public T objectify(Env env, Reader rdr) throws APIException {\r
241         TimeTaken tt = env.start("JAXB Objectify", Env.XML);\r
242         try {\r
243             return jumar.unmarshal(env.debug(), rdr);\r
244         } catch (JAXBException e) {\r
245             throw new APIException(e);\r
246         } finally {\r
247             tt.done();\r
248         }\r
249     }\r
250 \r
251     // @Override\r
252     public T objectify(Reader rdr) throws APIException {\r
253         try {\r
254             return jumar.unmarshal(primaryEnv.debug(), rdr);\r
255         } catch (JAXBException e) {\r
256             throw new APIException(e);\r
257         }    \r
258     }\r
259 \r
260     // @Override\r
261     public T objectify(Env env, InputStream is) throws APIException {\r
262         TimeTaken tt = env.start("JAXB Objectify", Env.XML);\r
263         try {\r
264             return jumar.unmarshal(env.debug(), is);\r
265         } catch (JAXBException e) {\r
266             throw new APIException(e);\r
267         } finally {\r
268             tt.done();\r
269         }\r
270     }\r
271 \r
272     // @Override\r
273     public T objectify(InputStream is) throws APIException {\r
274         try {\r
275             return jumar.unmarshal(primaryEnv.debug(), is);\r
276         } catch (JAXBException e) {\r
277             throw new APIException(e);\r
278         }    \r
279     }\r
280 \r
281     // @Override\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
285         try {\r
286             return jumar.unmarshal(env.debug(), input);\r
287         } catch (JAXBException e) {\r
288             throw new APIException(e);\r
289         } finally {\r
290             tt.done();\r
291         }\r
292     }\r
293 \r
294     // @Override\r
295     public T objectify(String text) throws APIException {\r
296         try {\r
297             return jumar.unmarshal(primaryEnv.debug(), text);\r
298         } catch (JAXBException e) {\r
299             throw new APIException(e);\r
300         }    \r
301     }\r
302 \r
303     @SuppressWarnings("unchecked")\r
304     // @Override\r
305     public Class<T> getTypeClass() {\r
306         return (Class<T>)jmar.getMarshalClass();\r
307     }\r
308 \r
309 }\r