Repository: incubator-juneau Updated Branches: refs/heads/master 03b8a40c8 -> e05e2a996
Add @RestResource.flags() and @RestMethod.flags(). Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/e05e2a99 Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/e05e2a99 Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/e05e2a99 Branch: refs/heads/master Commit: e05e2a996ba58aa36c18ed8b9f8eb7f6d8825d6d Parents: 03b8a40 Author: JamesBognar <[email protected]> Authored: Tue Jun 20 20:51:01 2017 -0400 Committer: JamesBognar <[email protected]> Committed: Tue Jun 20 20:51:01 2017 -0400 ---------------------------------------------------------------------- juneau-core/src/main/javadoc/overview.html | 6 +++++- .../juneau/microservice/resources/LogsResource.java | 2 +- .../org/apache/juneau/rest/jaxrs/BaseProvider.java | 4 ++++ .../org/apache/juneau/rest/jaxrs/JuneauProvider.java | 7 +++++++ .../main/java/org/apache/juneau/rest/CallMethod.java | 15 +++++++++++---- .../main/java/org/apache/juneau/rest/RestConfig.java | 2 ++ .../apache/juneau/rest/annotation/RestMethod.java | 9 ++++++++- .../apache/juneau/rest/annotation/RestResource.java | 7 +++++++ 8 files changed, 45 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e05e2a99/juneau-core/src/main/javadoc/overview.html ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/javadoc/overview.html b/juneau-core/src/main/javadoc/overview.html index 31cf85f..3f17bc7 100644 --- a/juneau-core/src/main/javadoc/overview.html +++ b/juneau-core/src/main/javadoc/overview.html @@ -6175,7 +6175,6 @@ <h3 class='topic' onclick='toggle(this)'>6.3.1 (TBD)</h3> <div class='topic'> <p> - Juneau 6.3.1 is a major update. </p> <h6 class='topic'>org.apache.juneau</h6> @@ -6196,6 +6195,11 @@ <li>{@link org.apache.juneau.rest.RestRequest#attr(String,Object) attr(String,Object)} <li>{@link org.apache.juneau.rest.RestRequest#prop(String,Object) prop(String,Object)} </ul> + <li>Annotations added: + <ul> + <li>{@link org.apache.juneau.rest.annotation.RestResource#flags()} + <li>{@link org.apache.juneau.rest.annotation.RestMethod#flags()} + </ul> </ul> </div> http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e05e2a99/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java ---------------------------------------------------------------------- diff --git a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java index 7791801..b2353b0 100755 --- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java +++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java @@ -43,8 +43,8 @@ import org.apache.juneau.utils.*; description="Log files from this service", properties={ @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME), - @Property(name=REST_allowMethodParam, value="true") }, + flags={REST_allowMethodParam}, pojoSwaps={ IteratorSwap.class, // Allows Iterators and Iterables to be serialized. DateSwap.ISO8601DT.class // Serialize Date objects as ISO8601 strings. http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e05e2a99/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java ---------------------------------------------------------------------- diff --git a/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java b/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java index 272c335..6e0e008 100644 --- a/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java +++ b/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java @@ -50,6 +50,8 @@ public class BaseProvider implements MessageBodyReader<Object>, MessageBodyWrite for (Property p : jp.properties()) properties.put(p.name(), p.value()); + for (String p : jp.flags()) + properties.put(p, true); serializers = new SerializerGroupBuilder() .append(jp.serializers()) @@ -84,6 +86,8 @@ public class BaseProvider implements MessageBodyReader<Object>, MessageBodyWrite if (aa instanceof RestMethod) { for (Property p : ((RestMethod)aa).properties()) m.put(p.name(), p.value()); + for (String p : ((RestMethod)aa).flags()) + m.put(p, true); } } return m; http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e05e2a99/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java ---------------------------------------------------------------------- diff --git a/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java b/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java index e2a6571..6390073 100644 --- a/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java +++ b/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java @@ -81,6 +81,13 @@ public @interface JuneauProvider { Property[] properties() default {}; /** + * Shortcut for setting {@link #properties()} of boolean types. + * <p> + * Setting a flag is the equivalent to setting the same property to <js>"true"</js>. + */ + String[] flags() default {}; + + /** * Specifies a list of {@link Serializer} classes to add to the list of serializers available for this provider. * <p> * This annotation can only be used on {@link Serializer} classes that have no-arg constructors. http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e05e2a99/juneau-rest/src/main/java/org/apache/juneau/rest/CallMethod.java ---------------------------------------------------------------------- diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/CallMethod.java b/juneau-rest/src/main/java/org/apache/juneau/rest/CallMethod.java index 9376f0f..f645bc4 100644 --- a/juneau-rest/src/main/java/org/apache/juneau/rest/CallMethod.java +++ b/juneau-rest/src/main/java/org/apache/juneau/rest/CallMethod.java @@ -201,7 +201,7 @@ class CallMethod implements Comparable<CallMethod> { ParserGroupBuilder pgb = null; UrlEncodingParserBuilder uepb = null; - if (m.serializers().length > 0 || m.parsers().length > 0 || m.properties().length > 0 || m.beanFilters().length > 0 || m.pojoSwaps().length > 0 || m.bpIncludes().length() > 0 || m.bpExcludes().length() > 0) { + if (m.serializers().length > 0 || m.parsers().length > 0 || m.properties().length > 0 || m.flags().length > 0 || m.beanFilters().length > 0 || m.pojoSwaps().length > 0 || m.bpIncludes().length() > 0 || m.bpExcludes().length() > 0) { sgb = new SerializerGroupBuilder(); pgb = new ParserGroupBuilder(); uepb = new UrlEncodingParserBuilder(urlEncodingParser.createPropertyStore()); @@ -261,6 +261,8 @@ class CallMethod implements Comparable<CallMethod> { sgb.properties(properties); for (Property p1 : m.properties()) sgb.property(p1.name(), p1.value()); + for (String p1 : m.flags()) + sgb.property(p1, true); if (! m.bpIncludes().isEmpty()) try { sgb.includeProperties((Map)JsonParser.DEFAULT.parse(m.bpIncludes(), Map.class, String.class, String.class)); @@ -285,6 +287,8 @@ class CallMethod implements Comparable<CallMethod> { pgb.properties(properties); for (Property p1 : m.properties()) pgb.property(p1.name(), p1.value()); + for (String p1 : m.flags()) + pgb.property(p1, true); pgb.beanFilters(m.beanFilters()); pgb.pojoSwaps(m.pojoSwaps()); } @@ -292,15 +296,18 @@ class CallMethod implements Comparable<CallMethod> { if (uepb != null) { for (Property p1 : m.properties()) uepb.property(p1.name(), p1.value()); + for (String p1 : m.flags()) + uepb.property(p1, true); uepb.beanFilters(m.beanFilters()); uepb.pojoSwaps(m.pojoSwaps()); } - if (m.properties().length > 0) { + if (m.properties().length > 0 || m.flags().length > 0) { properties = new ObjectMap().setInner(properties); - for (Property p1 : m.properties()) { + for (Property p1 : m.properties()) properties.put(p1.name(), p1.value()); - } + for (String p1 : m.flags()) + properties.put(p1, true); } if (m.encoders().length > 0 || ! m.inheritEncoders()) { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e05e2a99/juneau-rest/src/main/java/org/apache/juneau/rest/RestConfig.java ---------------------------------------------------------------------- diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestConfig.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestConfig.java index 3845e2c..1423819 100644 --- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestConfig.java +++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestConfig.java @@ -179,6 +179,8 @@ public class RestConfig implements ServletConfig { RestResource r = e.getValue(); for (Property p : r.properties()) properties.append(vr.resolve(p.name()), vr.resolve(p.value())); + for (String p : r.flags()) + properties.append(p, true); addSerializers(r.serializers()); addParsers(r.parsers()); addEncoders(r.encoders()); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e05e2a99/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java ---------------------------------------------------------------------- diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java index 3a9d1bf..4ebab09 100644 --- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java +++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java @@ -260,6 +260,13 @@ public @interface RestMethod { Property[] properties() default {}; /** + * Shortcut for setting {@link #properties()} of simple boolean types. + * <p> + * Setting a flag is equivalent to setting the same property to <js>"true"</js>. + */ + String[] flags() default {}; + + /** * Appends the specified bean filters to all serializers and parsers used by this method. */ Class<?>[] beanFilters() default {}; @@ -280,7 +287,7 @@ public @interface RestMethod { * <p class='bcode'> * <jc>// Our bean</jc> * <jk>public class</jk> MyBean { - * + * * <jc>// Summary properties</jc> * <ja>@Html</ja>(link=<js>"servlet:/mybeans/{id}"</js>) * <jk>public</jk> String <jf>id</jf>; http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e05e2a99/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestResource.java ---------------------------------------------------------------------- diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestResource.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestResource.java index 321b11d..ac82330 100644 --- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestResource.java +++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestResource.java @@ -193,6 +193,13 @@ public @interface RestResource { Property[] properties() default {}; /** + * Shortcut for setting {@link #properties()} of simple boolean types. + * <p> + * Setting a flag is equivalent to setting the same property to <js>"true"</js>. + */ + String[] flags() default {}; + + /** * Specifies a list of {@link Serializer} classes to add to the list of serializers available for this servlet. * <p> * This annotation can only be used on {@link Serializer} classes that have no-arg constructors.
