[ 
https://issues.apache.org/jira/browse/ARIES-1412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christian Schneider resolved ARIES-1412.
----------------------------------------
    Resolution: Fixed

> EmProxy needs to unwrap InvocationTargetException
> -------------------------------------------------
>
>                 Key: ARIES-1412
>                 URL: https://issues.apache.org/jira/browse/ARIES-1412
>             Project: Aries
>          Issue Type: Bug
>          Components: JPA
>    Affects Versions: jpa-2.1.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: jpa-2.2.0
>
>
> Currently EmProxy simply throws the exception from the invocation. If a 
> PersistenceException is thrown inside the persistence provider it will 
> surface as an InvocationtargetException on the InvocationHandller. In the log 
> it will look like below. 
> It should be the real PersistenceException though. This works by unwrapping 
> the InvocationtargetException.
> ----
> 2015-09-20 11:37:51,197 | WARN  | pool-39-thread-1 | InitHelper               
>         | 63 - net.lr.tasklist.cdi.tasklist-persistence - 1.0.0.SNAPSHOT | 
> java.lang.reflect.UndeclaredThrowableException
>       at com.sun.proxy.$Proxy33.flush(Unknown 
> Source)[58:javax.persistence:2.1.0.v201304241213]
>       at Proxy4d1c1d44_8813_413d_8045_ba268a99b2c0.flush(Unknown Source)[:]
>       at 
> net.lr.tasklist.persistence.impl.TaskServiceImpl.addTask(TaskServiceImpl.java:39)[63:net.lr.tasklist.cdi.tasklist-persistence:1.0.0.SNAPSHOT]
>       at Proxy3316312c_9444_405a_90e5_af21ec088f0b.addTask(Unknown Source)[:]
>       at 
> net.lr.tasklist.persistence.impl.InitHelper.addSampleTask(InitHelper.java:38)[63:net.lr.tasklist.cdi.tasklist-persistence:1.0.0.SNAPSHOT]
>       at 
> net.lr.tasklist.persistence.impl.InitHelper.access$0(InitHelper.java:36)[63:net.lr.tasklist.cdi.tasklist-persistence:1.0.0.SNAPSHOT]
>       at 
> net.lr.tasklist.persistence.impl.InitHelper$1.run(InitHelper.java:27)[63:net.lr.tasklist.cdi.tasklist-persistence:1.0.0.SNAPSHOT]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_60]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_60]
>       at java.lang.Thread.run(Thread.java:745)[:1.7.0_60]
> Caused by: java.lang.reflect.InvocationTargetException
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native 
> Method)[:1.7.0_60]
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_60]
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_60]
>       at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_60]
>       at 
> org.apache.aries.jpa.support.osgi.impl.EmProxy.invoke(EmProxy.java:41)[74:org.apache.aries.jpa.support:2.2.0.SNAPSHOT]
>       ... 10 more
> Caused by: javax.persistence.PersistenceException: 
> org.hibernate.exception.ConstraintViolationException: could not execute 
> statement
>       at 
> org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763)
>       at 
> org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
>       at 
> org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)
>       at 
> org.hibernate.jpa.spi.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:1338)
>       ... 15 more
> Caused by: org.hibernate.exception.ConstraintViolationException: could not 
> execute statement
>       at 
> org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:129)
>       at 
> org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
>       at 
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
>       at 
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)
>       at 
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:211)
>       at 
> org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:62)
>       at 
> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3124)
>       at 
> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3581)
>       at 
> org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:104)
>       at 
> org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463)
>       at 
> org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:349)
>       at 
> org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350)
>       at 
> org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
>       at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1222)
>       at 
> org.hibernate.jpa.spi.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:1335)
>       ... 15 more
> Caused by: org.h2.jdbc.JdbcSQLException: Unique index or primary key 
> violation: "PRIMARY_KEY_2 ON PUBLIC.TASK(ID)"; SQL statement:
> insert into Task (description, dueDate, finished, title, id) values (?, ?, ?, 
> ?, ?) [23505-172]
>       at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
>       at org.h2.message.DbException.get(DbException.java:169)
>       at org.h2.message.DbException.get(DbException.java:146)
>       at org.h2.index.BaseIndex.getDuplicateKeyException(BaseIndex.java:83)
>       at org.h2.index.TreeIndex.add(TreeIndex.java:65)
>       at org.h2.table.RegularTable.addRow(RegularTable.java:124)
>       at org.h2.command.dml.Insert.insertRows(Insert.java:126)
>       at org.h2.command.dml.Insert.update(Insert.java:86)
>       at org.h2.command.CommandContainer.update(CommandContainer.java:79)
>       at org.h2.command.Command.executeUpdate(Command.java:235)
>       at 
> org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:154)
>       at 
> org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:140)
>       at 
> org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
>       at 
> org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
>       at 
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208)
>       ... 25 more



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to