diff options
Diffstat (limited to 'sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/EsServlet.java')
-rw-r--r-- | sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/EsServlet.java | 70 |
1 files changed, 68 insertions, 2 deletions
diff --git a/sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/EsServlet.java b/sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/EsServlet.java index 9d276ffc8..2b5488498 100644 --- a/sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/EsServlet.java +++ b/sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/EsServlet.java @@ -21,22 +21,68 @@ package org.onap.ccsdk.features.sdnr.wt.apigateway; import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class EsServlet extends BaseServlet { + public interface IRequestCallback{ + + void onRequest(String uri,String method); + } /** * */ private static final long serialVersionUID = -3996363343749995011L; private static final String OFFLINE_RESPONSE_MESSAGE = "Database interface is offline"; - + private static Logger LOG = LoggerFactory.getLogger(EsServlet.class); + + private static final Map<String,List<IRequestCallback>> requestCallbacks=new HashMap<String,List<IRequestCallback>>(); + + public static void registerRequestCallback(String uri,IRequestCallback callback) { + List<IRequestCallback> list=requestCallbacks.getOrDefault(uri, new ArrayList<IRequestCallback>()); + if(!list.contains(callback)) { + list.add(callback); + } + requestCallbacks.put(uri, list); + } + public static void unregisterRequestCallback(String uri,IRequestCallback callback) { + List<IRequestCallback> list=requestCallbacks.getOrDefault(uri, new ArrayList<IRequestCallback>()); + if(list.contains(callback)) { + list.remove(callback); + } + } + + public EsServlet() { super(); } + private void handleCallbacks(String uri,String method) { + + LOG.debug("try to find callbacks for uri {}",uri); + for(Entry<String,List<IRequestCallback>> entry:requestCallbacks.entrySet()) { + if(uri.contains(entry.getKey())) { + List<IRequestCallback> cblist = entry.getValue(); + if(cblist!=null && cblist.size()>0) { + LOG.debug("found at least one"); + for(IRequestCallback cb :cblist) { + cb.onRequest(uri, method); + } + } + } + + } + } @Override protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { if (MyProperties.getInstance().corsEnabled()) { @@ -64,4 +110,24 @@ public class EsServlet extends BaseServlet { } return MyProperties.getInstance().getEsBaseUrl() + uri; } -} + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + super.doGet(req, resp); + this.handleCallbacks(req.getRequestURI(),"GET"); + } + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + super.doPost(req, resp); + this.handleCallbacks(req.getRequestURI(),"POST"); + } + @Override + protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + super.doPut(req, resp); + this.handleCallbacks(req.getRequestURI(),"PUT"); + } + @Override + protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + super.doDelete(req, resp); + this.handleCallbacks(req.getRequestURI(),"DELETE"); + } +} |