Piotr Klimczak created OPENJPA-2240:
---------------------------------------

             Summary: JVMVRFY012 when using openjpa together with hyperjaxb3
                 Key: OPENJPA-2240
                 URL: https://issues.apache.org/jira/browse/OPENJPA-2240
             Project: OpenJPA
          Issue Type: Bug
          Components: Enhance
    Affects Versions: 2.2.0
         Environment: IBM-JDK, SUN-JDK
            Reporter: Piotr Klimczak


We are facing a problem with class enhancing generated by hyperjaxb3.

"Caused by: java.lang.VerifyError: JVMVRFY012 stack shape inconsistent; 
class=foo/Bar, metoda=pcgetDataTimeItem()Ljava/util/Date;, pc=7"

The problem occurs on every usage of non JPA compatible type like 
XMLGregorianCalendar.
For those types, the hyperjaxb3 plugin creates a kind of "proxy" setter/getter 
that uses JPA capable type.

Example of such proxy getter/setter:
<code>
        @Basic
        @Column(name = "DATATIMEITEM")
        @Temporal(TemporalType.TIMESTAMP)
        public Date getDataTimeItem() {
            return 
XmlAdapterUtils.unmarshall(XMLGregorianCalendarAsDateTime.class, 
this.getDataTime());
        }
</code>

then the XmlAdapterUtils.unmarshall looks like:

<code>
        public static <ValueType, BoundType> BoundType unmarshall(
                        Class<? extends XmlAdapter<ValueType, BoundType>> 
xmlAdapterClass,
                        ValueType v) {
                try {
                        final XmlAdapter<ValueType, BoundType> xmlAdapter = 
getXmlAdapter(xmlAdapterClass);
                        return xmlAdapter.unmarshal(v);
                } catch (Exception ex) {
                        throw new RuntimeException(ex);
                }
        }
</code>

I have found that the problem occurs only because of the type of 
XmlAdapterUtils.unmarshall method. The problem is that it's 1st type is a 
"Class". Changing the 1st type from Class type to any other like Object solves 
the problem but it is not a solution.

I think the problem is somewhere in serp project as after the enhancment 
process of classes containing non JPA capable XSD types, each call of that 
class generates the JVMVRFY012 exception- even during junit tests.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to