mirror of
https://github.com/stleary/JSON-java.git
synced 2026-03-17 00:03:39 -04:00
Refactor: Extract isRecordStyleAccessor helper method
This commit is contained in:
@@ -1915,25 +1915,7 @@ public class JSONObject {
|
|||||||
// They must start with a lowercase letter and should be declared in the class itself
|
// They must start with a lowercase letter and should be declared in the class itself
|
||||||
// (not inherited from Object, Enum, Number, or any java.* class)
|
// (not inherited from Object, Enum, Number, or any java.* class)
|
||||||
// Also exclude common Object/bean method names
|
// Also exclude common Object/bean method names
|
||||||
Class<?> declaringClass = method.getDeclaringClass();
|
if (isRecordStyleAccessor(name, method)) {
|
||||||
if (name.length() > 0 && Character.isLowerCase(name.charAt(0))
|
|
||||||
&& !"get".equals(name)
|
|
||||||
&& !"is".equals(name)
|
|
||||||
&& !"set".equals(name)
|
|
||||||
&& !"toString".equals(name)
|
|
||||||
&& !"hashCode".equals(name)
|
|
||||||
&& !"equals".equals(name)
|
|
||||||
&& !"clone".equals(name)
|
|
||||||
&& !"notify".equals(name)
|
|
||||||
&& !"notifyAll".equals(name)
|
|
||||||
&& !"wait".equals(name)
|
|
||||||
&& declaringClass != null
|
|
||||||
&& declaringClass != Object.class
|
|
||||||
&& !Enum.class.isAssignableFrom(declaringClass)
|
|
||||||
&& !Number.class.isAssignableFrom(declaringClass)
|
|
||||||
&& !declaringClass.getName().startsWith("java.")
|
|
||||||
&& !declaringClass.getName().startsWith("javax.")) {
|
|
||||||
// This is a record-style accessor - return the method name as-is
|
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -1952,6 +1934,41 @@ public class JSONObject {
|
|||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a method is a record-style accessor.
|
||||||
|
* Record accessors have lowercase names without get/is prefixes and are not inherited from standard Java classes.
|
||||||
|
*
|
||||||
|
* @param methodName the name of the method
|
||||||
|
* @param method the method to check
|
||||||
|
* @return true if this is a record-style accessor, false otherwise
|
||||||
|
*/
|
||||||
|
private static boolean isRecordStyleAccessor(String methodName, Method method) {
|
||||||
|
if (methodName.isEmpty() || !Character.isLowerCase(methodName.charAt(0))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Exclude common bean/Object method names
|
||||||
|
if ("get".equals(methodName) || "is".equals(methodName) || "set".equals(methodName)
|
||||||
|
|| "toString".equals(methodName) || "hashCode".equals(methodName)
|
||||||
|
|| "equals".equals(methodName) || "clone".equals(methodName)
|
||||||
|
|| "notify".equals(methodName) || "notifyAll".equals(methodName)
|
||||||
|
|| "wait".equals(methodName)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Class<?> declaringClass = method.getDeclaringClass();
|
||||||
|
if (declaringClass == null || declaringClass == Object.class) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Enum.class.isAssignableFrom(declaringClass) || Number.class.isAssignableFrom(declaringClass)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
String className = declaringClass.getName();
|
||||||
|
return !className.startsWith("java.") && !className.startsWith("javax.");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* checks if the annotation is not null and the {@link JSONPropertyName#value()} is not null and is not empty.
|
* checks if the annotation is not null and the {@link JSONPropertyName#value()} is not null and is not empty.
|
||||||
* @param annotation the annotation to check
|
* @param annotation the annotation to check
|
||||||
|
|||||||
Reference in New Issue
Block a user