{
TLongObjectHashMap calledCons = calledClassesMap.get(constructor.getDeclaringClass().getName());
if (calledCons != null)
{
long calledHash = MethodHashing.constructorHash(constructor);
ConByConInfo info = (ConByConInfo) calledCons.get(calledHash);
if (info != null && info.hasAdvices())
{
return advisor.invokeConCalledByCon(info, inv.getCallingObject(), args);
}
}
}
}
}
}
}
else if (invocation instanceof MethodCalledByMethodInvocation)
{
MethodCalledByMethodInvocation inv = (MethodCalledByMethodInvocation) invocation;
Method callingMethod = inv.getCallingMethod();
if (isAdvised(callingMethod.getDeclaringClass()))
{
ClassAdvisor advisor = AspectManager.instance().getAdvisor(callingMethod.getDeclaringClass());
if (advisor != null)
{
long callingMethodHash = MethodHashing.calculateHash(callingMethod);
long calledHash = MethodHashing.constructorHash(constructor);
@SuppressWarnings("unchecked")
HashMap calledClassesMap = (HashMap) advisor.getConCalledByMethodInterceptors().get(callingMethodHash);
if (calledClassesMap != null)
{
TLongObjectHashMap calledCons = (TLongObjectHashMap) calledClassesMap.get(constructor.getDeclaringClass().getName());
if (calledCons != null)
{
//CallerConstructorInfo info = (CallerConstructorInfo) calledCons.get(calledHash);
ConByMethodInfo info = (ConByMethodInfo) calledCons.get(calledHash);
if (info != null && info.hasAdvices())
{
//return advisor.invokeConCalledByMethod(callingMethodHash, args, info, inv.getCallingObject());
return advisor.invokeConCalledByMethod(info, inv.getCallingObject(), args);
}
}