diff --git a/src/zutil/net/ws/WSInterface.java b/src/zutil/net/ws/WSInterface.java index 582f124..1f05555 100755 --- a/src/zutil/net/ws/WSInterface.java +++ b/src/zutil/net/ws/WSInterface.java @@ -1,142 +1,155 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2015 Ziver Koc - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package zutil.net.ws; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -/** - * - * Specifies web service definitions. Which methods that will - * be published and other related metadata. - * Only public and non static methods will be published or - * the WSIgnore annotation can be used to ignore the specific method. - * - * Example: - *
- *	private static class Test implements WSInterface{
- *		public Test(){}
- *
- *		@WSDocumentation("This is a description of the method")
- *		@WSDLParamDocumentation("arg1 = variable description?")
- *		public void pubZ(
- *				@WSParamName("arg1") int randomName)
- *				throws Exception{
- *			....
- *		}
- *
- *		@WSReturnName("param")
- *		public String pubA(
- *				@WSParamName(value="optArg", optional=true) String optionalParam)
- *				throws Exception{
- *			....
- *		}
- *
- *		@WSIgnore()
- *		public void privatZ(....){
- *			...
- *		}
- *	}
- *
- * 
- * @author Ziver - */ -public interface WSInterface { - /** - * Annotation that assigns a name to an parameters - * in an method. - * - * @author Ziver - */ - @Retention(RetentionPolicy.RUNTIME) - @Target(ElementType.PARAMETER) - @interface WSParamName { - String value(); - boolean optional() default false; - } - - /** - * Annotation that assigns a name to the return value - * in an method. - * - * @author Ziver - */ - @Retention(RetentionPolicy.RUNTIME) - @Target(ElementType.METHOD) - @interface WSReturnName { - String value(); - } - - /** - * Skipp publication of the given method - * - * @author Ziver - */ - @Retention(RetentionPolicy.RUNTIME) - @Target(ElementType.METHOD) - @interface WSIgnore { } - - /** - * Method or Parameter comments for the WSDL. - * These comments are put in the message part of the WSDL - * - * @author Ziver - */ - @Retention(RetentionPolicy.RUNTIME) - @interface WSDocumentation{ - String value(); - } - - /** - * Parameter comments for the WSDL. - * These comments are put in the message part of the WSDL - * - * @author Ziver - */ - @Retention(RetentionPolicy.RUNTIME) - @interface WSParamDocumentation{ - String value(); - } - - /** - * This method will be used in the header. - * - * @author Ziver - */ - @Retention(RetentionPolicy.RUNTIME) - @Target(ElementType.METHOD) - @interface WSHeader { } - - /** - * Specifies the name space for the method. - * - * @author Ziver - */ - @Retention(RetentionPolicy.RUNTIME) - @interface WSNamespace { - String value(); - } -} +/* + * The MIT License (MIT) + * + * Copyright (c) 2015 Ziver Koc + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package zutil.net.ws; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +/** + * + * Specifies web service definitions. Which methods that will + * be published and other related metadata. + * Only public and non static methods will be published or + * the WSIgnore annotation can be used to ignore the specific method. + * + * Example: + *
+ *	private static class Test implements WSInterface{
+ *		public Test(){}
+ *
+ *		@WSDocumentation("This is a description of the method")
+ *		@WSDLParamDocumentation("arg1 = variable description?")
+ *		public void pubZ(
+ *				@WSParamName("arg1") int randomName)
+ *				throws Exception{
+ *			....
+ *		}
+ *
+ *		@WSReturnName("param")
+ *		public String pubA(
+ *				@WSParamName(value="optArg", optional=true) String optionalParam)
+ *				throws Exception{
+ *			....
+ *		}
+ *
+ *		@WSIgnore()
+ *		public void privatZ(....){
+ *			...
+ *		}
+ *	}
+ *
+ * 
+ * @author Ziver + */ +public interface WSInterface { + + enum RequestType { + HTTP_GET, + HTTP_POST, + HTTP_PUT, + HTTP_DELETE + } + + + /** + * Annotation that assigns a name to an parameters + * in an method. + */ + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.PARAMETER) + @interface WSParamName { + String value(); + boolean optional() default false; + } + + /** + * Annotation that assigns a name to the return value + * in an method. + */ + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.METHOD) + @interface WSReturnName { + String value(); + } + + /** + * Skipp publication of the given method + */ + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.METHOD) + @interface WSIgnore { } + + /** + * Method or Parameter comments for the WSDL. + * These comments are put in the message part of the WSDL + */ + @Retention(RetentionPolicy.RUNTIME) + @interface WSDocumentation{ + String value(); + } + + /** + * Parameter comments for the WSDL. + * These comments are put in the message part of the WSDL + */ + @Retention(RetentionPolicy.RUNTIME) + @interface WSParamDocumentation{ + String value(); + } + + /** + * This method will be used in the header. + */ + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.METHOD) + @interface WSHeader { } + + /** + * Specifies the name space for the method. + */ + @Retention(RetentionPolicy.RUNTIME) + @interface WSNamespace { + String value(); + } + + /** + * Specifies the request type. + */ + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.METHOD) + @interface WSRequestType { + RequestType value(); + } + + /** + * Specifies the specific path for the method overriding the auto generated path. + */ + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.METHOD) + @interface WSPath { + String value(); + } +} diff --git a/src/zutil/net/ws/rest/RESTClientInvocationHandler.java b/src/zutil/net/ws/rest/RESTClientInvocationHandler.java index 35fe9a8..63f3f76 100644 --- a/src/zutil/net/ws/rest/RESTClientInvocationHandler.java +++ b/src/zutil/net/ws/rest/RESTClientInvocationHandler.java @@ -46,6 +46,8 @@ import java.util.logging.Logger; /** * This is an abstract client that will do generic requests to a * REST Web service using JSON response. + * + * TODO: Implement WSPath and WSRequestType */ public class RESTClientInvocationHandler implements InvocationHandler { private static Logger logger = LogUtil.getLogger();