kylixs commented on PR #561:
URL: https://github.com/apache/skywalking-java/pull/561#issuecomment-1604161047

   > Could you write pseudocode about the new generated class? Including new 
field names and types for constructor, instance methods and static methods.
   
   * SWAuxiliaryTypeNamingStrategy
   Auxiliary type name pattern: 
<origin_class_name>$<name_trait>$auxiliary$<auxiliary_type_instance_hash>
   
   * DelegateNamingResolver
   Interceptor delegate field name pattern: 
<name_trait>$delegate$<class_name_hash>$<plugin_define_hash>$<intercept_point_hash>
   
   * SWMethodNameTransformer
   Origin method rename pattern: 
<name_trait>$original$<method_name>$<method_description_hash>
   
   * SWImplementationContextFactory
   Method cache value field pattern: 
cachedValue$<name_trait>$<origin_class_name_hash>$<field_value_hash>
   Accessor method name pattern:  
<origin_method_rename>$accessor$<name_trait>$<origin_class_name_hash>
   
   ```java
    import sample.mybatis.controller.HotelController$sw$auxiliary$19cja42;
    import sample.mybatis.controller.HotelController$sw$auxiliary$p257su0;
    import sample.mybatis.domain.Hotel;
    import sample.mybatis.service.HotelService;
   
    @RequestMapping(value={"/hotel"})
    @RestController
    public class HotelController
    implements EnhancedInstance {
        @Autowired
        @Lazy
        private HotelService hotelService;
        private volatile Object _$EnhancedClassField_ws;
   
        // Interceptor delegate fields
        public static volatile /* synthetic */ InstMethodsInter 
sw$delegate$td03673$ain2do0$8im5jm1;
        public static volatile /* synthetic */ InstMethodsInter 
sw$delegate$td03673$ain2do0$edkmf61;
        public static volatile /* synthetic */ ConstructorInter 
sw$delegate$td03673$ain2do0$qs9unv1;
        public static volatile /* synthetic */ InstMethodsInter 
sw$delegate$td03673$fl4lnk1$m3ia3a2;
        public static volatile /* synthetic */ InstMethodsInter 
sw$delegate$td03673$fl4lnk1$sufrvp1;
        public static volatile /* synthetic */ ConstructorInter 
sw$delegate$td03673$fl4lnk1$cteu7s1;
   
        // Origin method cache value field
        private static final /* synthetic */ Method 
cachedValue$sw$td03673$g5sobj1;
   
        public HotelController() {
            this(null);
            sw$delegate$td03673$ain2do0$qs9unv1.intercept(this, new Object[0]);
        }
   
        private /* synthetic */ HotelController(sw.auxiliary.p257su0 p257su02) {
        }
   
        @GetMapping(value={"city/{cityId}"})
        public Hotel selectByCityId(@PathVariable(value="cityId") int n) {
            // call interceptor with auxiliary type and parameters and origin 
method object
            return (Hotel)sw$delegate$td03673$ain2do0$8im5jm1.intercept(this, 
new Object[]{n}, new HotelController$sw$auxiliary$19cja42(this, n), 
cachedValue$sw$td03673$g5sobj1);
        }
   
        // Renamed origin method
        private /* synthetic */ Hotel sw$origin$selectByCityId$a8458p3(int 
cityId) {
   /*22*/         return this.hotelService.selectByCityId(cityId);
        }
   
        // Accessor of renamed origin method, calling from auxiliary type
        final /* synthetic */ Hotel 
sw$origin$selectByCityId$a8458p3$accessor$sw$td03673(int n) {
            // Calling renamed origin method
            return this.sw$origin$selectByCityId$a8458p3(n);
        }
   
        @Override
        public Object getSkyWalkingDynamicField() {
            return this._$EnhancedClassField_ws;
        }
   
        @Override
        public void setSkyWalkingDynamicField(Object object) {
            this._$EnhancedClassField_ws = object;
        }
   
        static {
            
ClassLoader.getSystemClassLoader().loadClass("org.apache.skywalking.apm.dependencies.net.bytebuddy.dynamic.Nexus").getMethod("initialize",
 Class.class, Integer.TYPE).invoke(null, HotelController.class, -1072476370);
            // Method object
            cachedValue$sw$td03673$g5sobj1 = 
HotelController.class.getMethod("selectByCityId", Integer.TYPE);
        }
    }
   ```
   
   Auxiliary type of Constructor : 
   ```java
   class HotelController$sw$auxiliary$p257su0 {
   }
   ```
   
   Auxiliary type of  `selectByCityId` method: 
   ```java
   class HotelController$sw$auxiliary$19cja42
   implements Runnable,
   Callable {
       private HotelController argument0;
       private int argument1;
   
       public Object call() throws Exception {
           return 
this.argument0.sw$origin$selectByCityId$a8458p3$accessor$sw$td03673(this.argument1);
       }
   
       @Override
       public void run() {
           
this.argument0.sw$origin$selectByCityId$a8458p3$accessor$sw$td03673(this.argument1);
       }
   
       HotelController$sw$auxiliary$19cja42(HotelController hotelController, 
int n) {
           this.argument0 = hotelController;
           this.argument1 = n;
       }
   }
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to