package edu.harvard.iq.dataverse.api.datadeposit; import java.io.IOException; import java.util.concurrent.locks.ReentrantLock; import javax.inject.Inject; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.swordapp.server.CollectionAPI; import org.swordapp.server.servlets.SwordServlet; public class SWORDv2CollectionServlet extends SwordServlet { @Inject CollectionDepositManagerImpl collectionDepositManagerImpl; @Inject CollectionListManagerImpl collectionListManagerImpl; protected CollectionAPI api; private final ReentrantLock lock = new ReentrantLock(); @Override public void init() throws ServletException { super.init(); this.api = new CollectionAPI(collectionListManagerImpl, collectionDepositManagerImpl, this.config); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { lock.lock(); setRequest(req); this.api.get(req, resp); setRequest(null); } finally { lock.unlock(); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { lock.lock(); setRequest(req); this.api.post(req, resp); setRequest(null); } finally { lock.unlock(); } } private void setRequest(HttpServletRequest r) { collectionDepositManagerImpl.setRequest(r); collectionListManagerImpl.setRequest(r); } }