
org.opendaylight.controller.messagebus.app.util.Util Maven / Gradle / Ivy
/*
* 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 com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.ArrayList;
import java.util.List;
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;
public final class Util {
private Util() {
}
public static ListenableFuture> resultRpcSuccessFor(final T output) {
return Futures.immediateFuture(RpcResultBuilder.success(output).build());
}
/**
* Method filters qnames based on wildcard strings.
*
* @param list list of SchemaPaths
* @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.
*/
public static String wildcardToRegex(final String wildcard) {
final StringBuilder s = new StringBuilder(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();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy