This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit 2e091e44755179c78d6ca946cbf68e77623f3a47
Author: yaohaishi <yaohai...@huawei.com>
AuthorDate: Mon Feb 12 17:26:29 2018 +0800

    SCB-338 make the AccessLogParam generic, add some comments
---
 .../rest/vertx/accesslog/AccessLogParam.java       | 27 +++++++++++++---------
 .../vertx/accesslog/element/AccessLogItem.java     | 10 ++++----
 .../accesslog/element/AccessLogItemFactory.java    |  8 +++++++
 .../element/creator/AccessLogItemCreator.java      |  3 +++
 .../PercentagePrefixConfigurableItemCreator.java   |  4 ++++
 .../creator/SimpleAccessLogItemCreator.java        | 15 ++++++++----
 .../vertx/accesslog/element/impl/CookieItem.java   |  7 +++---
 .../element/impl/FirstLineOfRequestItem.java       |  6 +++--
 .../accesslog/element/impl/HttpMethodItem.java     |  7 +++---
 .../accesslog/element/impl/HttpStatusItem.java     |  7 +++---
 .../accesslog/element/impl/LocalHostItem.java      |  7 +++---
 .../accesslog/element/impl/LocalPortItem.java      |  7 +++---
 .../accesslog/element/impl/QueryStringItem.java    |  7 +++---
 .../accesslog/element/impl/RemoteHostItem.java     |  7 +++---
 .../accesslog/element/impl/RequestHeaderItem.java  |  7 +++---
 .../element/impl/RequestProtocolItem.java          |  7 +++---
 .../accesslog/element/impl/ResponseHeaderItem.java |  7 +++---
 .../accesslog/element/impl/ResponseSizeItem.java   |  7 +++---
 .../vertx/accesslog/element/impl/TraceIdItem.java  |  8 ++++---
 .../vertx/accesslog/element/impl/UrlPathItem.java  |  7 +++---
 .../element/impl/UrlPathWithQueryItem.java         |  7 +++---
 .../vertx/accesslog/impl/AccessLogHandler.java     |  4 ++--
 .../accesslog/parser/AccessLogPatternParser.java   |  3 +++
 .../parser/impl/DefaultAccessLogPatternParser.java | 13 ++++++++---
 .../parser/matcher/AccessLogItemMatcher.java       |  3 ---
 .../PercentagePrefixConfigurableMatcher.java       |  3 +++
 .../parser/matcher/SimpleItemMatcher.java          |  5 +++-
 .../vertx/accesslog/AccessLogGeneratorTest.java    | 23 ++++++++----------
 .../accesslog/element/impl/CookieItemTest.java     | 16 ++++++-------
 .../element/impl/FirstLineOfRequestItemTest.java   |  4 ++--
 .../accesslog/element/impl/HttpMethodItemTest.java |  9 +++++---
 .../accesslog/element/impl/LocalHostItemTest.java  | 20 ++++++++--------
 .../accesslog/element/impl/LocalPortItemTest.java  | 12 +++++-----
 .../element/impl/QueryStringItemTest.java          | 16 ++++++-------
 .../accesslog/element/impl/RemoteHostItemTest.java | 20 ++++++++--------
 .../element/impl/RequestHeaderItemTest.java        |  9 +++++---
 .../element/impl/RequestProtocolItemTest.java      | 12 +++++-----
 .../element/impl/ResponseHeaderItemTest.java       | 16 ++++++-------
 .../element/impl/ResponseSizeItemTest.java         | 12 +++++-----
 .../accesslog/element/impl/StatusItemTest.java     | 10 ++++----
 .../accesslog/element/impl/TraceIdItemTest.java    | 16 ++++++-------
 .../accesslog/element/impl/UrlPathItemTest.java    | 12 +++++-----
 .../element/impl/UrlPathWithQueryItemTest.java     | 16 ++++++-------
 43 files changed, 240 insertions(+), 186 deletions(-)

diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/AccessLogParam.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/AccessLogParam.java
index 75b3810..fcc2d4d 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/AccessLogParam.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/AccessLogParam.java
@@ -17,21 +17,26 @@
 
 package org.apache.servicecomb.transport.rest.vertx.accesslog;
 
