{"record":{"id":"d17b9a5868467daf","repo":"apache/dubbo","slug":"message","errorCode":null,"errorMessage":"${message}","messagePattern":"\\$\\{message\\}","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"dubbo-common/src/main/java/org/apache/dubbo/common/beanutil/JavaBeanDescriptor.java","lineNumber":194,"sourceCode":"        return properties.containsKey(propertyName);\n    }\n\n    @Override\n    public Iterator<Map.Entry<Object, Object>> iterator() {\n        return properties.entrySet().iterator();\n    }\n\n    public int propertySize() {\n        return properties.size();\n    }\n\n    private boolean isValidType(int type) {\n        return TYPE_MIN <= type && type <= TYPE_MAX;\n    }\n\n    private void notNull(Object obj, String message) {\n        if (obj == null) {\n            throw new IllegalArgumentException(message);\n        }\n    }\n\n    private void notEmpty(String string, String message) {\n        if (isEmpty(string)) {\n            throw new IllegalArgumentException(message);\n        }\n    }\n\n    private boolean isEmpty(String string) {\n        return string == null || \"\".equals(string.trim());\n    }\n}\n","sourceCodeStart":176,"sourceCodeEnd":208,"githubUrl":"https://github.com/apache/dubbo/blob/3a3043227f5571d25eb2889de5bca22f2914843b/dubbo-common/src/main/java/org/apache/dubbo/common/beanutil/JavaBeanDescriptor.java#L176-L208","documentation":"Thrown by the private guard JavaBeanDescriptor.notNull(). The descriptor's property map is keyed by non-null names, so setProperty, getProperty and containsProperty refuse a null key with IllegalArgumentException. The message comes from the call site (e.g. \"Property name is null\").","triggerScenarios":"Calling descriptor.setProperty(null, value), descriptor.getProperty(null), or descriptor.containsProperty(null) on a JavaBeanDescriptor instance.","commonSituations":"Deserializing a Map that contains a null key into a JavaBeanDescriptor; programmatic descriptor construction where the key variable was never assigned; a Map.put(null,...) being replayed through setProperty during serialization.","solutions":["Make sure the property name argument is non-null before calling setProperty/getProperty/containsProperty.","When building a descriptor from a Map, filter or skip null keys before invoking setProperty.","Search the stack trace for the setProperty/getProperty/containsProperty caller to find which code path supplied null."],"exampleFix":"// before\ndescriptor.setProperty(mapKey, value); // mapKey may be null\n\n// after\nif (mapKey != null) {\n    descriptor.setProperty(mapKey, value);\n}","handlingStrategy":"validation","validationCode":"if (propertyName == null) {\n    throw new IllegalArgumentException(\"propertyName must not be null\");\n}\ndescriptor.setProperty(propertyName, value);","typeGuard":null,"tryCatchPattern":"try {\n    descriptor.setProperty(name, value);\n} catch (IllegalArgumentException e) {\n    // name was null; log and skip\n}","preventionTips":["Never pass a possibly-null key to setProperty/getProperty/containsProperty.","When iterating a Map into a descriptor, skip entries whose key is null."],"tags":["beanutil","null-safety","validation"],"backgroundTag":null,"analyzedSha":"3a3043227f5571d25eb2889de5bca22f2914843b","analyzedAt":"2026-08-14T00:43:19.853Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}