test_class.file: dubbo-common/src/test/java/org/apache/dubbo/common/bytecode/WrapperTest.java
test_class.identifier: WrapperTest
test_case.body: @Test
      public void testSetPropertyValue() throws Exception {
          Assertions.assertThrows(NoSuchPropertyException.class, () -> {
              Wrapper w = Wrapper.getWrapper(Object.class);
              w.setPropertyValue(null, null, null);
          });
      }
test_case.class_method_signature: WrapperTest.testSetPropertyValue()
test_case.full_signature: @Test public void testSetPropertyValue()
test_case.identifier: testSetPropertyValue
test_case.invocations: assertThrows getWrapper setPropertyValue
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testSetPropertyValue()
focal_class.declarator: WRAPPER_MAP = new ConcurrentHashMap<Class<?>, Wrapper>()
focal_class.modifier: private static final
focal_class.original_string: private static final Map<Class<?>, Wrapper> WRAPPER_MAP = new ConcurrentHashMap<Class<?>, Wrapper>();
focal_class.type: Map<Class<?>, Wrapper>
focal_class.var_name: WRAPPER_MAP
focal_class.declarator: EMPTY_STRING_ARRAY = new String[0]
focal_class.modifier: private static final
focal_class.original_string: private static final String[] EMPTY_STRING_ARRAY = new String[0];
focal_class.type: String[]
focal_class.var_name: EMPTY_STRING_ARRAY
focal_class.declarator: OBJECT_METHODS = new String[]{"getClass", "hashCode", "toString", "equals"}
focal_class.modifier: private static final
focal_class.original_string: private static final String[] OBJECT_METHODS = new String[]{"getClass", "hashCode", "toString", "equals"};
focal_class.type: String[]
focal_class.var_name: OBJECT_METHODS
focal_class.declarator: OBJECT_WRAPPER = new Wrapper() {
          @Override
          public String[] getMethodNames() {
              return OBJECT_METHODS;
          }
  
          @Override
          public String[] getDeclaredMethodNames() {
              return OBJECT_METHODS;
          }
  
          @Override
          public String[] getPropertyNames() {
              return EMPTY_STRING_ARRAY;
          }
  
          @Override
          public Class<?> getPropertyType(String pn) {
              return null;
          }
  
          @Override
          public Object getPropertyValue(Object instance, String pn) throws NoSuchPropertyException {
              throw new NoSuchPropertyException("Property [" + pn + "] not found.");
          }
  
          @Override
          public void setPropertyValue(Object instance, String pn, Object pv) throws NoSuchPropertyException {
              throw new NoSuchPropertyException("Property [" + pn + "] not found.");
          }
  
          @Override
          public boolean hasProperty(String name) {
              return false;
          }
  
          @Override
          public Object invokeMethod(Object instance, String mn, Class<?>[] types, Object[] args) throws NoSuchMethodException {
              if ("getClass".equals(mn)) {
                  return instance.getClass();
              }
              if ("hashCode".equals(mn)) {
                  return instance.hashCode();
              }
              if ("toString".equals(mn)) {
                  return instance.toString();
              }
              if ("equals".equals(mn)) {
                  if (args.length == 1) {
                      return instance.equals(args[0]);
                  }
                  throw new IllegalArgumentException("Invoke method [" + mn + "] argument number error.");
              }
              throw new NoSuchMethodException("Method [" + mn + "] not found.");
          }
      }
