Package org.jboss.aop.classpool

Examples of org.jboss.aop.classpool.AOPClassPool


   public void wrap(CtClass clazz, Collection<org.jboss.aop.MethodInfo> methodInfos) throws Exception
   {
      for (org.jboss.aop.MethodInfo methodInfo : methodInfos)
      {
         Method method = methodInfo.getMethod();
         AOPClassPool classPool = (AOPClassPool) clazz.getClassPool();
         Class<?>[] parameterTypes = method.getParameterTypes();
         CtClass[] javassistParameterTypes = new CtClass[parameterTypes.length];
         for (int i = 0; i < parameterTypes.length; i++)
         {
            classPool.getLocally(parameterTypes[i].getName());
         }
         if (method.getName().indexOf("access$") >= 0)
         {
            continue;
         }
View Full Code Here


   public void unwrap(CtClass clazz, Collection<org.jboss.aop.MethodInfo> methodInfos) throws Exception
   {
      for (org.jboss.aop.MethodInfo methodInfo : methodInfos)
      {
         Method method = methodInfo.getMethod();
         AOPClassPool classPool = (AOPClassPool) clazz.getClassPool();
         Class<?>[] parameterTypes = method.getParameterTypes();
         CtClass[] javassistParameterTypes = new CtClass[parameterTypes.length];
         for (int i = 0; i < parameterTypes.length; i++)
         {
            javassistParameterTypes[i] = classPool.getLocally(parameterTypes[i].getName());
         }
         CtMethod javassistWMethod = clazz.getDeclaredMethod(method.getName(), javassistParameterTypes);
         if (wrapper.isNotPrepared(javassistWMethod, WrapperTransformer.SINGLE_TRANSFORMATION_INDEX))
         {
            continue;
View Full Code Here

  
   }

   protected static String createOptimizedInvocationClass(Instrumentor instrumentor, CtClass clazz, CtField field, boolean get) throws Exception
   {
      AOPClassPool pool = (AOPClassPool) instrumentor.getClassPool();
      CtClass fieldInvocation =
              get
              ? pool.get("org.jboss.aop.joinpoint.FieldReadInvocation")
              : pool.get("org.jboss.aop.joinpoint.FieldWriteInvocation");
  
      String className = getOptimizedInvocationClassName(clazz, field, get);
      boolean makeInnerClass = true; //!Modifier.isPublic(field.getModifiers());
  
      try
      {
         //In some cases we get a class frozen exception. I guess if the invocation class
         //existed, method was unwrapped and the wrapped again
         CtClass existing = pool.get(className);
         if (existing.isFrozen())
         {
            existing.defrost();
         }
      }
View Full Code Here

    * @param mod the modifiers of the generated wrapper.
    */
   protected CtMethod buildReadWrapperPlaceHolder(CtClass clazz, CtField field, String wrapperName, int mod)
   throws NotFoundException, CannotCompileException
   {
      AOPClassPool classPool = (AOPClassPool) instrumentor.getClassPool();

      CtClass ftype = field.getType();
      CtClass[] readParam = new CtClass[]{classPool.get("java.lang.Object")};
     
      //Doesn't matter what we put in as long as it compiles,
      //body will be replaced when the field read gets wrapped
      String code = "{" + ftype.getName() " var = ";
      if (ftype.isPrimitive())
View Full Code Here

    * @param mod the modifiers of the generated wrapper.
    */
   protected CtMethod buildWriteWrapperPlaceHolder(CtClass clazz, CtField field, String wrapperName, int mod)
   throws NotFoundException, CannotCompileException
   {
      AOPClassPool classPool = (AOPClassPool) instrumentor.getClassPool();

      CtClass ftype = field.getType();

      // create field trapWrite memthod
      CtClass[] writeParam = new CtClass[2];
      writeParam[0] = classPool.get("java.lang.Object");
      writeParam[1] = ftype;

      //Doesn't matter what we put in as long as it compiles,
      //body will be replaced when we the field write gets wrapped

View Full Code Here

   private static String createOptimizedMethodCalledInvocationClass(
         Instrumentor instrumentor, String className, CtClass callingClass,
         CtMethod method, String invocationClassName, String callerDescription)
   throws NotFoundException, CannotCompileException
   {
      AOPClassPool pool = (AOPClassPool) instrumentor.getClassPool();
      CtClass methodInvocation = pool.get(invocationClassName);
  
      ////////////////
      //Create the class
      CtClass invocation = makeInvocationClass(pool,
            true /*Modifier.isPrivate(method.getModifiers())*/, callingClass, className,
View Full Code Here

   private static String createOptimizedConCalledInvocationClass(
         Instrumentor instrumentor, String className, CtClass callingClass,
         CtConstructor con, String invocationClassName, String callerDescription)
   throws NotFoundException, CannotCompileException
   {
      AOPClassPool pool = (AOPClassPool) instrumentor.getClassPool();
      CtClass conInvocation = pool.get(invocationClassName);
  
      ////////////////
      //Create the class
      CtClass invocation = makeInvocationClass(pool,
            /*Modifier.isPrivate(con.getModifiers())*/ true, callingClass, className,
View Full Code Here

         if (manager.isNonAdvisableClassName(className))
         {
            return null;
         }

         AOPClassPool pool = (AOPClassPool) manager.registerClassLoader(loader);

         CtClass clazz = obtainCtClassInfo(pool, className, classfileBuffer);
        
         CtClass woven = instrumentClass(manager, pool, clazz, true);
         if (woven != null)
         {
            pool.lockInCache(woven);
            if (AspectManager.debugClasses)
            {
               SecurityActions.debugWriteFile(clazz);
            }
            byte[] rtn = woven.toBytecode();
            if (AspectManager.getPrune()) woven.prune();
            return rtn;
         }
         else
         {
            pool.soften(clazz);
         }
         return null;
      }
      catch (Exception ex)
      {
View Full Code Here

       {
          if (manager.isNonAdvisableClassName(className))
          {
             return null;
          }
          AOPClassPool pool = (AOPClassPool) manager.registerClassLoader(loader);
          CtClass clazz = null;
          try
          {
             clazz = pool.getLocally(className);
          }
          catch (NotFoundException e)
          {
             // todo Bill Burke: this scares the shit out of me, but it must be done
             // I think it will screw up hotdeployment at some time.  Then again, maybe not ;)
             ByteArrayClassPath cp = new ByteArrayClassPath(className, classfileBuffer);
             pool.insertClassPath(cp);
             clazz = pool.getLocally(className);
          }
          if (clazz.isArray())
          {
             if (verbose && logger.isDebugEnabled()) logger.debug("cannot compile, isArray: " + className);
             pool.flushClass(className);
             return null;
          }
          if (clazz.isInterface())
          {
             if (verbose && logger.isDebugEnabled()) logger.debug("cannot compile, isInterface: " + className);
             pool.flushClass(className);
             return null;
          }
          if (clazz.isFrozen())
          {
             if (verbose && logger.isDebugEnabled()) logger.debug("warning, isFrozen: " + className);
             clazz.defrost();
          }

          ClassAdvisor advisor = AdvisorFactory.getClassAdvisor(clazz, manager);
          Instrumentor instrumentor = InstrumentorFactory.getInstrumentor(
                pool,
                manager,
                manager.dynamicStrategy.getJoinpointClassifier(),
                manager.dynamicStrategy.getDynamicTransformationObserver(clazz));

          if (!Instrumentor.isTransformable(clazz))
          {
             if (verbose && logger.isDebugEnabled()) logger.debug("[cannot compile] implements Untransformable: " + className);
             pool.flushClass(className);
             return null;
          }

          manager.attachMetaData(advisor, clazz, true);
          manager.applyInterfaceIntroductions(advisor, clazz);
          boolean transformed = instrumentor.transform(clazz, advisor);
          if (transformed)
          {
             pool.lockInCache(clazz);
             if (AspectManager.debugClasses)
             {
                SecurityActions.debugWriteFile(clazz);
             }

             byte[] rtn = clazz.toBytecode();
             if (AspectManager.getPrune()) clazz.prune();
             return rtn;
          }
          else
          {
             pool.soften(clazz);
          }
          return null;
       }
       catch (Exception ex)
       {
View Full Code Here

   protected static String createOptimizedInvocationClass(
         Instrumentor instrumentor, CtClass clazz, CtConstructor con, int index)
   throws Exception
   {
      AOPClassPool pool = (AOPClassPool) instrumentor.getClassPool();
      CtClass conInvocation = pool.get("org.jboss.aop.joinpoint.ConstructionInvocation");
     
      ////////////////
      //Create the class
      String className = getOptimizedInvocationClassName(clazz, index);
      boolean makeInnerClass = true; //!Modifier.isPublic(con.getModifiers());
View Full Code Here

TOP

Related Classes of org.jboss.aop.classpool.AOPClassPool

Copyright © 2018 www.massapicom. 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.