I've been using wicket 1.2.1 in my application but decided to upgrade to 1.2.3.
Basically everything works except my FileUpload to a Jackrabbit-repository.
My testcases for my DAO:s working against the jackrabbit repo still
works but in my application any file larger than 10kb gets an
exception inside Jackrabbit:
"Bad filedescriptor"

The only thing I can think of is that the handling of the
FileUpload.getInputStream() has changed somehow.
The code looks like this (parts omitted for clarity):

Button uploadButton;
            //document.
            add(uploadButton = new Button("upload") {
                protected void onSubmit() {
                        final FileUpload upload = 
fileUploadField.getFileUpload();
                    if (upload != null) {
                        try {
                                Document document = getDocument();
                            document.setName(upload.getClientFileName());
                                
document.setFilename(upload.getClientFileName());
                                document.setMimeType(upload.getContentType());
                            document.setInputStream(upload.getInputStream());
                            document.setSize(upload.getSize());
                            System.out.println(document.getSize());
                            document.setContentIsNew(true);
                            setDocument(document);
                        } catch (Exception e) {
                            throw new IllegalStateException("Unable to
upload file", e);
                        }
                    }
                }
            }.setDefaultFormProcessing(false));

            Button saveButton = new Button("save") {

                    protected void onSubmit() {
                        Document document = getDocument();
                        ...
                        documentDAO.save(document);
                        ...
                     }
             }


Inside documentDAO.save:
               ...
               Node resNode = null;

                try {
                        resNode = node.getNode("jcr:content");
                } catch (PathNotFoundException e) {
                        resNode = node.addNode("jcr:content", "nt:resource");
                }

                if (document.isContentNew()) {
                        resNode.setProperty("jcr:mimeType", 
document.getMimeType());
                        resNode.setProperty("jcr:encoding", 
document.getEncoding());
                        resNode.setProperty("jcr:data", 
document.getInputStream());
                        // resNode.setProperty("jcr:size", document.getSize());
                        resNode.setProperty("jcr:lastModified", 
document.getLastModified());
                }
                ....

The code fails on the "jcr:data" when accessing document.getInputStream() with:

dao.jcr.DocumentException: error saving document node model
        at xxx.plan.dao.jcr.DocumentDAO.save(DocumentDAO.java:442)
        at 
xxx.plan.dao.jcr.DocumentDAO$$FastClassByCGLIB$$339cce88.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
        at 
wicket.proxy.LazyInitProxyFactory$CGLibInterceptor.intercept(LazyInitProxyFactory.java:282)
        at 
se.curalia.plan.dao.jcr.DocumentDAO$$EnhancerByCGLIB$$d394039b.save(<generated>)
        at 
se.curalia.plan.web.page.document.EditDocumentPage$EditDocumentForm$3.onSubmit(EditDocumentPage.java:334)
        at wicket.markup.html.form.Form.delegateSubmit(Form.java:568)
        at wicket.markup.html.form.Form.onFormSubmitted(Form.java:313)
        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:585)
        at 
wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:163)
        at 
wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:74)
        at 
wicket.request.compound.DefaultEventProcessorStrategy.processEvents(DefaultEventProcessorStrategy.java:65)
        at 
wicket.request.compound.AbstractCompoundRequestCycleProcessor.processEvents(AbstractCompoundRequestCycleProcessor.java:57)
        at wicket.RequestCycle.doProcessEventsAndRespond(RequestCycle.java:896)
        at wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:929)
        at wicket.RequestCycle.step(RequestCycle.java:1010)
        at wicket.RequestCycle.steps(RequestCycle.java:1084)
        at wicket.RequestCycle.request(RequestCycle.java:454)
        at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:219)
        at wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:262)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at se.curalia.plan.jbpm.SetActorFilter.doFilter(SetActorFilter.java:41)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
        at 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
        at 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
        at 
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
        at 
org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:181)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
        at 
org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:108)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
        at 
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:191)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
        at 
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
        at 
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:90)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
        at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
        at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)
Caused by: javax.jcr.RepositoryException: failed to spool stream to
internal storage: Bad file descriptor: Bad file descriptor
        at 
org.apache.jackrabbit.core.PropertyImpl.setValue(PropertyImpl.java:764)
        at org.apache.jackrabbit.core.NodeImpl.setProperty(NodeImpl.java:2208)
        at se.curalia.plan.dao.jcr.DocumentDAO.save(DocumentDAO.java:383)
        ... 61 more
Caused by: java.io.IOException: Bad file descriptor
        at java.io.FileInputStream.readBytes(Native Method)
        at java.io.FileInputStream.read(FileInputStream.java:177)
        at 
org.apache.jackrabbit.core.value.BLOBFileValue.<init>(BLOBFileValue.java:148)
        at 
org.apache.jackrabbit.core.value.BLOBFileValue.<init>(BLOBFileValue.java:120)
        at 
org.apache.jackrabbit.core.value.InternalValue.create(InternalValue.java:232)
        at 
org.apache.jackrabbit.core.PropertyImpl.setValue(PropertyImpl.java:759)
        ... 63 more


/Mats

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to