[Hibernate-JIRA] Created: (BVAL-285) ValidatorFactory#close should clearly state post condidtions
by Hardy Ferentschik (JIRA)
ValidatorFactory#close should clearly state post condidtions
-------------------------------------------------------------
Key: BVAL-285
URL: https://hibernate.onjira.com/browse/BVAL-285
Project: Bean Validation
Issue Type: Improvement
Components: spec-general
Affects Versions: 1.1.next
Reporter: Hardy Ferentschik
The Javadocs for ValidatorFactory#close says:
{quote}
After the _ValidatorFactory_ instance is closed, it is not allowed to call:
* methods of this _ValidatorFactory_ instance
* methods of _Validator_ instances created by this _ValidatorFactory_
{quote}
It does, however, not specified what happens if such a method is called. I think with this wording a post conditions needs to be specified, eg a _ValidationException_ will be thrown. Otherwise the docs should say that the behavior is unspecified if any of the mentioned methods is called after calling _close()_
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 11 months
[Hibernate-JIRA] Created: (HHH-3502) getIdentifierMethod of BasicLazyInitializer does not match if method invoked through an interface with different return type
by Sean Bridges (JIRA)
getIdentifierMethod of BasicLazyInitializer does not match if method invoked through an interface with different return type
----------------------------------------------------------------------------------------------------------------------------
Key: HHH-3502
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3502
Project: Hibernate Core
Issue Type: Bug
Affects Versions: 3.3.1
Reporter: Sean Bridges
Priority: Minor
I have an entity interface,
public interface IEntity {
public Object getId();
}
and I have an entity, say User that implements this interface with an id method
@Id
public Long getId() {
return id;
}
I can call getId() on an uninitialized proxy with,
user.getId()
however, if I call getId() in this way,
((IEntity) user)).getId()
I get org.hibernate.LazyInitializationException: could not initialize proxy - no Session
Looking at the code, BasicLazyInitializer has these lines,
else if ( isUninitialized() && method.equals(getIdentifierMethod) ) {
return getIdentifier();
}
the method.equals(getIdentifierMethod) returns false. The methods are not equal() because they have different return types (this is allowed in 1.5 with covariant return types).
Hibernate should not use Method.equals(), but should instead use the code below (modified from Method.equals(Object)),
public boolean equalsIgnoringReturnType(Method m1, Method m2) {
if ((m1.getDeclaringClass() != m2.getDeclaringClass()) {
return false;
}
if (m1.getName() != m2.getName()) {
return false;
}
Class[] params1 = m1.getParameterTypes();
Class[] params2 = m2.getParameterTypes();
if (params1.length != params2.length) {
return false;
}
for (int i = 0; i < params1.length; i++) {
if (params1[i] != params2[i])
return false;
}
return true;
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 11 months