01: /*
02: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
03: *
04: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
05: *
06: * The contents of this file are subject to the terms of either the GNU
07: * General Public License Version 2 only ("GPL") or the Common
08: * Development and Distribution License("CDDL") (collectively, the
09: * "License"). You may not use this file except in compliance with the
10: * License. You can obtain a copy of the License at
11: * http://www.netbeans.org/cddl-gplv2.html
12: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13: * specific language governing permissions and limitations under the
14: * License. When distributing the software, include this License Header
15: * Notice in each file and include the License file at
16: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
17: * particular file as subject to the "Classpath" exception as provided
18: * by Sun in the GPL Version 2 section of the License file that
19: * accompanied this code. If applicable, add the following below the
20: * License Header, with the fields enclosed by brackets [] replaced by
21: * your own identifying information:
22: * "Portions Copyrighted [year] [name of copyright owner]"
23: *
24: * Contributor(s):
25: * The Original Software is NetBeans. The Initial Developer of the Original
26: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
27: * Microsystems, Inc. All Rights Reserved.
28: *
29: * If you wish your version of this file to be governed by only the CDDL
30: * or only the GPL Version 2, indicate your decision by adding
31: * "[Contributor] elects to include this software in this distribution
32: * under the [CDDL or GPL Version 2] license." If you do not indicate a
33: * single choice of license, a recipient has the option to distribute
34: * your version of this file under either the CDDL, the GPL Version 2 or
35: * to extend the choice of license to its licensees as provided above.
36: * However, if you add GPL Version 2 code and therefore, elected the GPL
37: * Version 2 license, then the option applies only if the new code is
38: * made subject to such option by the copyright holder.
39: */
40:
41: package org.netbeans.lib.profiler.utils;
42:
43: /**
44: *
45: * @author Jaroslav Bachorik
46: */
47: public class Wildcards {
48: //~ Static fields/initializers -----------------------------------------------------------------------------------------------
49:
50: public static final String ALLWILDCARD = "*"; // NOI18N
51:
52: //~ Methods ------------------------------------------------------------------------------------------------------------------
53:
54: public static boolean isMatch(String mask, String value) {
55: if (isPackageWildcard(mask)) {
56: mask = unwildPackage(mask);
57: }
58:
59: return value.startsWith(mask)
60: && (value.indexOf('/', mask.length()) == -1); // NOI18N
61: }
62:
63: public static boolean isMethodWildcard(String methodName) {
64: return (methodName != null) ? (methodName.equals(ALLWILDCARD) || methodName
65: .equals("<all>"))
66: : false; // NOI18N
67: }
68:
69: public static boolean isPackageWildcard(String className) {
70: if (className == null) {
71: return false;
72: }
73:
74: return (className.length() == 0 // empty string is default package wildcard
75: )
76: || className.endsWith("/") // ends with '/', means package wildcard // NOI18N
77: || className.endsWith(".") // ends with '.', means package wildcard // NOI18N
78: || className.endsWith(ALLWILDCARD); // ends with the default WILDCARD (*)
79: }
80:
81: public static String unwildPackage(String packageMask) {
82: if (packageMask == null) {
83: return null;
84: }
85:
86: // System.out.print("Performing unwildPackage() : " + packageMask);
87: if (packageMask.endsWith(ALLWILDCARD)) {
88: // String newPk = packageMask.substring(0, packageMask.length() - 2);
89: // System.out.println(" -> " + newPk);
90: return packageMask.substring(0, packageMask.length() - 1);
91: }
92:
93: return packageMask;
94: }
95: }
|