Merge branch 'sv-comp-run-script' of git://github.com/peterschrammel/jpf-core into...
[jpf-core.git] / src / classes / gov / nasa / jpf / AnnotationProxyBase.java
1 /*
2  * Copyright (C) 2014, United States Government, as represented by the
3  * Administrator of the National Aeronautics and Space Administration.
4  * All rights reserved.
5  *
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
9  * 
10  *        http://www.apache.org/licenses/LICENSE-2.0. 
11  *
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.
17  */
18
19 package gov.nasa.jpf;
20
21
22 /**
23  * common stuff used by all Annotation Proxies
24  */
25 public class AnnotationProxyBase {
26
27   public native Class<?> annotationType();
28   
29   // this is just here to be intercepted by the native peer
30   @Override
31   public native String toString();
32   
33   @Override
34   public native boolean equals(Object o);
35   
36   @Override
37   public native int hashCode();
38   
39   /***
40   public String toString() {
41     StringBuilder sb = new StringBuilder();
42     sb.append('@');
43     
44     Class<?> cls = getClass();
45     String clsName = cls.getName();
46     int idx = clsName.lastIndexOf('$');
47     sb.append(clsName.substring(0, idx));
48     
49     Field[] fields = cls.getDeclaredFields();  
50     if (fields.length > 0){
51       sb.append('(');
52       for (int i=0; i<fields.length; i++){
53         fields[i].setAccessible(true);
54         
55         if (i>0){
56           sb.append(',');
57         }
58         sb.append(fields[i].getName());
59         sb.append('=');
60         
61         try {
62           Object v = fields[i].get(this);
63           Class<?> vcls = v.getClass();
64
65           if (vcls.isArray()){
66             sb.append('[');
67             int n = Array.getLength(v);
68             for (int j=0; j<n; j++){
69               if (j>0){
70                 sb.append(',');
71               }
72               sb.append(Array.get(v,j));
73             }            
74             sb.append(']');
75           } else {
76             sb.append(fields[i].get(this));
77           }
78         } catch (IllegalAccessException iax){}
79       }
80       sb.append(')');
81     }
82     
83     return sb.toString();
84   }
85   ***/
86 }