focal_class.modifier: private static final
focal_class.original_string: private static final Wrapper OBJECT_WRAPPER = new Wrapper() {
          @Override
          public String[] getMethodNames() {
              return OBJECT_METHODS;
          }
  
          @Override
          public String[] getDeclaredMethodNames() {
              return OBJECT_METHODS;
          }
  
          @Override
          public String[] getPropertyNames() {
              return EMPTY_STRING_ARRAY;
          }
  
          @Override
          public Class<?> getPropertyType(String pn) {
              return null;
          }
  
          @Override
          public Object getPropertyValue(Object instance, String pn) throws NoSuchPropertyException {
              throw new NoSuchPropertyException("Property [" + pn + "] not found.");
          }
  
          @Override
          public void setPropertyValue(Object instance, String pn, Object pv) throws NoSuchPropertyException {
              throw new NoSuchPropertyException("Property [" + pn + "] not found.");
          }
  
          @Override
          public boolean hasProperty(String name) {
              return false;
          }
  
          @Override
          public Object invokeMethod(Object instance, String mn, Class<?>[] types, Object[] args) throws NoSuchMethodException {
              if ("getClass".equals(mn)) {
                  return instance.getClass();
              }
              if ("hashCode".equals(mn)) {
                  return instance.hashCode();
              }
              if ("toString".equals(mn)) {
                  return instance.toString();
              }
              if ("equals".equals(mn)) {
                  if (args.length == 1) {
                      return instance.equals(args[0]);
                  }
                  throw new IllegalArgumentException("Invoke method [" + mn + "] argument number error.");
              }
              throw new NoSuchMethodException("Method [" + mn + "] not found.");
          }
      };
