[jboss-cvs] JBossAS SVN: r70563 - in projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop: advice/annotation and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Mar 7 18:15:15 EST 2008
Author: flavia.rainone at jboss.com
Date: 2008-03-07 18:15:14 -0500 (Fri, 07 Mar 2008)
New Revision: 70563
Modified:
projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/Advisor.java
projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/AspectManager.java
projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/JoinPointInfo.java
projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/advice/annotation/AdviceMethodFactory.java
projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java
projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
Log:
[JBAOP-499] Undone temporary workaround and removed debugging code.
Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/Advisor.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/Advisor.java 2008-03-07 22:23:03 UTC (rev 70562)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/Advisor.java 2008-03-07 23:15:14 UTC (rev 70563)
@@ -39,6 +39,7 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
import javassist.CtClass;
import javassist.CtConstructor;
@@ -124,8 +125,8 @@
}
/** Read/Write lock to be used when lazy creating the collections */
- protected LoggingReentrantReadWriteLock<Advisor> lock = new LoggingReentrantReadWriteLock<Advisor>(this);
-
+ protected ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+
protected Set<AdviceBinding> adviceBindings = new HashSet<AdviceBinding>();
protected volatile ArrayList<InterfaceIntroduction> interfaceIntroductions = UnmodifiableEmptyCollections.EMPTY_ARRAYLIST;
protected volatile ArrayList<ClassMetaDataBinding> classMetaDataBindings = UnmodifiableEmptyCollections.EMPTY_ARRAYLIST;
@@ -930,7 +931,7 @@
for (int i = 0; i < methodMatchInfos.length; i++)
{
MethodMatchInfo methodMatchInfo = (MethodMatchInfo) methodMatchInfos[i];
- methodMatchInfo.getInfo().getInterceptorChainReadWriteLock().lockWrite();
+ methodMatchInfo.getInfo().getInterceptorChainReadWriteLock().writeLock().lock();
}
}
@@ -940,7 +941,7 @@
for (int i = 0; i < methodMatchInfos.length; i++)
{
MethodMatchInfo methodMatchInfo = (MethodMatchInfo) methodMatchInfos[i];
- methodMatchInfo.getInfo().getInterceptorChainReadWriteLock().unlockWrite();
+ methodMatchInfo.getInfo().getInterceptorChainReadWriteLock().writeLock().unlock();
}
}
@@ -1146,7 +1147,7 @@
{
for (int i = 0; i < infos.length; i++)
{
- infos[i].getInterceptorChainReadWriteLock().lockWrite();
+ infos[i].getInterceptorChainReadWriteLock().writeLock().lock();
}
}
@@ -1154,7 +1155,7 @@
{
for (int i = 0; i < infos.length; i++)
{
- infos[i].getInterceptorChainReadWriteLock().unlockWrite();
+ infos[i].getInterceptorChainReadWriteLock().writeLock().unlock();
}
}
@@ -1370,7 +1371,7 @@
*/
protected void lockWrite()
{
- lock.lockWrite();
+ lock.writeLock().lock();
}
/**
@@ -1378,7 +1379,7 @@
*/
protected void unlockWrite()
{
- lock.unlockWrite();
+ lock.writeLock().unlock();
}
protected void initInterfaceIntroductionsList()
Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/AspectManager.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/AspectManager.java 2008-03-07 22:23:03 UTC (rev 70562)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/AspectManager.java 2008-03-07 23:15:14 UTC (rev 70563)
@@ -38,6 +38,7 @@
import java.util.StringTokenizer;
import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
import javassist.ClassPool;
import javassist.CtClass;
@@ -62,7 +63,6 @@
import org.jboss.aop.instrument.GeneratedAdvisorInstrumentor;
import org.jboss.aop.instrument.Instrumentor;
import org.jboss.aop.instrument.InstrumentorFactory;
-import org.jboss.aop.instrument.JoinPointGenerator;
import org.jboss.aop.instrument.TransformerCommon;
import org.jboss.aop.introduction.AnnotationIntroduction;
import org.jboss.aop.introduction.InterfaceIntroduction;
@@ -80,7 +80,6 @@
import org.jboss.aop.pointcut.PointcutStats;
import org.jboss.aop.pointcut.Typedef;
import org.jboss.aop.pointcut.ast.ClassExpression;
-import org.jboss.aop.util.LoggingReentrantReadWriteLock;
import org.jboss.aop.util.UnmodifiableEmptyCollections;
import org.jboss.aop.util.logging.AOPLogger;
import org.jboss.logging.Logger;
@@ -109,8 +108,8 @@
private static final Logger logger = AOPLogger.getLogger(AspectManager.class);
/** Read/Write lock to be used when lazy creating the collections */
- LoggingReentrantReadWriteLock<AspectManager> lock = new LoggingReentrantReadWriteLock<AspectManager>(this);
-
+ ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+
/** Advisors registered with this manager/domain */
protected final WeakHashMap advisors = new WeakHashMap();
@@ -241,7 +240,6 @@
*/
public static synchronized AspectManager instance(ClassLoader loadingClassLoader)
{
- JoinPointGenerator.loadEverything();
AspectManager result = initManager();
if (classLoaderScopingPolicy != null)
{
@@ -2194,7 +2192,7 @@
*/
protected void lockWrite()
{
- lock.lockWrite();
+ lock.writeLock().unlock();
}
/**
@@ -2202,7 +2200,7 @@
*/
protected void unlockWrite()
{
- lock.unlockWrite();
+ lock.writeLock().unlock();
}
protected void initSubDomainsByNameMap()
@@ -2643,5 +2641,4 @@
}
}
}
-
-}
+}
\ No newline at end of file
Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java 2008-03-07 22:23:03 UTC (rev 70562)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java 2008-03-07 23:15:14 UTC (rev 70563)
@@ -1072,7 +1072,7 @@
protected Object rebindJoinPointWithInstanceInformation(JoinPointInfo info)
{
- info.getInterceptorChainReadWriteLock().lockRead();
+ info.getInterceptorChainReadWriteLock().readLock().lock();
try
{
JoinPointGenerator generator = getJoinPointGenerator(info);
@@ -1081,7 +1081,7 @@
}
finally
{
- info.getInterceptorChainReadWriteLock().unlockRead();
+ info.getInterceptorChainReadWriteLock().readLock().unlock();
}
}
Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/JoinPointInfo.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/JoinPointInfo.java 2008-03-07 22:23:03 UTC (rev 70562)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/JoinPointInfo.java 2008-03-07 23:15:14 UTC (rev 70563)
@@ -23,16 +23,16 @@
import java.lang.ref.WeakReference;
import java.util.ArrayList;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.jboss.aop.advice.GeneratedAdvisorInterceptor;
import org.jboss.aop.advice.Interceptor;
import org.jboss.aop.joinpoint.JoinPointBean;
import org.jboss.aop.joinpoint.Joinpoint;
-import org.jboss.aop.util.LoggingReentrantReadWriteLock;
public abstract class JoinPointInfo implements JoinPointBean
{
- private LoggingReentrantReadWriteLock<JoinPointInfo> interceptorChainLock = new LoggingReentrantReadWriteLock<JoinPointInfo>(this);
+ private ReentrantReadWriteLock interceptorChainLock = new ReentrantReadWriteLock();
private Interceptor[] interceptors;
@@ -103,20 +103,20 @@
public boolean hasAdvices()
{
- this.interceptorChainLock.lockRead();
+ this.interceptorChainLock.readLock().lock();
try
{
return (interceptors != null && interceptors.length > 0);
}
finally
{
- this.interceptorChainLock.unlockRead();
+ this.interceptorChainLock.readLock().unlock();
}
}
public boolean equalChains(Interceptor[] otherInterceptors)
{
- this.interceptorChainLock.lockRead();
+ this.interceptorChainLock.readLock().lock();
try
{
if (this.interceptors == null && otherInterceptors == null) return true;
@@ -132,7 +132,7 @@
}
finally
{
- this.interceptorChainLock.unlockRead();
+ this.interceptorChainLock.readLock().unlock();
}
}
@@ -146,39 +146,39 @@
}
public ArrayList<Interceptor> getInterceptorChain() {
- this.interceptorChainLock.lockRead();
+ this.interceptorChainLock.readLock().lock();
try
{
return interceptorChain;
}
finally
{
- this.interceptorChainLock.unlockRead();
+ this.interceptorChainLock.readLock().unlock();
}
}
public Interceptor[] getInterceptors() {
- this.interceptorChainLock.lockRead();
+ this.interceptorChainLock.readLock().lock();
try
{
return interceptors;
}
finally
{
- this.interceptorChainLock.unlockRead();
+ this.interceptorChainLock.readLock().unlock();
}
}
public void setInterceptors(Interceptor[] interceptors) {
try
{
- this.interceptorChainLock.lockWrite();
+ this.interceptorChainLock.writeLock().lock();
adviceString = null;
this.interceptors = interceptors;
}
finally
{
- this.interceptorChainLock.unlockWrite();
+ this.interceptorChainLock.writeLock().unlock();
}
}
@@ -207,8 +207,8 @@
public void cloneChains(JoinPointInfo other)
{
- this.interceptorChainLock.lockWrite();
- other.interceptorChainLock.lockRead();
+ this.interceptorChainLock.writeLock().lock();
+ other.interceptorChainLock.readLock().lock();
try
{
interceptorChain = (ArrayList) other.interceptorChain.clone();
@@ -223,8 +223,8 @@
}
finally
{
- this.interceptorChainLock.unlockWrite();
- other.interceptorChainLock.unlockRead();
+ this.interceptorChainLock.writeLock().unlock();
+ other.interceptorChainLock.readLock().unlock();
}
}
@@ -255,7 +255,7 @@
return adviceString;
}
- public final LoggingReentrantReadWriteLock getInterceptorChainReadWriteLock()
+ public final ReentrantReadWriteLock getInterceptorChainReadWriteLock()
{
return this.interceptorChainLock;
}
Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/advice/annotation/AdviceMethodFactory.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/advice/annotation/AdviceMethodFactory.java 2008-03-07 22:23:03 UTC (rev 70562)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/advice/annotation/AdviceMethodFactory.java 2008-03-07 23:15:14 UTC (rev 70563)
@@ -39,7 +39,6 @@
import org.jboss.aop.advice.AdviceType;
import org.jboss.aop.advice.InvalidAdviceException;
import org.jboss.aop.advice.NoMatchingAdviceException;
-import org.jboss.aop.advice.AdviceMethodProperties.OptionalParameters;
import org.jboss.aop.advice.annotation.assignability.DegreeAlgorithm;
import org.jboss.aop.util.ReflectUtils;
@@ -579,13 +578,4 @@
{
boolean matches(AdviceMethodProperties p);
}
-
- public static String loadEverything()
- {
- StringBuffer buffer = new StringBuffer();
- buffer.append(ParameterAnnotationRule.class.getName());
- buffer.append(OptionalParameters.class.getName());
- buffer.append(DegreeAlgorithm.class.getName());
- return buffer.toString();
- }
}
\ No newline at end of file
Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java 2008-03-07 22:23:03 UTC (rev 70562)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java 2008-03-07 23:15:14 UTC (rev 70563)
@@ -30,13 +30,13 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+import javassist.CtMember;
+
import org.jboss.annotation.factory.AnnotationCreator;
-import org.jboss.aop.util.LoggingReentrantReadWriteLock;
import org.jboss.aop.util.UnmodifiableEmptyCollections;
-import javassist.CtMember;
-
/**
* Repository for annotations that is used by the ClassAdvisor to override annotations.
*
@@ -48,7 +48,7 @@
private static final String CLASS_ANNOTATION = "CLASS";
/** Read/Write lock to be used when lazy creating the collections */
- protected LoggingReentrantReadWriteLock<AnnotationRepository> lock = new LoggingReentrantReadWriteLock<AnnotationRepository>(this);
+ protected ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
volatile Map annotations = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;
volatile Map classAnnotations = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;
@@ -272,7 +272,7 @@
*/
protected void lockWrite()
{
- lock.lockWrite();
+ lock.writeLock().lock();
}
/**
@@ -280,7 +280,7 @@
*/
protected void unlockWrite()
{
- lock.unlockWrite();
+ lock.writeLock().unlock();
}
protected void initAnnotationsMap()
Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java 2008-03-07 22:23:03 UTC (rev 70562)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java 2008-03-07 23:15:14 UTC (rev 70563)
@@ -80,7 +80,8 @@
private static final String DO_REBUILD_FOR_INSTANCE = "doRebuildForInstance";
private static final String LOCK_WRITE_CHAINS = "lockWriteInterceptorChains";
private static final String UNLOCK_WRITE_CHAINS = "unlockWriteInterceptorChains";
-
+ private static final String LOCK_WRITE_CHAIN = ".getInterceptorChainReadWriteLock().writeLock().lock();";
+ private static final String UNLOCK_WRITE_CHAIN = ".getInterceptorChainReadWriteLock().writeLock().unlock();";
private static final String DECLARING_CLASS = "this.getClass().getDeclaringClass()";
@@ -723,8 +724,8 @@
{
String code = infoName + " = super.copyInfoFromClassAdvisor(((" + genadvisor.getName() + ")" + clazz.getName() + "." + GET_CLASS_ADVISOR + "())." + infoName + ");";
initialiseInfosForInstanceCode.append(code);
- lockWriteChainsCode.append(infoName).append(".getInterceptorChainReadWriteLock().lockWrite();");
- unlockWriteChainsCode.append(infoName).append(".getInterceptorChainReadWriteLock().unlockWrite();");
+ lockWriteChainsCode.append(infoName).append(LOCK_WRITE_CHAIN);
+ unlockWriteChainsCode.append(infoName).append(UNLOCK_WRITE_CHAIN);
}
if (infoClassName.equals(FieldInfo.class.getName()))
{
@@ -793,7 +794,7 @@
CHECK_VERSION + "();" +
"if (" + updatedAdvicesFieldName + ")" +
"{ " +
- " " + names.getInfoFieldName() + ".getInterceptorChainReadWriteLock().lockWrite();" +
+ " " + names.getInfoFieldName() + LOCK_WRITE_CHAIN +
" try" +
" {" +
" " + names.getInfoFieldName() + ".setInterceptors( " + INSTANCE_ADVISOR_MIXIN + ".getWrappers(" + PARENT + "." + names.getInfoFieldName() + ".getInterceptors()) );" +
@@ -801,7 +802,7 @@
" " + updatedAdvicesFieldName + " = false;" +
" super.rebindJoinPointWithInstanceInformation(" + names.getInfoFieldName() + ");" +
" } finally {" +
- " " + names.getInfoFieldName() + ".getInterceptorChainReadWriteLock().unlockWrite();}" +
+ " " + names.getInfoFieldName() + UNLOCK_WRITE_CHAIN + "}" +
"}";
instanceAdvisorMethod.insertBefore(code);
genInstanceAdvisor.addMethod(instanceAdvisorMethod);
@@ -885,12 +886,12 @@
// TODO remove this code and put it somewhere common to all ga transformers.
static String generateInterceptorChainLockCode(String infoName)
{
- return infoName + ".getInterceptorChainReadWriteLock().lockWrite();";
+ return infoName + ".getInterceptorChainReadWriteLock().readLock().lock();";
}
static String generateInterceptorChainUnlockCode(String infoName)
{
- return infoName + ".getInterceptorChainReadWriteLock().unlockWrite();";
+ return infoName + ".getInterceptorChainReadWriteLock().readLock().unlock();";
}
private void addCodeToInitialiseMethod(CtClass clazz, String code, String methodName) throws NotFoundException
Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2008-03-07 22:23:03 UTC (rev 70562)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2008-03-07 23:15:14 UTC (rev 70563)
@@ -43,7 +43,6 @@
import javassist.CtNewMethod;
import javassist.Modifier;
import javassist.NotFoundException;
-import javassist.compiler.CodeGen;
import org.jboss.aop.Advisor;
import org.jboss.aop.AspectManager;
@@ -58,14 +57,12 @@
import org.jboss.aop.advice.InvalidAdviceException;
import org.jboss.aop.advice.NoMatchingAdviceException;
import org.jboss.aop.advice.Scope;
-import org.jboss.aop.advice.annotation.AdviceMethodFactory;
import org.jboss.aop.joinpoint.Invocation;
import org.jboss.aop.joinpoint.JoinPointBean;
import org.jboss.aop.pointcut.ast.ASTCFlowExpression;
import org.jboss.aop.pointcut.ast.ClassExpression;
import org.jboss.aop.util.JavassistUtils;
import org.jboss.aop.util.ReflectToJavassist;
-import org.jboss.aop.util.ReflectUtils;
import org.jboss.aop.util.logging.AOPLogger;
import org.jboss.logging.Logger;
@@ -128,7 +125,6 @@
protected String joinpointFieldName;
private String joinpointFqn;
private Field joinpointField;
- private boolean initialised;
private ThreadLocal<Set<Integer>> inconsistentTypeArgs;
@@ -301,7 +297,6 @@
SecurityActions.setAccessible(field);
field.set(obj, Boolean.TRUE);
}
- initialised = true;
return obj;
}
catch (NoMatchingAdviceException e)
@@ -985,18 +980,16 @@
StringBuffer body = new StringBuffer();
body.append("{");
body.append(" try{");
- // IMPORTANT don't replace if blocks by a switch statement because
- // the code in javassist that compilese the switch statement loads classes
- // that are not prevented in the deadlock treatment, thus causing deadlock
- body.append(" ++").append(CURRENT_ADVICE).append(";");
+ body.append(" switch(++" + CURRENT_ADVICE + "){");
AroundAdviceCallStrategy.getInstance().addInvokeCode(this, aroundSetups, body, info);
+ body.append(" default:");
body.append(" " + returnStr + "this.dispatch();");
+ body.append(" }");
body.append(" }finally{");
body.append(" --" + CURRENT_ADVICE + ";");
body.append(" }");
body.append(" return null;");
body.append("}");
-
return body.toString();
}
@@ -1864,14 +1857,12 @@
AdviceMethodProperties properties = setup.getAdviceMethodProperties();
if (properties == null || properties.getAdviceMethod() == null)
{
- // throw new RuntimeException("DEBUG ONLY Properties was null " +
- // aroundSetups[i].getAspectClass().getName() + "." + aroundSetups[i].getAdviceName());
return false;
}
+ beforeCall.append(" case ");
+ beforeCall.append(++addedAdvice);
+ beforeCall.append(":");
- beforeCall.append(" if (").append(CURRENT_ADVICE);
- beforeCall.append(" == ").append(++addedAdvice);
- beforeCall.append("){");
if (setup.getCFlowString() != null)
{
@@ -1890,8 +1881,7 @@
{
result = appendAroundCallString(beforeCall, call, key, setup, properties, generator);
}
-
- call.append("}");
+ call.append(" break;");
return result;
}
@@ -1903,14 +1893,10 @@
{
// method that avoids more than one repeated call to ENFORCE_ARGS_CONSISTENCY
this.consistencyEnforced = false;
- int[] args = properties.getArgs();
-
call.append(" ");
call.append(returnStr);
call.append(" ");
- boolean result = super.appendAdviceCall(setup, beforeCall, call, generator);
-
- return result;
+ return super.appendAdviceCall(setup, beforeCall, call, generator);
}
protected boolean appendParameter(StringBuffer beforeCall, StringBuffer call,
@@ -2226,30 +2212,4 @@
{
return joinpointField;
}
-
- public static String loadEverything()
- {
- StringBuffer buffer = new StringBuffer();
- buffer.append(JoinPointGenerator.AfterAdviceCallStrategy.class.getName());
- buffer.append(JoinPointGenerator.AfterAdviceCallStrategy.getInstance());
- buffer.append(JoinPointGenerator.AroundAdviceCallStrategy.class.getName());
- buffer.append(JoinPointGenerator.DefaultAdviceCallStrategy.class.getName());
- buffer.append(JoinPointGenerator.GeneratedClassInfo.class.getName());
- buffer.append(JoinPointGenerator.GenerateJoinPointClassAction.class.getName());
- buffer.append(JoinPointGenerator.JoinPointParameters.class.getName());
- buffer.append(JoinPointGenerator.AdviceSetups.class.getName());
- buffer.append(JoinPointGenerator.AdviceSetup.class.getName());
- buffer.append(AdviceMethodProperties.class.getName());
- buffer.append(AdviceMethodProperties.OptionalParameters.class.getName());
- buffer.append(ReflectUtils.class.getName());
- buffer.append(CodeGen.class.getName());
- buffer.append(CannotCompileException.class.getName());
- buffer.append(AdviceMethodFactory.loadEverything());
- try
- {
- AroundAdviceCallStrategy.getInstance().addInvokeCode(null, null, buffer, null);
- }
- catch(Throwable t) {}
- return buffer.toString();
- }
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list