Does WallBoardMainDataProvider return a non-static inner class that retains
a reference to the non-proxied implementation?

FWIW, we avoid @Inject'ed IDataProviders since they tend to retain state
(filter/query params etc), and instead give them their service proxies with
Injector.get().inject(this) in their constructors.

On Thu, Mar 22, 2012 at 7:56 AM, nino martinez wael <
nino.martinez.w...@gmail.com> wrote:

> Hi heres a part of the stacktrace, im wondering why it bypasses the proxy,
> I thought it would never venture beyond that:
>
> 2012-03-22 15:51:55,739 ERROR
> [org.apache.wicket.serialize.java.JavaSerializer]  - Error serializing
> object class com.netdesign.wallboard.page.ViewerPage [object=[Page class =
> com.netdesign.wallboard.page.ViewerPage, id = 6, render count = 1]]
>
> org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:
> Unable to serialize class: com.google.inject.internal.InjectorImpl$4
> Field hierarchy is:
>  6 [class=com.netdesign.wallboard.page.ViewerPage, path=6]
>    private java.lang.Object org.apache.wicket.MarkupContainer.children
> [class=com.netdesign.wallboard.panel.WallboardShowPanel,
> path=6:wallboardShow]
>      private java.lang.Object org.apache.wicket.MarkupContainer.children
> [class=[Ljava.lang.Object;]
>        private java.lang.Object
> org.apache.wicket.MarkupContainer.children[0]
> [class=com.netdesign.wallboard.panel.WallboardShowPanel$1,
> path=6:wallboardShow:columnList]
>          private java.lang.Object
> org.apache.wicket.MarkupContainer.children [class=[Ljava.lang.Object;]
>            private final java.lang.annotation.Annotation
> org.apache.wicket.guice.GuiceProxyTargetLocator.bindingAnnotation[2]
> [class=org.apache.wicket.markup.html.list.ListItem,
> path=6:wallboardShow:columnList:2]
>              private java.lang.Object
> org.apache.wicket.MarkupContainer.children
> [class=com.netdesign.wallboard.panel.DisplayItemShowPanel,
> path=6:wallboardShow:columnList:2:column]
>                private java.lang.Object
> org.apache.wicket.MarkupContainer.children [class=[Ljava.lang.Object;]
>                  java.lang.Object org.apache.wicket.Component.data[1]
> [class=com.netdesign.wallboard.panel.DisplayItemShowPanel$1,
> path=6:wallboardShow:columnList:2:column:list]
>                    private java.lang.Object
> org.apache.wicket.MarkupContainer.children [class=[Ljava.lang.Object;]
>                      private java.lang.Object
> org.apache.wicket.MarkupContainer.children[0]
> [class=org.apache.wicket.markup.html.list.ListItem,
> path=6:wallboardShow:columnList:2:column:list:0]
>                        private java.lang.Object
> org.apache.wicket.MarkupContainer.children
> [class=com.netdesign.remedy.panel.DisplayItemRemedyShowPanel,
> path=6:wallboardShow:columnList:2:column:list:0:displayItemShowPanel]
>                          private java.lang.Object
> org.apache.wicket.MarkupContainer.children
> [class=com.netdesign.remedy.panel.DisplayItemRemedyShowPanel$1,
>
> path=6:wallboardShow:columnList:2:column:list:0:displayItemShowPanel:remedyItems]
>                            java.lang.Object
> org.apache.wicket.Component.data
> [class=com.netdesign.remedy.provider.RemedyWallboardViewerProvider$2]
>                              final
> com.netdesign.remedy.provider.RemedyWallboardViewerProvider
> com.netdesign.remedy.provider.RemedyWallboardViewerProvider$2.this$0
> [class=com.netdesign.remedy.provider.RemedyWallboardViewerProvider]
>                                private
> com.netdesign.wallboard.core.interfaces.WallBoardMainDataProvider
>
> com.netdesign.remedy.provider.RemedyWallboardViewerProvider.wallBoardMainDataProvider
> [class=com.netdesign.wallboard.core.WallboardMainDataProviderImpl]
>                                  private
> com.netdesign.wallboard.core.dao.CoreDaoService
> com.netdesign.wallboard.core.WallboardMainDataProviderImpl.coreDaoService
>
> [class=com.netdesign.wallboard.core.dao.CoreDaoServiceImp$$EnhancerByGuice$$29968411]
>                                    protected com.google.inject.Provider
> com.netdesign.wallboard.core.dao.CoreDaoServiceImp.em
> [class=com.google.inject.internal.InjectorImpl$4] <----- field that is not
> serializable
> at
>
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:386)
>
> Part of matching code:
>
>
> public class DisplayItemRemedyShowPanel extends Panel {
>
> @Inject
> private WallBoardMainDataProvider wallBoardMainDataProvider;
>
> private Logger logger = LoggerFactory
> .getLogger(DisplayItemRemedyShowPanel.class);
>
> public DisplayItemRemedyShowPanel(String id, final String queue,
> final IModel<List<RemedyItem>> RemedyItemsModel, final RemedyDisplayItem
> remedyDisplayItem) {
>
>
> AND when debugging wallBoardMainDataProvider is wrapped by a proxy.. Of
> course the internals of the target of the proxy are not.
>
> 2012/3/21 Martin Grigorov <mgrigo...@apache.org>
>
> > Wicket-Guice will inject serializable Proxy.
> > It seems Guice's plain Injector injects the binding. Check why.
> >
> > On Wed, Mar 21, 2012 at 9:55 AM, Wilhelmsen Tor Iver <toriv...@arrive.no
> >
> > wrote:
> > >> Hi I get a serialize exception in a panel of mine its correct that one
> > of the contained fields cannot be serialized, however this field are
> > injected and should not be touched by the checker, the field are marked
> > with the @inject  annotation. I'm using guice for injection.. Any thing
> > obvious wrong with this?
> > >
> > > Java serialization does not care for that annotation, only whether it
> is
> > declared transient or sports the Serializable marker interface. Frankly
> it
> > baffles me that they didn't just default to letting everything be
> > serializable and let the programmer deal with stuff that's not supposed
> to
> > be, since it otherwise just causes endless exceptions and adding an
> > otherwise pointless interface inheritance...
> > >
> > > - Tor Iver
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > > For additional commands, e-mail: users-h...@wicket.apache.org
> > >
> >
> >
> >
> > --
> > Martin Grigorov
> > jWeekend
> > Training, Consulting, Development
> > http://jWeekend.com
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > For additional commands, e-mail: users-h...@wicket.apache.org
> >
> >
>
>
> --
> Best regards / Med venlig hilsen
> Nino Martinez
>

Reply via email to