package org.peerbox.server.servlets; import org.peerbox.server.servlets.messages.ShareMessage; import org.peerbox.share.IShareFolderHandler; 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 ShareFolderServlet extends BaseServlet<ShareMessage> { private static final Logger logger = LoggerFactory.getLogger(ShareFolderServlet.class); private static final long serialVersionUID = 1L; private final Provider<IShareFolderHandler> shareFolderHandlerProvider; @Inject public ShareFolderServlet(Provider<IShareFolderHandler> shareFolderHandlerProvider) { super(); this.shareFolderHandlerProvider = shareFolderHandlerProvider; } @Override protected void handleRequest(ShareMessage msg) throws Exception { if (msg.getPath() == null) { throw new IllegalArgumentException("Path is null. Cannot interpret request."); } logger.info("Got request to share folder: '{}'", msg.getPath()); IShareFolderHandler handler = shareFolderHandlerProvider.get(); handler.shareFolder(msg.getPath()); } @Override protected ShareMessage deserializeMessage(final String jsonContent) { ShareMessage msg = null; Gson gson = createGsonInstance(); msg = gson.fromJson(jsonContent, ShareMessage.class); return msg; } }