aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/EsServlet.java
diff options
context:
space:
mode:
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.java70
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");
+ }
+}