Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*     */ package javassist.bytecode;
  /*     */ 
  /*     */ import java.io.ByteArrayOutputStream;
  /*     */ import java.io.DataInputStream;
  /*     */ import java.io.IOException;
  /*     */ import java.util.Map;
  /*     */ import javassist.bytecode.annotation.Annotation;
 /*     */ 
 /*     */ public class AnnotationsAttribute extends AttributeInfo
 /*     */ {
 /*     */   public static final String visibleTag = "RuntimeVisibleAnnotations";
 /*     */   public static final String invisibleTag = "RuntimeInvisibleAnnotations";
 /*     */ 
 /*     */   public AnnotationsAttribute(ConstPool cpString attrnamebyte[] info)
 /*     */   {
 /* 124 */     super(cpattrnameinfo);
 /*     */   }
 /*     */ 
 /*     */   public AnnotationsAttribute(ConstPool cpString attrname)
 /*     */   {
 /* 139 */     this(cpattrnamenew byte[] { 0, 0 });
 /*     */   }
 /*     */ 
 /*     */   AnnotationsAttribute(ConstPool cpint nDataInputStream in)
 /*     */     throws IOException
 /*     */   {
 /* 148 */     super(cpnin);
 /*     */   }
 /*     */ 
 /*     */   public int numAnnotations()
 /*     */   {
 /* 155 */     return ByteArray.readU16bit(this., 0);
 /*     */   }
 /*     */ 
 /*     */   public AttributeInfo copy(ConstPool newCpMap classnames)
 /*     */   {
 /* 162 */     Copier copier = new Copier(this.this.newCpclassnames);
 /*     */     try {
 /* 164 */       copier.annotationArray();
 /* 165 */       return new AnnotationsAttribute(newCpgetName(), copier.close());
 /*     */     } catch (Exception e) {
 /*     */     }
 /* 168 */     throw new RuntimeException(e.toString());
 /*     */   }
 /*     */ 
 /*     */   public Annotation getAnnotation(String type)
 /*     */   {
 /* 182 */     Annotation[] annotations = getAnnotations();
 /* 183 */     for (int i = 0; i < annotations.lengthi++) {
 /* 184 */       if (annotations[i].getTypeName().equals(type)) {
 /* 185 */         return annotations[i];
 /*     */       }
 /*     */     }
 /* 188 */     return null;
 /*     */   }
 /*     */ 
 /*     */   public void addAnnotation(Annotation annotation)
 /*     */   {
 /* 198 */     String type = annotation.getTypeName();
 /* 199 */     Annotation[] annotations = getAnnotations();
 /* 200 */     for (int i = 0; i < annotations.lengthi++) {
 /* 201 */       if (annotations[i].getTypeName().equals(type)) {
 /* 202 */         annotations[i] = annotation;
 /* 203 */         setAnnotations(annotations);
 /* 204 */         return;
 /*     */       }
 /*     */     }
 /*     */ 
 /* 208 */     Annotation[] newlist = new Annotation[annotations.length + 1];
 /* 209 */     System.arraycopy(annotations, 0, newlist, 0, annotations.length);
 /* 210 */     newlist[annotations.length] = annotation;
 /* 211 */     setAnnotations(newlist);
 /*     */   }
 /*     */ 
 /*     */   public Annotation[] getAnnotations()
 /*     */   {
 /*     */     try
 /*     */     {
 /* 225 */       return new Parser(this.this.).parseAnnotations();
 /*     */     } catch (Exception e) {
 /*     */     }
 /* 228 */     throw new RuntimeException(e.toString());
 /*     */   }
 /*     */ 
/*     */   public void setAnnotations(Annotation[] annotations)
/*     */   {
/* 240 */     ByteArrayOutputStream output = new ByteArrayOutputStream();
/* 241 */     AnnotationsWriter writer = new AnnotationsWriter(outputthis.);
/*     */     try {
/* 243 */       int n = annotations.length;
/* 244 */       writer.numAnnotations(n);
/* 245 */       for (int i = 0; i < ni++) {
/* 246 */         annotations[i].write(writer);
/*     */       }
/* 248 */       writer.close();
/*     */     }
/*     */     catch (IOException e) {
/* 251 */       throw new RuntimeException(e);
/*     */     }
/*     */ 
/* 254 */     set(output.toByteArray());
/*     */   }
/*     */ 
/*     */   public void setAnnotation(Annotation annotation)
/*     */   {
/* 265 */     setAnnotations(new Annotation[] { annotation });
/*     */   }
/*     */ 
/*     */   public String toString()
/*     */   {
/* 272 */     Annotation[] a = getAnnotations();
/* 273 */     StringBuffer sbuf = new StringBuffer();
/* 274 */     int i = 0;
/* 275 */     while (i < a.length) {
/* 276 */       sbuf.append(a[(i++)].toString());
/* 277 */       if (i != a.length) {
/* 278 */         sbuf.append(", ");
/*     */       }
/*     */     }
/* 281 */     return sbuf.toString();
/*     */   }
/*     */ 
/*     */   static class Parser extends AnnotationsAttribute.Walker
/*     */   {
/*     */     ConstPool pool;
/*     */     Annotation[][] allParams;
/*     */     Annotation[] allAnno;
/*     */     Annotation currentAnno;
/*     */     MemberValue currentMember;
/*     */ 
/*     */     Parser(byte[] infoConstPool cp)
/*     */     {
/* 493 */       super();
/* 494 */       this. = cp;
/*     */     }
/*     */ 
/*     */     Annotation[][] parseParameters() throws Exception {
/* 498 */       parameters();
/* 499 */       return this.;
/*     */     }
/*     */ 
/*     */     Annotation[] parseAnnotations() throws Exception {
/* 503 */       annotationArray();
/* 504 */       return this.;
/*     */     }
/*     */ 
/*     */     MemberValue parseMemberValue() throws Exception {
/* 508 */       memberValue(0);
/* 509 */       return this.;
/*     */     }
/*     */ 
/*     */     void parameters(int numParamint posthrows Exception {
/* 513 */       Annotation[][] params = new Annotation[numParam][];
/* 514 */       for (int i = 0; i < numParami++) {
/* 515 */         pos = annotationArray(pos);
/* 516 */         params[i] = this.;
/*     */       }
/*     */ 
/* 519 */       this. = params;
/*     */     }
/*     */ 
/*     */     int annotationArray(int posint numthrows Exception {
/* 523 */       Annotation[] array = new Annotation[num];
/* 524 */       for (int i = 0; i < numi++) {
/* 525 */         pos = annotation(pos);
/* 526 */         array[i] = this.;
/*     */       }
/*     */ 
/* 529 */       this. = array;
/* 530 */       return pos;
/*     */     }
/*     */ 
/*     */     int annotation(int posint typeint numPairsthrows Exception {
/* 534 */       this. = new Annotation(typethis.);
/* 535 */       return super.annotation(postypenumPairs);
/*     */     }
/*     */ 
/*     */     int memberValuePair(int posint nameIndexthrows Exception {
/* 539 */       pos = super.memberValuePair(posnameIndex);
/* 540 */       this..addMemberValue(nameIndexthis.);
/* 541 */       return pos;
/*     */     }
/*     */ 
/*     */     void constValueMember(int tagint indexthrows Exception
/*     */     {
/* 546 */       ConstPool cp = this.;
/*     */       MemberValue m;
/* 547 */       switch (tag) {
/*     */       case 66:
/* 549 */         m = new ByteMemberValue(indexcp);
/* 550 */         break;
/*     */       case 67:
/* 552 */         m = new CharMemberValue(indexcp);
/* 553 */         break;
/*     */       case 68:
/* 555 */         m = new DoubleMemberValue(indexcp);
/* 556 */         break;
/*     */       case 70:
/* 558 */         m = new FloatMemberValue(indexcp);
/* 559 */         break;
/*     */       case 73:
/* 561 */         m = new IntegerMemberValue(indexcp);
/* 562 */         break;
/*     */       case 74:
/* 564 */         m = new LongMemberValue(indexcp);
/* 565 */         break;
/*     */       case 83:
/* 567 */         m = new ShortMemberValue(indexcp);
/* 568 */         break;
/*     */       case 90:
/* 570 */         m = new BooleanMemberValue(indexcp);
/* 571 */         break;
/*     */       case 115:
/* 573 */         m = new StringMemberValue(indexcp);
/* 574 */         break;
/*     */       default:
/* 576 */         throw new RuntimeException("unknown tag:" + tag);
/*     */       }
/*     */ 
/* 579 */       this. = m;
/* 580 */       super.constValueMember(tagindex);
/*     */     }
/*     */ 
/*     */     void enumMemberValue(int typeNameIndexint constNameIndex)
/*     */       throws Exception
/*     */     {
/* 586 */       this. = new EnumMemberValue(typeNameIndexconstNameIndexthis.);
/*     */ 
/* 588 */       super.enumMemberValue(typeNameIndexconstNameIndex);
/*     */     }
/*     */ 
/*     */     void classMemberValue(int indexthrows Exception {
/* 592 */       this. = new ClassMemberValue(indexthis.);
/* 593 */       super.classMemberValue(index);
/*     */     }
/*     */ 
/*     */     int annotationMemberValue(int posthrows Exception {
/* 597 */       Annotation anno = this.;
/* 598 */       pos = super.annotationMemberValue(pos);
/* 599 */       this. = new AnnotationMemberValue(this.this.);
/* 600 */       this. = anno;
/* 601 */       return pos;
/*     */     }
/*     */ 
/*     */     int arrayMemberValue(int posint numthrows Exception {
/* 605 */       ArrayMemberValue amv = new ArrayMemberValue(this.);
/* 606 */       MemberValue[] elements = new MemberValue[num];
/* 607 */       for (int i = 0; i < numi++) {
/* 608 */         pos = memberValue(pos);
/* 609 */         elements[i] = this.;
/*     */       }
/*     */ 
/* 612 */       amv.setValue(elements);
/* 613 */       this. = amv;
/* 614 */       return pos;
/*     */     }
/*     */   }
/*     */ 
/*     */   static class Copier extends AnnotationsAttribute.Walker
/*     */   {
/*     */     ByteArrayOutputStream output;
/*     */     AnnotationsWriter writer;
/*     */     ConstPool srcPool;
/*     */     ConstPool destPool;
/*     */     Map classnames;
/*     */ 
/*     */     Copier(byte[] infoConstPool srcConstPool destMap map)
/*     */     {
/* 404 */       super();
/* 405 */       this. = new ByteArrayOutputStream();
/* 406 */       this. = new AnnotationsWriter(this.dest);
/* 407 */       this. = src;
/* 408 */       this. = dest;
/* 409 */       this. = map;
/*     */     }
/*     */ 
/*     */     byte[] close() throws IOException {
/* 413 */       this..close();
/* 414 */       return this..toByteArray();
/*     */     }
/*     */ 
/*     */     void parameters(int numParamint posthrows Exception {
/* 418 */       this..numParameters(numParam);
/* 419 */       super.parameters(numParampos);
/*     */     }
/*     */ 
/*     */     int annotationArray(int posint numthrows Exception {
/* 423 */       this..numAnnotations(num);
/* 424 */       return super.annotationArray(posnum);
/*     */     }
/*     */ 
/*     */     int annotation(int posint typeint numPairsthrows Exception {
/* 428 */       this..annotation(copy(type), numPairs);
/* 429 */       return super.annotation(postypenumPairs);
/*     */     }
/*     */ 
/*     */     int memberValuePair(int posint nameIndexthrows Exception {
/* 433 */       this..memberValuePair(copy(nameIndex));
/* 434 */       return super.memberValuePair(posnameIndex);
/*     */     }
/*     */ 
/*     */     void constValueMember(int tagint indexthrows Exception {
/* 438 */       this..constValueIndex(tagcopy(index));
/* 439 */       super.constValueMember(tagindex);
/*     */     }
/*     */ 
/*     */     void enumMemberValue(int typeNameIndexint constNameIndex)
/*     */       throws Exception
/*     */     {
/* 445 */       this..enumConstValue(copy(typeNameIndex), copy(constNameIndex));
/* 446 */       super.enumMemberValue(typeNameIndexconstNameIndex);
/*     */     }
/*     */ 
/*     */     void classMemberValue(int indexthrows Exception {
/* 450 */       this..classInfoIndex(copy(index));
/* 451 */       super.classMemberValue(index);
/*     */     }
/*     */ 
/*     */     int annotationMemberValue(int posthrows Exception {
/* 455 */       this..annotationValue();
/* 456 */       return super.annotationMemberValue(pos);
/*     */     }
/*     */ 
/*     */     int arrayMemberValue(int posint numthrows Exception {
/* 460 */       this..arrayValue(num);
/* 461 */       return super.arrayMemberValue(posnum);
/*     */     }
/*     */ 
/*     */     int copy(int srcIndex)
/*     */     {
/* 474 */       return this..copy(srcIndexthis.this.);
/*     */     }
/*     */   }
/*     */ 
/*     */   static class Walker
/*     */   {
/*     */     byte[] info;
/*     */ 
/*     */     Walker(byte[] attrInfo)
/*     */     {
/* 288 */       this. = attrInfo;
/*     */     }
/*     */ 
/*     */     final void parameters() throws Exception {
/* 292 */       int numParam = this.[0] & 0xFF;
/* 293 */       parameters(numParam, 1);
/*     */     }
/*     */ 
/*     */     void parameters(int numParamint posthrows Exception {
/* 297 */       for (int i = 0; i < numParami++)
/* 298 */         pos = annotationArray(pos);
/*     */     }
/*     */ 
/*     */     final void annotationArray() throws Exception {
/* 302 */       annotationArray(0);
/*     */     }
/*     */ 
/*     */     final int annotationArray(int posthrows Exception {
/* 306 */       int num = ByteArray.readU16bit(this.pos);
/* 307 */       return annotationArray(pos + 2, num);
/*     */     }
/*     */ 
/*     */     int annotationArray(int posint numthrows Exception {
/* 311 */       for (int i = 0; i < numi++) {
/* 312 */         pos = annotation(pos);
/*     */       }
/* 314 */       return pos;
/*     */     }
/*     */ 
/*     */     final int annotation(int posthrows Exception {
/* 318 */       int type = ByteArray.readU16bit(this.pos);
/* 319 */       int numPairs = ByteArray.readU16bit(this.pos + 2);
/* 320 */       return annotation(pos + 4, typenumPairs);
/*     */     }
/*     */ 
/*     */     int annotation(int posint typeint numPairsthrows Exception {
/* 324 */       for (int j = 0; j < numPairsj++) {
/* 325 */         pos = memberValuePair(pos);
/*     */       }
/* 327 */       return pos;
/*     */     }
/*     */ 
/*     */     final int memberValuePair(int posthrows Exception {
/* 331 */       int nameIndex = ByteArray.readU16bit(this.pos);
/* 332 */       return memberValuePair(pos + 2, nameIndex);
/*     */     }
/*     */ 
/*     */     int memberValuePair(int posint nameIndexthrows Exception {
/* 336 */       return memberValue(pos);
/*     */     }
/*     */ 
/*     */     final int memberValue(int posthrows Exception {
/* 340 */       int tag = this.[pos] & 0xFF;
/* 341 */       if (tag == 101) {
/* 342 */         int typeNameIndex = ByteArray.readU16bit(this.pos + 1);
/* 343 */         int constNameIndex = ByteArray.readU16bit(this.pos + 3);
/* 344 */         enumMemberValue(typeNameIndexconstNameIndex);
/* 345 */         return pos + 5;
/*     */       }
/* 347 */       if (tag == 99) {
/* 348 */         int index = ByteArray.readU16bit(this.pos + 1);
/* 349 */         classMemberValue(index);
/* 350 */         return pos + 3;
/*     */       }
/* 352 */       if (tag == 64)
/* 353 */         return annotationMemberValue(pos + 1);
/* 354 */       if (tag == 91) {
/* 355 */         int num = ByteArray.readU16bit(this.pos + 1);
/* 356 */         return arrayMemberValue(pos + 3, num);
/*     */       }
/*     */ 
/* 359 */       int index = ByteArray.readU16bit(this.pos + 1);
/* 360 */       constValueMember(tagindex);
/* 361 */       return pos + 3;
/*     */     }
/*     */ 
/*     */     void constValueMember(int tagint indexthrows Exception {
/*     */     }
/*     */ 
/*     */     void enumMemberValue(int typeNameIndexint constNameIndexthrows Exception {
/*     */     }
/*     */ 
/*     */     void classMemberValue(int indexthrows Exception {
/*     */     }
/*     */ 
/*     */     int annotationMemberValue(int posthrows Exception {
/* 374 */       return annotation(pos);
/*     */     }
/*     */ 
/*     */     int arrayMemberValue(int posint numthrows Exception {
/* 378 */       for (int i = 0; i < numi++) {
/* 379 */         pos = memberValue(pos);
/*     */       }
/*     */ 
/* 382 */       return pos;
/*     */     }
/*     */   }
/*     */ }
/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/thirdparty-all.jar
 * Qualified Name:     javassist.bytecode.AnnotationsAttribute
 * JD-Core Version:    0.6.0
 */
New to GrepCode? Check out our FAQ X