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.
23 * common stuff used by all Annotation Proxies
25 public class AnnotationProxyBase {
27 public native Class<?> annotationType();
29 // this is just here to be intercepted by the native peer
31 public native String toString();
34 public native boolean equals(Object o);
37 public native int hashCode();
40 public String toString() {
41 StringBuilder sb = new StringBuilder();
44 Class<?> cls = getClass();
45 String clsName = cls.getName();
46 int idx = clsName.lastIndexOf('$');
47 sb.append(clsName.substring(0, idx));
49 Field[] fields = cls.getDeclaredFields();
50 if (fields.length > 0){
52 for (int i=0; i<fields.length; i++){
53 fields[i].setAccessible(true);
58 sb.append(fields[i].getName());
62 Object v = fields[i].get(this);
63 Class<?> vcls = v.getClass();
67 int n = Array.getLength(v);
68 for (int j=0; j<n; j++){
72 sb.append(Array.get(v,j));
76 sb.append(fields[i].get(this));
78 } catch (IllegalAccessException iax){}