/* * 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, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.controller.messagebus.app.util; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Future; import java.util.regex.Pattern; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import com.google.common.util.concurrent.Futures; public final class Util { public static Future> resultRpcSuccessFor(final T output) { final RpcResult result = RpcResultBuilder.success(output).build(); return Futures.immediateFuture(result); } /** * Method filters qnames based on wildcard strings * * @param list * @param pattern matching pattern * @return list of filtered qnames */ public static List expandQname(final List list, final Pattern pattern) { final List matchingQnames = new ArrayList<>(); for (final SchemaPath notification : list) { final String namespace = notification.getLastComponent().getNamespace().toString(); if (pattern.matcher(namespace).matches()) { matchingQnames.add(notification); } } return matchingQnames; } /** * CREDIT to http://www.rgagnon.com/javadetails/java-0515.html * @param wildcard * @return */ public static String wildcardToRegex(final String wildcard){ final StringBuffer s = new StringBuffer(wildcard.length()); s.append('^'); for (final char c : wildcard.toCharArray()) { switch(c) { case '*': s.append(".*"); break; case '?': s.append('.'); break; // escape special regexp-characters case '(': case ')': case '[': case ']': case '$': case '^': case '.': case '{': case '}': case '|': case '\\': s.append("\\"); s.append(c); break; default: s.append(c); break; } } s.append('$'); return s.toString(); } }