package org.peerbox.server.servlets; import org.peerbox.filerecovery.IFileRecoveryHandler; import org.peerbox.server.servlets.messages.FileRecoveryMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.gson.Gson; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; @Singleton public class FileRecoveryServlet extends BaseServlet<FileRecoveryMessage> { private static final Logger logger = LoggerFactory.getLogger(FileRecoveryServlet.class); private static final long serialVersionUID = 1L; private final Provider<IFileRecoveryHandler> fileRecoveryHandlerProvider; @Inject public FileRecoveryServlet(Provider<IFileRecoveryHandler> fileRecoveryHandlerProvider) { super(); this.fileRecoveryHandlerProvider = fileRecoveryHandlerProvider; } @Override protected void handleRequest(FileRecoveryMessage msg) throws Exception { if (msg.getPath() == null) { throw new IllegalArgumentException("Path is null. Cannot interpret request."); } logger.info("Got request to recover file: '{}'", msg.getPath()); IFileRecoveryHandler handler = fileRecoveryHandlerProvider.get(); handler.recoverFile(msg.getPath()); } @Override protected FileRecoveryMessage deserializeMessage(final String jsonContent) { FileRecoveryMessage msg = null; Gson gson = createGsonInstance(); msg = gson.fromJson(jsonContent, FileRecoveryMessage.class); return msg; } }