Remove Code from cadi, it is now in authz
[aaf/cadi.git] / client / src / main / java / org / onap / aaf / cadi / client / Rcli.java
diff --git a/client/src/main/java/org/onap/aaf/cadi/client/Rcli.java b/client/src/main/java/org/onap/aaf/cadi/client/Rcli.java
deleted file mode 100644 (file)
index 23158ef..0000000
+++ /dev/null
@@ -1,697 +0,0 @@
-/*******************************************************************************\r
- * ============LICENSE_START====================================================\r
- * * org.onap.aaf\r
- * * ===========================================================================\r
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
- * * ===========================================================================\r
- * * Licensed under the Apache License, Version 2.0 (the "License");\r
- * * you may not use this file except in compliance with the License.\r
- * * You may obtain a copy of the License at\r
- * * \r
- *  *      http://www.apache.org/licenses/LICENSE-2.0\r
- * * \r
- *  * Unless required by applicable law or agreed to in writing, software\r
- * * distributed under the License is distributed on an "AS IS" BASIS,\r
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * * See the License for the specific language governing permissions and\r
- * * limitations under the License.\r
- * * ============LICENSE_END====================================================\r
- * *\r
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
- * *\r
- ******************************************************************************/\r
-package org.onap.aaf.cadi.client;\r
-\r
-import java.io.IOException;\r
-import java.io.OutputStream;\r
-import java.net.URI;\r
-import java.util.Enumeration;\r
-\r
-import javax.servlet.ServletInputStream;\r
-import javax.servlet.http.HttpServletRequest;\r
-import javax.servlet.http.HttpServletResponse;\r
-\r
-import org.onap.aaf.cadi.CadiException;\r
-import org.onap.aaf.cadi.SecuritySetter;\r
-\r
-import org.onap.aaf.inno.env.APIException;\r
-import org.onap.aaf.inno.env.Data.TYPE;\r
-import org.onap.aaf.inno.env.util.Pool;\r
-import org.onap.aaf.inno.env.util.Pool.Pooled;\r
-import org.onap.aaf.rosetta.env.RosettaDF;\r
-\r
-public abstract class Rcli<CT> {\r
-       public static final String BLANK = "";\r
-       public static final String CONTENT_TYPE = "Content-Type";\r
-       public static final String ACCEPT = "Accept";\r
-\r
-       protected static final String POST = "POST";\r
-       protected static final String GET = "GET";\r
-       protected static final String PUT = "PUT";\r
-       protected static final String DELETE = "DELETE";\r
-       protected TYPE type;\r
-       protected String apiVersion;\r
-       protected int readTimeout = 5000;\r
-       protected int connectionTimeout = 3000;\r
-       protected URI uri;\r
-       private String queryParams, fragment;\r
-       public static Pool<byte[]> buffPool = new Pool<byte[]>(new Pool.Creator<byte[]>() {\r
-               @Override\r
-               public byte[] create() throws APIException {\r
-                       return new byte[1024];\r
-               }\r
-\r
-               @Override\r
-               public void destroy(byte[] t) {\r
-               }\r
-\r
-               @Override\r
-               public boolean isValid(byte[] t) {\r
-                       return true;\r
-               }\r
-\r
-               @Override\r
-               public void reuse(byte[] t) {\r
-               }\r
-       });\r
-\r
-\r
-       public Rcli() {\r
-               super();\r
-       }\r
-\r
-       public abstract void setSecuritySetter(SecuritySetter<CT> ss);\r
-       public abstract SecuritySetter<CT> getSecuritySetter();\r
-\r
-\r
-       public Rcli<CT> forUser(SecuritySetter<CT> ss) {\r
-               Rcli<CT> rv = clone(uri==null?this.uri:uri,ss);\r
-               setSecuritySetter(ss);\r
-               rv.type = type;\r
-               rv.apiVersion = apiVersion;\r
-               return rv;\r
-       }\r
-       \r
-       protected abstract Rcli<CT> clone(URI uri, SecuritySetter<CT> ss);\r
-       \r
-       public abstract void invalidate() throws CadiException;\r
-\r
-       public Rcli<CT> readTimeout(int millis) {\r
-               readTimeout = millis;\r
-               return this;\r
-       }\r
-\r
-       public Rcli<CT> connectionTimeout(int millis) {\r
-               connectionTimeout = millis;\r
-               return this;\r
-       }\r
-\r
-       public Rcli<CT> type(TYPE type) {\r
-               this.type=type;\r
-               return this;\r
-       }\r
-\r
-       public Rcli<CT> apiVersion(String apiVersion) {\r
-               this.apiVersion = apiVersion;\r
-               return this;\r
-       }\r
-       \r
-       public boolean isApiVersion(String prospective) {\r
-               return apiVersion.equals(prospective);\r
-       }\r
-\r
-\r
-       public String typeString(Class<?> cls) {\r
-               return "application/"+cls.getSimpleName()+"+"+type.name().toLowerCase()+\r
-                               (apiVersion==null?BLANK:";version="+apiVersion);\r
-       }\r
-\r
-       protected abstract EClient<CT> client() throws CadiException;\r
-\r
-\r
-       public<T> Future<T> create(String pathinfo, String contentType, final RosettaDF<T> df, final T t) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-               EClient<CT> client = client();\r
-               client.setMethod(POST);\r
-               client.addHeader(CONTENT_TYPE,contentType);\r
-               client.setPathInfo(pathinfo);\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPayload(new EClient.Transfer() {\r
-                       @Override\r
-                       public void transfer(OutputStream os) throws IOException, APIException {\r
-                               df.newData().out(type).direct(t,os);\r
-                       }\r
-               });\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.futureCreate(df.getTypeClass());\r
-       }\r
-\r
-       public<T> Future<T> create(String pathinfo, final RosettaDF<T> df, final T t) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-               EClient<CT> client = client();\r
-               client.setMethod(POST);\r
-               client.addHeader(CONTENT_TYPE,typeString(df.getTypeClass()));\r
-               client.setPathInfo(pathinfo);\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPayload(new EClient.Transfer() {\r
-                       @Override\r
-                       public void transfer(OutputStream os) throws IOException, APIException {\r
-                               df.newData().out(type).direct(t,os);\r
-                       }\r
-               });\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.futureCreate(df.getTypeClass());\r
-       }\r
-\r
-       public<T> Future<T> create(String pathinfo, Class<?> cls, final RosettaDF<T> df, final T t) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(POST);\r
-               client.addHeader(CONTENT_TYPE,typeString(cls));\r
-               client.setPathInfo(pathinfo);\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPayload(new EClient.Transfer() {\r
-                       @Override\r
-                       public void transfer(OutputStream os) throws IOException, APIException {\r
-                               df.newData().out(type).direct(t,os);\r
-                       }\r
-               });\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.futureCreate(df.getTypeClass());\r
-       }\r
-\r
-       public<T> Future<T> create(String pathinfo, Class<T> cls) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(POST);\r
-               client.addHeader(CONTENT_TYPE,typeString(cls));\r
-               client.setPathInfo(pathinfo);\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPayload(null);\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.futureCreate(cls);\r
-       }\r
-\r
-       public Future<Void> create(String pathinfo, String contentType) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(POST);\r
-               client.addHeader(CONTENT_TYPE,contentType);\r
-               client.setPathInfo(pathinfo);\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPayload(null);\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.futureCreate(Void.class);\r
-       }\r
-\r
-\r
-       public Future<String> read(String pathinfo, String accept, String ... headers) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(GET);\r
-               client.addHeader(ACCEPT, accept);\r
-               \r
-               for(int i=1;i<headers.length;i=i+2) {\r
-                       client.addHeader(headers[i-1],headers[i]);\r
-               }\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-\r
-               client.setPathInfo(pathinfo);\r
-               \r
-               client.setPayload(null);\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.futureReadString();\r
-       }\r
-\r
-       public<T> Future<T> read(String pathinfo, String accept, RosettaDF<T> df, String ... headers) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(GET);\r
-               client.addHeader(ACCEPT, accept);\r
-               for(int i=1;i<headers.length;i=i+2) {\r
-                       client.addHeader(headers[i-1],headers[i]);\r
-               }\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               \r
-               client.setPayload(null);\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.futureRead(df,type);\r
-       }\r
-\r
-       public<T> Future<T> read(String pathinfo, RosettaDF<T> df,String ... headers) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(GET);\r
-               client.addHeader(ACCEPT, typeString(df.getTypeClass()));\r
-               for(int i=1;i<headers.length;i=i+2) {\r
-                       client.addHeader(headers[i-1],headers[i]);\r
-               }\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               \r
-               client.setPayload(null);\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.futureRead(df,type);\r
-       }\r
-\r
-       public<T> Future<T> read(String pathinfo, Class<?> cls, RosettaDF<T> df) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(GET);\r
-               client.addHeader(ACCEPT, typeString(cls));\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               \r
-               client.setPayload(null);\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.futureRead(df,type);\r
-       }\r
-\r
-       public<T> Future<T> update(String pathinfo, String contentType, final RosettaDF<T> df, final T t) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(PUT);\r
-               client.addHeader(CONTENT_TYPE,contentType);\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               client.setPayload(new EClient.Transfer() {\r
-                       @Override\r
-                       public void transfer(OutputStream os) throws IOException, APIException {\r
-                               df.newData().out(type).direct(t,os);\r
-                       }\r
-               });\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.future(t);\r
-       }\r
-       \r
-       public<T> Future<String> updateRespondString(String pathinfo, final RosettaDF<T> df, final T t) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(PUT);\r
-               client.addHeader(CONTENT_TYPE, typeString(df.getTypeClass()));\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               client.setPayload(new EClient.Transfer() {\r
-                       @Override\r
-                       public void transfer(OutputStream os) throws IOException, APIException {\r
-                               df.newData().out(type).direct(t,os);\r
-                       }\r
-               });\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.futureReadString();\r
-       }\r
-\r
-\r
-       public<T> Future<T> update(String pathinfo, final RosettaDF<T> df, final T t) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(PUT);\r
-               client.addHeader(CONTENT_TYPE, typeString(df.getTypeClass()));\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               client.setPayload(new EClient.Transfer() {\r
-                       @Override\r
-                       public void transfer(OutputStream os) throws IOException, APIException {\r
-                               df.newData().out(type).direct(t,os);\r
-                       }\r
-               });\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.future(t);\r
-       }\r
-       \r
-       public<T> Future<T> update(String pathinfo, Class<?> cls, final RosettaDF<T> df, final T t) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(PUT);\r
-               client.addHeader(CONTENT_TYPE, typeString(cls));\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               client.setPayload(new EClient.Transfer() {\r
-                       @Override\r
-                       public void transfer(OutputStream os) throws IOException, APIException {\r
-                               df.newData().out(type).direct(t,os);\r
-                       }\r
-               });\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.future(t);\r
-       }\r
-\r
-       /**\r
-        * A method to update with a VOID\r
-        * @param pathinfo\r
-        * @param resp\r
-        * @param expected\r
-        * @return\r
-        * @throws APIException\r
-        * @throws CadiException\r
-        */\r
-       public<T> Future<Void> update(String pathinfo) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(PUT);\r
-               client.addHeader(CONTENT_TYPE, typeString(Void.class));\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-//             client.setPayload(new EClient.Transfer() {\r
-//                     @Override\r
-//                     public void transfer(OutputStream os) throws IOException, APIException {\r
-//                     }\r
-//             });\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.future(null);\r
-       }\r
-\r
-       public<T> Future<T> delete(String pathinfo, String contentType, final RosettaDF<T> df, final T t) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(DELETE);\r
-               client.addHeader(CONTENT_TYPE, contentType);\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               client.setPayload(new EClient.Transfer() {\r
-                       @Override\r
-                       public void transfer(OutputStream os) throws IOException, APIException {\r
-                               df.newData().out(type).direct(t,os);\r
-                       }\r
-               });\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.future(t);\r
-       }\r
-\r
-       public<T> Future<T> delete(String pathinfo, Class<?> cls, final RosettaDF<T> df, final T t) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(DELETE);\r
-               client.addHeader(CONTENT_TYPE, typeString(cls));\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               client.setPayload(new EClient.Transfer() {\r
-                       @Override\r
-                       public void transfer(OutputStream os) throws IOException, APIException {\r
-                               df.newData().out(type).direct(t,os);\r
-                       }\r
-               });\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.future(t);\r
-       }\r
-\r
-       public<T> Future<T> delete(String pathinfo, final RosettaDF<T> df, final T t) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(DELETE);\r
-               client.addHeader(CONTENT_TYPE, typeString(df.getTypeClass()));\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               client.setPayload(new EClient.Transfer() {\r
-                       @Override\r
-                       public void transfer(OutputStream os) throws IOException, APIException {\r
-                               df.newData().out(type).direct(t,os);\r
-                       }\r
-               });\r
-\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.future(t);\r
-       }\r
-\r
-\r
-       public<T> Future<T> delete(String pathinfo, Class<T> cls) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(DELETE);\r
-               client.addHeader(CONTENT_TYPE, typeString(cls));\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               client.setPayload(null);\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.future((T)null);\r
-       }\r
-\r
-       public Future<Void> delete(String pathinfo, String contentType) throws APIException, CadiException {\r
-               final int idx = pathinfo.indexOf('?');\r
-               final String qp; \r
-               if(idx>=0) {\r
-                       qp=pathinfo.substring(idx+1);\r
-                       pathinfo=pathinfo.substring(0,idx);\r
-               } else {\r
-                       qp=queryParams;\r
-               }\r
-\r
-               EClient<CT> client = client();\r
-               client.setMethod(DELETE);\r
-               client.addHeader(CONTENT_TYPE, contentType);\r
-               client.setQueryParams(qp);\r
-               client.setFragment(fragment);\r
-               client.setPathInfo(pathinfo);\r
-               client.setPayload(null);\r
-               client.send();\r
-               queryParams = fragment = null;\r
-               return client.future(null);\r
-       }\r
-\r
-       public Future<Void> transfer(final HttpServletRequest req, final HttpServletResponse resp, final String pathParam, final int expected) throws CadiException, APIException {\r
-               EClient<CT> client = client();\r
-               URI uri;\r
-               try {\r
-                       uri = new URI(req.getRequestURI());\r
-               } catch (Exception e) {\r
-                       throw new CadiException("Invalid incoming URI",e);\r
-               }\r
-               String name;\r
-               for(Enumeration<String> en = req.getHeaderNames();en.hasMoreElements();) {\r
-                       name = en.nextElement();\r
-                       client.addHeader(name,req.getHeader(name));\r
-               }\r
-               client.setQueryParams(req.getQueryString());\r
-               client.setFragment(uri.getFragment());\r
-               client.setPathInfo(pathParam);\r
-               String meth = req.getMethod();\r
-               client.setMethod(meth);\r
-               if(!"GET".equals(meth)) {\r
-                       client.setPayload(new EClient.Transfer() {\r
-                               @Override\r
-                               public void transfer(OutputStream os) throws IOException, APIException {\r
-                                       final ServletInputStream is = req.getInputStream();\r
-                                       int read;\r
-                                       // reuse Buffers\r
-                                       Pooled<byte[]> pbuff = buffPool.get();\r
-                                       try { \r
-                                               while((read=is.read(pbuff.content))>=0) {\r
-                                                       os.write(pbuff.content,0,read);\r
-                                               }\r
-                                       } finally {\r
-                                               pbuff.done();\r
-                                       }\r
-                               }\r
-                       });\r
-               }\r
-               client.send();\r
-               return client.future(resp, expected);\r
-       }\r
-\r
-       public String toString() {\r
-               return uri.toString();\r
-       }\r
-\r
-       /**\r
-        * @param queryParams the queryParams to set\r
-        * @return \r
-        */\r
-       public Rcli<CT> setQueryParams(String queryParams) {\r
-               this.queryParams = queryParams;\r
-               return this;\r
-       }\r
-       \r
-\r
-       /**\r
-        * @param fragment the fragment to set\r
-        * @return \r
-        */\r
-       public Rcli<CT> setFragment(String fragment) {\r
-               this.fragment = fragment;\r
-               return this;\r
-       }\r
-\r
-       public URI getURI() {\r
-               return uri;\r
-       }\r
-\r
-}\r