2 * Copyright (C) 2014, United States Government, as represented by the
3 * Administrator of the National Aeronautics and Space Administration.
6 * The Java Pathfinder core (jpf-core) platform is licensed under the
7 * Apache License, Version 2.0 (the "License"); you may not use this file except
8 * in compliance with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0.
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 package gov.nasa.jpf.util;
20 import gov.nasa.jpf.vm.ClassInfo;
23 * wildcard supporting type specification to be used for JPF configuration.
24 * This supports supertype spec ('+') and inversion ('-')
26 * "x.y.Foo" : class x.y.Foo
27 * "+x.y.Foo" : everything that is an instance of x.y.Foo
28 * "x.y.*" : every class that starts with "x.y."
29 * "!x.y.*" : everything that does not start with "x.y."
31 public class TypeSpec extends FeatureSpec {
34 public static TypeSpec createTypeSpec (String s){
35 ParseData d = new ParseData();
38 String src = s; // keep the original spec around
40 s = parseInversion(s,d);
44 return new TypeSpec(src, d.typeSpec, d.matchInverted);
45 } catch (IllegalArgumentException iax){
50 protected TypeSpec (String rawSpec, String cls, boolean inverted){
51 super(rawSpec,cls,null,inverted);
55 public boolean matches (Object o){
56 if (o instanceof ClassInfo){
57 return matches( (ClassInfo) o);
58 } else if (o instanceof Class){
59 return matches( (Class)o);
65 public boolean matches (Class<?> cls){
66 return isMatchingType(cls);
69 public boolean matches (ClassInfo ci){
70 return isMatchingType(ci);