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]