Hello Johan,

Thanks for the repsonse. :-)

All I have done is follow the code within theSingleFileUpload example
in wicketstuff.com. Is this a bug or am I doing something wrong? I am
using Wicket 1.3.0-beta4 and here is the stack of the exception:

ERROR - Objects                    - Error serializing object class
com.wicketcart.pages.admin.AddProductPage [object=[Page class =
com.wicketcart.pages.admin.AddProductPage, id = 2, version = 0]]
org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:
Unable to serialize class:
org.apache.wicket.util.io.DeferredFileOutputStream
Field hierarchy is:
  2 [class=com.wicketcart.pages.admin.AddProductPage, path=2]
    private java.lang.Object
org.apache.wicket.MarkupContainer.children
[class=com.wicketcart.components.MenuBorder, path=2:libBorder]
      private java.lang.Object
org.apache.wicket.MarkupContainer.children
[class=[Lorg.apache.wicket.Component;]
        private
org.apache.wicket.markup.html.ContainerWithAssociatedMarkupHelper
org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup.markupHelper[7]
[class=com.wicketcart.pages.admin.AddProductPage$AddProductForm,
path=2:libBorder:productForm]
          private java.lang.Object
org.apache.wicket.MarkupContainer.children
[class=[Lorg.apache.wicket.Component;]
            private final java.lang.String
org.apache.wicket.markup.html.form.ChoiceRenderer.idExpression[7]
[class=org.apache.wicket.markup.html.form.upload.FileUploadField,
path=2:libBorder:productForm:fileInput]
              org.apache.wicket.model.IModel
org.apache.wicket.Component.model
[class=org.apache.wicket.model.Model]
                private java.io.Serializable
org.apache.wicket.model.Model.object
[class=org.apache.wicket.markup.html.form.upload.FileUpload]
                  private final org.apache.wicket.util.upload.FileItem
org.apache.wicket.markup.html.form.upload.FileUpload.item
[class=org.apache.wicket.util.upload.DiskFileItem]
                    private
org.apache.wicket.util.io.DeferredFileOutputStream
org.apache.wicket.util.upload.DiskFileItem.dfos
[class=org.apache.wicket.util.io.DeferredFileOutputStream] <-----
field that is not serializable
        at 
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:347)
        at 
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at 
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at 
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at 
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at 
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at 
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at 
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at 
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at 
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:393)
        at 
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at 
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at 
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:393)
        at 
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at 
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at 
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at 
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at 
org.apache.wicket.util.io.SerializableChecker.writeObjectOverride(SerializableChecker.java:683)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:298)
        at 
org.apache.wicket.util.io.IObjectStreamFactory$1.writeObjectOverride(IObjectStreamFactory.java:74)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:298)
        at 
org.apache.wicket.util.lang.Objects.objectToByteArray(Objects.java:1097)
        at 
org.apache.wicket.protocol.http.pagestore.AbstractPageStore.serializePage(AbstractPageStore.java:200)
        at 
org.apache.wicket.protocol.http.pagestore.DiskPageStore.storePage(DiskPageStore.java:709)
        at 
org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.put(SecondLevelCacheSessionStore.java:337)
        at org.apache.wicket.Session.requestDetached(Session.java:1391)
        at org.apache.wicket.RequestCycle.detach(RequestCycle.java:1016)
        at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1263)
        at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
        at 
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:319)
        at 
org.apache.wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:139)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:442)
        at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1051)
        at 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
        at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1042)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:355)
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:615)
        at 
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:150)
        at 
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
        at org.mortbay.jetty.Server.handle(Server.java:272)
        at 
org.mortbay.jetty.HttpConnection.handlerRequest(HttpConnection.java:396)
        at 
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:666)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:613)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:198)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:311)
        at 
org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
        at 
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Caused by: java.io.NotSerializableException:
org.apache.wicket.util.io.DeferredFileOutputStream
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
        at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
        at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
        at 
org.apache.wicket.util.io.IObjectStreamFactory$1.writeObjectOverride(IObjectStreamFactory.java:66)

On Nov 7, 2007 10:06 PM, Johan Compagner <[EMAIL PROTECTED]> wrote:
> what is the full stack of the exception?
> because who does have that field?
> Streams should always be transient because those can't be serialized
> whats the wicket version?
>
> johan
>
>
>
> On 11/6/07, James Perry <[EMAIL PROTECTED]> wrote:
> >
> > Hello fellow Wicket users,
> >
> > I am getting a
> > org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:
> > Unable to serialize class:
> > org.apache.wicket.util.io.DeferredFileOutputStream exception when I
> > added a file upload feature to my AddProductForm.
> >
> > My form is serialiazable yet I don't which of its child components are
> > not serializable. Can anyone shed any light on this?
> >
> > Cheers,
> > James.
> >
> > Here is my Page class:
> >
> > public class AddProductPage extends AdminPage {
> >
> >        private static final long serialVersionUID = 1L;
> >
> >        @SpringBean(name="adminService")
> >        private AdminService adminService;
> >
> >        public AddProductPage(Product product) {
> >                MenuBorder border = new MenuBorder("libBorder");
> >                border.add(new FeedbackPanel("feedback"));
> >                border.add(new AddProductForm("productForm", product));
> >                add(border);
> >        }
> >
> >        private final class AddProductForm extends Form {
> >
> >                private static final long serialVersionUID = 1L;
> >
> >                private FileUploadField fileUploadField;
> >
> >                public AddProductForm(String id, Product product) {
> >                        super(id, new CompoundPropertyModel(product));
> >                        setMultiPart(true);
> >                        add(new RequiredTextField("name"));
> >                        add(new RequiredTextArea("description"));
> >                        add(new RequiredTextField("sellValue",
> > BigDecimal.class));
> >                        add(new RequiredTextField("units", Long.class));
> >                        add(new CheckBox("onSell"));
> >                        add(new DropDownChoice("category",
> > catalogService.getCategories()));
> >                        add(new DropDownChoice("manufacturer",
> > catalogService.getManufacturers()));
> >                        add(fileUploadField = new
> > FileUploadField("fileInput", new
> > Model(fileUploadField)));
> >                        setMaxSize(Bytes.megabytes(100));
> >                }
> >
> >                @Override
> >                protected void onSubmit() {
> >                        final FileUpload upload =
> > fileUploadField.getFileUpload();
> >                        if (upload != null)
> >                                System.out.println("File is not empty! Whoo
> > hooo!");
> >                        else
> >                                System.out.println("File is empty! Whoo
> > hooo!");
> >                        fileUploadField.detachModels();
> >                        /**Product product = (Product) getModelObject();
> >                        product.setEntryDate(new Timestamp(
> > System.currentTimeMillis()));
> >                        product.setImageURL("uploads/");
> >                        System.out.println(product.getCategory());
> >                        adminService.saveProduct(product);
> >                        setResponsePage(ViewProductsPage.class);**/
> >                }
> >
> >        }
> >
> > }
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to