Hi Dan,
Have been following the evolution of NO into ISIS with interest. We are
using ISIS to develop a major application and we have been using the XML
persistor for most development undertaken to date. This project includes the
development of a custom ISIS viewer based on GWT for a specialized UI that
is now in beta.
We recently initiated a move to the SQL object store so we can get
multi-user operating. We have implemented this using Oracle XE DB.
We now have an issue with infinite recursion occuring in the
AbtractAutoMapper.setupFullMapping method for a domain class that implements
a hierarchy i.e. it contains a collection of the same class. It ultimately
crashes with stack overflow. I have attached a log extract.
This same structure works fine using the XML persistor. This issue has
brought our SQL implementation to a halt as the class involved is a core
class in our model (murphy's law again !)
I really don't understand this part of the framework sufficiently to debug
this. Any pointers or assistance you can provide would be greatly
appreciated.
Regards,
Barry Woods
P.S. Not sure whether this is the right place to raise issues - pls advise
if not.
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaultdb-ids' = 'null'
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaultall-fields' = 'null'
01:59:56,220 [IsisConfigurationDefault main INFO ] from :[file system
(directory 'config'), file system (directory 'src/main/webapp/WEB-INF'),
context loader classpath]
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'componentDescriptors' = 'null'
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaulttable' = 'null'
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaultdb-ids' = 'null'
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaultall-fields' = 'null'
01:59:56,220 [IsisConfigurationDefault main INFO ] from :[file system
(directory 'config'), file system (directory 'src/main/webapp/WEB-INF'),
context loader classpath]
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'componentDescriptors' = 'null'
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaulttable' = 'null'
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaultdb-ids' = 'null'
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaultall-fields' = 'null'
01:59:56,220 [IsisConfigurationDefault main INFO ] from :[file system
(directory 'config'), file system (directory 'src/main/webapp/WEB-INF'),
context loader classpath]
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'componentDescriptors' = 'null'
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaulttable' = 'null'
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaultdb-ids' = 'null'
01:59:56,220 [IsisConfigurationDefault main DEBUG] property:
'isis.persistor.sql.automapper.defaultall-fields' = 'null'
01:59:56,251 [DatabaseConnectorPool main DEBUG] released connection
org.apache.isis.runtimes.dflt.objectstores.sql.jdbc.JdbcConnector@13bb3cc
Exception in thread "main" com.google.inject.ProvisionException: Guice
provision errors:
1) Error in custom provider, java.lang.RuntimeException:
java.lang.reflect.InvocationTargetException
at
org.apache.isis.runtimes.dflt.runtime.runner.IsisModule.provideIsisSystem(IsisModule.java:49)
while locating org.apache.isis.runtimes.dflt.runtime.system.IsisSystem
1 error
at com.google.inject.InjectorImpl$4.get(InjectorImpl.java:767)
at com.google.inject.InjectorImpl.getInstance(InjectorImpl.java:793)
at
org.apache.isis.runtimes.dflt.runtime.RuntimeBootstrapper.bootstrapSystem(RuntimeBootstrapper.java:53)
at
org.apache.isis.runtimes.dflt.runtime.RuntimeBootstrapper.bootstrap(RuntimeBootstrapper.java:45)
at
org.apache.isis.runtimes.dflt.runtime.runner.IsisRunner.bootstrap(IsisRunner.java:207)
at org.apache.isis.runtimes.dflt.runtime.Isis.run(Isis.java:45)
at org.apache.isis.runtimes.dflt.runtime.Isis.main(Isis.java:34)
at org.apache.isis.Isis.main(Isis.java:25)
Caused by: java.lang.RuntimeException:
java.lang.reflect.InvocationTargetException
at
com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:106)
at
com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:48)
at
com.google.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:811)
at
com.google.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42)
at com.google.inject.Scopes$1$1.get(Scopes.java:54)
at
com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:48)
at com.google.inject.InjectorImpl$4$1.call(InjectorImpl.java:758)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:804)
at com.google.inject.InjectorImpl$4.get(InjectorImpl.java:754)
... 7 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:101)
... 16 more
Caused by: java.lang.StackOverflowError
at
sun.nio.cs.SingleByteEncoder.encodeArrayLoop(SingleByteEncoder.java:91)
at sun.nio.cs.SingleByteEncoder.encodeLoop(SingleByteEncoder.java:130)
at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:252)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:116)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:203)
at java.io.Writer.write(Writer.java:140)
at org.apache.log4j.helpers.QuietWriter.write(QuietWriter.java:48)
at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:310)
at org.apache.log4j.WriterAppender.append(WriterAppender.java:162)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
at
org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
at org.apache.log4j.Category.callAppenders(Category.java:206)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.info(Category.java:666)
at
org.apache.isis.core.commons.config.IsisConfigurationDefault.<init>(IsisConfigurationDefault.java:49)
at
org.apache.isis.core.commons.config.IsisConfigurationDefault.createSubset(IsisConfigurationDefault.java:95)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setupFullMapping(AbstractAutoMapper.java:109)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setUpFieldMappers(AbstractAutoMapper.java:78)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.<init>(AbstractAutoMapper.java:64)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.CombinedCollectionMapper.<init>(CombinedCollectionMapper.java:58)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.MultiColumnCombinedCollectionMapper.<init>(MultiColumnCombinedCollectionMapper.java:41)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setupFullMapping(AbstractAutoMapper.java:132)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setUpFieldMappers(AbstractAutoMapper.java:78)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.<init>(AbstractAutoMapper.java:64)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.CombinedCollectionMapper.<init>(CombinedCollectionMapper.java:58)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.MultiColumnCombinedCollectionMapper.<init>(MultiColumnCombinedCollectionMapper.java:41)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setupFullMapping(AbstractAutoMapper.java:132)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setUpFieldMappers(AbstractAutoMapper.java:78)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.<init>(AbstractAutoMapper.java:64)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.CombinedCollectionMapper.<init>(CombinedCollectionMapper.java:58)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.MultiColumnCombinedCollectionMapper.<init>(MultiColumnCombinedCollectionMapper.java:41)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setupFullMapping(AbstractAutoMapper.java:132)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setUpFieldMappers(AbstractAutoMapper.java:78)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.<init>(AbstractAutoMapper.java:64)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.CombinedCollectionMapper.<init>(CombinedCollectionMapper.java:58)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.MultiColumnCombinedCollectionMapper.<init>(MultiColumnCombinedCollectionMapper.java:41)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setupFullMapping(AbstractAutoMapper.java:132)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setUpFieldMappers(AbstractAutoMapper.java:78)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.<init>(AbstractAutoMapper.java:64)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.CombinedCollectionMapper.<init>(CombinedCollectionMapper.java:58)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.MultiColumnCombinedCollectionMapper.<init>(MultiColumnCombinedCollectionMapper.java:41)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setupFullMapping(AbstractAutoMapper.java:132)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.setUpFieldMappers(AbstractAutoMapper.java:78)
at
org.apache.isis.runtimes.dflt.objectstores.sql.auto.AbstractAutoMapper.<init>(AbstractAutoMapper.java:64)