Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*     */ package org.jboss.aop.metadata;
  /*     */ 
  /*     */ import java.lang.reflect.Method;
  /*     */ import java.util.Collection;
  /*     */ import java.util.HashMap;
  /*     */ import java.util.Iterator;
  /*     */ import java.util.Map;
  /*     */ import java.util.Set;
  /*     */ import java.util.concurrent.ConcurrentHashMap;
 /*     */ import  javassist.CtMethod;
 /*     */ import org.jboss.aop.joinpoint.Invocation;
 /*     */ import org.jboss.aop.util.PayloadKey;
 /*     */ 
 /*     */ public class MethodMetaData
 /*     */   implements MetaDataResolver
 /*     */ {
 /*     */   HashMap inexactMatches;
 /*     */ 
 /*     */   public boolean hasTag(String group)
 /*     */   {
 /*  47 */     Iterator values = this.methodMetaData.values().iterator();
 /*  48 */     while (values.hasNext())
 /*     */     {
 /*  50 */       SimpleMetaData map = (SimpleMetaData)values.next();
 /*  51 */       if (map.hasTag(group)) return true;
 /*     */     }
 /*  53 */     return false;
 /*     */   }
 /*     */ 
 /*     */   public void tagMethod(Method methodObject tag) {
 /*  57 */     addMethodMetaData(method, tag, "$tagged$"new Object(), PayloadKey.TRANSIENT);
 /*     */   }
 /*     */ 
 /*     */   public void addMethodMetaData(Method methodObject tagObject attrObject value) {
 /*  61 */     addMethodMetaData(method, tag, attr, value, PayloadKey.MARSHALLED, true);
 /*     */   }
 /*     */ 
 /*     */   public void addMethodMetaData(Method methodObject tagObject attrObject valueboolean exactMatch) {
 /*  65 */     addMethodMetaData(method, tag, attr, value, PayloadKey.MARSHALLED, exactMatch);
 /*     */   }
 /*     */ 
 /*     */   public void addMethodMetaData(Method methodObject tagObject attrObject valuePayloadKey type) {
 /*  69 */     addMethodMetaData(method.toString(), tag, attr, value, type, true);
 /*     */   }
 /*     */ 
 /*     */   public void addMethodMetaData(Method methodObject tagObject attrObject valuePayloadKey typeboolean exactMatch) {
 /*  73 */     addMethodMetaData(method.toString(), tag, attr, value, type, exactMatch);
 /*     */   }
 /*     */ 
 /*     */   private synchronized void addMethodMetaData(String keyObject tagObject attrObject valuePayloadKey typeboolean exactMatch)
 /*     */   {
 /*  78 */     SimpleMetaData methodData = (SimpleMetaData)this.methodMetaData.get(key);
 /*  79 */     if (methodData == null)
 /*     */     {
 /*  81 */       methodData = new SimpleMetaData();
 /*  82 */       initMethodMetaDataMap();
 /*  83 */       this.methodMetaData.put(key, methodData);
 /*     */     }
 /*  85 */     methodData.addMetaData(tag, attr, value, type);
 /*  86 */     manageInexactMatches(key, tag, attr, exactMatch);
 /*     */   }
 /*     */ 
 /*     */   private synchronized void manageInexactMatches(String keyObject tagObject attrboolean exactMatch)
 /*     */   {
 /*  91 */     if (!exactMatch)
 /*     */     {
 /*  93 */       if (this.inexactMatches == null)
 /*     */       {
 /*  95 */         this.inexactMatches = new HashMap();
 /*     */       }
 /*     */ 
 /*  98 */       HashMap tags = (HashMap)this.inexactMatches.get(key);
 /*  99 */       if (tags == null)
 /*     */       {
 /* 101 */         tags = new HashMap();
 /* 102 */         this.inexactMatches.put(key, tags);
 /*     */       }
 /*     */ 
 /* 105 */       HashMap attrs = (HashMap)tags.get(tag);
 /* 106 */       if (attrs == null)
 /*     */       {
 /* 108 */         attrs = new HashMap();
 /* 109 */         tags.put(tag, attrs);
 /*     */       }
 /* 111 */       attrs.put(attr, Boolean.TRUE);
 /*     */     }
 /*     */     else
 /*     */     {
 /* 115 */       if (this.inexactMatches == nullreturn;
 /* 116 */       HashMap tags = (HashMap)this.inexactMatches.get(key);
 /* 117 */       if (tags == nullreturn;
 /* 118 */       HashMap attrs = (HashMap)tags.get(tag);
 /* 119 */       if (attrs == nullreturn;
 /* 120 */       attrs.remove(attr);
 /*     */     }
 /*     */   }
/*     */ 
/*     */   public synchronized boolean tagWasMatchedInexactly(Method methodObject tagObject attr)
/*     */   {
/* 127 */     if (this.inexactMatches == nullreturn false;
/* 128 */     HashMap tags = (HashMap)this.inexactMatches.get(method.toString());
/* 129 */     if (tags == nullreturn false;
/* 130 */     HashMap attrs = (HashMap)tags.get(tag);
/* 131 */     if (attrs == nullreturn false;
/* 132 */     return attrs.get(attr) != null;
/*     */   }
/*     */ 
/*     */   public boolean hasTag(Method methodString tag)
/*     */   {
/* 137 */     SimpleMetaData meta = getMethodMetaData(method);
/* 138 */     if (meta == nullreturn false;
/* 139 */     return meta.hasTag(tag);
/*     */   }
/*     */ 
/*     */   public Iterator getMethods()
/*     */   {
/* 144 */     return this.methodMetaData.keySet().iterator();
/*     */   }
/*     */ 
/*     */   public SimpleMetaData getMethodMetaData(String method)
/*     */   {
/* 154 */     return (SimpleMetaData)this.methodMetaData.get(method);
/*     */   }
/*     */ 
/*     */   public SimpleMetaData getMethodMetaData(Method method)
/*     */   {
/* 159 */     return getMethodMetaData(method.toString());
/*     */   }
/*     */ 
/*     */   public Object getMethodMetaData(Method methodObject tagObject attr)
/*     */   {
/* 164 */     SimpleMetaData methodData = (SimpleMetaData)this.methodMetaData.get(method.toString());
/* 165 */     if (methodData == nullreturn null;
/* 166 */     return methodData.getMetaData(tag, attr);
/*     */   }
/*     */ 
/*     */   public void clear()
/*     */   {
/* 171 */     this.methodMetaData.clear();
/*     */   }
/*     */ 
/*     */   public Object resolve(Invocation invocationObject tagObject attr)
/*     */   {
/* 176 */     MethodInvocation methodInvocation = (MethodInvocation)invocation;
/* 177 */     return getMethodMetaData(methodInvocation.getMethod(), tag, attr);
/*     */   }
/*     */ 
/*     */   public SimpleMetaData getAllMetaData(Invocation invocation)
/*     */   {
/* 182 */     MethodInvocation methodInvocation = (MethodInvocation)invocation;
/* 183 */     return (SimpleMetaData)this.methodMetaData.get(methodInvocation.getMethod().toString());
/*     */   }
/*     */ 
/*     */   private String getCtMethodKey(CtMethod method)
/*     */   {
/* 191 */     return method.getName() + ":" + method.getSignature();
/*     */   }
/*     */ 
/*     */   public void tagMethod(CtMethod methodObject tag)
/*     */   {
/* 196 */     addMethodMetaData(method, tag, "$tagged$", PayloadKey.TRANSIENT);
/*     */   }
/*     */ 
/*     */   public void addMethodMetaData(CtMethod methodObject tagObject attrObject value) {
/* 200 */     addMethodMetaData(getCtMethodKey(method), tag, attr, value, PayloadKey.MARSHALLED, true);
/*     */   }
/*     */ 
/*     */   public void addMethodMetaData(CtMethod methodObject tagObject attrObject valuePayloadKey type) {
/* 204 */     addMethodMetaData(getCtMethodKey(method), tag, attr, value, type, true);
/*     */   }
/*     */ 
/*     */   public boolean hasGroup(CtMethod methodString tag)
/*     */   {
/* 209 */     SimpleMetaData meta = getMethodMetaData(getCtMethodKey(method));
/* 210 */     if (meta == nullreturn false;
/* 211 */     return meta.hasTag(tag);
/*     */   }
/*     */ 
/*     */   private void initMethodMetaDataMap()
/*     */   {
/* 216 */     if (this.methodMetaData == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
/*     */     {
/* 218 */       this.methodMetaData = new ConcurrentHashMap();
/*     */     }
/*     */   }
/*     */ }
/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/jboss-embedded-all.jar
 * Qualified Name:     org.jboss.aop.metadata.MethodMetaData
 * JD-Core Version:    0.6.0
 */
New to GrepCode? Check out our FAQ X