diff options
Diffstat (limited to 'model/basic-model/src')
3 files changed, 42 insertions, 37 deletions
diff --git a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/concepts/ApexException.java b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/concepts/ApexException.java index 2dcbf7bcf..896f72a89 100644 --- a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/concepts/ApexException.java +++ b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/concepts/ApexException.java @@ -29,7 +29,7 @@ public class ApexException extends Exception { private static final long serialVersionUID = -8507246953751956974L; // The object on which the exception was thrown - private transient Object object = null; + private final transient Object object; /** * Instantiates a new apex exception. @@ -38,6 +38,7 @@ public class ApexException extends Exception { */ public ApexException(final String message) { super(message); + this.object = null; } /** @@ -59,6 +60,7 @@ public class ApexException extends Exception { */ public ApexException(final String message, final Exception e) { super(message, e); + this.object = null; } /** diff --git a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/concepts/ApexRuntimeException.java b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/concepts/ApexRuntimeException.java index f3db3ae60..c3ecd2fd8 100644 --- a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/concepts/ApexRuntimeException.java +++ b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/concepts/ApexRuntimeException.java @@ -1,4 +1,4 @@ -/* +/*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. * ================================================================================ @@ -29,7 +29,7 @@ public class ApexRuntimeException extends RuntimeException { private static final long serialVersionUID = -8507246953751956974L; // The object on which the exception was thrown - private transient Object object = null; + private final transient Object object; /** * Instantiates a new apex runtime exception. @@ -38,6 +38,7 @@ public class ApexRuntimeException extends RuntimeException { */ public ApexRuntimeException(final String message) { super(message); + this.object = null; } /** @@ -59,6 +60,7 @@ public class ApexRuntimeException extends RuntimeException { */ public ApexRuntimeException(final String message, final Exception e) { super(message, e); + this.object = null; } /** diff --git a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriter.java b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriter.java index 180c2447a..7e56b18ae 100644 --- a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriter.java +++ b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriter.java @@ -1,4 +1,4 @@ -/* +/*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. * ================================================================================ @@ -33,6 +33,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; @@ -55,11 +56,11 @@ import org.w3c.dom.Document; * @param <C> the type of Apex concept to write, must be a sub class of {@link AxConcept} */ public class ApexModelWriter<C extends AxConcept> { - private static final String CONCEPT_MAY_NOT_BE_NULL = "concept may not be null"; + private static final String CONCEPT_MAY_NOT_BE_NULL = "concept may not be null"; private static final String CONCEPT_WRITER_MAY_NOT_BE_NULL = "concept writer may not be null"; - private static final String CONCEPT_STREAM_MAY_NOT_BE_NULL = "concept stream may not be null"; + private static final String CONCEPT_STREAM_MAY_NOT_BE_NULL = "concept stream may not be null"; - // Get a reference to the logger + // Get a reference to the logger private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexModelWriter.class); // Writing as JSON or XML @@ -91,8 +92,7 @@ public class ApexModelWriter<C extends AxConcept> { marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setEventHandler(new javax.xml.bind.helpers.DefaultValidationEventHandler()); - } - catch (final JAXBException e) { + } catch (final JAXBException e) { LOGGER.error("JAXB marshaller creation exception", e); throw new ApexModelException("JAXB marshaller creation exception", e); } @@ -130,17 +130,14 @@ public class ApexModelWriter<C extends AxConcept> { try { marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, MediaType.APPLICATION_JSON); marshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, true); - } - catch (final Exception e) { + } catch (final Exception e) { LOGGER.warn("JAXB error setting marshaller for JSON output", e); throw new ApexModelException("JAXB error setting marshaller for JSON output", e); } - } - else { + } else { try { marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, MediaType.APPLICATION_XML); - } - catch (final Exception e) { + } catch (final Exception e) { LOGGER.warn("JAXB error setting marshaller for XML output", e); throw new ApexModelException("JAXB error setting marshaller for XML output", e); } @@ -157,7 +154,7 @@ public class ApexModelWriter<C extends AxConcept> { public void write(final C concept, final OutputStream apexConceptStream) throws ApexModelException { Assertions.argumentNotNull(concept, CONCEPT_MAY_NOT_BE_NULL); Assertions.argumentNotNull(apexConceptStream, CONCEPT_STREAM_MAY_NOT_BE_NULL); - + this.write(concept, new OutputStreamWriter(apexConceptStream)); } @@ -185,8 +182,7 @@ public class ApexModelWriter<C extends AxConcept> { if (jsonOutput) { writeJSON(concept, apexConceptWriter); - } - else { + } else { writeXML(concept, apexConceptWriter); } } @@ -204,38 +200,44 @@ public class ApexModelWriter<C extends AxConcept> { LOGGER.debug("writing Apex concept XML . . ."); try { - // Write the concept into a DOM document, then transform to add CDATA fields and pretty print, then write out the result + // Write the concept into a DOM document, then transform to add CDATA fields and pretty + // print, then write out the result final DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); final Document document = docBuilderFactory.newDocumentBuilder().newDocument(); // Marshal the concept into the empty document. marshaller.marshal(concept, document); - // Transform the DOM to the output stream - final TransformerFactory transformerFactory = TransformerFactory.newInstance(); - final Transformer domTransformer = transformerFactory.newTransformer(); - - // Pretty print - try { - domTransformer.setOutputProperty(OutputKeys.INDENT, "yes"); - // May fail if not using XALAN XSLT engine. But not in any way vital - domTransformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); - } - catch (final Exception ignore) { - // We ignore exceptions here and catch errors below - } + final Transformer domTransformer = getTransformer(); // Convert the cDataFieldSet into a space delimited string - domTransformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, cDataFieldSet.toString().replaceAll("[\\[\\]\\,]", " ")); + domTransformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, + cDataFieldSet.toString().replaceAll("[\\[\\]\\,]", " ")); domTransformer.transform(new DOMSource(document), new StreamResult(apexConceptWriter)); - } - catch (JAXBException | TransformerException | ParserConfigurationException e) { + } catch (JAXBException | TransformerException | ParserConfigurationException e) { LOGGER.warn("Unable to marshal Apex concept XML", e); throw new ApexModelException("Unable to marshal Apex concept XML", e); } LOGGER.debug("wrote Apex concept XML"); } + + private Transformer getTransformer() throws TransformerConfigurationException { + // Transform the DOM to the output stream + final TransformerFactory transformerFactory = TransformerFactory.newInstance(); + final Transformer domTransformer = transformerFactory.newTransformer(); + + // Pretty print + try { + domTransformer.setOutputProperty(OutputKeys.INDENT, "yes"); + // May fail if not using XALAN XSLT engine. But not in any way vital + domTransformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); + } catch (final Exception ignore) { + LOGGER.trace("Unable to set indent property..."); + } + return domTransformer; + } + /** * This method writes the Apex concept into a writer in JSON format. * @@ -250,8 +252,7 @@ public class ApexModelWriter<C extends AxConcept> { try { marshaller.marshal(concept, apexConceptWriter); - } - catch (final JAXBException e) { + } catch (final JAXBException e) { LOGGER.warn("Unable to marshal Apex concept JSON", e); throw new ApexModelException("Unable to marshal Apex concept JSON", e); } |