private static void checkTooMany(String methodName, JClassType serializer, List<String> reasons) { JMethod[] overloads = serializer.getOverloads(methodName); if (overloads.length > 1) { reasons.add( MessageFormat.format(TOO_MANY_METHODS, serializer.getQualifiedSourceName(), methodName)); } }
public static JMethod getInstantiationMethod(JClassType serializer, JClassType serializee) { JMethod[] overloads = serializer.getOverloads("instantiate"); for (JMethod overload : overloads) { JParameter[] parameters = overload.getParameters(); if (parameters.length != 1) { // Different overload continue; } if (!parameters[0] .getType() .getQualifiedSourceName() .equals(SerializationStreamReader.class.getName())) { // First param is not a stream class continue; } if (!isValidCustomFieldSerializerMethod(overload)) { continue; } JType type = overload.getReturnType(); if (type.isPrimitive() != null) { // Primitives are auto serialized so this can't be the right method continue; } // TODO: if isArray answered yes to isClass this cast would not be // necessary JClassType clazz = (JClassType) type; if (clazz.isAssignableFrom(serializee)) { return overload; } } return null; }
private static JMethod getMethod( String methodName, String streamClassName, JClassType serializer, JClassType serializee) { JMethod[] overloads = serializer.getOverloads(methodName); for (JMethod overload : overloads) { JParameter[] parameters = overload.getParameters(); if (parameters.length != 2) { // Different overload continue; } if (!parameters[0].getType().getQualifiedSourceName().equals(streamClassName)) { // First param is not a stream class continue; } JParameter serializeeParam = parameters[1]; JType type = serializeeParam.getType(); if (type.isPrimitive() != null) { // Primitives are auto serialized so this can't be the right method continue; } // TODO: if isArray answered yes to isClass this cast would not be // necessary JClassType clazz = (JClassType) type; if (clazz.isAssignableFrom(serializee)) { if (isValidCustomFieldSerializerMethod(overload) && overload.getReturnType() == JPrimitiveType.VOID) { return overload; } } } return null; }