package org.jboss.seam.wiki.core.upload.handler; import org.jboss.seam.wiki.core.model.WikiUpload; import org.jboss.seam.wiki.core.upload.editor.UploadEditor; import org.jboss.seam.wiki.core.upload.Uploader; public abstract class UploadHandler<WU extends WikiUpload> { public abstract UploadEditor<WU> createEditor(WU instance); public WU handleUpload(Uploader uploader) { WU newWikiUpload = createEntityInstance(); marshallData(uploader, newWikiUpload); return newWikiUpload; } public WU handleUpload(Uploader uploader, WU updateInstance) { marshallData(uploader, updateInstance); return updateInstance; } protected WU createEntityInstance() { try { return (WU) WikiUpload.class.newInstance(); } catch (Exception ex) { throw new RuntimeException(ex); } } private void marshallData(Uploader uploader, WU entityInstance) { entityInstance.setFilename(uploader.getFilename()); entityInstance.setContentType(uploader.getContentType()); entityInstance.setData(uploader.getData()); entityInstance.setFilesize(uploader.getData().length); } }