Uploaded image for project: 'PicketLink'
  1. PicketLink
  2. PLINK-197

Large lists with nested lists (all containing serializable objects) can not be stored on setAttribute(...)

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Done
    • Icon: Major Major
    • PLINK_2.5.0.Beta6
    • PLINK_2.5.0.beta4
    • IDM
    • None

      Using the "org.picketlink.idm.model.Attribute" class, on an SimpleUser to store some "attributes"

      This works fine for simple things, like Strings, however storing large lists (with nested lists) causes an exception:

      Caused by: org.picketlink.idm.IdentityManagementException: PLIDM000054: Could not update IdentityType [org.picketlink.idm.model.SimpleUser@31407080].
      	at org.picketlink.idm.internal.DefaultIdentityManager.update(DefaultIdentityManager.java:157) [picketlink-idm-impl-2.5.0.Beta4.jar:]
      	at org.picketlink.internal.SecuredIdentityManager.update(SecuredIdentityManager.java:61) [picketlink-impl-2.5.0.Beta4.jar:]
      	at org.aerogear.connectivity.rest.registry.applications.PushApplicationEndpoint.listAllPushApplications(PushApplicationEndpoint.java:83) [classes:]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_09]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_09]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_09]
      	at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_09]
      	at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
      	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:127) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
      	at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:135) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
      	at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
      	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
      	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
      	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:82) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
      	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
      	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
      	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
      	at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
      	... 64 more
      Caused by: javax.persistence.PersistenceException: org.hibernate.exception.DataException: Value too long for column "VALUE VARCHAR(1024)": "STRINGDECODE('rO0ABXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAABdwQAAAAK\nc3IAL29yZy5hZXJvZ2Vhci5jb25uZWN0aXZp... (7237)"; SQL statement:
      insert into IdentityObjectAttribute (identityObject_id, name, type, value, id) values (?, ?, ?, ?, ?) [22001-161]
      	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1361) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1289) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:261) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.ejb.criteria.CriteriaQueryCompiler$3.getResultList(CriteriaQueryCompiler.java:260) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
      	at org.picketlink.idm.jpa.internal.JPAIdentityStore.findAllIdentityTypeAttributes(JPAIdentityStore.java:921) [picketlink-idm-impl-2.5.0.Beta4.jar:]
      	at org.picketlink.idm.jpa.internal.JPAIdentityStore.removeAttributes(JPAIdentityStore.java:817) [picketlink-idm-impl-2.5.0.Beta4.jar:]
      	at org.picketlink.idm.jpa.internal.JPAIdentityStore.updateIdentityTypeAttributes(JPAIdentityStore.java:1076) [picketlink-idm-impl-2.5.0.Beta4.jar:]
      	at org.picketlink.idm.jpa.internal.JPAIdentityStore.update(JPAIdentityStore.java:164) [picketlink-idm-impl-2.5.0.Beta4.jar:]
      	at org.picketlink.idm.internal.DefaultIdentityManager.update(DefaultIdentityManager.java:154) [picketlink-idm-impl-2.5.0.Beta4.jar:]
      	... 92 more
      Caused by: org.hibernate.exception.DataException: Value too long for column "VALUE VARCHAR(1024)": "STRINGDECODE('rO0ABXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAABdwQAAAAK\nc3IAL29yZy5hZXJvZ2Vhci5jb25uZWN0aXZp... (7237)"; SQL statement:
      insert into IdentityObjectAttribute (identityObject_id, name, type, value, id) values (?, ?, ?, ?, ?) [22001-161]
      	at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:134) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at $Proxy112.executeUpdate(Unknown Source)	at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:56) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2849) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3290) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:80) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:272) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:264) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:186) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:59) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1053) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1108) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:252) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
      	... 98 more
      Caused by: org.h2.jdbc.JdbcSQLException: Value too long for column "VALUE VARCHAR(1024)": "STRINGDECODE('rO0ABXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAABdwQAAAAK\nc3IAL29yZy5hZXJvZ2Vhci5jb25uZWN0aXZp... (7237)"; SQL statement:
      insert into IdentityObjectAttribute (identityObject_id, name, type, value, id) values (?, ?, ?, ?, ?) [22001-161]
      	at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
      	at org.h2.message.DbException.get(DbException.java:169)
      	at org.h2.table.Column.validateConvertUpdateSequence(Column.java:320)
      	at org.h2.table.Table.validateConvertUpdateSequence(Table.java:679)
      	at org.h2.command.dml.Insert.insertRows(Insert.java:120)
      	at org.h2.command.dml.Insert.update(Insert.java:84)
      	at org.h2.command.CommandContainer.update(CommandContainer.java:73)
      	at org.h2.command.Command.executeUpdate(Command.java:219)
      	at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
      	at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:129)
      	at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:493)
      	at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) [:1.7.0_09]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_09]
      	at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_09]
      	at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
      	... 113 more
      
      

            psilva@redhat.com Pedro Igor Craveiro
            mwessend@redhat.com Matthias Wessendorf
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: