Package org.jboss.aop.standalone

Source Code of org.jboss.aop.standalone.XmlReport

/*     */ package org.jboss.aop.standalone;
/*     */
/*     */ import gnu.trove.TLongObjectHashMap;
/*     */ import java.io.IOException;
/*     */ import java.io.PrintWriter;
/*     */ import java.io.StringWriter;
/*     */ import java.io.Writer;
/*     */ import java.lang.reflect.Constructor;
/*     */ import java.lang.reflect.Field;
/*     */ import java.lang.reflect.Method;
/*     */ import java.util.ArrayList;
/*     */ import java.util.Collection;
/*     */ import java.util.HashMap;
/*     */ import java.util.HashSet;
/*     */ import java.util.Iterator;
/*     */ import java.util.LinkedHashMap;
/*     */ import java.util.Map.Entry;
/*     */ import java.util.Set;
/*     */ import org.jboss.aop.AspectManager;
/*     */ import org.jboss.aop.CallerConstructorInfo;
/*     */ import org.jboss.aop.CallerMethodInfo;
/*     */ import org.jboss.aop.ClassAdvisor;
/*     */ import org.jboss.aop.ConstructorInfo;
/*     */ import org.jboss.aop.FieldInfo;
/*     */ import org.jboss.aop.MethodInfo;
/*     */ import org.jboss.aop.advice.AbstractAdvice;
/*     */ import org.jboss.aop.advice.AdviceBinding;
/*     */ import org.jboss.aop.advice.CFlowInterceptor;
/*     */ import org.jboss.aop.advice.Interceptor;
/*     */ import org.jboss.aop.introduction.InterfaceIntroduction;
/*     */ import org.jboss.aop.introduction.InterfaceIntroduction.Mixin;
/*     */ import org.jboss.aop.metadata.ConstructorMetaData;
/*     */ import org.jboss.aop.metadata.FieldMetaData;
/*     */ import org.jboss.aop.metadata.MethodMetaData;
/*     */ import org.jboss.aop.metadata.SimpleMetaData;
/*     */ import org.jboss.aop.metadata.SimpleMetaData.MetaDataValue;
/*     */ import org.jboss.aop.pointcut.Pointcut;
/*     */
/*     */ public class XmlReport
/*     */ {
/*     */   public static String toXml()
/*     */   {
/*  63 */     Package root = Package.aopClassMap();
/*  64 */     StringWriter writer = new StringWriter();
/*  65 */     PrintWriter pw = new PrintWriter(writer);
/*  66 */     pw.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
/*  67 */     pw.println("<aop-report>");
/*  68 */     outputPackage(1, pw, root);
/*  69 */     outputUnboundBindings(1, pw);
/*  70 */     pw.println("</aop-report>");
/*  71 */     pw.flush();
/*  72 */     return writer.toString();
/*     */   }
/*     */
/*     */   private static String getIndent(int indent)
/*     */   {
/*  77 */     StringBuffer sb = new StringBuffer();
/*  78 */     for (int i = 0; i < indent; i++)
/*     */     {
/*  80 */       sb.append(" ");
/*     */     }
/*     */
/*  83 */     return sb.toString();
/*     */   }
/*     */
/*     */   public static void indenter(Writer w, int indent)
/*     */   {
/*     */     try
/*     */     {
/*  90 */       w.write(getIndent(indent));
/*     */     }
/*     */     catch (IOException e)
/*     */     {
/*  94 */       throw new RuntimeException("IOException in indent", e);
/*     */     }
/*     */   }
/*     */
/*     */   protected static String simpleType(Class type)
/*     */   {
/* 100 */     Class ret = type;
/* 101 */     if (ret.isArray())
/*     */     {
/* 103 */       Class arr = ret;
/* 104 */       String array = "";
/* 105 */       while (arr.isArray())
/*     */       {
/* 107 */         array = array + "[]";
/* 108 */         arr = arr.getComponentType();
/*     */       }
/* 110 */       return arr.getName();
/*     */     }
/* 112 */     return ret.getName();
/*     */   }
/*     */
/*     */   public static void outputPackage(int indent, PrintWriter pw, Package root)
/*     */   {
/* 117 */     Iterator it = root.packages.entrySet().iterator();
/* 118 */     while (it.hasNext())
/*     */     {
/* 120 */       Map.Entry entry = (Map.Entry)it.next();
/* 121 */       String pkgName = (String)entry.getKey();
/* 122 */       indenter(pw, indent);
/* 123 */       pw.println("<package name=\"" + pkgName + "\">");
/* 124 */       Package p = (Package)entry.getValue();
/* 125 */       outputPackage(indent + 1, pw, p);
/* 126 */       indenter(pw, indent);
/* 127 */       pw.println("</package>");
/*     */     }
/* 129 */     it = root.advisors.entrySet().iterator();
/* 130 */     while (it.hasNext())
/*     */     {
/* 132 */       Map.Entry entry = (Map.Entry)it.next();
/* 133 */       String classname = (String)entry.getKey();
/* 134 */       indenter(pw, indent);
/* 135 */       pw.println("<class name=\"" + classname + "\">");
/* 136 */       ClassAdvisor advisor = (ClassAdvisor)entry.getValue();
/* 137 */       outputAdvisor(indent + 1, pw, advisor, classname);
/* 138 */       indenter(pw, indent);
/* 139 */       pw.println("</class>");
/*     */     }
/*     */   }
/*     */
/*     */   public static void outputAdvisor(int indent, PrintWriter pw, ClassAdvisor advisor, String baseName)
/*     */   {
/* 145 */     ArrayList introductions = advisor.getInterfaceIntroductions();
/* 146 */     if ((introductions != null) && (introductions.size() > 0))
/*     */     {
/* 148 */       indenter(pw, indent);
/* 149 */       pw.println("<introductions>");
/* 150 */       indent++;
/* 151 */       for (int i = 0; i < introductions.size(); i++)
/*     */       {
/* 153 */         InterfaceIntroduction pointcut = (InterfaceIntroduction)introductions.get(i);
/* 154 */         indenter(pw, indent);
/* 155 */         pw.println("<introduction classExpr=\"" + pointcut.getClassExpr() + "\">");
/* 156 */         indent++;
/* 157 */         String[] intfs = pointcut.getInterfaces();
/* 158 */         ArrayList mixins = pointcut.getMixins();
/*     */
/* 160 */         if ((intfs != null) && (intfs.length > 0))
/*     */         {
/* 163 */           for (int j = 0; j < intfs.length; j++)
/*     */           {
/* 165 */             indenter(pw, indent);
/* 166 */             pw.println("<interface class=\"" + intfs[j] + "\"/>");
/*     */           }
/*     */         }
/* 169 */         else if ((mixins != null) && (mixins.size() > 0))
/*     */         {
/* 172 */           for (int j = 0; j < mixins.size(); j++)
/*     */           {
/* 174 */             InterfaceIntroduction.Mixin mixin = (InterfaceIntroduction.Mixin)mixins.get(j);
/* 175 */             String[] mixifs = mixin.getInterfaces();
/*     */
/* 177 */             for (int k = 0; k < mixifs.length; k++)
/*     */             {
/* 179 */               indenter(pw, indent);
/* 180 */               pw.println("<interface class=\"" + mixifs[j] + "\"/>");
/*     */             }
/* 182 */             indenter(pw, indent);
/* 183 */             pw.println("<mixin class=\"" + mixin.getClassName() + "\"/>");
/*     */           }
/*     */
/*     */         }
/*     */
/* 188 */         indent--;
/* 189 */         indenter(pw, indent);
/* 190 */         pw.println("</introduction>");
/*     */       }
/* 192 */       indent--;
/* 193 */       indenter(pw, indent);
/* 194 */       pw.println("</introductions>");
/*     */     }
/* 196 */     indenter(pw, indent);
/* 197 */     pw.println("<constructors>");
/* 198 */     indent++;
/* 199 */     for (int i = 0; i < advisor.getConstructors().length; i++)
/*     */     {
/* 201 */       Constructor con = advisor.getConstructors()[i];
/* 202 */       Interceptor[] chain = advisor.getConstructorInfos()[i].getInterceptors();
/* 203 */       HashMap methodCallers = advisor.getMethodCalledByConInterceptors()[i];
/* 204 */       HashMap conCallers = advisor.getConCalledByConInterceptors()[i];
/*     */
/* 206 */       if (((chain == null) || (chain.length <= 0)) && (methodCallers == null) && (conCallers == null))
/*     */         continue;
/* 208 */       indenter(pw, indent);
/* 209 */       pw.println("<constructor signature=\"" + con.toString() + "\">");
/* 210 */       if ((chain != null) && (chain.length > 0))
/*     */       {
/* 212 */         outputChain(indent + 1, pw, chain);
/*     */       }
/* 214 */       if (methodCallers != null)
/*     */       {
/* 216 */         outputMethodCallers(indent + 1, pw, methodCallers);
/*     */       }
/* 218 */       if (conCallers != null)
/*     */       {
/* 220 */         outputConCallers(indent + 1, pw, conCallers);
/*     */       }
/* 222 */       indenter(pw, indent);
/* 223 */       pw.println("</constructor>");
/*     */     }
/*     */
/* 227 */     indent--;
/* 228 */     indenter(pw, indent);
/* 229 */     pw.println("</constructors>");
/* 230 */     indenter(pw, indent);
/* 231 */     pw.println("<fields-read>");
/* 232 */     indent++;
/* 233 */     for (int i = 0; i < advisor.getAdvisedFields().length; i++)
/*     */     {
/* 235 */       Field f = advisor.getAdvisedFields()[i];
/* 236 */       Interceptor[] chain = advisor.getFieldReadInfos()[i].getInterceptors();
/* 237 */       if ((chain == null) || (chain.length <= 0))
/*     */         continue;
/* 239 */       indenter(pw, indent);
/* 240 */       pw.println("<field name=\"" + f.getName() + "\">");
/* 241 */       outputChain(indent + 1, pw, chain);
/* 242 */       indenter(pw, indent);
/* 243 */       pw.println("</field>");
/*     */     }
/*     */
/* 247 */     indent--;
/* 248 */     indenter(pw, indent);
/* 249 */     pw.println("</fields-read>");
/* 250 */     indenter(pw, indent);
/* 251 */     pw.println("<fields-write>");
/* 252 */     indent++;
/* 253 */     for (int i = 0; i < advisor.getAdvisedFields().length; i++)
/*     */     {
/* 255 */       Field f = advisor.getAdvisedFields()[i];
/* 256 */       Interceptor[] chain = advisor.getFieldReadInfos()[i].getInterceptors();
/* 257 */       if ((chain == null) || (chain.length <= 0))
/*     */         continue;
/* 259 */       indenter(pw, indent);
/* 260 */       pw.println("<field name=\"" + f.getName() + "\">");
/* 261 */       outputChain(indent + 1, pw, chain);
/* 262 */       indenter(pw, indent);
/* 263 */       pw.println("</field>");
/*     */     }
/*     */
/* 267 */     indent--;
/* 268 */     indenter(pw, indent);
/* 269 */     pw.println("</fields-write>");
/* 270 */     indenter(pw, indent);
/* 271 */     pw.println("<methods>");
/* 272 */     indent++;
/* 273 */     long[] keys = advisor.getMethodInterceptors().keys();
/* 274 */     for (int i = 0; i < keys.length; i++)
/*     */     {
/* 276 */       long key = keys[i];
/* 277 */       MethodInfo method = (MethodInfo)advisor.getMethodInterceptors().get(key);
/* 278 */       HashMap methodCallers = (HashMap)advisor.getMethodCalledByMethodInterceptors().get(key);
/* 279 */       HashMap conCallers = (HashMap)advisor.getConCalledByMethodInterceptors().get(key);
/* 280 */       if (((method == null) && (methodCallers == null)) || (
/* 281 */         (method != null) && (methodCallers == null) && ((method.getInterceptors() == null) || (method.getInterceptors().length < 1)))) continue;
/* 282 */       indenter(pw, indent);
/* 283 */       pw.println("<method signature=\"" + method.getMethod().toString() + "\">");
/* 284 */       if (method != null)
/*     */       {
/* 286 */         Interceptor[] chain = method.getInterceptors();
/* 287 */         if ((chain != null) && (chain.length > 0))
/*     */         {
/* 289 */           outputChain(indent + 1, pw, chain);
/*     */         }
/*     */       }
/* 292 */       if (methodCallers != null)
/*     */       {
/* 294 */         outputMethodCallers(indent + 1, pw, methodCallers);
/*     */       }
/* 296 */       if (conCallers != null)
/*     */       {
/* 298 */         outputConCallers(indent + 1, pw, conCallers);
/*     */       }
/* 300 */       indenter(pw, indent);
/* 301 */       pw.println("</method>");
/*     */     }
/*     */
/* 304 */     indent--;
/* 305 */     indenter(pw, indent);
/* 306 */     pw.println("</methods>");
/*     */
/* 308 */     outputMetadata(indent, pw, advisor);
/*     */   }
/*     */
/*     */   public static void outputMethodCallers(int indent, PrintWriter pw, HashMap called)
/*     */   {
/* 314 */     indenter(pw, indent);
/* 315 */     pw.println("<method-callers>");
/* 316 */     indent++;
/* 317 */     Iterator it = called.values().iterator();
/* 318 */     while (it.hasNext())
/*     */     {
/* 320 */       TLongObjectHashMap map = (TLongObjectHashMap)it.next();
/* 321 */       Object[] values = map.getValues();
/* 322 */       for (int i = 0; i < values.length; i++)
/*     */       {
/* 324 */         CallerMethodInfo caller = (CallerMethodInfo)values[i];
/* 325 */         indenter(pw, indent);
/* 326 */         if (caller.getInterceptors() != null)
/*     */         {
/* 328 */           pw.println("<called-method signature=\"" + caller.getMethod() + "\">");
/* 329 */           outputChain(indent + 1, pw, caller.getInterceptors());
/* 330 */           indenter(pw, indent);
/* 331 */           pw.println("</called-method>");
/*     */         }
/*     */         else
/*     */         {
/* 335 */           pw.println("<called-method signature=\"" + caller.getMethod() + "\"/>");
/*     */         }
/*     */       }
/*     */     }
/*     */
/* 340 */     indent--;
/* 341 */     indenter(pw, indent);
/* 342 */     pw.println("</method-callers>");
/*     */   }
/*     */
/*     */   public static void outputConCallers(int indent, PrintWriter pw, HashMap called)
/*     */   {
/* 347 */     indenter(pw, indent);
/* 348 */     pw.println("<constructor-callers>");
/* 349 */     indent++;
/* 350 */     Iterator it = called.values().iterator();
/* 351 */     while (it.hasNext())
/*     */     {
/* 353 */       TLongObjectHashMap map = (TLongObjectHashMap)it.next();
/* 354 */       Object[] values = map.getValues();
/* 355 */       for (int i = 0; i < values.length; i++)
/*     */       {
/* 357 */         CallerConstructorInfo caller = (CallerConstructorInfo)values[i];
/* 358 */         indenter(pw, indent);
/* 359 */         if (caller.getInterceptors() != null)
/*     */         {
/* 361 */           pw.println("<called-constructor signature=\"" + caller.getConstructor() + "\">");
/* 362 */           outputChain(indent + 1, pw, caller.getInterceptors());
/* 363 */           indenter(pw, indent);
/* 364 */           pw.println("</called-constructor>");
/*     */         }
/*     */         else
/*     */         {
/* 368 */           pw.println("<called-constructor signature=\"" + caller.getConstructor() + "\"/>");
/*     */         }
/*     */       }
/*     */     }
/*     */
/* 373 */     indent--;
/* 374 */     indenter(pw, indent);
/* 375 */     pw.println("</constructor-callers>");
/*     */   }
/*     */
/*     */   public static void outputChain(int indent, PrintWriter pw, Interceptor[] chain)
/*     */   {
/* 380 */     indenter(pw, indent);
/* 381 */     pw.println("<interceptors>");
/* 382 */     indent++;
/* 383 */     for (int i = 0; i < chain.length; i++)
/*     */     {
/* 385 */       if ((chain[i] instanceof AbstractAdvice))
/*     */       {
/* 387 */         indenter(pw, indent);
/* 388 */         pw.println("<advice name=\"" + chain[i].getName() + "\"/>");
/*     */       }
/* 390 */       else if ((chain[i] instanceof CFlowInterceptor))
/*     */       {
/* 392 */         indenter(pw, indent);
/* 393 */         pw.println("<cflow expr=\"" + ((CFlowInterceptor)chain[i]).getCFlowString() + "\"/>");
/*     */       }
/*     */       else
/*     */       {
/* 397 */         indenter(pw, indent);
/* 398 */         pw.println("<interceptor class=\"" + chain[i].getClass().getName() + "\"/>");
/*     */       }
/*     */     }
/* 401 */     indent--;
/* 402 */     indenter(pw, indent);
/* 403 */     pw.println("</interceptors>");
/*     */   }
/*     */
/*     */   public static void outputUnboundBindings(int indent, PrintWriter pw)
/*     */   {
/* 408 */     boolean first = true;
/* 409 */     Iterator it = AspectManager.instance().getBindings().values().iterator();
/* 410 */     while (it.hasNext())
/*     */     {
/* 412 */       AdviceBinding binding = (AdviceBinding)it.next();
/* 413 */       if (!binding.hasAdvisors())
/*     */       {
/* 415 */         if (first)
/*     */         {
/* 417 */           first = false;
/* 418 */           indenter(pw, indent);
/* 419 */           pw.println("<unbound-bindings>");
/* 420 */           indent++;
/*     */         }
/* 422 */         indenter(pw, indent);
/* 423 */         pw.print("<binding pointcut=\"" + binding.getPointcut().getExpr() + "\"");
/* 424 */         if (binding.getCFlowString() != null)
/*     */         {
/* 426 */           pw.print(" cflow=\"" + binding.getCFlowString() + "\"");
/*     */         }
/* 428 */         pw.println(" />");
/*     */       }
/*     */     }
/* 431 */     if (!first)
/*     */     {
/* 433 */       indent--;
/* 434 */       indenter(pw, indent);
/* 435 */       pw.println("</unbound-bindings>");
/*     */     }
/*     */   }
/*     */
/*     */   public static void outputMetadata(int indent, PrintWriter pw, ClassAdvisor advisor)
/*     */   {
/* 441 */     StringWriter sw = new StringWriter();
/* 442 */     PrintWriter metaWriter = new PrintWriter(sw);
/*     */
/* 444 */     StringBuffer sb = new StringBuffer();
/* 445 */     sb.append(getDefaultMetadataXml(indent, metaWriter, advisor));
/* 446 */     sb.append(getClassMetadataXml(indent, metaWriter, advisor));
/* 447 */     sb.append(getConstructorMetadataXml(indent, pw, advisor));
/* 448 */     sb.append(getMethodMetadataXml(indent, pw, advisor));
/* 449 */     sb.append(getFieldMetadataXml(indent, pw, advisor));
/*     */
/* 452 */     if (sb.length() > 0)
/*     */     {
/* 454 */       indenter(pw, indent);
/* 455 */       pw.println("<metadata>");
/* 456 */       pw.print(sb.toString());
/* 457 */       indenter(pw, indent);
/* 458 */       pw.println("</metadata>");
/*     */     }
/*     */   }
/*     */
/*     */   public static String getDefaultMetadataXml(int indent, PrintWriter pw, ClassAdvisor advisor)
/*     */   {
/* 464 */     SimpleMetaData metadata = advisor.getDefaultMetaData();
/*     */
/* 466 */     indent++;
/* 467 */     StringBuffer xml = getMetadataXml(indent, advisor, metadata);
/*     */
/* 469 */     if (xml != null)
/*     */     {
/* 471 */       xml.insert(0, getIndent(indent) + "<default>\r\n");
/* 472 */       xml.append(getIndent(indent) + "</default>\r\n");
/* 473 */       return xml.toString();
/*     */     }
/* 475 */     indent--;
/*     */
/* 477 */     return "";
/*     */   }
/*     */
/*     */   public static String getClassMetadataXml(int indent, PrintWriter pw, ClassAdvisor advisor)
/*     */   {
/* 482 */     SimpleMetaData metadata = advisor.getClassMetaData();
/*     */
/* 484 */     indent++;
/* 485 */     StringBuffer xml = getMetadataXml(indent, advisor, metadata);
/*     */
/* 487 */     if (xml != null)
/*     */     {
/* 489 */       xml.insert(0, getIndent(indent) + "<class>\r\n");
/* 490 */       xml.append(getIndent(indent) + "</class>\r\n");
/* 491 */       return xml.toString();
/*     */     }
/* 493 */     indent--;
/*     */
/* 495 */     return "";
/*     */   }
/*     */
/*     */   public static String getFieldMetadataXml(int indent, PrintWriter pw, ClassAdvisor advisor)
/*     */   {
/* 500 */     FieldMetaData fieldMetaData = advisor.getFieldMetaData();
/*     */
/* 502 */     StringBuffer xml = new StringBuffer();
/* 503 */     indent++;
/* 504 */     for (Iterator it = fieldMetaData.getFields(); it.hasNext(); )
/*     */     {
/* 506 */       String field = (String)it.next();
/* 507 */       SimpleMetaData fieldData = fieldMetaData.getFieldMetaData(field);
/* 508 */       indent++;
/* 509 */       indent++;
/* 510 */       StringBuffer sb = getMetadataXml(indent, advisor, fieldData);
/* 511 */       indent--;
/* 512 */       indent--;
/*     */
/* 514 */       if (sb != null)
/*     */       {
/* 516 */         indent++;
/* 517 */         xml.append(getIndent(indent) + "<field name=\"" + field + "\">" + "\r\n");
/* 518 */         xml.append(sb);
/* 519 */         xml.append(getIndent(indent) + "</field>" + "\r\n");
/* 520 */         indent--;
/*     */       }
/*     */     }
/*     */
/* 524 */     if (xml.length() > 0)
/*     */     {
/* 526 */       xml.insert(0, getIndent(indent) + "<fields>" + "\r\n");
/* 527 */       xml.append(getIndent(indent) + "</fields>" + "\r\n");
/*     */     }
/* 529 */     indent--;
/*     */
/* 531 */     return xml.toString();
/*     */   }
/*     */
/*     */   public static String getConstructorMetadataXml(int indent, PrintWriter pw, ClassAdvisor advisor)
/*     */   {
/* 536 */     ConstructorMetaData constructorMetaData = advisor.getConstructorMetaData();
/*     */
/* 538 */     StringBuffer xml = new StringBuffer();
/* 539 */     indent++;
/* 540 */     for (Iterator it = constructorMetaData.getConstructors(); it.hasNext(); )
/*     */     {
/* 542 */       String constructor = (String)it.next();
/* 543 */       SimpleMetaData constructorData = constructorMetaData.getConstructorMetaData(constructor);
/* 544 */       indent++;
/* 545 */       indent++;
/* 546 */       StringBuffer sb = getMetadataXml(indent, advisor, constructorData);
/* 547 */       indent--;
/* 548 */       indent--;
/*     */
/* 550 */       if (sb != null)
/*     */       {
/* 552 */         indent++;
/* 553 */         xml.append(getIndent(indent) + "<constructor name=\"" + constructor + "\">" + "\r\n");
/* 554 */         xml.append(sb);
/* 555 */         xml.append(getIndent(indent) + "</constructor>" + "\r\n");
/* 556 */         indent--;
/*     */       }
/*     */     }
/*     */
/* 560 */     if (xml.length() > 0)
/*     */     {
/* 562 */       xml.insert(0, getIndent(indent) + "<constructors>" + "\r\n");
/* 563 */       xml.append(getIndent(indent) + "</constructors>" + "\r\n");
/*     */     }
/* 565 */     indent--;
/*     */
/* 567 */     return xml.toString();
/*     */   }
/*     */
/*     */   public static String getMethodMetadataXml(int indent, PrintWriter pw, ClassAdvisor advisor)
/*     */   {
/* 572 */     MethodMetaData methodMetaData = advisor.getMethodMetaData();
/*     */
/* 574 */     StringBuffer xml = new StringBuffer();
/* 575 */     indent++;
/* 576 */     for (Iterator it = methodMetaData.getMethods(); it.hasNext(); )
/*     */     {
/* 578 */       String method = (String)it.next();
/* 579 */       SimpleMetaData methodData = methodMetaData.getMethodMetaData(method);
/* 580 */       indent++;
/* 581 */       indent++;
/* 582 */       StringBuffer sb = getMetadataXml(indent, advisor, methodData);
/* 583 */       indent--;
/* 584 */       indent--;
/*     */
/* 586 */       if (sb != null)
/*     */       {
/* 588 */         indent++;
/* 589 */         xml.append(getIndent(indent) + "<method name=\"" + method + "\">" + "\r\n");
/* 590 */         xml.append(sb);
/* 591 */         xml.append(getIndent(indent) + "</method>" + "\r\n");
/* 592 */         indent--;
/*     */       }
/*     */     }
/*     */
/* 596 */     if (xml.length() > 0)
/*     */     {
/* 598 */       xml.insert(0, getIndent(indent) + "<methods>" + "\r\n");
/* 599 */       xml.append(getIndent(indent) + "</methods>" + "\r\n");
/*     */     }
/* 601 */     indent--;
/*     */
/* 603 */     return xml.toString();
/*     */   }
/*     */
/*     */   public static StringBuffer getMetadataXml(int indent, ClassAdvisor advisor, SimpleMetaData metadata)
/*     */   {
/* 608 */     StringWriter sw = new StringWriter();
/* 609 */     HashSet tags = metadata.tags();
/* 610 */     if (tags.size() == 0)
/*     */     {
/* 612 */       return null;
/*     */     }
/*     */
/* 615 */     for (Iterator tagsIt = tags.iterator(); tagsIt.hasNext(); )
/*     */     {
/* 617 */       String tag = (String)tagsIt.next();
/* 618 */       HashMap groupAttrs = metadata.tag(tag);
/*     */
/* 620 */       indent++;
/* 621 */       indenter(sw, indent);
/* 622 */       sw.write("<tag name=\"" + tag + "\">" + "\r\n");
/* 623 */       indent++;
/*     */
/* 625 */       if (groupAttrs == null)
/*     */       {
/*     */         continue;
/*     */       }
/*     */
/* 630 */       boolean hasValues = false;
/* 631 */       for (Iterator attrsIt = groupAttrs.entrySet().iterator(); attrsIt.hasNext(); )
/*     */       {
/* 633 */         Map.Entry entry = (Map.Entry)attrsIt.next();
/* 634 */         String attr = (String)entry.getKey();
/* 635 */         if (!attr.equals("$tagged$"))
/*     */         {
/* 637 */           hasValues = true;
/* 638 */           SimpleMetaData.MetaDataValue value = (SimpleMetaData.MetaDataValue)entry.getValue();
/*     */
/* 640 */           indenter(sw, indent);
/* 641 */           sw.write("<attribute name=\"" + attr + "\">" + "\r\n");
/*     */
/* 643 */           indent++;
/* 644 */           indenter(sw, indent);
/* 645 */           sw.write("<type>" + value.value.getClass().getName() + "</type>" + "\r\n");
/* 646 */           indenter(sw, indent);
/* 647 */           sw.write("<value-as-string>" + value.value.toString() + "</value-as-string>" + "\r\n");
/* 648 */           indenter(sw, indent);
/* 649 */           sw.write("<serialization>" + value.type + "</serialization>" + "\r\n");
/* 650 */           indent--;
/*     */
/* 652 */           indenter(sw, indent);
/* 653 */           sw.write("</attribute>\r\n");
/*     */         }
/*     */       }
/*     */
/* 657 */       if (!hasValues)
/*     */       {
/* 659 */         indenter(sw, indent);
/* 660 */         sw.write("<empty/>\r\n");
/*     */       }
/*     */
/* 663 */       indent--;
/* 664 */       indenter(sw, indent);
/* 665 */       sw.write("</tag>\r\n");
/* 666 */       indent--;
/*     */     }
/*     */
/* 669 */     return sw.getBuffer();
/*     */   }
/*     */ }

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/jboss-embedded-all.jar
* Qualified Name:     org.jboss.aop.standalone.XmlReport
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of org.jboss.aop.standalone.XmlReport

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.