Merge "Add missing copyright text"
[controller.git] / opendaylight / md-sal / messagebus-impl / src / main / java / org / opendaylight / controller / messagebus / app / impl / Util.java
index 9927d85c3ec5e9b01b8c89d185309b4ca9606efa..d6bcbf2920e1283692297e10f7b830140c4bf6f7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
@@ -8,90 +8,47 @@
 
 package org.opendaylight.controller.messagebus.app.impl;
 
-import com.google.common.util.concurrent.Futures;
-import java.math.BigInteger;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
-import java.util.Map;
+import java.util.UUID;
 import java.util.concurrent.Future;
 import java.util.regex.Pattern;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
-import org.opendaylight.controller.sal.common.util.Rpcs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.RpcError;
+
 import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
-public final class Util {
-    private static final MessageDigest messageDigestTemplate = getDigestInstance();
+import com.google.common.util.concurrent.Futures;
 
-    private static MessageDigest getDigestInstance() {
-        try {
-            return MessageDigest.getInstance("MD5");
-        } catch (NoSuchAlgorithmException e) {
-            throw new RuntimeException("Unable to get MD5 instance");
-        }
-    }
 
-    public static String md5String(final String inputString) {
+public final class Util {
 
-        try {
-            MessageDigest md = (MessageDigest)messageDigestTemplate.clone();
-            md.update(inputString.getBytes("UTF-8"), 0, inputString.length());
-            return new BigInteger(1, md.digest()).toString(16);
-        } catch (Exception e) {
-            throw new RuntimeException("Unable to get MD5 instance");
-        }
+    public static String getUUIDIdent(){
+        UUID uuid = UUID.randomUUID();
+        return uuid.toString();
     }
 
-    public static <T> Future<RpcResult<T>> resultFor(final T output) {
-        RpcResult<T> result = Rpcs.getRpcResult(true, output, Collections.<RpcError>emptyList());
+    public static <T> Future<RpcResult<T>> resultRpcSuccessFor(final T output) {
+        final RpcResult<T> result = RpcResultBuilder.success(output).build();
         return Futures.immediateFuture(result);
     }
 
-    /**
-     * Extracts affected node from data change event.
-     * @param event
-     * @return
-     */
-    public static Node getAffectedNode(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> event) {
-        // TODO: expect listener method to be called even when change impact node
-        // TODO: test with change.getCreatedData()
-        for (Map.Entry<InstanceIdentifier<?>, DataObject> changeEntry : event.getUpdatedData().entrySet()) {
-            if (isNode(changeEntry)) {
-                return (Node) changeEntry.getValue();
-            }
-        }
-
-        return null;
-    }
-
-    private static boolean isNode(final Map.Entry<InstanceIdentifier<?>, DataObject> changeEntry )  {
-        return Node.class.equals(changeEntry.getKey().getTargetType());
-    }
-
     /**
      * Method filters qnames based on wildcard strings
      *
-     * @param availableQnames
+     * @param list
      * @param patterh matching pattern
      * @return list of filtered qnames
      */
-    public static List<QName> expandQname(final List<QName> availableQnames, final Pattern pattern) {
-        List<QName> matchingQnames = new ArrayList<>();
+    public static List<SchemaPath> expandQname(final List<SchemaPath> list, final Pattern pattern) {
+        final List<SchemaPath> matchingQnames = new ArrayList<>();
 
-        for (QName qname : availableQnames) {
-            String namespace = qname.getNamespace().toString();
+        for (final SchemaPath notification : list) {
+            final String namespace = notification.getLastComponent().getNamespace().toString();
             if (pattern.matcher(namespace).matches()) {
-                matchingQnames.add(qname);
+                matchingQnames.add(notification);
             }
         }
-
         return matchingQnames;
     }
 
@@ -100,10 +57,10 @@ public final class Util {
      * @param wildcard
      * @return
      */
-    static String wildcardToRegex(final String wildcard){
-        StringBuffer s = new StringBuffer(wildcard.length());
+    public static String wildcardToRegex(final String wildcard){
+        final StringBuffer s = new StringBuffer(wildcard.length());
         s.append('^');
-        for (char c : wildcard.toCharArray()) {
+        for (final char c : wildcard.toCharArray()) {
             switch(c) {
                 case '*':
                     s.append(".*");