Bug 8351: Enforce check-style rules for restconf - sal-rest-connector
[netconf.git] / restconf / sal-rest-connector / src / main / java / org / opendaylight / netconf / sal / streams / listeners / AbstractNotificationsData.java
index 3b60f677902151521a512eea58f961652379e294..05e7785b141b89799cdfb08dbec72f55bdda6f81 100644 (file)
@@ -10,13 +10,17 @@ package org.opendaylight.netconf.sal.streams.listeners;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import java.util.Date;
+import java.time.Instant;
+import java.time.OffsetDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import javax.xml.stream.XMLOutputFactory;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMResult;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
@@ -41,24 +45,24 @@ import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 /**
- * Abstract class for processing and preparing data
+ * Abstract class for processing and preparing data.
  *
  */
 abstract class AbstractNotificationsData {
-
     private static final Logger LOG = LoggerFactory.getLogger(AbstractNotificationsData.class);
+    private static final TransformerFactory TF = TransformerFactory.newInstance();
 
     private TransactionChainHandler transactionChainHandler;
     private SchemaContextHandler schemaHandler;
     private String localName;
 
     /**
-     * Transaction chain for delete data in DS on close()
+     * Transaction chain for delete data in DS on close().
      *
      * @param transactionChainHandler
-     *            creating new write transaction for delete data on close
+     *            creating new write transaction for delete data on close
      * @param schemaHandler
-     *            for getting schema to deserialize
+     *            for getting schema to deserialize
      *            {@link MonitoringModule#PATH_TO_STREAM_WITHOUT_KEY} to
      *            {@link YangInstanceIdentifier}
      */
@@ -69,7 +73,7 @@ abstract class AbstractNotificationsData {
     }
 
     /**
-     * Delete data in DS
+     * Delete data in DS.
      */
     protected void deleteDataInDS() throws Exception {
         final DOMDataWriteTransaction wTx = this.transactionChainHandler.get().newWriteOnlyTransaction();
@@ -79,10 +83,10 @@ abstract class AbstractNotificationsData {
     }
 
     /**
-     * Set localName of last path element of specific listener
+     * Set localName of last path element of specific listener.
      *
      * @param localName
-     *            local name
+     *            local name
      */
     protected void setLocalNameOfPath(final String localName) {
         this.localName = localName;
@@ -91,12 +95,11 @@ abstract class AbstractNotificationsData {
     /**
      * Formats data specified by RFC3339.
      *
-     * @param d
-     *            Date
+     * @param now time stamp
      * @return Data specified by RFC3339.
      */
-    protected static String toRFC3339(final Date d) {
-        return ListenersConstants.RFC3339_PATTERN.matcher(ListenersConstants.RFC3339.format(d)).replaceAll("$1:$2");
+    protected static String toRFC3339(final Instant now) {
+        return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(OffsetDateTime.ofInstant(now, ZoneId.systemDefault()));
     }
 
     /**
@@ -109,19 +112,19 @@ abstract class AbstractNotificationsData {
     }
 
     /**
-     * Write normalized node to {@link DOMResult}
+     * Write normalized node to {@link DOMResult}.
      *
      * @param normalized
-     *            data
+     *            data
      * @param context
-     *            actual schema context
+     *            actual schema context
      * @param schemaPath
-     *            schema path of data
+     *            schema path of data
      * @return {@link DOMResult}
      */
     protected DOMResult writeNormalizedNode(final NormalizedNode<?, ?> normalized, final SchemaContext context,
             final SchemaPath schemaPath) throws IOException, XMLStreamException {
-        final XMLOutputFactory XML_FACTORY = XMLOutputFactory.newFactory();
+        final XMLOutputFactory xmlFactory = XMLOutputFactory.newFactory();
         final Document doc = XmlDocumentUtils.getDocument();
         final DOMResult result = new DOMResult(doc);
         NormalizedNodeWriter normalizedNodeWriter = null;
@@ -129,7 +132,7 @@ abstract class AbstractNotificationsData {
         XMLStreamWriter writer = null;
 
         try {
-            writer = XML_FACTORY.createXMLStreamWriter(result);
+            writer = xmlFactory.createXMLStreamWriter(result);
             normalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(writer, context, schemaPath);
             normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(normalizedNodeStreamWriter);
 
@@ -152,10 +155,10 @@ abstract class AbstractNotificationsData {
     }
 
     /**
-     * Generating base element of every notification
+     * Generating base element of every notification.
      *
      * @param doc
-     *            base {@link Document}
+     *            base {@link Document}
      * @return element of {@link Document}
      */
     protected Element basePartDoc(final Document doc) {
@@ -165,24 +168,24 @@ abstract class AbstractNotificationsData {
         doc.appendChild(notificationElement);
 
         final Element eventTimeElement = doc.createElement("eventTime");
-        eventTimeElement.setTextContent(toRFC3339(new Date()));
+        eventTimeElement.setTextContent(toRFC3339(Instant.now()));
         notificationElement.appendChild(eventTimeElement);
 
         return notificationElement;
     }
 
     /**
-     * Generating of {@link Document} transforming to string
+     * Generating of {@link Document} transforming to string.
      *
      * @param doc
-     *            {@link Document} with data
+     *            {@link Document} with data
      * @return - string from {@link Document}
      */
     protected String transformDoc(final Document doc) {
         final ByteArrayOutputStream out = new ByteArrayOutputStream();
 
         try {
-            final Transformer transformer = ListenersConstants.FACTORY.newTransformer();
+            final Transformer transformer = TF.newTransformer();
             transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
             transformer.setOutputProperty(OutputKeys.METHOD, "xml");
             transformer.setOutputProperty(OutputKeys.INDENT, "yes");