package org.dodgybits.shuffle.web.server.service; import gwtupload.server.UploadAction; import gwtupload.server.exceptions.UploadActionException; import java.util.List; import java.util.logging.Logger; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import org.dodgybits.shuffle.dto.ShuffleProtos.Catalogue; import org.dodgybits.shuffle.dto.ShuffleProtos.Context; @SuppressWarnings("serial") public class RestoreServlet extends UploadAction { private static final Logger logger = Logger.getLogger(RestoreServlet.class.getName()); /** * Override executeAction to save the received files in a custom place and * delete this items from session. */ @Override public String executeAction(HttpServletRequest request, List<FileItem> sessionFiles) throws UploadActionException { assert (sessionFiles.size() == 1); Catalogue catalogue; FileItem item = sessionFiles.iterator().next(); try { // the uploaded seems to load extra 0s at end of byte stream int size = (int)item.getSize(); byte[] data = item.get(); byte[] reduced = new byte[size]; System.arraycopy(data, 0, reduced, 0, size); catalogue = Catalogue.parseFrom(reduced); } catch (Exception e) { throw new UploadActionException(e.getMessage()); } removeSessionFileItems(request); saveAll(catalogue); return null; } private void saveAll(Catalogue catalogue) { List<Context> contexts = catalogue.getContextList(); logger.info("Saving backup: " + catalogue.toString()); } }