feature: add request content adapter
diff --git a/src/dubbo_adapter.erl b/src/dubbo_adapter.erl
new file mode 100644
index 0000000..5cccb8b
--- /dev/null
+++ b/src/dubbo_adapter.erl
@@ -0,0 +1,30 @@
+%%%-------------------------------------------------------------------
+%%% @author dlive
+%%% @copyright (C) 2019, <COMPANY>
+%%% @doc
+%%%
+%%% @end
+%%% Created : 07. May 2019 00:27
+%%%-------------------------------------------------------------------
+-module(dubbo_adapter).
+-author("dlive").
+
+-include("dubbo.hrl").
+%% API
+-export([reference/1]).
+
+-spec reference(Data::#dubbo_rpc_invocation{}) -> #dubbo_request{}.
+reference(Data)->
+  #dubbo_request{
+    is_event = false,
+    is_twoway = true,
+    mid = dubbo_id_generator:gen_id(),
+    data = Data,
+    mversion= <<"0.0.0">>,
+    serialize_type = serialize_value(application:get_env(dubboerl,protocol,hessian))
+  }.
+
+serialize_value(json)->
+  ?SERIALIZATION_FASTJSON;
+serialize_value(_)->
+  ?SERIALIZATION_HESSIAN.
diff --git a/test/dubbo_adapter_tests.erl b/test/dubbo_adapter_tests.erl
new file mode 100644
index 0000000..8706e8b
--- /dev/null
+++ b/test/dubbo_adapter_tests.erl
@@ -0,0 +1,35 @@
+%%%-------------------------------------------------------------------
+%%% @author dlive
+%%% @copyright (C) 2019, <COMPANY>
+%%% @doc
+%%%
+%%% @end
+%%% Created : 07. May 2019 00:34
+%%%-------------------------------------------------------------------
+-module(dubbo_adapter_tests).
+-author("dlive").
+-include("dubbo.hrl").
+-include_lib("eunit/include/eunit.hrl").
+
+reference_test() ->
+  dubbo_id_generator:start_link(),
+  Invocation = #dubbo_rpc_invocation{
+    className = <<"testname">>,
+    classVersion = <<"testversion">>,
+    methodName = <<"getUserInfo">>,
+    parameterDesc = <<"Ljava/lang/String;"/utf8>>,
+    parameterTypes = [
+      #type_def{foreign_type = <<"java.lang.String">>,
+        native_type = string,
+        fieldnames = []}
+    ],
+    parameters = [
+      <<"test">>
+    ],
+    attachments = [
+      {<<"path">>, <<"testname">>},
+      {<<"interface">> , <<"testname">>}
+    ]
+  },
+  Request = dubbo_adapter:reference(Invocation),
+  ?assert(is_record(Request,dubbo_request)).