-import io.vertx.ext.web.RoutingContext;
-
-public class AccessLogParam {
-  private RoutingContext routingContext;
+/**
+ * carry the data used in access log.
+ */
+public class AccessLogParam<T> {
+  /**
+   * data object that contains request and response information.
+   * For example, in vertx rest transport it's {@link 
io.vertx.ext.web.RoutingContext}
+   */
+  private T contextData;
 
   private long startMillisecond;
 
   private long endMillisecond;
 
-  public RoutingContext getRoutingContext() {
-    return routingContext;
+  public T getContextData() {
+    return contextData;
   }
 
-  public AccessLogParam setRoutingContext(RoutingContext routingContext) {
-    this.routingContext = routingContext;
+  public AccessLogParam<T> setContextData(T contextData) {
+    this.contextData = contextData;
     return this;
   }
 
@@ -39,7 +44,7 @@ public class AccessLogParam {
     return startMillisecond;
   }
 
-  public AccessLogParam setStartMillisecond(long startMillisecond) {
+  public AccessLogParam<T> setStartMillisecond(long startMillisecond) {
     this.startMillisecond = startMillisecond;
     return this;
   }
@@ -48,7 +53,7 @@ public class AccessLogParam {
     return endMillisecond;
   }
 
-  public AccessLogParam setEndMillisecond(long endMillisecond) {
+  public AccessLogParam<T> setEndMillisecond(long endMillisecond) {
     this.endMillisecond = endMillisecond;
     return this;
   }
@@ -56,7 +61,7 @@ public class AccessLogParam {
   @Override
   public String toString() {
     final StringBuilder sb = new StringBuilder("AccessLogParam{");
-    sb.append("routingContext=").append(routingContext);
+    sb.append("contextData=").append(contextData);
     sb.append(", startMillisecond=").append(startMillisecond);
     sb.append(", endMillisecond=").append(endMillisecond);
     sb.append('}');
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/AccessLogItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/AccessLogItem.java
index 2def319..5507a67 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/AccessLogItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/AccessLogItem.java
@@ -20,14 +20,12 @@ package 
org.apache.servicecomb.transport.rest.vertx.accesslog.element;
 import org.apache.servicecomb.transport.rest.vertx.accesslog.AccessLogParam;
 
 /**
- * element should be printed into access log.
+ * Access log item represents the items supported in access log printing.
+ * It generate the segment of access log according to {@link AccessLogParam}
  */
-public interface AccessLogItem {
+public interface AccessLogItem<T> {
   /**
    * find out specified content from {@link AccessLogParam}, format the 
content and return it.
-   *
-   * @param accessLogParam
-   * @return
    */
-  String getFormattedItem(AccessLogParam accessLogParam);
+  String getFormattedItem(AccessLogParam<T> accessLogParam);
 }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/AccessLogItemFactory.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/AccessLogItemFactory.java
index 4a9f16a..9e1387d 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/AccessLogItemFactory.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/AccessLogItemFactory.java
@@ -26,6 +26,11 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.creator.Per
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.creator.SimpleAccessLogItemCreator;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.parser.AccessLogItemLocation;
 
+/**
+ * The factory of {@link AccessLogItem}.
+ * Using the {@link AccessLogItemCreator} to generate AccessLogItem, according 
to {@link AccessLogItemLocation}
+ * and rawPattern.
+ */
 public class AccessLogItemFactory {
   private List<AccessLogItemCreator> creatorList = Arrays
       .asList(new SimpleAccessLogItemCreator(), new 
PercentagePrefixConfigurableItemCreator());
@@ -39,6 +44,9 @@ public class AccessLogItemFactory {
     return itemList;
   }
 
+  /**
+   * generate single AccessLogItem
+   */
   private void setItemList(String rawPattern, List<AccessLogItem> itemList, 
AccessLogItemLocation location) {
     AccessLogItem item = null;
     for (AccessLogItemCreator creator : creatorList) {
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/AccessLogItemCreator.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/AccessLogItemCreator.java
index 3e3d5ad..6a3f529 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/AccessLogItemCreator.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/AccessLogItemCreator.java
@@ -20,6 +20,9 @@ package 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.creator;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.parser.AccessLogItemLocation;
 
+/**
+ * The actual creator of AccessLogItem.
+ */
 public interface AccessLogItemCreator {
   AccessLogItem create(String rawPattern, AccessLogItemLocation location);
 }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/PercentagePrefixConfigurableItemCreator.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/PercentagePrefixConfigurableItemCreator.java
index e292c63..bc021bd 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/PercentagePrefixConfigurableItemCreator.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/PercentagePrefixConfigurableItemCreator.java
@@ -26,6 +26,10 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.Respon
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.parser.AccessLogItemLocation;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.placeholder.AccessLogItemTypeEnum;
 
+/**
+ * Some access log item contains changeable part, so we should get it's 
configuration from rawPattern, and generate it
+ * each time it is needed.
+ */
 public class PercentagePrefixConfigurableItemCreator implements 
AccessLogItemCreator {
   @Override
   public AccessLogItem create(String rawPattern, AccessLogItemLocation 
location) {
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/SimpleAccessLogItemCreator.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/SimpleAccessLogItemCreator.java
index 3183291..e9acadd 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/SimpleAccessLogItemCreator.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/creator/SimpleAccessLogItemCreator.java
@@ -21,24 +21,29 @@ import java.util.HashMap;
 import java.util.Map;
 
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
-import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.ResponseSizeItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.DatetimeConfigurableItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.DurationMillisecondItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.DurationSecondItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.FirstLineOfRequestItem;
+import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.HttpMethodItem;
+import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.HttpStatusItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.LocalHostItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.LocalPortItem;
-import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.HttpMethodItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.QueryStringItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.RemoteHostItem;
-import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.HttpStatusItem;
+import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.RequestProtocolItem;
+import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.ResponseSizeItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.TraceIdItem;
-import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.UrlPathWithQueryItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.UrlPathItem;
-import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.RequestProtocolItem;
+import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.UrlPathWithQueryItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.parser.AccessLogItemLocation;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.placeholder.AccessLogItemTypeEnum;
 
+/**
+ * For some access log items, their placeholder contains no modifiable part, 
like "%s" or "sc-status".
+ * So we can build a mapping relationship between the placeholder and item 
instances, when an item is needed, get it by
+ * it's placeholder.
+ */
 public class SimpleAccessLogItemCreator implements AccessLogItemCreator {
   private static final Map<AccessLogItemTypeEnum, AccessLogItem> 
SIMPLE_ACCESSLOG_ITEM_MAP = new HashMap<>();
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItem.java
index d6cd280..aa20a02 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItem.java
@@ -23,8 +23,9 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.AccessLogParam;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
 
 import io.vertx.ext.web.Cookie;
+import io.vertx.ext.web.RoutingContext;
 
-public class CookieItem implements AccessLogItem {
+public class CookieItem implements AccessLogItem<RoutingContext> {
 
   public static final String RESULT_NOT_FOUND = "-";
 
@@ -35,8 +36,8 @@ public class CookieItem implements AccessLogItem {
   }
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    Set<Cookie> cookieSet = accessLogParam.getRoutingContext().cookies();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    Set<Cookie> cookieSet = accessLogParam.getContextData().cookies();
     if (null == cookieSet) {
       return RESULT_NOT_FOUND;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestItem.java
index d9a8eae..c3b37bb 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestItem.java
@@ -20,7 +20,9 @@ package 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl;
 import org.apache.servicecomb.transport.rest.vertx.accesslog.AccessLogParam;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
 
-public class FirstLineOfRequestItem implements AccessLogItem {
+import io.vertx.ext.web.RoutingContext;
+
+public class FirstLineOfRequestItem implements AccessLogItem<RoutingContext> {
   private static final HttpMethodItem METHOD_ELEMENT = new HttpMethodItem();
 
   private static final UrlPathItem URI_PATH_ONLY_ELEMENT = new UrlPathItem();
@@ -28,7 +30,7 @@ public class FirstLineOfRequestItem implements AccessLogItem {
   private static final RequestProtocolItem VERSION_OR_PROTOCOL_ELEMENT = new 
RequestProtocolItem();
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
     StringBuilder result = new StringBuilder(64)
         .append("\"")
         .append(METHOD_ELEMENT.getFormattedItem(accessLogParam))
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpMethodItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpMethodItem.java
index cd57c6e..866e5b7 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpMethodItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpMethodItem.java
@@ -22,17 +22,18 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogIt
 
 import io.vertx.core.http.HttpMethod;
 import io.vertx.core.http.HttpServerRequest;
+import io.vertx.ext.web.RoutingContext;
 
 /**
  * HTTP method
  */
-public class HttpMethodItem implements AccessLogItem {
+public class HttpMethodItem implements AccessLogItem<RoutingContext> {
 
   public static final String EMPTY_RESULT = "-";
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerRequest request = accessLogParam.getRoutingContext().request();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerRequest request = accessLogParam.getContextData().request();
     if (null == request) {
       return EMPTY_RESULT;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpStatusItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpStatusItem.java
index a408953..17f589b 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpStatusItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpStatusItem.java
@@ -21,14 +21,15 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.AccessLogParam;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
 
 import io.vertx.core.http.HttpServerResponse;
+import io.vertx.ext.web.RoutingContext;
 
-public class HttpStatusItem implements AccessLogItem {
+public class HttpStatusItem implements AccessLogItem<RoutingContext> {
 
   public static final String EMPTY_RESULT = "-";
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerResponse response = 
accessLogParam.getRoutingContext().response();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerResponse response = accessLogParam.getContextData().response();
     if (null == response) {
       return EMPTY_RESULT;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalHostItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalHostItem.java
index 55e0099..2206328 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalHostItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalHostItem.java
@@ -23,14 +23,15 @@ import org.springframework.util.StringUtils;
 
 import io.vertx.core.http.HttpServerRequest;
 import io.vertx.core.net.SocketAddress;
+import io.vertx.ext.web.RoutingContext;
 
-public class LocalHostItem implements AccessLogItem {
+public class LocalHostItem implements AccessLogItem<RoutingContext> {
 
   public static final String EMPTY_RESULT = "-";
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerRequest request = accessLogParam.getRoutingContext().request();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerRequest request = accessLogParam.getContextData().request();
     if (null == request) {
       return EMPTY_RESULT;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalPortItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalPortItem.java
index be1da62..3209d96 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalPortItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalPortItem.java
@@ -22,14 +22,15 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogIt
 
 import io.vertx.core.http.HttpServerRequest;
 import io.vertx.core.net.SocketAddress;
+import io.vertx.ext.web.RoutingContext;
 
-public class LocalPortItem implements AccessLogItem {
+public class LocalPortItem implements AccessLogItem<RoutingContext> {
 
   public static final String EMPTY_RESULT = "-";
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerRequest request = accessLogParam.getRoutingContext().request();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerRequest request = accessLogParam.getContextData().request();
     if (null == request) {
       return EMPTY_RESULT;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/QueryStringItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/QueryStringItem.java
index de0f003..6439b99 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/QueryStringItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/QueryStringItem.java
@@ -22,14 +22,15 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogIt
 import org.springframework.util.StringUtils;
 
 import io.vertx.core.http.HttpServerRequest;
+import io.vertx.ext.web.RoutingContext;
 
-public class QueryStringItem implements AccessLogItem {
+public class QueryStringItem implements AccessLogItem<RoutingContext> {
 
   public static final String EMPTY_RESULT = "-";
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerRequest request = accessLogParam.getRoutingContext().request();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerRequest request = accessLogParam.getContextData().request();
     if (null == request) {
       return EMPTY_RESULT;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RemoteHostItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RemoteHostItem.java
index c06291a..82ace24 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RemoteHostItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RemoteHostItem.java
@@ -23,14 +23,15 @@ import org.springframework.util.StringUtils;
 
 import io.vertx.core.http.HttpServerRequest;
 import io.vertx.core.net.SocketAddress;
+import io.vertx.ext.web.RoutingContext;
 
-public class RemoteHostItem implements AccessLogItem {
+public class RemoteHostItem implements AccessLogItem<RoutingContext> {
 
   public static final String EMPTY_RESULT = "-";
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerRequest request = accessLogParam.getRoutingContext().request();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerRequest request = accessLogParam.getContextData().request();
     if (null == request) {
       return EMPTY_RESULT;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestHeaderItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestHeaderItem.java
index 12229cf..94a463d 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestHeaderItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestHeaderItem.java
@@ -21,8 +21,9 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.AccessLogParam;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
 
 import io.vertx.core.MultiMap;
+import io.vertx.ext.web.RoutingContext;
 
-public class RequestHeaderItem implements AccessLogItem {
+public class RequestHeaderItem implements AccessLogItem<RoutingContext> {
 
   public static final String RESULT_NOT_FOUND = "-";
 
@@ -33,8 +34,8 @@ public class RequestHeaderItem implements AccessLogItem {
   }
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    MultiMap headers = accessLogParam.getRoutingContext().request().headers();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    MultiMap headers = accessLogParam.getContextData().request().headers();
     if (null == headers) {
       return "-";
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestProtocolItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestProtocolItem.java
index 442d758..b2a9948 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestProtocolItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestProtocolItem.java
@@ -22,14 +22,15 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogIt
 
 import io.vertx.core.http.HttpServerRequest;
 import io.vertx.core.http.HttpVersion;
+import io.vertx.ext.web.RoutingContext;
 
-public class RequestProtocolItem implements AccessLogItem {
+public class RequestProtocolItem implements AccessLogItem<RoutingContext> {
 
   public static final String EMPTY_RESULT = "-";
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerRequest request = accessLogParam.getRoutingContext().request();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerRequest request = accessLogParam.getContextData().request();
     if (null == request) {
       return EMPTY_RESULT;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseHeaderItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseHeaderItem.java
index e891bc1..af8cfbb 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseHeaderItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseHeaderItem.java
@@ -22,8 +22,9 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogIt
 
 import io.vertx.core.MultiMap;
 import io.vertx.core.http.HttpServerResponse;
+import io.vertx.ext.web.RoutingContext;
 
-public class ResponseHeaderItem implements AccessLogItem {
+public class ResponseHeaderItem implements AccessLogItem<RoutingContext> {
 
   public static final String RESULT_NOT_FOUND = "-";
 
@@ -34,8 +35,8 @@ public class ResponseHeaderItem implements AccessLogItem {
   }
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerResponse response = 
accessLogParam.getRoutingContext().response();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerResponse response = accessLogParam.getContextData().response();
     if (null == response) {
       return RESULT_NOT_FOUND;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseSizeItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseSizeItem.java
index 8af7ac2..0d58226 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseSizeItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseSizeItem.java
@@ -21,8 +21,9 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.AccessLogParam;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
 
 import io.vertx.core.http.HttpServerResponse;
+import io.vertx.ext.web.RoutingContext;
 
-public class ResponseSizeItem implements AccessLogItem {
+public class ResponseSizeItem implements AccessLogItem<RoutingContext> {
   // print zeroBytes when bytes is zero
   private final String zeroBytes;
 
@@ -31,8 +32,8 @@ public class ResponseSizeItem implements AccessLogItem {
   }
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerResponse response = 
accessLogParam.getRoutingContext().response();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerResponse response = accessLogParam.getContextData().response();
     if (null == response) {
       return zeroBytes;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/TraceIdItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/TraceIdItem.java
index 51e8108..98c4ead 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/TraceIdItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/TraceIdItem.java
@@ -24,13 +24,15 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.AccessLogParam;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
 import org.springframework.util.StringUtils;
 
-public class TraceIdItem implements AccessLogItem {
+import io.vertx.ext.web.RoutingContext;
+
+public class TraceIdItem implements AccessLogItem<RoutingContext> {
 
   private static final String TRACE_ID_NOT_FOUND = "-";
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    Map<String, Object> data = accessLogParam.getRoutingContext().data();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    Map<String, Object> data = accessLogParam.getContextData().data();
     if (null == data) {
       return TRACE_ID_NOT_FOUND;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathItem.java
index 89bd0b4..309ecc0 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathItem.java
@@ -21,14 +21,15 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.AccessLogParam;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
 
 import io.vertx.core.http.HttpServerRequest;
+import io.vertx.ext.web.RoutingContext;
 
-public class UrlPathItem implements AccessLogItem {
+public class UrlPathItem implements AccessLogItem<RoutingContext> {
 
   public static final String EMPTY_RESULT = "-";
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerRequest request = accessLogParam.getRoutingContext().request();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerRequest request = accessLogParam.getContextData().request();
 
     if (null == request) {
       return EMPTY_RESULT;
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathWithQueryItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathWithQueryItem.java
index 90b815a..2d65985 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathWithQueryItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathWithQueryItem.java
@@ -22,14 +22,15 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogIt
 import org.springframework.util.StringUtils;
 
 import io.vertx.core.http.HttpServerRequest;
+import io.vertx.ext.web.RoutingContext;
 
-public class UrlPathWithQueryItem implements AccessLogItem {
+public class UrlPathWithQueryItem implements AccessLogItem<RoutingContext> {
 
   public static final String EMPTY_RESULT = "-";
 
   @Override
-  public String getFormattedItem(AccessLogParam accessLogParam) {
-    HttpServerRequest request = accessLogParam.getRoutingContext().request();
+  public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
+    HttpServerRequest request = accessLogParam.getContextData().request();
     if (null == request) {
       return EMPTY_RESULT;
     }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandler.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandler.java
index bc77a30..03f89cf 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandler.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandler.java
@@ -37,8 +37,8 @@ public class AccessLogHandler implements 
Handler<RoutingContext> {
 
   @Override
   public void handle(RoutingContext context) {
-    AccessLogParam accessLogParam = new 
AccessLogParam().setStartMillisecond(System.currentTimeMillis())
-        .setRoutingContext(context);
+    AccessLogParam<RoutingContext> accessLogParam = new AccessLogParam<>();
+    
accessLogParam.setStartMillisecond(System.currentTimeMillis()).setContextData(context);
 
     context.addBodyEndHandler(v -> 
LOGGER.info(accessLogGenerator.generateLog(accessLogParam)));
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/AccessLogPatternParser.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/AccessLogPatternParser.java
index b6c363d..4e3f3fc 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/AccessLogPatternParser.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/AccessLogPatternParser.java
@@ -19,6 +19,9 @@ package 
org.apache.servicecomb.transport.rest.vertx.accesslog.parser;
 
 import java.util.List;
 
+/**
+ * Parse the raw pattern, and generate a list of information about each access 
log item.
+ */
 public interface AccessLogPatternParser {
   List<AccessLogItemLocation> parsePattern(String rawPattern);
 }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/impl/DefaultAccessLogPatternParser.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/impl/DefaultAccessLogPatternParser.java
index 77de686..05e5649 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/impl/DefaultAccessLogPatternParser.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/impl/DefaultAccessLogPatternParser.java
@@ -30,9 +30,6 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.placeholder.AccessL
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- * locate all kinds of access log item, and mark their type.
- */
 public class DefaultAccessLogPatternParser implements AccessLogPatternParser {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(DefaultAccessLogPatternParser.class);
 
@@ -40,6 +37,9 @@ public class DefaultAccessLogPatternParser implements 
AccessLogPatternParser {
       new SimpleItemMatcher(), new PercentagePrefixConfigurableMatcher()
   );
 
+  /**
+   * locate all kinds of access log item, and mark their type.
+   */
   @Override
   public List<AccessLogItemLocation> parsePattern(String rawPattern) {
     LOGGER.info("parse access log pattern: [{}]", rawPattern);
@@ -61,6 +61,9 @@ public class DefaultAccessLogPatternParser implements 
AccessLogPatternParser {
     return locationList;
   }
 
+  /**
+   * find out a placeholder that occurs firstly behind the offset index.
+   */
   private AccessLogItemLocation match(String rawPattern, int offset) {
     AccessLogItemLocation result = null;
     for (AccessLogItemMatcher matcher : matcherList) {
@@ -101,6 +104,10 @@ public class DefaultAccessLogPatternParser implements 
AccessLogPatternParser {
     return result;
   }
 
+  /**
+   * If the access log items' location overlaps or is illegal(exceeding the 
boundary of the rawPattern),
+   * a {@link IllegalArgumentException} will be thrown out.
+   */
   private void checkLocationList(String rawPattern, 
List<AccessLogItemLocation> locationList) {
     int preEnd = -1;
     for (AccessLogItemLocation location : locationList) {
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/AccessLogItemMatcher.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/AccessLogItemMatcher.java
index 61df5c1..a100ee9 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/AccessLogItemMatcher.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/AccessLogItemMatcher.java
@@ -23,9 +23,6 @@ public interface AccessLogItemMatcher {
   /**
    * Return an {@link AccessLogItemLocation} which matches part of rawPattern 
and is nearest to the offset(That means
    * the {@link AccessLogItemLocation#start} is no less than offset and is 
smallest among the potential matched Item).
-   * @param rawPattern
-   * @param offset
-   * @return
    */
   AccessLogItemLocation match(String rawPattern, int offset);
 }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/PercentagePrefixConfigurableMatcher.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/PercentagePrefixConfigurableMatcher.java
index b5e41b9..3c2ca5f 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/PercentagePrefixConfigurableMatcher.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/PercentagePrefixConfigurableMatcher.java
@@ -24,6 +24,9 @@ import java.util.Map.Entry;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.parser.AccessLogItemLocation;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.placeholder.AccessLogItemTypeEnum;
 
+/**
+ * for those access log item whose placeholder like "%{configpart}C"
+ */
 public class PercentagePrefixConfigurableMatcher implements 
AccessLogItemMatcher {
 
   public static final String GENERAL_PREFIX = "%{";
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/SimpleItemMatcher.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/SimpleItemMatcher.java
index db67d9c..a3d6e93 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/SimpleItemMatcher.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/parser/matcher/SimpleItemMatcher.java
@@ -24,8 +24,11 @@ import java.util.Map.Entry;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.parser.AccessLogItemLocation;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.placeholder.AccessLogItemTypeEnum;
 
+/**
+ * for those access log items whose placeholder has no changeable part.
+ */
 public class SimpleItemMatcher implements AccessLogItemMatcher {
-  private static final Map<String, AccessLogItemTypeEnum> PLACEHOLDER_ENUM_MAP 
= new LinkedHashMap<String, AccessLogItemTypeEnum>();
+  private static final Map<String, AccessLogItemTypeEnum> PLACEHOLDER_ENUM_MAP 
= new LinkedHashMap<>();
 
   static {
     PLACEHOLDER_ENUM_MAP.put("%m", AccessLogItemTypeEnum.HTTP_METHOD);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/AccessLogGeneratorTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/AccessLogGeneratorTest.java
index b082835..a70d6c1 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/AccessLogGeneratorTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/AccessLogGeneratorTest.java
@@ -21,7 +21,6 @@ import static org.junit.Assert.assertEquals;
 
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
-import java.util.List;
 import java.util.TimeZone;
 
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
@@ -29,7 +28,6 @@ import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.Dateti
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.HttpMethodItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl.PlainTextItem;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.parser.AccessLogItemLocation;
-import 
org.apache.servicecomb.transport.rest.vertx.accesslog.parser.AccessLogPatternParser;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.placeholder.AccessLogItemTypeEnum;
 import org.junit.Assert;
 import org.junit.Test;
@@ -49,16 +47,13 @@ public class AccessLogGeneratorTest {
   private static final AccessLogItem plainTextElement = new PlainTextItem(" - 
");
 
   private static final AccessLogGenerator ACCESS_LOG_GENERATOR = new 
AccessLogGenerator("%m - %t",
-      new AccessLogPatternParser() {
-        @Override
-        public List<AccessLogItemLocation> parsePattern(String rawPattern) {
-          assertEquals("%m - %t", rawPattern);
-          return Arrays.asList(
-              new 
AccessLogItemLocation().setStart(0).setEnd(2).setPlaceHolder(AccessLogItemTypeEnum.HTTP_METHOD),
-              new 
AccessLogItemLocation().setStart(2).setEnd(5).setPlaceHolder(AccessLogItemTypeEnum.TEXT_PLAIN),
-              new AccessLogItemLocation().setStart(5).setEnd(7)
-                  .setPlaceHolder(AccessLogItemTypeEnum.DATETIME_DEFAULT));
-        }
+      rawPattern -> {
+        assertEquals("%m - %t", rawPattern);
+        return Arrays.asList(
+            new 
AccessLogItemLocation().setStart(0).setEnd(2).setPlaceHolder(AccessLogItemTypeEnum.HTTP_METHOD),
+            new 
AccessLogItemLocation().setStart(2).setEnd(5).setPlaceHolder(AccessLogItemTypeEnum.TEXT_PLAIN),
+            new AccessLogItemLocation().setStart(5).setEnd(7)
+                .setPlaceHolder(AccessLogItemTypeEnum.DATETIME_DEFAULT));
       });
 
   @Test
@@ -75,8 +70,8 @@ public class AccessLogGeneratorTest {
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     long startMillisecond = 1416863450581L;
-    AccessLogParam accessLogParam = new 
AccessLogParam().setStartMillisecond(startMillisecond)
-        .setRoutingContext(context);
+    AccessLogParam<RoutingContext> accessLogParam = new AccessLogParam<>();
+    
accessLogParam.setStartMillisecond(startMillisecond).setContextData(context);
     SimpleDateFormat simpleDateFormat = new 
SimpleDateFormat(DatetimeConfigurableItem.DEFAULT_DATETIME_PATTERN,
         DatetimeConfigurableItem.DEFAULT_LOCALE);
     simpleDateFormat.setTimeZone(TimeZone.getDefault());
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItemTest.java
index 62df16a..d8977aa 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItemTest.java
@@ -36,7 +36,7 @@ public class CookieItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
     HashSet<Cookie> cookieSet = new HashSet<>();
     String cookieValue = "cookieValue";
@@ -45,7 +45,7 @@ public class CookieItemTest {
     cookieSet.add(cookie);
     Mockito.when(mockContext.cookieCount()).thenReturn(1);
     Mockito.when(mockContext.cookies()).thenReturn(cookieSet);
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
 
     String result = ELEMENT.getFormattedItem(param);
 
@@ -54,13 +54,13 @@ public class CookieItemTest {
 
   @Test
   public void getFormattedElementOnCookieCountIsZero() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
     HashSet<Cookie> cookieSet = new HashSet<>();
 
     Mockito.when(mockContext.cookieCount()).thenReturn(0);
     Mockito.when(mockContext.cookies()).thenReturn(cookieSet);
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
 
     String result = ELEMENT.getFormattedItem(param);
 
@@ -69,12 +69,12 @@ public class CookieItemTest {
 
   @Test
   public void getFormattedElementOnCookieSetIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
 
     Mockito.when(mockContext.cookieCount()).thenReturn(1);
     Mockito.when(mockContext.cookies()).thenReturn(null);
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
 
     String result = ELEMENT.getFormattedItem(param);
 
@@ -83,7 +83,7 @@ public class CookieItemTest {
 
   @Test
   public void getFormattedElementOnNotFound() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
     HashSet<Cookie> cookieSet = new HashSet<>();
     String cookieValue = "cookieValue";
@@ -92,7 +92,7 @@ public class CookieItemTest {
     cookieSet.add(cookie);
     Mockito.when(mockContext.cookieCount()).thenReturn(1);
     Mockito.when(mockContext.cookies()).thenReturn(cookieSet);
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
 
     String result = ELEMENT.getFormattedItem(param);
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestItemTest.java
index 39ecd7c..db30ecf 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestItemTest.java
@@ -34,12 +34,12 @@ public class FirstLineOfRequestItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     String uri = "/test/uri";
 
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
     Mockito.when(mockContext.request()).thenReturn(request);
     Mockito.when(request.method()).thenReturn(HttpMethod.DELETE);
     Mockito.when(request.path()).thenReturn(uri);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpMethodItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpMethodItemTest.java
index 5ca705d..82bb42f 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpMethodItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/HttpMethodItemTest.java
@@ -34,7 +34,8 @@ public class HttpMethodItemTest {
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     Mockito.when(routingContext.request()).thenReturn(request);
     Mockito.when(request.method()).thenReturn(HttpMethod.DELETE);
-    AccessLogParam param = new 
AccessLogParam().setRoutingContext(routingContext);
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
+    param.setContextData(routingContext);
 
     Assert.assertEquals("DELETE", new 
HttpMethodItem().getFormattedItem(param));
   }
@@ -42,7 +43,8 @@ public class HttpMethodItemTest {
   @Test
   public void getFormattedElementOnRequestIsNull() {
     RoutingContext routingContext = Mockito.mock(RoutingContext.class);
-    AccessLogParam param = new 
AccessLogParam().setRoutingContext(routingContext);
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
+    param.setContextData(routingContext);
 
     Mockito.when(routingContext.request()).thenReturn(null);
 
@@ -53,7 +55,8 @@ public class HttpMethodItemTest {
   public void getFormattedElementOnMethodIsNull() {
     RoutingContext routingContext = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
-    AccessLogParam param = new 
AccessLogParam().setRoutingContext(routingContext);
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
+    param.setContextData(routingContext);
 
     Mockito.when(routingContext.request()).thenReturn(request);
     Mockito.when(request.method()).thenReturn(null);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalHostItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalHostItemTest.java
index b12a3aa..f70c88e 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalHostItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalHostItemTest.java
@@ -33,13 +33,13 @@ public class LocalHostItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     SocketAddress localAddress = Mockito.mock(SocketAddress.class);
     String localHost = "testHost";
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.localAddress()).thenReturn(localAddress);
     Mockito.when(localAddress.host()).thenReturn(localHost);
@@ -51,10 +51,10 @@ public class LocalHostItemTest {
 
   @Test
   public void getFormattedElementOnRequestIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(null);
 
     String result = ELEMENT.getFormattedItem(param);
@@ -64,11 +64,11 @@ public class LocalHostItemTest {
 
   @Test
   public void getFormattedElementOnLocalAddressIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.localAddress()).thenReturn(null);
 
@@ -79,12 +79,12 @@ public class LocalHostItemTest {
 
   @Test
   public void getFormattedElementOnHostIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     SocketAddress localAddress = Mockito.mock(SocketAddress.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.localAddress()).thenReturn(localAddress);
     Mockito.when(localAddress.host()).thenReturn(null);
@@ -96,13 +96,13 @@ public class LocalHostItemTest {
 
   @Test
   public void getFormattedElementIsEmpty() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     SocketAddress localAddress = Mockito.mock(SocketAddress.class);
     String localHost = "";
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.localAddress()).thenReturn(localAddress);
     Mockito.when(localAddress.host()).thenReturn(localHost);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalPortItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalPortItemTest.java
index e4a2971..e1ad26a 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalPortItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/LocalPortItemTest.java
@@ -31,12 +31,12 @@ public class LocalPortItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     SocketAddress localAddress = Mockito.mock(SocketAddress.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.localAddress()).thenReturn(localAddress);
     Mockito.when(localAddress.port()).thenReturn(8080);
@@ -48,10 +48,10 @@ public class LocalPortItemTest {
 
   @Test
   public void getFormattedElementOnRequestIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(null);
 
     String result = new LocalPortItem().getFormattedItem(param);
@@ -61,11 +61,11 @@ public class LocalPortItemTest {
 
   @Test
   public void getFormattedElementOnLocalAddressIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.localAddress()).thenReturn(null);
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/QueryStringItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/QueryStringItemTest.java
index ec5bbbe..a653982 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/QueryStringItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/QueryStringItemTest.java
@@ -30,12 +30,12 @@ public class QueryStringItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     String query = "?status=up";
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.query()).thenReturn(query);
 
@@ -46,10 +46,10 @@ public class QueryStringItemTest {
 
   @Test
   public void getFormattedElementOnRequestIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(null);
 
     String result = new QueryStringItem().getFormattedItem(param);
@@ -59,11 +59,11 @@ public class QueryStringItemTest {
 
   @Test
   public void getFormattedElementOnQueryIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.query()).thenReturn(null);
 
@@ -74,12 +74,12 @@ public class QueryStringItemTest {
 
   @Test
   public void getFormattedElementOnQueryIsEmpty() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     String query = "";
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.query()).thenReturn(query);
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RemoteHostItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RemoteHostItemTest.java
index c542f18..78f8ee3 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RemoteHostItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RemoteHostItemTest.java
@@ -33,13 +33,13 @@ public class RemoteHostItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     SocketAddress address = Mockito.mock(SocketAddress.class);
     String remoteHost = "remoteHost";
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.remoteAddress()).thenReturn(address);
     Mockito.when(address.host()).thenReturn(remoteHost);
@@ -51,10 +51,10 @@ public class RemoteHostItemTest {
 
   @Test
   public void getFormattedElementOnRequestIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(null);
 
     String result = ELEMENT.getFormattedItem(param);
@@ -65,11 +65,11 @@ public class RemoteHostItemTest {
 
   @Test
   public void getFormattedElementOnRemoteAddressIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.remoteAddress()).thenReturn(null);
 
@@ -81,12 +81,12 @@ public class RemoteHostItemTest {
 
   @Test
   public void getFormattedElementOnHostIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     SocketAddress address = Mockito.mock(SocketAddress.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.remoteAddress()).thenReturn(address);
     Mockito.when(address.host()).thenReturn(null);
@@ -99,13 +99,13 @@ public class RemoteHostItemTest {
 
   @Test
   public void getFormattedElementOnHostIsEmpty() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     SocketAddress address = Mockito.mock(SocketAddress.class);
     String remoteHost = "";
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.remoteAddress()).thenReturn(address);
     Mockito.when(address.host()).thenReturn(remoteHost);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestHeaderItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestHeaderItemTest.java
index 34105ff..f8a4196 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestHeaderItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestHeaderItemTest.java
@@ -36,7 +36,8 @@ public class RequestHeaderItemTest {
   @Test
   public void getFormattedElement() {
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
-    AccessLogParam param = new AccessLogParam().setRoutingContext(mockContext);
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
+    param.setContextData(mockContext);
     HttpServerRequest mockRequest = Mockito.mock(HttpServerRequest.class);
     VertxHttpHeaders headers = new VertxHttpHeaders();
     String testValue = "testValue";
@@ -54,7 +55,8 @@ public class RequestHeaderItemTest {
   @Test
   public void getFormattedElementIfHeaderIsNull() {
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
-    AccessLogParam param = new AccessLogParam().setRoutingContext(mockContext);
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
+    param.setContextData(mockContext);
     HttpServerRequest mockRequest = Mockito.mock(HttpServerRequest.class);
 
     Mockito.when(mockContext.request()).thenReturn(mockRequest);
@@ -68,7 +70,8 @@ public class RequestHeaderItemTest {
   @Test
   public void getFormattedElementIfNotFound() {
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
-    AccessLogParam param = new AccessLogParam().setRoutingContext(mockContext);
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
+    param.setContextData(mockContext);
     HttpServerRequest mockRequest = Mockito.mock(HttpServerRequest.class);
     VertxHttpHeaders headers = new VertxHttpHeaders();
     String testValue = "testValue";
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestProtocolItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestProtocolItemTest.java
index cdaf991..f5c90c7 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestProtocolItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/RequestProtocolItemTest.java
@@ -31,11 +31,11 @@ public class RequestProtocolItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.version()).thenReturn(HttpVersion.HTTP_1_1);
 
@@ -53,10 +53,10 @@ public class RequestProtocolItemTest {
 
   @Test
   public void getFormattedElementOnRequestIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(null);
 
     String result = new RequestProtocolItem().getFormattedItem(param);
@@ -67,11 +67,11 @@ public class RequestProtocolItemTest {
 
   @Test
   public void getFormattedElementOnVersionIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.version()).thenReturn(null);
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseHeaderItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseHeaderItemTest.java
index 3f4f6ad..47593d6 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseHeaderItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseHeaderItemTest.java
@@ -35,13 +35,13 @@ public class ResponseHeaderItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
     HttpServerResponse mockResponse = Mockito.mock(HttpServerResponse.class);
     VertxHttpHeaders headers = new VertxHttpHeaders();
     String headerValue = "headerValue";
 
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
     headers.add(VAR_NAME, headerValue);
 
     Mockito.when(mockContext.response()).thenReturn(mockResponse);
@@ -55,11 +55,11 @@ public class ResponseHeaderItemTest {
 
   @Test
   public void getFormattedElementOnHeadersIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
     HttpServerResponse mockResponse = Mockito.mock(HttpServerResponse.class);
 
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
 
     Mockito.when(mockContext.response()).thenReturn(mockResponse);
 
@@ -70,10 +70,10 @@ public class ResponseHeaderItemTest {
 
   @Test
   public void getFormattedElementOnResponseIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
 
     Mockito.when(mockContext.response()).thenReturn(null);
 
@@ -84,13 +84,13 @@ public class ResponseHeaderItemTest {
 
   @Test
   public void getFormattedElementOnNotFound() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
     HttpServerResponse mockResponse = Mockito.mock(HttpServerResponse.class);
     VertxHttpHeaders headers = new VertxHttpHeaders();
     String headerValue = "headerValue";
 
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
     headers.add("anotherHeader", headerValue);
 
     Mockito.when(mockContext.response()).thenReturn(mockResponse);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseSizeItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseSizeItemTest.java
index 1a76314..dd7576f 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseSizeItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/ResponseSizeItemTest.java
@@ -32,12 +32,12 @@ public class ResponseSizeItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
     HttpServerResponse mockResponse = Mockito.mock(HttpServerResponse.class);
     long bytesWritten = 16L;
 
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
     Mockito.when(mockContext.response()).thenReturn(mockResponse);
     Mockito.when(mockResponse.bytesWritten()).thenReturn(bytesWritten);
 
@@ -48,10 +48,10 @@ public class ResponseSizeItemTest {
 
   @Test
   public void getFormattedElementOnResponseIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
     Mockito.when(mockContext.response()).thenReturn(null);
 
     String result = ELEMENT.getFormattedItem(param);
@@ -62,12 +62,12 @@ public class ResponseSizeItemTest {
 
   @Test
   public void getFormattedElementOnBytesWrittenIsZero() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
     HttpServerResponse mockResponse = Mockito.mock(HttpServerResponse.class);
     long bytesWritten = 0L;
 
-    param.setRoutingContext(mockContext);
+    param.setContextData(mockContext);
     Mockito.when(mockContext.response()).thenReturn(mockResponse);
     Mockito.when(mockResponse.bytesWritten()).thenReturn(bytesWritten);
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/StatusItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/StatusItemTest.java
index e14deb2..19197a3 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/StatusItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/StatusItemTest.java
@@ -28,16 +28,16 @@ import io.vertx.ext.web.RoutingContext;
 
 public class StatusItemTest {
 
-  public static final HttpStatusItem STATUS_ELEMENT = new HttpStatusItem();
+  private static final HttpStatusItem STATUS_ELEMENT = new HttpStatusItem();
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerResponse response = Mockito.mock(HttpServerResponse.class);
     int statusCode = 200;
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.response()).thenReturn(response);
     Mockito.when(response.getStatusCode()).thenReturn(statusCode);
 
@@ -49,10 +49,10 @@ public class StatusItemTest {
 
   @Test
   public void getFormattedElementOnResponseIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.response()).thenReturn(null);
 
     String result = STATUS_ELEMENT.getFormattedItem(param);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/TraceIdItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/TraceIdItemTest.java
index 670365f..319fbf1 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/TraceIdItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/TraceIdItemTest.java
@@ -38,7 +38,7 @@ public class TraceIdItemTest {
 
   @Test
   public void testGetFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext routingContext = Mockito.mock(RoutingContext.class);
     Map<String, Object> data = new HashMap<>();
     RestProducerInvocation restProducerInvocation = new 
RestProducerInvocation();
@@ -50,7 +50,7 @@ public class TraceIdItemTest {
     Mockito.when(routingContext.data()).thenReturn(data);
     data.put("servicecomb-rest-producer-invocation", restProducerInvocation);
 
-    param.setRoutingContext(routingContext);
+    param.setContextData(routingContext);
 
     String result = ELEMENT.getFormattedItem(param);
     Assert.assertThat(result, is(traceIdTest));
@@ -58,7 +58,7 @@ public class TraceIdItemTest {
 
   @Test
   public void testGetFormattedElementOnTraceIdNotFound() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext routingContext = Mockito.mock(RoutingContext.class);
     Map<String, Object> data = new HashMap<>();
     RestProducerInvocation restProducerInvocation = new 
RestProducerInvocation();
@@ -69,7 +69,7 @@ public class TraceIdItemTest {
     Mockito.when(routingContext.data()).thenReturn(data);
     data.put("servicecomb-rest-producer-invocation", restProducerInvocation);
 
-    param.setRoutingContext(routingContext);
+    param.setContextData(routingContext);
 
     String result = ELEMENT.getFormattedItem(param);
     Assert.assertThat(result, is("-"));
@@ -81,12 +81,12 @@ public class TraceIdItemTest {
 
   @Test
   public void testGetFormattedElementOnInvocationContextIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext routingContext = Mockito.mock(RoutingContext.class);
     Map<String, Object> data = new HashMap<>();
 
     Mockito.when(routingContext.data()).thenReturn(data);
-    param.setRoutingContext(routingContext);
+    param.setContextData(routingContext);
 
     String result = ELEMENT.getFormattedItem(param);
     Assert.assertThat(result, is("-"));
@@ -94,10 +94,10 @@ public class TraceIdItemTest {
 
   @Test
   public void testGetFormattedElementOnDataIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext routingContext = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(routingContext);
+    param.setContextData(routingContext);
     Mockito.when(routingContext.data()).thenReturn(null);
 
     String result = ELEMENT.getFormattedItem(param);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathItemTest.java
index 41885d0..ee200bc 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathItemTest.java
@@ -29,12 +29,12 @@ public class UrlPathItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     String uri = "/uri/test";
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.path()).thenReturn(uri);
 
@@ -45,10 +45,10 @@ public class UrlPathItemTest {
 
   @Test
   public void getFormattedElementOnRequestIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(null);
 
     String result = new UrlPathItem().getFormattedItem(param);
@@ -58,11 +58,11 @@ public class UrlPathItemTest {
 
   @Test
   public void getFormattedElementOnMethodIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.path()).thenReturn(null);
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathWithQueryItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathWithQueryItemTest.java
index 9b8f5ce..11710e4 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathWithQueryItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/UrlPathWithQueryItemTest.java
@@ -32,12 +32,12 @@ public class UrlPathWithQueryItemTest {
 
   @Test
   public void getFormattedElement() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     String uri = "uriTest";
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.uri()).thenReturn(uri);
 
@@ -49,10 +49,10 @@ public class UrlPathWithQueryItemTest {
 
   @Test
   public void getFormattedElementOnRequestIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(null);
 
     String result = ELEMENT.getFormattedItem(param);
@@ -62,11 +62,11 @@ public class UrlPathWithQueryItemTest {
 
   @Test
   public void getFormattedElementOnUriIsNull() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.uri()).thenReturn(null);
 
@@ -78,12 +78,12 @@ public class UrlPathWithQueryItemTest {
 
   @Test
   public void getFormattedElementOnUriIsEmpty() {
-    AccessLogParam param = new AccessLogParam();
+    AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext context = Mockito.mock(RoutingContext.class);
     HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
     String uri = "";
 
-    param.setRoutingContext(context);
+    param.setContextData(context);
     Mockito.when(context.request()).thenReturn(request);
     Mockito.when(request.uri()).thenReturn(uri);
 

-- 
To stop receiving notification emails like this one, please contact
ningji...@apache.org.

Reply via email to