[
https://issues.jboss.org/browse/WFLY-11994?page=com.atlassian.jira.plugin...
]
Scott Marlow commented on WFLY-11994:
-------------------------------------
we don't need this change any more, but in case we are interested in it in the future,
below is some key parts from
https://github.com/scottmarlow/wildfly/commit/ba6b2918e65be46104fbc90b676...
if
(parentClassesAndInterfaces.contains("org/hibernate/usertype/CompositeUserType"))
{
if (name.equals("nullSafeGet") &&
match(desc,"(Ljava/sql/ResultSet;[Ljava/lang/String;Lorg/hibernate/engine/spi/SessionImplementor;Ljava/lang/Object;)Ljava/lang/Object;"))
{
desc = replaceSessionImplementor(desc);
} else if (name.equals("nullSafeSet") &&
match(desc,"(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SessionImplementor;)V"))
{
desc = replaceSessionImplementor(desc);
} else if (name.equals("assemble") &&
match(desc,"(Ljava/io/Serializable;Lorg/hibernate/engine/spi/SessionImplementor;Ljava/lang/Object;)Ljava/lang/Object;"))
{
desc = replaceSessionImplementor(desc);
} else if (name.equals("disassemble") &&
match(desc,"(Ljava/lang/Object;Lorg/hibernate/engine/spi/SessionImplementor;)Ljava/io/Serializable;"))
{
desc = replaceSessionImplementor(desc);
} else if (name.equals("replace") &&
match(desc,"(Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/engine/spi/SessionImplementor;Ljava/lang/Object;)Ljava/lang/Object;"))
{
desc = replaceSessionImplementor(desc);
}
rewriteSessionImplementor = true;
}
private static boolean match(String desc, String check) {
Type[] descType = Type.getArgumentTypes(desc);
Type[] checkType = Type.getArgumentTypes(check);
if(checkType.length != descType.length) {
return false;
}
for(int looper=0; looper < checkType.length; looper++) {
if ( ! matchWildcard(descType[looper], checkType[looper]) &&
! checkType[looper].equals(descType[looper])) {
return false;
}
}
return true;
}
// return true if both parameter types are Objects and checkType is java.lang.Object
(treat as match any object)
private static boolean matchWildcard(Type descType, Type checkType) {
return checkType.getDescriptor().startsWith("L") &&
descType.getDescriptor().startsWith("L") &&
checkType.getInternalName().equals("java/lang/Object");
}
Hibernate ORM transformer method signature parameter comparison to
treat Ljava/lang/Object as wildcard parameter
----------------------------------------------------------------------------------------------------------------
Key: WFLY-11994
URL:
https://issues.jboss.org/browse/WFLY-11994
Project: WildFly
Issue Type: Enhancement
Components: JPA / Hibernate
Reporter: Scott Marlow
Assignee: Scott Marlow
Priority: Major
Attachments: statetype.zip
Replace the org.jboss.as.hibernate.Hibernate51CompatibilityTransformer check for
Ljava/lang/Object, to instead match any object type (via custom code). Do the same for
the MethodAdapter class.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)