Hello wicket users

I creating a panel that display an image that is stored in a java
object as a byte array

public class OzImagePanel extends Panel {

        private Image img;
        private OzImage imgModel;
        
        public OzImagePanel(final String id,FilePrx filePx)
        {
                super(id);
                imgModel=new OzImage(filePx);
                getApplication().getSharedResources().add("panelImg",imgModel);
                add(img=new Image("img",new ResourceReference("panelImg")));
        }
}


public class OzImage extends Resource {
        
        private OzResourceStream resourceStream;
        private Oz.Files.FilePrx filePx;
        
        public OzImage(FilePrx filePx)
        {
                super();
                this.filePx=filePx;
        }
        
        /* (non-Javadoc)
         * @see wicket.Resource#getResourceStream()
         */
        public IResourceStream getResourceStream() {
                // TODO Auto-generated method stub
                resourceStream=new OzResourceStream(filePx);
                return resourceStream;
        }
}

public class OzResourceStream implements IResourceStream{

                private NodePrx fileNodePx;
                
                public OzResourceStream(Oz.Files.NodePrx nodePx)
                {
                        fileNodePx=nodePx;
                }
                
                public void close()
                {       
                }
                
                public String getContentType()
                {
                        return fileNodePx.getContentType();
                }
                
                public InputStream getInputStream()
                {
                        InputStream stream=null;
                        if(fileNodePx.ice_isA("::Oz::Files::File"))
                        {
                                int fileSize=0;
                                FilePrx 
filePx=FilePrxHelper.uncheckedCast(fileNodePx);
                                byte fileBuffer[]=new 
byte[(int)filePx.getSize()];
                                int chunks=(int)filePx.countChunks();
                                for(int a=0;a<chunks;++a)
                                {
                                        byte 
chunkBuffer[]=filePx.readChunk(a).read();
                                        for(int b=0;b<chunkBuffer.length;++b)
                                        {
                                                
fileBuffer[fileSize]=chunkBuffer[b];
                                                fileSize++;
                                        }
                                }
                                stream=new ByteArrayInputStream(fileBuffer);
                        }
                        return stream;
                }
                
                public long length()
                {
                        return 
FilePrxHelper.uncheckedCast(fileNodePx).getSize();
                }
                
                public Time lastModifiedTime()
                {
                                return Time.now();
                }
}


This code works as spected and the image is displayed OK the problem i
see is that if i create multipe OzImagePanel all objects use the Same
resource.

i think that the way to this works ok is create an unique id for each
resource and store it in an internal attribute of the panel

what you think about this?
any ideas to improve my code

thanks to all you


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to