focal_class.type: Wrapper
focal_class.var_name: OBJECT_WRAPPER
focal_class.declarator: WRAPPER_CLASS_COUNTER = new AtomicLong(0)
focal_class.modifier: private static
focal_class.original_string: private static AtomicLong WRAPPER_CLASS_COUNTER = new AtomicLong(0);
focal_class.type: AtomicLong
focal_class.var_name: WRAPPER_CLASS_COUNTER
focal_class.file: dubbo-common/src/main/java/org/apache/dubbo/common/bytecode/Wrapper.java
focal_class.identifier: Wrapper
focal_class.class_method_signature: Wrapper.getWrapper(Class<?> c)
focal_class.full_signature: public static Wrapper getWrapper(Class<?> c)
focal_class.identifier: getWrapper
focal_class.modifiers: public static
focal_class.parameters: (Class<?> c)
focal_class.return: Wrapper
focal_class.signature: Wrapper getWrapper(Class<?> c)
focal_class.class_method_signature: Wrapper.makeWrapper(Class<?> c)
focal_class.full_signature: private static Wrapper makeWrapper(Class<?> c)
focal_class.identifier: makeWrapper
focal_class.modifiers: private static
focal_class.parameters: (Class<?> c)
focal_class.return: Wrapper
focal_class.signature: Wrapper makeWrapper(Class<?> c)
focal_class.class_method_signature: Wrapper.arg(Class<?> cl, String name)
focal_class.full_signature: private static String arg(Class<?> cl, String name)
focal_class.identifier: arg
focal_class.modifiers: private static
focal_class.parameters: (Class<?> cl, String name)
focal_class.return: String
focal_class.signature: String arg(Class<?> cl, String name)
focal_class.class_method_signature: Wrapper.args(Class<?>[] cs, String name)
focal_class.full_signature: private static String args(Class<?>[] cs, String name)
focal_class.identifier: args
focal_class.modifiers: private static
focal_class.parameters: (Class<?>[] cs, String name)
focal_class.return: String
focal_class.signature: String args(Class<?>[] cs, String name)
focal_class.class_method_signature: Wrapper.propertyName(String pn)
focal_class.full_signature: private static String propertyName(String pn)
focal_class.identifier: propertyName
focal_class.modifiers: private static
focal_class.parameters: (String pn)
focal_class.return: String
focal_class.signature: String propertyName(String pn)
focal_class.class_method_signature: Wrapper.hasMethods(Method[] methods)
focal_class.full_signature: private static boolean hasMethods(Method[] methods)
focal_class.identifier: hasMethods
focal_class.modifiers: private static
focal_class.parameters: (Method[] methods)
focal_class.return: boolean
focal_class.signature: boolean hasMethods(Method[] methods)
focal_class.class_method_signature: Wrapper.getPropertyNames()
focal_class.full_signature: abstract public String[] getPropertyNames()
focal_class.identifier: getPropertyNames
focal_class.modifiers: abstract public
focal_class.parameters: ()
focal_class.return: String[]
focal_class.signature: String[] getPropertyNames()
focal_class.class_method_signature: Wrapper.getPropertyType(String pn)
focal_class.full_signature: abstract public Class<?> getPropertyType(String pn)
focal_class.identifier: getPropertyType
focal_class.modifiers: abstract public
focal_class.parameters: (String pn)
focal_class.return: Class<?>
focal_class.signature: Class<?> getPropertyType(String pn)
focal_class.class_method_signature: Wrapper.hasProperty(String name)
focal_class.full_signature: abstract public boolean hasProperty(String name)
focal_class.identifier: hasProperty
focal_class.modifiers: abstract public
focal_class.parameters: (String name)
focal_class.return: boolean
focal_class.signature: boolean hasProperty(String name)
focal_class.class_method_signature: Wrapper.getPropertyValue(Object instance, String pn)
focal_class.full_signature: abstract public Object getPropertyValue(Object instance, String pn)
focal_class.identifier: getPropertyValue
focal_class.modifiers: abstract public
focal_class.parameters: (Object instance, String pn)
focal_class.return: Object
focal_class.signature: Object getPropertyValue(Object instance, String pn)
focal_class.class_method_signature: Wrapper.setPropertyValue(Object instance, String pn, Object pv)
focal_class.full_signature: abstract public void setPropertyValue(Object instance, String pn, Object pv)
focal_class.identifier: setPropertyValue
focal_class.modifiers: abstract public
focal_class.parameters: (Object instance, String pn, Object pv)
focal_class.return: void
focal_class.signature: void setPropertyValue(Object instance, String pn, Object pv)
focal_class.class_method_signature: Wrapper.getPropertyValues(Object instance, String[] pns)
focal_class.full_signature: public Object[] getPropertyValues(Object instance, String[] pns)
focal_class.identifier: getPropertyValues
focal_class.modifiers: public
focal_class.parameters: (Object instance, String[] pns)
focal_class.return: Object[]
focal_class.signature: Object[] getPropertyValues(Object instance, String[] pns)
focal_class.class_method_signature: Wrapper.setPropertyValues(Object instance, String[] pns, Object[] pvs)
focal_class.full_signature: public void setPropertyValues(Object instance, String[] pns, Object[] pvs)
focal_class.identifier: setPropertyValues
focal_class.modifiers: public
focal_class.parameters: (Object instance, String[] pns, Object[] pvs)
focal_class.return: void
focal_class.signature: void setPropertyValues(Object instance, String[] pns, Object[] pvs)
focal_class.class_method_signature: Wrapper.getMethodNames()
focal_class.full_signature: abstract public String[] getMethodNames()
focal_class.identifier: getMethodNames
focal_class.modifiers: abstract public
focal_class.parameters: ()
focal_class.return: String[]
focal_class.signature: String[] getMethodNames()
focal_class.class_method_signature: Wrapper.getDeclaredMethodNames()
focal_class.full_signature: abstract public String[] getDeclaredMethodNames()
focal_class.identifier: getDeclaredMethodNames
focal_class.modifiers: abstract public
focal_class.parameters: ()
focal_class.return: String[]
focal_class.signature: String[] getDeclaredMethodNames()
focal_class.class_method_signature: Wrapper.hasMethod(String name)
focal_class.full_signature: public boolean hasMethod(String name)
focal_class.identifier: hasMethod
focal_class.modifiers: public
focal_class.parameters: (String name)
focal_class.return: boolean
focal_class.signature: boolean hasMethod(String name)
focal_class.class_method_signature: Wrapper.invokeMethod(Object instance, String mn, Class<?>[] types, Object[] args)
focal_class.full_signature: abstract public Object invokeMethod(Object instance, String mn, Class<?>[] types, Object[] args)
focal_class.identifier: invokeMethod
focal_class.modifiers: abstract public
focal_class.parameters: (Object instance, String mn, Class<?>[] types, Object[] args)
focal_class.return: Object
focal_class.signature: Object invokeMethod(Object instance, String mn, Class<?>[] types, Object[] args)
focal_method.body: abstract public void setPropertyValue(Object instance, String pn, Object pv) throws NoSuchPropertyException, IllegalArgumentException;
focal_method.class_method_signature: Wrapper.setPropertyValue(Object instance, String pn, Object pv)
focal_method.full_signature: abstract public void setPropertyValue(Object instance, String pn, Object pv)
focal_method.identifier: setPropertyValue
focal_method.modifiers: abstract public
focal_method.parameters: (Object instance, String pn, Object pv)
focal_method.return: void
focal_method.signature: void setPropertyValue(Object instance, String pn, Object pv)