Remove the demo from logging-library 12/6412/1
authorSumit Kaushik <sk00613223@TechMahindra.com>
Tue, 4 Feb 2020 12:30:24 +0000 (18:00 +0530)
committerSumit Kaushik <sk00613223@TechMahindra.com>
Tue, 4 Feb 2020 12:33:45 +0000 (18:03 +0530)
ISSUE-ID: ACUMOS-3891

Remove demo from logging-library

Change-Id: I5850f7ff69b4851eabb5be5b48ebbf43479d3c96
Signed-off-by: Sumit Kaushik <sk00613223@TechMahindra.com>
logging-library/.gitignore [new file with mode: 0644]
logging-library/README.md [new file with mode: 0644]
logging-library/pom.xml [new file with mode: 0644]
logging-library/src/main/java/org/acumos/logging/library/util/ACUMOSLogConstants.java [new file with mode: 0644]
logging-library/src/main/java/org/acumos/logging/library/util/LogConfig.java [new file with mode: 0644]
logging-library/src/main/java/org/acumos/logging/library/util/LoggingConstant.java [new file with mode: 0644]

diff --git a/logging-library/.gitignore b/logging-library/.gitignore
new file mode 100644 (file)
index 0000000..d4abf68
--- /dev/null
@@ -0,0 +1,5 @@
+/.classpath
+/.project
+/.settings/
+/logs/
+/target/
diff --git a/logging-library/README.md b/logging-library/README.md
new file mode 100644 (file)
index 0000000..382792e
--- /dev/null
@@ -0,0 +1,17 @@
+# Acumos Logging Standards
+
+This repository holds the POC of logging standards for Acumos Boreas Release.
+Adopt the MDC Key-Value pair approach and get rid of position specific pipe delimiters.
+
+
+## License
+
+Copyright (C) 2019 AT&T Intellectual Property & Tech Mahindra. All rights reserved.
+Acumos is distributed by AT&T and Tech Mahindra under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License. You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
+express or implied.  See the License for the specific language governing permissions and limitations 
+under the License.
\ No newline at end of file
diff --git a/logging-library/pom.xml b/logging-library/pom.xml
new file mode 100644 (file)
index 0000000..4737c79
--- /dev/null
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ===============LICENSE_START=======================================================
+  Acumos
+  ===================================================================================
+  Copyright (C) 2019 AT&T Intellectual Property & Tech Mahindra. All rights reserved.
+  ===================================================================================
+  This Acumos software file is distributed by AT&T and Tech Mahindra
+  under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+   
+          http://www.apache.org/licenses/LICENSE-2.0
+   
+  This file is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ===============LICENSE_END=========================================================
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+
+       <groupId>org.acumos.platform-oam</groupId>
+       <artifactId>logging-library</artifactId>
+       <version>3.0.6-SNAPSHOT</version>
+       <packaging>jar</packaging>
+       <name>logging-library</name>
+       <description>logging-library project for Logging</description>
+
+       <parent>
+               <groupId>org.springframework.boot</groupId>
+               <artifactId>spring-boot-starter-parent</artifactId>
+               <version>2.1.0.RELEASE</version>
+               <relativePath /> <!-- lookup parent from repository -->
+       </parent>
+
+       <properties>
+               <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+               <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+               <java.version>1.8</java.version>
+               <springfox.version>2.6.1</springfox.version>
+       </properties>
+
+       <dependencies>
+               <dependency>
+                       <groupId>org.apache.commons</groupId>
+                       <artifactId>commons-lang3</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.slf4j</groupId>
+                       <artifactId>slf4j-api</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>ch.qos.logback</groupId>
+                       <artifactId>logback-classic</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>ch.qos.logback</groupId>
+                       <artifactId>logback-core</artifactId>
+               </dependency>
+       </dependencies>
+</project>
+       
\ No newline at end of file
diff --git a/logging-library/src/main/java/org/acumos/logging/library/util/ACUMOSLogConstants.java b/logging-library/src/main/java/org/acumos/logging/library/util/ACUMOSLogConstants.java
new file mode 100644 (file)
index 0000000..af6ad73
--- /dev/null
@@ -0,0 +1,395 @@
+/*
+  ===============LICENSE_START=======================================================
+  Acumos
+  ===================================================================================
+  Copyright (C) 2019 AT&T Intellectual Property & Tech Mahindra. All rights reserved.
+  ===================================================================================
+  This Acumos software file is distributed by AT&T and Tech Mahindra
+  under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+   
+          http://www.apache.org/licenses/LICENSE-2.0
+   
+  This file is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ===============LICENSE_END=========================================================
+  */
+package org.acumos.logging.library.util;
+
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
+
+import java.util.Properties;
+
+import org.slf4j.MDC;
+
+/**
+ * Constants for standard ACUMOS headers, MDCs, etc.
+ *
+ */
+public class ACUMOSLogConstants {
+
+       /**
+        * Hide and forbid construction.
+        */
+
+       private ACUMOSLogConstants() {
+
+               throw new UnsupportedOperationException();
+       }
+
+       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+       //
+       // Inner classes.
+       //
+       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+       /**
+        * Marker constants.
+        */
+       public static class Markers {
+
+               /** Marker reporting invocation. */
+               public static Marker INVOKE = MarkerFactory.getMarker(LoggingConstant.INVOKE);
+
+               /** Marker reporting invocation. */
+               public static Marker INVOKE_RETURN = MarkerFactory.getMarker(LoggingConstant.INVOKE_RETURN);
+
+               /** Marker reporting synchronous invocation. */
+               public static Marker INVOKE_SYNCHRONOUS = build(LoggingConstant.INVOKE, LoggingConstant.SYNCHRONOUS);
+
+               /** Marker reporting asynchronous invocation. */
+               public static Marker INVOKE_ASYNCHRONOUS = build(LoggingConstant.INVOKE, LoggingConstant.ASYNCHRONOUS);
+
+               /** Marker reporting entry into a component. */
+               public static Marker ENTRY = MarkerFactory.getMarker(LoggingConstant.ENTRY);
+
+               /** Marker reporting exit from a component. */
+               public static Marker EXIT = MarkerFactory.getMarker(LoggingConstant.EXIT);
+
+               public static Marker getINVOKE() {
+                       return INVOKE;
+               }
+
+               public static void setINVOKE(Marker iNVOKE) {
+                       INVOKE = iNVOKE;
+               }
+
+               public static Marker getINVOKE_RETURN() {
+                       return INVOKE_RETURN;
+               }
+
+               public static void setINVOKE_RETURN(Marker iNVOKE_RETURN) {
+                       INVOKE_RETURN = iNVOKE_RETURN;
+               }
+
+               public static Marker getINVOKE_SYNCHRONOUS() {
+                       return INVOKE_SYNCHRONOUS;
+               }
+
+               public static void setINVOKE_SYNCHRONOUS(Marker iNVOKE_SYNCHRONOUS) {
+                       INVOKE_SYNCHRONOUS = iNVOKE_SYNCHRONOUS;
+               }
+
+               public static Marker getINVOKE_ASYNCHRONOUS() {
+                       return INVOKE_ASYNCHRONOUS;
+               }
+
+               public static void setINVOKE_ASYNCHRONOUS(Marker iNVOKE_ASYNCHRONOUS) {
+                       INVOKE_ASYNCHRONOUS = iNVOKE_ASYNCHRONOUS;
+               }
+
+               public static Marker getENTRY() {
+                       return ENTRY;
+               }
+
+               public static void setENTRY(Marker eNTRY) {
+                       ENTRY = eNTRY;
+               }
+
+               public static Marker getEXIT() {
+                       return EXIT;
+               }
+
+               public static void setEXIT(Marker eXIT) {
+                       EXIT = eXIT;
+               }
+
+               /**
+                * Build nested, detached marker.
+                * 
+                * @param m1
+                *            top token.
+                * @param m2
+                *            sub-token.
+                * @return detached Marker.
+                */
+               private static Marker build(String m1, String m2) {
+                       Marker marker = MarkerFactory.getDetachedMarker(m1);
+                       marker.add(MarkerFactory.getDetachedMarker(m2));
+                       return marker;
+               }
+
+               /**
+                * Hide and forbid construction.
+                */
+               private Markers() {
+                       throw new UnsupportedOperationException();
+               }
+       }
+
+       /**
+        * MDC name constants.
+        */
+       public static class MDCs {
+
+               public enum ResponseStatusMDC {
+
+                       MDC_COMPLETED, MDC_ERROR, MDC_INPROGRESS;
+
+                       /** Enum value. */
+
+               }
+
+               public enum ResponseSeverityMDC {
+
+                       
+                       /** Enum value. */
+
+                       MDC_INFO, MDC_ERROR, MDC_TRACE, MDC_DEBUG, MDC_WARN, MDC_FATAL;
+
+                       /** Enum value. */
+
+               }
+
+               // Tracing. ////////////////////////////////////////////////////////////
+
+               /** MDC correlating messages for a logical transaction. */
+               public static String REQUEST_ID = LoggingConstant.REQUEST_ID;
+
+               /** MDC recording target service. */
+               public static String TARGET_SERVICE_NAME = LoggingConstant.TARGET_SERVICE_NAME;
+
+               /** MDC recording target entity. */
+               public static String TARGET_ENTITY = LoggingConstant.TARGET_ENTITY;
+
+               // Network. ////////////////////////////////////////////////////////////
+
+               /** MDC recording caller address. */
+               public static String CLIENT_IP_ADDRESS = LoggingConstant.CLIENT_IP_ADDRESS;
+
+               /** MDC recording server address. */
+               public static String SERVER_FQDN = LoggingConstant.SERVER_FQDN;
+
+               /** MDC reporting outcome code. */
+               public static String RESPONSE_CODE = LoggingConstant.RESPONSE_CODE;
+
+               /** MDC reporting outcome description. */
+               public static String RESPONSE_DESCRIPTION = LoggingConstant.RESPONSE_DESCRIPTION;
+
+               /** MDC reporting outcome error level. */
+               public static String RESPONSE_SEVERITY = LoggingConstant.RESPONSE_SEVERITY;
+
+               /** MDC reporting outcome status of the request. */
+               public static String STATUS_CODE = LoggingConstant.STATUS_CODE;
+
+               public static String USER = LoggingConstant.USER;
+
+               public static String getUSER() {
+                       return USER;
+               }
+
+               public static void setUSER(String uSER) {
+                       USER = uSER;
+               }
+
+               public static String getREQUEST_ID() {
+                       return REQUEST_ID;
+               }
+
+               public static void setREQUEST_ID(String rEQUEST_ID) {
+                       REQUEST_ID = rEQUEST_ID;
+               }
+
+               public static String getTARGET_SERVICE_NAME() {
+                       return TARGET_SERVICE_NAME;
+               }
+
+               public static void setTARGET_SERVICE_NAME(String tARGET_SERVICE_NAME) {
+                       TARGET_SERVICE_NAME = tARGET_SERVICE_NAME;
+               }
+
+               public static String getTARGET_ENTITY() {
+                       return TARGET_ENTITY;
+               }
+
+               public static void setTARGET_ENTITY(String tARGET_ENTITY) {
+                       TARGET_ENTITY = tARGET_ENTITY;
+               }
+
+               public static String getCLIENT_IP_ADDRESS() {
+                       return CLIENT_IP_ADDRESS;
+               }
+
+               public static void setCLIENT_IP_ADDRESS(String cLIENT_IP_ADDRESS) {
+                       CLIENT_IP_ADDRESS = cLIENT_IP_ADDRESS;
+               }
+
+               public static String getSERVER_FQDN() {
+                       return SERVER_FQDN;
+               }
+
+               public static void setSERVER_FQDN(String sERVER_FQDN) {
+                       SERVER_FQDN = sERVER_FQDN;
+               }
+
+               public static String getRESPONSE_CODE() {
+                       return RESPONSE_CODE;
+               }
+
+               public static void setRESPONSE_CODE(String rESPONSE_CODE) {
+                       RESPONSE_CODE = rESPONSE_CODE;
+               }
+
+               public static String getRESPONSE_DESCRIPTION() {
+                       return RESPONSE_DESCRIPTION;
+               }
+
+               public static void setRESPONSE_DESCRIPTION(String rESPONSE_DESCRIPTION) {
+                       RESPONSE_DESCRIPTION = rESPONSE_DESCRIPTION;
+               }
+
+               public static String getRESPONSE_SEVERITY() {
+                       return RESPONSE_SEVERITY;
+               }
+
+               public static void setRESPONSE_SEVERITY(String rESPONSE_SEVERITY) {
+                       RESPONSE_SEVERITY = rESPONSE_SEVERITY;
+               }
+
+               public static String getSTATUS_CODE() {
+                       return STATUS_CODE;
+               }
+
+               public static void setSTATUS_CODE(String sTATUS_CODE) {
+                       STATUS_CODE = sTATUS_CODE;
+               }
+
+               // Unsorted. ///////////////////////////////////////////////////////////
+
+               /**
+                * Hide and forbid construction.
+                */
+               private MDCs() {
+                       throw new UnsupportedOperationException();
+               }
+       }
+
+       /**
+        * Header name constants.
+        */
+       public static class Headers {
+
+               /** HTTP X-ACUMOS-RequestID header. */
+               public static String REQUEST_ID = "X-ACUMOS-RequestID";
+
+               /**
+                * Hide and forbid construction.
+                */
+               private Headers() {
+                       throw new UnsupportedOperationException();
+               }
+       }
+
+       /**
+        * Overrideable method to set MDCs based on property values.
+        */
+       public static void setDefaultMDCs() {
+               MDC.put(MDCs.RESPONSE_SEVERITY, ResponseSeverity.INFO.toString());
+               MDC.put(MDCs.STATUS_CODE, ResponseStatus.INPROGRESS.toString());
+       }
+
+       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+       //
+       // Enums.
+       //
+       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+       /**
+        * Response success or not, for setting StatusCode.
+        */
+       public enum ResponseStatus {
+
+               COMPLETED, ERROR, INPROGRESS
+       }
+
+       /**
+        * Response of log level, for setting Severity.
+        */
+       public enum ResponseSeverity {
+
+               INFO, ERROR, TRACE, DEBUG, WARN, FATAL
+       }
+
+       /**
+        * Synchronous or asynchronous execution, for setting invocation marker.
+        */
+       public enum InvocationMode {
+
+               /** Synchronous, blocking. */
+               SYNCHRONOUS(LoggingConstant.SYNCHRONOUS, Markers.INVOKE_SYNCHRONOUS),
+
+               /** Asynchronous, non-blocking. */
+               ASYNCHRONOUS(LoggingConstant.ASYNCHRONOUS, Markers.INVOKE_ASYNCHRONOUS);
+
+               /** Enum value. */
+               private String mString;
+
+               /** Corresponding marker. */
+               private Marker mMarker;
+
+               public String getmString() {
+                       return mString;
+               }
+
+               public void setmString(String mString) {
+                       this.mString = mString;
+               }
+
+               public Marker getmMarker() {
+                       return this.mMarker;
+               }
+
+               public void setmMarker(Marker mMarker) {
+                       this.mMarker = mMarker;
+               }
+
+               /**
+                * Construct enum.
+                *
+                * @param s
+                *            enum value.
+                * @param m
+                *            corresponding Marker.
+                */
+               InvocationMode(String s, Marker m) {
+                       this.mString = s;
+                       this.mMarker = m;
+               }
+
+               /**
+                * Get Marker for enum.
+                *
+                * @return Marker.
+                */
+
+               @Override
+               public String toString() {
+                       return this.mString;
+               }
+       }
+
+}
diff --git a/logging-library/src/main/java/org/acumos/logging/library/util/LogConfig.java b/logging-library/src/main/java/org/acumos/logging/library/util/LogConfig.java
new file mode 100644 (file)
index 0000000..652bffd
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+===============LICENSE_START=======================================================
+Acumos
+===================================================================================
+Copyright (C) 2019 AT&T Intellectual Property & Tech Mahindra. All rights reserved.
+===================================================================================
+This Acumos software file is distributed by AT&T and Tech Mahindra
+under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+This file is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+===============LICENSE_END=========================================================
+*/
+package org.acumos.logging.library.util;
+
+import java.net.InetAddress;
+import java.util.Properties;
+import java.util.UUID;
+
+import org.acumos.logging.library.util.ACUMOSLogConstants.MDCs;
+import org.acumos.logging.library.util.ACUMOSLogConstants.ResponseStatus;
+import org.slf4j.MDC;
+
+public class LogConfig {
+
+       public static void setEnteringMDCs(String targetEntry, String targetService, String user, String responseCode,
+                       String responseSeverity) throws Exception {
+               String hostname = "";
+               String ip = "";
+
+               ACUMOSLogConstants.setDefaultMDCs();
+               String requestId = UUID.randomUUID().toString();
+               String finalHostIP = getHostDetails();
+               if (finalHostIP != null) {
+                       String hostIpArr[] = finalHostIP.split("/");
+                       hostname = hostIpArr[0];
+                       ip = hostIpArr[1];
+               }
+               MDC.put(MDCs.REQUEST_ID, requestId);
+               MDC.put(MDCs.TARGET_ENTITY, targetEntry);
+               MDC.put(MDCs.TARGET_SERVICE_NAME, targetService);
+               MDC.put(MDCs.CLIENT_IP_ADDRESS, ip);
+               MDC.put(MDCs.SERVER_FQDN, hostname);
+
+               if (user != null && !user.isEmpty()) {
+                       MDC.put(MDCs.USER, user);
+               }
+
+               if (responseCode != null && !responseCode.isEmpty()) {
+                       if (responseCode.equalsIgnoreCase(LoggingConstant.MDC_COMPLETED)) {
+                               MDC.put(MDCs.RESPONSE_DESCRIPTION, MDCs.ResponseStatusMDC.MDC_COMPLETED.toString());
+                       } else if (responseCode.equalsIgnoreCase(LoggingConstant.MDC_ERROR)) {
+                               MDC.put(MDCs.RESPONSE_DESCRIPTION, MDCs.ResponseStatusMDC.MDC_ERROR.toString());
+                       } else if (responseCode.equalsIgnoreCase(LoggingConstant.MDC_INPROGRESS)) {
+                               MDC.put(MDCs.RESPONSE_DESCRIPTION, MDCs.ResponseStatusMDC.MDC_INPROGRESS.toString());
+                       }
+               }
+
+               if (responseSeverity != null && !responseSeverity.isEmpty()) {
+                       if (responseSeverity.equalsIgnoreCase(LoggingConstant.MDC_INFO)) {
+                               MDC.put(MDCs.RESPONSE_SEVERITY, MDCs.ResponseSeverityMDC.MDC_INFO.toString());
+                       } else if (responseSeverity.equalsIgnoreCase(LoggingConstant.MDC_ERROR)) {
+                               MDC.put(MDCs.RESPONSE_SEVERITY, MDCs.ResponseSeverityMDC.MDC_ERROR.toString());
+                       } else if (responseSeverity.equalsIgnoreCase(LoggingConstant.MDC_TRACE)) {
+                               MDC.put(MDCs.RESPONSE_SEVERITY, MDCs.ResponseSeverityMDC.MDC_TRACE.toString());
+                       } else if (responseSeverity.equalsIgnoreCase(LoggingConstant.MDC_DEBUG)) {
+                               MDC.put(MDCs.RESPONSE_SEVERITY, MDCs.ResponseSeverityMDC.MDC_DEBUG.toString());
+                       } else if (responseSeverity.equalsIgnoreCase(LoggingConstant.MDC_WARN)) {
+                               MDC.put(MDCs.RESPONSE_SEVERITY, MDCs.ResponseSeverityMDC.MDC_WARN.toString());
+                       } else if (responseSeverity.equalsIgnoreCase(LoggingConstant.MDC_FATAL)) {
+                               MDC.put(MDCs.RESPONSE_SEVERITY, MDCs.ResponseSeverityMDC.MDC_TRACE.toString());
+                       }
+               }
+
+       }
+
+       public static void clearMDCDetails() {
+               MDC.clear();
+       }
+
+       public static String getHostDetails() throws Exception {
+               InetAddress ip;
+               String hostname = null;
+               String ipStr = null;
+               String finalHostIP = null;
+
+               ip = InetAddress.getLocalHost();
+               hostname = ip.getHostName();
+               ipStr = ip.getHostAddress();
+               if (hostname != null && ipStr != null) {
+                       finalHostIP = hostname + "/" + ipStr;
+               }
+               return finalHostIP;
+       }
+}
diff --git a/logging-library/src/main/java/org/acumos/logging/library/util/LoggingConstant.java b/logging-library/src/main/java/org/acumos/logging/library/util/LoggingConstant.java
new file mode 100644 (file)
index 0000000..17cdcc7
--- /dev/null
@@ -0,0 +1,35 @@
+package org.acumos.logging.library.util;
+
+public final class LoggingConstant {
+
+       public static final String APPLICATION_JSON = "application/json";
+
+       public static final String REQUEST_ID = "RequestID";
+       public static final String TARGET_SERVICENAME = "TargetServiceName";
+       public static final String TARGET_ENTITY = "TargetEntity";
+       public static final String CLIENTIP_ADDRESS = "ClientIPAddress";
+       public static final String SERVER_FQDN = "ServerFQDN";
+       public static final String RESPONSE_CODE = "ResponseCode";
+       public static final String RESPONSE_DESCRIPTION = "ResponseDescription";
+       public static final String SEVERITY = "Severity";
+       public static final String STATUS_CODE = "StatusCode";
+       public static final String USER = "User";
+       public static final String MDC_COMPLETED = "MDC_COMPLETED";
+       public static final String MDC_ERROR = "MDC_ERROR";
+       public static final String MDC_INPROGRESS = "MDC_INPROGRESS";
+       public static final String MDC_INFO = "MDC_INFO";
+       public static final String MDC_TRACE = "MDC_TRACE";
+       public static final String MDC_DEBUG = "MDC_DEBUG";
+       public static final String MDC_WARN = "MDC_WARN";
+       public static final String MDC_FATAL = "MDC_FATAL";
+       public static final String TARGET_SERVICE_NAME = "TargetServiceName";
+       public static final String CLIENT_IP_ADDRESS = "ClientIPAddress";
+       public static final String RESPONSE_SEVERITY = "ResponseSeverity";
+       public static final String INVOKE = "INVOKE";
+       public static final String INVOKE_RETURN = "INVOKE_RETURN";
+       public static final String ENTRY = "ENTRY";
+       public static final String EXIT = "EXIT";
+       public static final String SYNCHRONOUS = "SYNCHRONOUS";
+       public static final String ASYNCHRONOUS = "ASYNCHRONOUS";
+
+}