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

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 2cef008  REST refactoring.
2cef008 is described below

commit 2cef008ee03059d002f13151f4c448fb0819c2be
Author: JamesBognar <james.bog...@salesforce.com>
AuthorDate: Thu Jan 7 18:18:07 2021 -0500

    REST refactoring.
---
 .../juneau/config/store/ConfigFileStore.java       |  4 +-
 .../org/apache/juneau/FuzzyResourceResolver.java   |  2 +-
 .../apache/juneau/internal/ReaderInputStream.java  |  9 +--
 .../org/apache/juneau/internal/StringUtils.java    |  6 +-
 .../microservice/resources/DirectoryResource.java  | 20 +++--
 .../microservice/resources/LogsResource.java       | 30 +++----
 .../org/apache/juneau/rest/jaxrs/BaseProvider.java | 32 +-------
 .../apache/juneau/rest/jaxrs/JuneauProvider.java   | 20 -----
 .../apache/juneau/rest/annotation/Body_Test.java   | 17 ++--
 .../rest/annotation/RestAnnotation_Test.java       | 10 ---
 .../rest/annotation/RestMethodAnnotation_Test.java | 10 ---
 .../juneau/rest/BasicRestResourceResolver.java     |  2 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 75 -----------------
 .../org/apache/juneau/rest/RestContextBuilder.java | 93 +---------------------
 .../apache/juneau/rest/RestContextProperties.java  | 36 ---------
 .../java/org/apache/juneau/rest/RestServlet.java   | 11 ---
 .../apache/juneau/rest/annotation/Property.java    | 49 ------------
 .../org/apache/juneau/rest/annotation/Rest.java    | 38 ---------
 .../juneau/rest/annotation/RestAnnotation.java     | 48 +----------
 .../apache/juneau/rest/annotation/RestMethod.java  | 17 ----
 .../rest/annotation/RestMethodAnnotation.java      | 50 +-----------
 pom.xml                                            | 10 +--
 22 files changed, 47 insertions(+), 542 deletions(-)

diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
index 2fb5bfe..3ff3148 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
@@ -319,8 +319,8 @@ public class ConfigFileStore extends ConfigStore {
                                                        ByteBuffer buf = 
ByteBuffer.allocate(1024);
                                                        StringBuilder sb = new 
StringBuilder();
                                                        while (fc.read(buf) != 
-1) {
-                                                               
sb.append(charset.decode((ByteBuffer)(buf.flip())));
-                                                               buf.clear();
+                                                               
sb.append(charset.decode((ByteBuffer)((Buffer)buf).flip()));
+                                                               
((Buffer)buf).clear();
                                                        }
                                                        currentContents = 
sb.toString();
                                                }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/FuzzyResourceResolver.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/FuzzyResourceResolver.java
index 8b12e97..cda1770 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/FuzzyResourceResolver.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/FuzzyResourceResolver.java
@@ -24,7 +24,7 @@ public class FuzzyResourceResolver implements 
ResourceResolver {
                try {
                        return castOrCreateFromOuter(parent, c, c, true, args);
                } catch (Exception e) {
-                       throw new BeanRuntimeException(e, c, "Could not 
instantiate resource class ''{0}''");
+                       throw new BeanRuntimeException(e, c, "Could not 
instantiate resource class");
                }
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReaderInputStream.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReaderInputStream.java
index 7009016..8d5c4af 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReaderInputStream.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReaderInputStream.java
@@ -120,7 +120,6 @@ public class ReaderInputStream extends InputStream {
         ((Buffer)this.encoderIn).flip(); // Fixes Java 11 issue.
         this.encoderOut = ByteBuffer.allocate(128);
                ((Buffer)this.encoderOut).flip(); // Fixes Java 11 issue.
-        this.encoderOut.flip();
     }
 
     /**
@@ -180,7 +179,7 @@ public class ReaderInputStream extends InputStream {
     private void fillBuffer() throws IOException {
         if (!endOfInput && (lastCoderResult == null || 
lastCoderResult.isUnderflow())) {
             encoderIn.compact();
-            final int position = encoderIn.position();
+            final int position = ((Buffer)encoderIn).position();
             // We don't use Reader#read(CharBuffer) here because it is more 
efficient
             // to write directly to the underlying char array (the default 
implementation
             // copies data to a temporary char array).
@@ -188,13 +187,13 @@ public class ReaderInputStream extends InputStream {
             if (c == -1) {
                 endOfInput = true;
             } else {
-                encoderIn.position(position+c);
+                ((Buffer)encoderIn).position(position+c);
             }
-            encoderIn.flip();
+            ((Buffer)encoderIn).flip();
         }
         encoderOut.compact();
         lastCoderResult = encoder.encode(encoderIn, encoderOut, endOfInput);
-        encoderOut.flip();
+        ((Buffer)encoderOut).flip();
     }
 
     /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
index 8b42b3e..ffebd5d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
@@ -1757,7 +1757,7 @@ public final class StringUtils {
                ByteBuffer buff = ByteBuffer.allocate(hex.length()/2);
                for (int i = 0; i < hex.length(); i+=2)
                        buff.put((byte)Integer.parseInt(hex.substring(i, i+2), 
16));
-               buff.rewind();
+               ((Buffer)buff).rewind();  // Fixes Java 11 issue.
                Charset cs = Charset.forName("UTF-8");
                return cs.decode(buff).toString();
        }
@@ -1772,7 +1772,7 @@ public final class StringUtils {
                ByteBuffer buff = ByteBuffer.allocate((hex.length()+1)/3);
                for (int i = 0; i < hex.length(); i+=3)
                        buff.put((byte)Integer.parseInt(hex.substring(i, i+2), 
16));
-               buff.rewind();
+               ((Buffer)buff).rewind();  // Fixes Java 11 issue.
                Charset cs = Charset.forName("UTF-8");
                return cs.decode(buff).toString();
        }
@@ -1835,7 +1835,7 @@ public final class StringUtils {
                ByteBuffer buff = ByteBuffer.allocate((hex.length()+1)/3);
                for (int i = 0; i < hex.length(); i+=3)
                        buff.put((byte)Integer.parseInt(hex.substring(i, i+2), 
16));
-               buff.rewind();
+               ((Buffer)buff).rewind();  // Fixes Java 11 issue.
                return buff.array();
        }
 
diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
index 1d495f7..d683080 100755
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
@@ -14,12 +14,12 @@ package org.apache.juneau.microservice.resources;
 
 import static org.apache.juneau.http.HttpMethod.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.rest.annotation.HookEvent.*;
 
 import java.io.*;
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.config.*;
 import org.apache.juneau.dto.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.http.annotation.Body;
@@ -102,18 +102,16 @@ public class DirectoryResource extends BasicRestServlet {
        // Instance
        
//-------------------------------------------------------------------------------------------------------------------
 
-       private File rootDir;     // The root directory
+       private final File rootDir;     // The root directory
 
        // Settings enabled through servlet init parameters
-       boolean allowDeletes, allowUploads, allowViews;
-
-       @RestHook(INIT)
-       public void init(RestContextBuilder b) throws Exception {
-               RestContextProperties p = b.getProperties();
-               rootDir = new File(p.getString(DIRECTORY_RESOURCE_rootDir));
-               allowViews = p.getBoolean(DIRECTORY_RESOURCE_allowViews, false);
-               allowDeletes = p.getBoolean(DIRECTORY_RESOURCE_allowDeletes, 
false);
-               allowUploads = p.getBoolean(DIRECTORY_RESOURCE_allowUploads, 
false);
+       final boolean allowDeletes, allowUploads, allowViews;
+
+       public DirectoryResource(Config c) throws Exception {
+               rootDir = new File(c.getString(DIRECTORY_RESOURCE_rootDir, 
"."));
+               allowViews = c.getBoolean(DIRECTORY_RESOURCE_allowViews, false);
+               allowDeletes = c.getBoolean(DIRECTORY_RESOURCE_allowDeletes, 
false);
+               allowUploads = c.getBoolean(DIRECTORY_RESOURCE_allowUploads, 
false);
        }
 
        @RestMethod(
diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
index b14c749..c9f777f 100755
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.microservice.resources;
 
-import static org.apache.juneau.rest.annotation.HookEvent.*;
 import static org.apache.juneau.http.HttpMethod.*;
 import static org.apache.juneau.internal.StringUtils.*;
 
@@ -21,6 +20,7 @@ import java.nio.charset.*;
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.config.*;
 import org.apache.juneau.dto.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.http.annotation.Path;
@@ -40,13 +40,6 @@ import org.apache.juneau.rest.helper.*;
        path="/logs",
        title="Log files",
        description="Log files from this service",
-       properties={
-               @Property(name=LogsResource.LOGS_RESOURCE_logDir, 
value="$C{Logging/logDir}"),
-               @Property(name=LogsResource.LOGS_RESOURCE_allowDeletes, 
value="$C{Logging/allowDeletes,true}"),
-               @Property(name=LogsResource.LOGS_RESOURCE_logFormat, 
value="$C{Logging/format}"),
-               @Property(name=LogsResource.LOGS_RESOURCE_dateFormat, 
value="$C{Logging/dateFormat}"),
-               @Property(name=LogsResource.LOGS_RESOURCE_useStackTraceHashes, 
value="$C{Logging/useStackTraceHashes}")
-       },
        allowedMethodParams="*"
 )
 @HtmlConfig(uriAnchorText="PROPERTY_NAME")
@@ -89,20 +82,17 @@ public class LogsResource extends BasicRestServlet {
        // Instance
        
//-------------------------------------------------------------------------------------------------------------------
 
-       private File logDir;
-       private LogEntryFormatter leFormatter;
-       boolean allowDeletes;
+       private final File logDir;
+       private final LogEntryFormatter leFormatter;
+       final boolean allowDeletes;
 
-
-       @RestHook(INIT)
-       public void init(RestContextBuilder b) throws Exception {
-               RestContextProperties p = b.getProperties();
-               logDir = new File(p.getString(LOGS_RESOURCE_logDir));
-               allowDeletes = p.getBoolean(LOGS_RESOURCE_allowDeletes);
+       public LogsResource(Config c) {
+               logDir = new File(c.getString(LOGS_RESOURCE_logDir, "logDir"));
+               allowDeletes = c.getBoolean(LOGS_RESOURCE_allowDeletes, true);
                leFormatter = new LogEntryFormatter(
-                       p.getString(LOGS_RESOURCE_logFormat, "[{date} {level}] 
{msg}%n"),
-                       p.getString(LOGS_RESOURCE_dateFormat, "yyyy.MM.dd 
hh:mm:ss"),
-                       p.getBoolean(LOGS_RESOURCE_useStackTraceHashes, true)
+                       c.getString(LOGS_RESOURCE_logFormat, "[{date} {level}] 
{msg}%n"),
+                       c.getString(LOGS_RESOURCE_dateFormat, "yyyy.MM.dd 
hh:mm:ss"),
+                       c.getBoolean(LOGS_RESOURCE_useStackTraceHashes, true)
                );
        }
 
diff --git 
a/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
 
b/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
index 413ae19..bb332c7 100644
--- 
a/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
+++ 
b/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
@@ -28,7 +28,6 @@ import javax.ws.rs.ext.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.parser.*;
-import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -49,14 +48,8 @@ public class BaseProvider implements 
MessageBodyReader<Object>, MessageBodyWrite
         */
        protected BaseProvider() {
                try {
-                       properties = new OMap();
                        JuneauProvider jp = 
getClass().getAnnotation(JuneauProvider.class);
 
-                       for (Property p : jp.properties())
-                               properties.put(p.name(), p.value());
-                       for (String p : jp.flags())
-                               properties.put(p, true);
-
                        serializers = SerializerGroup.create()
                                .append(jp.serializers())
                                .swaps((Object[])jp.swaps())
@@ -74,27 +67,6 @@ public class BaseProvider implements 
MessageBodyReader<Object>, MessageBodyWrite
                }
        }
 
-       /**
-        * Returns properties defined on the specified method through the 
{@link RestMethod#properties() @RestMethod(properties)}
-        * annotation specified on the method and the {@link 
JuneauProvider#properties()} annotation specified on the
-        * provider class.
-        *
-        * @param a All annotations defined on the method.
-        * @return A map of all properties define on the method.
-        */
-       protected OMap getMethodProperties(Annotation[] a) {
-               OMap m = new OMap().inner(properties);
-               for (Annotation aa : a) {
-                       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;
-       }
-
        @Override /* MessageBodyWriter */
        public long getSize(Object o, Class<?> type, Type gType, Annotation[] 
a, MediaType mediaType) {
                return -1;
@@ -113,7 +85,7 @@ public class BaseProvider implements 
MessageBodyReader<Object>, MessageBodyWrite
                        if (sm == null)
                                throw new 
WebApplicationException(SC_NOT_ACCEPTABLE);
                        Serializer s = sm.getSerializer();
-                       OMap mp = getMethodProperties(a);
+                       OMap mp = OMap.of();
                        mp.append("mediaType", mediaType.toString());
                        Locale locale = getLocale(headers);
                        TimeZone timeZone = getTimeZone(headers);
@@ -149,7 +121,7 @@ public class BaseProvider implements 
MessageBodyReader<Object>, MessageBodyWrite
                        if (pm == null)
                                throw new 
WebApplicationException(SC_UNSUPPORTED_MEDIA_TYPE);
                        Parser p = pm.getParser();
-                       OMap mp = getMethodProperties(a);
+                       OMap mp = OMap.of();
                        mp.put("mediaType", mediaType.toString());
                        Locale locale = getLocale(headers);
                        TimeZone timeZone = getTimeZone(headers);
diff --git 
a/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java
 
b/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java
index c8e8cfc..8352f74 100644
--- 
a/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java
+++ 
b/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java
@@ -18,7 +18,6 @@ import static java.lang.annotation.RetentionPolicy.*;
 import java.lang.annotation.*;
 
 import org.apache.juneau.parser.*;
-import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.transform.*;
 
@@ -40,17 +39,6 @@ import org.apache.juneau.transform.*;
 public @interface JuneauProvider {
 
        /**
-        * Provider-level properties.
-        *
-        * <p>
-        * Property values will be converted to the appropriate type.
-        *
-        * <p>
-        * These properties can be augmented/overridden through the {@link 
RestMethod#properties() @RestMethod(properties)} annotation on the REST method.
-        */
-       Property[] properties() default {};
-
-       /**
         * Provider-level POJO swaps.
         *
         * <p>
@@ -63,14 +51,6 @@ public @interface JuneauProvider {
        Class<?>[] swaps() 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>
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/Body_Test.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/Body_Test.java
index 5c85f13..d8cdce2 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/Body_Test.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/Body_Test.java
@@ -32,6 +32,7 @@ import org.apache.juneau.rest.mock.*;
 import org.apache.juneau.testutils.pojos.*;
 import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
+import org.apache.juneau.urlencoding.annotation.*;
 import org.apache.juneau.urlencoding.annotation.UrlEncoding;
 import org.junit.*;
 
@@ -811,12 +812,8 @@ public class Body_Test {
 
        
@Rest(serializers=UrlEncodingSerializer.class,parsers=UrlEncodingParser.class)
        public static class H {
-               @RestMethod(method=POST,path="/",
-                       properties={
-                               
@Property(name=UrlEncodingSerializer.URLENC_expandedParams, value="true"),
-                               
@Property(name=UrlEncodingParser.URLENC_expandedParams, value="true")
-                       }
-               )
+               @RestMethod(method=POST,path="/")
+               @UrlEncodingConfig(expandedParams="true")
                public XBeans.XB a(@Body XBeans.XB content) throws Exception {
                        return content;
                }
@@ -855,12 +852,8 @@ public class Body_Test {
        @Bean(on="A,B,C",sort=true)
        @UrlEncoding(on="C",expandedParams=true)
        public static class H2 {
-               @RestMethod(method=POST,path="/",
-                       properties={
-                               
@Property(name=UrlEncodingSerializer.URLENC_expandedParams, value="true"),
-                               
@Property(name=UrlEncodingParser.URLENC_expandedParams, value="true")
-                       }
-               )
+               @RestMethod(method=POST,path="/")
+               @UrlEncodingConfig(expandedParams="true")
                public XBeans.XE a(@Body XBeans.XE content) throws Exception {
                        return content;
                }
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
index 40bd31b..4eeb6cf 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
@@ -56,7 +56,6 @@ public class RestAnnotation_Test {
                .description("description")
                .encoders(Encoder.class)
                .fileFinder(FileFinder.class)
-               .flags("flags")
                .guards(RestGuard.class)
                .infoProvider(BasicRestInfoProvider.class)
                .maxInput("maxInput")
@@ -69,7 +68,6 @@ public class RestAnnotation_Test {
                .partSerializer(HttpPartSerializer.class)
                .path("path")
                .produces("produces")
-               .properties()
                .renderResponseStackTraces("renderResponseStackTraces")
                .reqAttrs("reqAttrs")
                .reqHeaders("reqHeaders")
@@ -109,7 +107,6 @@ public class RestAnnotation_Test {
                .description("description")
                .encoders(Encoder.class)
                .fileFinder(FileFinder.class)
-               .flags("flags")
                .guards(RestGuard.class)
                .infoProvider(BasicRestInfoProvider.class)
                .maxInput("maxInput")
@@ -122,7 +119,6 @@ public class RestAnnotation_Test {
                .partSerializer(HttpPartSerializer.class)
                .path("path")
                .produces("produces")
-               .properties()
                .renderResponseStackTraces("renderResponseStackTraces")
                .reqAttrs("reqAttrs")
                .reqHeaders("reqHeaders")
@@ -165,7 +161,6 @@ public class RestAnnotation_Test {
                                + 
"disableAllowBodyParam:'disableAllowBodyParam',"
                                + 
"encoders:['org.apache.juneau.encoders.Encoder'],"
                                + 
"fileFinder:'org.apache.juneau.cp.FileFinder',"
-                               + "flags:['flags'],"
                                + "guards:['org.apache.juneau.rest.RestGuard'],"
                                + 
"infoProvider:'org.apache.juneau.rest.BasicRestInfoProvider',"
                                + "maxInput:'maxInput',"
@@ -178,7 +173,6 @@ public class RestAnnotation_Test {
                                + 
"partSerializer:'org.apache.juneau.httppart.HttpPartSerializer',"
                                + "path:'path',"
                                + "produces:['produces'],"
-                               + "properties:[],"
                                + 
"renderResponseStackTraces:'renderResponseStackTraces',"
                                + "reqAttrs:['reqAttrs'],"
                                + "reqHeaders:['reqHeaders'],"
@@ -263,7 +257,6 @@ public class RestAnnotation_Test {
                description="description",
                encoders=Encoder.class,
                fileFinder=FileFinder.class,
-               flags="flags",
                guards=RestGuard.class,
                infoProvider=BasicRestInfoProvider.class,
                maxInput="maxInput",
@@ -276,7 +269,6 @@ public class RestAnnotation_Test {
                partSerializer=HttpPartSerializer.class,
                path="path",
                produces="produces",
-               properties={},
                renderResponseStackTraces="renderResponseStackTraces",
                reqAttrs="reqAttrs",
                reqHeaders="reqHeaders",
@@ -318,7 +310,6 @@ public class RestAnnotation_Test {
                description="description",
                encoders=Encoder.class,
                fileFinder=FileFinder.class,
-               flags="flags",
                guards=RestGuard.class,
                infoProvider=BasicRestInfoProvider.class,
                maxInput="maxInput",
@@ -331,7 +322,6 @@ public class RestAnnotation_Test {
                partSerializer=HttpPartSerializer.class,
                path="path",
                produces="produces",
-               properties={},
                renderResponseStackTraces="renderResponseStackTraces",
                reqAttrs="reqAttrs",
                reqHeaders="reqHeaders",
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethodAnnotation_Test.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethodAnnotation_Test.java
index 9571fb2..2955563 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethodAnnotation_Test.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethodAnnotation_Test.java
@@ -45,7 +45,6 @@ public class RestMethodAnnotation_Test {
                .defaultQuery("defaultQuery")
                .description("description")
                .encoders(Encoder.class)
-               .flags("flags")
                .guards(RestGuard.class)
                .matchers(RestMatcher.class)
                .maxInput("maxInput")
@@ -56,7 +55,6 @@ public class RestMethodAnnotation_Test {
                .paths("paths")
                .priority(1)
                .produces("produces")
-               .properties()
                .reqAttrs("reqAttrs")
                .reqHeaders("reqHeaders")
                .roleGuard("roleGuard")
@@ -79,7 +77,6 @@ public class RestMethodAnnotation_Test {
                .defaultQuery("defaultQuery")
                .description("description")
                .encoders(Encoder.class)
-               .flags("flags")
                .guards(RestGuard.class)
                .matchers(RestMatcher.class)
                .maxInput("maxInput")
@@ -90,7 +87,6 @@ public class RestMethodAnnotation_Test {
                .paths("paths")
                .priority(1)
                .produces("produces")
-               .properties()
                .reqAttrs("reqAttrs")
                .reqHeaders("reqHeaders")
                .roleGuard("roleGuard")
@@ -116,7 +112,6 @@ public class RestMethodAnnotation_Test {
                                + "defaultQuery:['defaultQuery'],"
                                + "description:['description'],"
                                + 
"encoders:['org.apache.juneau.encoders.Encoder'],"
-                               + "flags:['flags'],"
                                + "guards:['org.apache.juneau.rest.RestGuard'],"
                                + 
"matchers:['org.apache.juneau.rest.RestMatcher'],"
                                + "maxInput:'maxInput',"
@@ -127,7 +122,6 @@ public class RestMethodAnnotation_Test {
                                + "paths:['paths'],"
                                + "priority:1,"
                                + "produces:['produces'],"
-                               + "properties:[],"
                                + "reqAttrs:['reqAttrs'],"
                                + "reqHeaders:['reqHeaders'],"
                                + "roleGuard:'roleGuard',"
@@ -193,7 +187,6 @@ public class RestMethodAnnotation_Test {
                defaultQuery="defaultQuery",
                description="description",
                encoders=Encoder.class,
-               flags="flags",
                guards=RestGuard.class,
                matchers=RestMatcher.class,
                maxInput="maxInput",
@@ -204,7 +197,6 @@ public class RestMethodAnnotation_Test {
                paths="paths",
                priority=1,
                produces="produces",
-               properties={},
                reqAttrs="reqAttrs",
                reqHeaders="reqHeaders",
                roleGuard="roleGuard",
@@ -229,7 +221,6 @@ public class RestMethodAnnotation_Test {
                defaultQuery="defaultQuery",
                description="description",
                encoders=Encoder.class,
-               flags="flags",
                guards=RestGuard.class,
                matchers=RestMatcher.class,
                maxInput="maxInput",
@@ -240,7 +231,6 @@ public class RestMethodAnnotation_Test {
                paths="paths",
                priority=1,
                produces="produces",
-               properties={},
                reqAttrs="reqAttrs",
                reqHeaders="reqHeaders",
                roleGuard="roleGuard",
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestResourceResolver.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestResourceResolver.java
index 2dd538e..cf0bd99 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestResourceResolver.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestResourceResolver.java
@@ -40,6 +40,6 @@ public class BasicRestResourceResolver extends 
FuzzyResourceResolver implements
 
        @Override /* RestResourceResolver */
        public <T> T resolve(Object parent, Class<T> c, RestContextBuilder 
builder, Object...args) {
-               return resolve(parent, c, ArrayUtils.append(args, builder));
+               return resolve(parent, c, ArrayUtils.append(args, builder, 
builder.getConfig()));
        }
 }
\ No newline at end of file
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 34b7dae..0602e47 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -2821,55 +2821,6 @@ public class RestContext extends BeanContext {
        public static final String REST_produces = PREFIX + ".produces.ls";
 
        /**
-        * Configuration property:  Properties.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.rest.RestContext#REST_properties REST_properties}
-        *      <li><b>Name:</b>  <js>"RestContext.properties.sms"</js>
-        *      <li><b>Data type:</b>  <c>Map&lt;String,String&gt;</c>
-        *      <li><b>System property:</b>  <c>RestContext.properties</c>
-        *      <li><b>Environment variable:</b>  <c>RESTCONTEXT_PROPERTIES</c>
-        *      <li><b>Default:</b>  empty map
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.rest.annotation.Rest#properties()}
-        *                      <li class='ja'>{@link 
org.apache.juneau.rest.annotation.Rest#flags()}
-        *                      <li class='ja'>{@link 
org.apache.juneau.rest.annotation.RestMethod#properties()}
-        *                      <li class='ja'>{@link 
org.apache.juneau.rest.annotation.RestMethod#flags()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.rest.RestContextBuilder#property(String,Object)}
-        *                      <li class='jm'>{@link 
org.apache.juneau.rest.RestContextBuilder#beanProperties(Map)}
-        *              </ul>
-        * </ul>
-        *
-        * <h5 class='section'>Description:</h5>
-        * <p>
-        * Shortcut to add properties to the bean contexts of all serializers 
and parsers on all methods in the class.
-        *
-        * <p>
-        * Any of the properties defined on {@link RestContext} or any of the 
serializers and parsers can be specified.
-        *
-        * <p>
-        * Property values will be converted to the appropriate type.
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              Supports {@doc RestSvlVariables}
-        *              (e.g. <js>"$L{my.localized.variable}"</js>).
-        * </ul>
-        *
-        * <ul class='seealso'>
-        *      <li class='jm'>{@link RestContextBuilder#set(String,Object)}
-        *      <li class='jm'>{@link RestContextBuilder#set(java.util.Map)}
-        * </ul>
-        */
-       public static final String REST_properties = PREFIX + ".properties.sms";
-
-       /**
         * Configuration property:  Supported content media types.
         *
         * <h5 class='section'>Property:</h5>
@@ -3295,7 +3246,6 @@ public class RestContext extends BeanContext {
 
        private final Set<String> allowedMethodParams, allowedHeaderParams, 
allowedMethodHeaders;
 
-       private final RestContextProperties properties;
        private final Map<Class<?>,RestMethodParam> paramResolvers;
        private final SerializerGroup serializers;
        private final ParserGroup parsers;
@@ -3490,7 +3440,6 @@ public class RestContext extends BeanContext {
 
                        callLogger = createCallLogger();
 
-                       properties = builder.properties;
                        serializers =
                                SerializerGroup
                                .create()
@@ -4132,29 +4081,6 @@ public class RestContext extends BeanContext {
        }
 
        /**
-        * Returns the class-level properties associated with this servlet.
-        *
-        * <p>
-        * Properties at the class level are defined via the following:
-        * <ul class='javatree'>
-        *      <li class='ja'>{@link Rest#properties()}
-        *      <li class='jm'>{@link RestContextBuilder#set(String, Object)}
-        *      <li class='jm'>{@link RestContextBuilder#set(Map)}
-        * </ul>
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              The returned {@code Map} is mutable.
-        *              <br>Therefore, subclasses are free to override or set 
additional initialization parameters in their {@code init()} method.
-        * </ul>
-        *
-        * @return The resource properties as a {@link RestContextProperties}.
-        */
-       public RestContextProperties getProperties() {
-               return properties;
-       }
-
-       /**
         * Returns the servlet init parameter returned by {@link 
ServletConfig#getInitParameter(String)}.
         *
         * @param name The init parameter name.
@@ -5243,7 +5169,6 @@ public class RestContext extends BeanContext {
                                .a("partParser", partParser)
                                .a("partSerializer", partSerializer)
                                .a("produces", produces)
-                               .a("properties", properties)
                                .a("renderResponseStackTraces", 
renderResponseStackTraces)
                                .a("reqHeaders", reqHeaders)
                                .a("resHeaders", resHeaders)
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index 62c9662..836b580 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -57,7 +57,6 @@ import org.apache.juneau.utils.*;
  * Provides access to the following initialized resources:
  * <ul>
  *     <li>{@link #getConfig()} - The external configuration for this resource.
- *     <li>{@link #getProperties()} - The modifiable configuration properties 
for this resource.
  *     <li>{@link #getVarResolverBuilder()} - The variable resolver for this 
resource.
  * </ul>
  *
@@ -105,7 +104,6 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
        // Read-only snapshots of these will be made in RestServletContext.
        
//-----------------------------------------------------------------------------------------------------------------
 
-       RestContextProperties properties;
        Config config;
        VarResolverBuilder varResolverBuilder;
 
@@ -113,7 +111,6 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
                this.inner = servletConfig;
                this.resourceClass = resourceClass;
                this.parentContext = parentContext;
-               this.properties = new RestContextProperties();
 
                ClassInfo rci = ClassInfo.of(resourceClass);
 
@@ -178,16 +175,6 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
 
                        
applyAnnotations(rci.getAnnotationList(ConfigAnnotationFilter.INSTANCE), 
vr.createSession());
 
-                       // Load stuff from parent-to-child order.
-                       // This allows child settings to overwrite parent 
settings.
-                       for (AnnotationInfo<Rest> e : 
restAnnotationsParentFirst) {
-                               Rest r = e.getAnnotation();
-                               for (Property p : r.properties())
-                                       set(vr.resolve(p.name()), 
vr.resolve(p.value()));
-                               for (String p : r.flags())
-                                       set(p);
-                       }
-
                } catch (Exception e) {
                        throw new ServletException(e);
                }
@@ -317,7 +304,7 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
         * @return A new property store.
         */
        protected PropertyStoreBuilder createPropertyStore() {
-               return PropertyStore.create().add(properties);
+               return PropertyStore.create();
        }
 
 
@@ -348,28 +335,6 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
        }
 
        /**
-        * Returns the configuration properties for this resource.
-        *
-        * <p>
-        * The configuration properties are determined via the {@link 
Rest#properties() @Rest(properties)} annotation on the resource.
-        *
-        * <p>
-        * The configuration properties can be augmented programmatically by 
adding the following method to your resource:
-        * <p class='bcode w800'>
-        *      <jk>public</jk> RestContextProperties 
createProperties(ServletConfig servletConfig) <jk>throws</jk> ServletException;
-        * </p>
-        *
-        * <p>
-        * These properties can be modified during servlet initialization.
-        * However, any modifications made after {@link 
RestServlet#init(ServletConfig)} has been called will have no effect.
-        *
-        * @return The configuration properties for this resource.  Never 
<jk>null</jk>.
-        */
-       public RestContextProperties getProperties() {
-               return properties;
-       }
-
-       /**
         * Creates the variable resolver for this resource.
         *
         * <p>
@@ -1919,55 +1884,6 @@ public class RestContextBuilder extends 
BeanContextBuilder implements ServletCon
        }
 
        /**
-        * <i><l>RestContext</l> configuration property:&emsp;</i>  Properties.
-        *
-        * <p>
-        * Shortcut to add properties to the bean contexts of all serializers 
and parsers on all methods in the class.
-        *
-        * <p>
-        * Any of the properties defined on {@link RestContext} or any of the 
serializers and parsers can be specified.
-        *
-        * <p>
-        * Property values will be converted to the appropriate type.
-        *
-        * <ul class='seealso'>
-        *      <li class='jm'>{@link RestContext#REST_properties}
-        * </ul>
-        *
-        * @param values The values to set on this setting.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public RestContextBuilder restProperties(Map<String,Object> values) {
-               return putAllTo(REST_properties, values);
-       }
-
-       /**
-        * <i><l>RestContext</l> configuration property:&emsp;</i>  Properties.
-        *
-        * <p>
-        * Shortcut to add properties to the bean contexts of all serializers 
and parsers on all methods in the class.
-        *
-        * <p>
-        * Any of the properties defined on {@link RestContext} or any of the 
serializers and parsers can be specified.
-        *
-        * <p>
-        * Property values will be converted to the appropriate type.
-        *
-        * <ul class='seealso'>
-        *      <li class='jm'>{@link RestContext#REST_properties}
-        * </ul>
-        *
-        * @param name The key to add to the properties.
-        * @param value The value to add to the properties.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public RestContextBuilder property(String name, Object value) {
-               return putTo(REST_properties, name, value);
-       }
-
-       /**
         * Configuration property:  Static files finder.
         *
         * <p>
@@ -2139,25 +2055,18 @@ public class RestContextBuilder extends 
BeanContextBuilder implements ServletCon
        @Override /* ContextBuilder */
        public RestContextBuilder set(String name, Object value) {
                super.set(name, value);
-               this.properties.put(name, value);
-               putTo(REST_properties, name, value);
                return this;
        }
 
        @Override /* ContextBuilder */
        public RestContextBuilder set(String name) {
                super.set(name);
-               this.properties.put(name, true);
-               putTo(REST_properties, name, true);
                return this;
        }
 
        @Override /* ContextBuilder */
        public RestContextBuilder set(Map<String,Object> properties) {
                super.set(properties);
-               this.properties.clear();
-               this.properties.putAll(properties);
-               putAllTo(REST_properties, properties);
                return this;
        }
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextProperties.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextProperties.java
deleted file mode 100644
index 5516a91..0000000
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextProperties.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.rest;
-
-import java.util.*;
-
-import org.apache.juneau.collections.*;
-import org.apache.juneau.rest.annotation.*;
-
-/**
- * Encapsulates class-level properties.
- *
- * <p>
- * These are properties specified on a REST resource class through the 
following:
- * <ul class='javatree'>
- *     <li class='ja'>{@link Rest#properties()}
- *     <li class='jm'>{@link RestContextBuilder#set(String, Object)}
- *     <li class='jm'>{@link RestContextBuilder#set(Map)}
- * </ul>
- *
- * <ul class='seealso'>
- *     <li class='link'>{@doc RestConfigurableProperties}
- * </ul>
- */
-@SuppressWarnings("serial")
-public class RestContextProperties extends OMap {}
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
index 1a721ec..4812bf7 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
@@ -169,17 +169,6 @@ public abstract class RestServlet extends HttpServlet 
implements RestInfoProvide
                return context;
        }
 
-       /**
-        * Convenience method for calling <c>getContext().getProperties();</c>
-        *
-        * @return The resource properties as an {@link RestContextProperties}.
-        * @see RestContext#getProperties()
-        */
-       public RestContextProperties getProperties() {
-               return getContext().getProperties();
-       }
-
-
        
//-----------------------------------------------------------------------------------------------------------------
        // Convenience logger methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Property.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Property.java
deleted file mode 100644
index 6f56749..0000000
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Property.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.rest.annotation;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.*;
-
-/**
- * Property name/value pair used in the {@link Rest#properties() 
@Rest(properties)} annotation.
- *
- * <p>
- * Any of the properties defined on any of the serializers or parsers can be 
defined.
- *
- * <p>
- * Property values types that are not <c>Strings</c> will automatically be 
converted to the correct type
- * (e.g. <c>Boolean</c>, etc...).
- *
- * <ul class='seealso'>
- *     <li class='link'>{@doc RestConfigurableProperties}
- * </ul>
- */
-@Documented
-@Target(ANNOTATION_TYPE)
-@Retention(RUNTIME)
-@Inherited
-public @interface Property {
-
-       /**
-        * Property name.
-        */
-       String name();
-
-       /**
-        * Property value.
-        */
-       String value();
-}
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
index a65a434..88b93ea 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
@@ -562,19 +562,6 @@ public @interface Rest {
        Class<? extends FileFinder> fileFinder() default FileFinder.Null.class;
 
        /**
-        * Shortcut for setting {@link #properties()} of simple boolean types.
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              Supports {@doc RestSvlVariables}
-        *              (e.g. <js>"$L{my.localized.variable}"</js>).
-        *      <li>
-        *              Setting a flag is equivalent to setting the same 
property to <js>"true"</js>.
-        * </ul>
-        */
-       String[] flags() default {};
-
-       /**
         * Class-level guards.
         *
         * <p>
@@ -884,31 +871,6 @@ public @interface Rest {
        String[] produces() default {};
 
        /**
-        * Class-level properties.
-        *
-        * <p>
-        * Shortcut to add properties to the bean contexts of all serializers 
and parsers on all methods in the class.
-        *
-        * <p>
-        * Any of the properties defined on {@link RestContext} or any of the 
serializers and parsers can be specified.
-        *
-        * <p>
-        * Property values will be converted to the appropriate type.
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              Supports {@doc RestSvlVariables}
-        *              (e.g. <js>"$L{my.localized.variable}"</js>).
-        * </ul>
-        *
-        * <ul class='seealso'>
-        *      <li class='jm'>{@link RestContextBuilder#set(String,Object)}
-        *      <li class='jm'>{@link RestContextBuilder#set(java.util.Map)}
-        * </ul>
-        */
-       Property[] properties() default {};
-
-       /**
         * Render response stack traces in responses.
         *
         * <p>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
index 541f433..994a708 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
@@ -96,10 +96,9 @@ public class RestAnnotation {
                Class<? extends RestMethodParam>[] paramResolvers = new 
Class[0];
                Class<? extends RestResourceResolver> 
resourceResolver=RestResourceResolver.Null.class;
                Class<?>[] children={}, parsers={}, serializers={};
-               Property[] properties = {};
                ResourceSwagger swagger = ResourceSwaggerAnnotation.DEFAULT;
                String disableAllowBodyParam="", allowedHeaderParams="", 
allowedMethodHeaders="", allowedMethodParams="", clientVersionHeader="", 
config="", debug="", debugOn="", defaultAccept="", defaultCharset="", 
defaultContentType="", maxInput="", messages="", path="", 
renderResponseStackTraces="", roleGuard="", rolesDeclared="", siteName="", 
uriAuthority="", uriContext="", uriRelativity="", uriResolution="";
-               String[] consumes={}, description={}, flags={}, produces={}, 
reqAttrs={}, reqHeaders={}, resHeaders={}, title={};
+               String[] consumes={}, description={}, produces={}, reqAttrs={}, 
reqHeaders={}, resHeaders={}, title={};
 
                /**
                 * Constructor.
@@ -327,17 +326,6 @@ public class RestAnnotation {
                }
 
                /**
-                * Sets the {@link Rest#flags()} property on this annotation.
-                *
-                * @param value The new value for this property.
-                * @return This object (for method chaining).
-                */
-               public Builder flags(String...value) {
-                       this.flags = value;
-                       return this;
-               }
-
-               /**
                 * Sets the {@link Rest#guards()} property on this annotation.
                 *
                 * @param value The new value for this property.
@@ -448,17 +436,6 @@ public class RestAnnotation {
                }
 
                /**
-                * Sets the {@link Rest#properties()} property on this 
annotation.
-                *
-                * @param value The new value for this property.
-                * @return This object (for method chaining).
-                */
-               public Builder properties(Property...value) {
-                       this.properties = value;
-                       return this;
-               }
-
-               /**
                 * Sets the {@link Rest#renderResponseStackTraces()} property 
on this annotation.
                 *
                 * @param value The new value for this property.
@@ -684,10 +661,9 @@ public class RestAnnotation {
                private final Class<? extends RestMethodParam>[] paramResolvers;
                private final Class<? extends RestResourceResolver> 
resourceResolver;
                private final Class<?>[] children, parsers, serializers;
-               private final Property[] properties;
                private final ResourceSwagger swagger;
                private final String disableAllowBodyParam, 
allowedHeaderParams, allowedMethodHeaders, allowedMethodParams, 
clientVersionHeader, config, debug, debugOn, defaultAccept, defaultCharset, 
defaultContentType, maxInput, messages, path, renderResponseStackTraces, 
roleGuard, rolesDeclared, siteName, uriAuthority, uriContext, uriRelativity, 
uriResolution;
-               private final String[] consumes, description, flags, produces, 
reqAttrs, reqHeaders, resHeaders, title;
+               private final String[] consumes, description, produces, 
reqAttrs, reqHeaders, resHeaders, title;
 
                Impl(Builder b) {
                        super(b);
@@ -710,7 +686,6 @@ public class RestAnnotation {
                        this.description = copyOf(b.description);
                        this.encoders = copyOf(b.encoders);
                        this.fileFinder = b.fileFinder;
-                       this.flags = copyOf(b.flags);
                        this.guards = copyOf(b.guards);
                        this.infoProvider = b.infoProvider;
                        this.maxInput = b.maxInput;
@@ -721,7 +696,6 @@ public class RestAnnotation {
                        this.partSerializer = b.partSerializer;
                        this.path = b.path;
                        this.produces = copyOf(b.produces);
-                       this.properties = copyOf(b.properties);
                        this.renderResponseStackTraces = 
b.renderResponseStackTraces;
                        this.reqAttrs = copyOf(b.reqAttrs);
                        this.reqHeaders = copyOf(b.reqHeaders);
@@ -838,11 +812,6 @@ public class RestAnnotation {
                }
 
                @Override /* Rest */
-               public String[] flags() {
-                       return flags;
-               }
-
-               @Override /* Rest */
                public Class<? extends RestGuard>[] guards() {
                        return guards;
                }
@@ -893,11 +862,6 @@ public class RestAnnotation {
                }
 
                @Override /* Rest */
-               public Property[] properties() {
-                       return properties;
-               }
-
-               @Override /* Rest */
                public String renderResponseStackTraces() {
                        return renderResponseStackTraces;
                }
@@ -1004,14 +968,6 @@ public class RestAnnotation {
                        String s = null;
                        ClassInfo c = ai.getClassOn();
 
-                       for (Property p1 : a.properties()) {
-                               psb.putTo(REST_properties, string(p1.name()), 
string(p1.value()));
-                       }
-
-                       for (String p1 : a.flags()) {
-                               psb.putTo(REST_properties, string(p1), true);
-                       }
-
                        if (a.serializers().length > 0)
                                psb.set(REST_serializers, 
merge(ConverterUtils.toType(psb.peek(REST_serializers), Object[].class), 
a.serializers()));
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
index c4fb7d8..b341273 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
@@ -307,14 +307,6 @@ public @interface RestMethod {
        Class<?>[] encoders() 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 {};
-
-       /**
         * Method-level guards.
         *
         * <p>
@@ -576,15 +568,6 @@ public @interface RestMethod {
        String[] produces() default {};
 
        /**
-        * Same as {@link Rest#properties() @Rest(properties)}, except defines 
property values by default when this method is called.
-        *
-        * <p>
-        * This is equivalent to simply calling <c>res.addProperties()</c> in 
the Java method, but is provided for
-        * convenience.
-        */
-       Property[] properties() default {};
-
-       /**
         * Default request attributes.
         *
         * <p>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
index 662132e..493464e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
@@ -64,9 +64,8 @@ public class RestMethodAnnotation {
                Class<?>[] encoders=new Class<?>[0], parsers=new Class<?>[0], 
serializers=new Class<?>[0];
                int priority = 0;
                MethodSwagger swagger = MethodSwaggerAnnotation.DEFAULT;
-               Property[] properties = new Property[0];
                String clientVersion="", debug="", defaultAccept="", 
defaultCharset="", defaultContentType="", maxInput="", method="", path="", 
rolesDeclared="", roleGuard="", summary="", value="";
-               String[] consumes={}, defaultFormData={}, defaultQuery={}, 
description={}, flags={}, paths={}, produces={}, reqAttrs={}, reqHeaders={};
+               String[] consumes={}, defaultFormData={}, defaultQuery={}, 
description={}, paths={}, produces={}, reqAttrs={}, reqHeaders={};
 
                /**
                 * Constructor.
@@ -206,17 +205,6 @@ public class RestMethodAnnotation {
                }
 
                /**
-                * Sets the {@link RestMethod#flags()} property on this 
annotation.
-                *
-                * @param value The new value for this property.
-                * @return This object (for method chaining).
-                */
-               public Builder flags(String...value) {
-                       this.flags = value;
-                       return this;
-               }
-
-               /**
                 * Sets the {@link RestMethod#guards()} property on this 
annotation.
                 *
                 * @param value The new value for this property.
@@ -316,17 +304,6 @@ public class RestMethodAnnotation {
                }
 
                /**
-                * Sets the {@link RestMethod#properties()} property on this 
annotation.
-                *
-                * @param value The new value for this property.
-                * @return This object (for method chaining).
-                */
-               public Builder properties(Property...value) {
-                       this.properties = value;
-                       return this;
-               }
-
-               /**
                 * Sets the {@link RestMethod#reqAttrs()} property on this 
annotation.
                 *
                 * @param value The new value for this property.
@@ -439,9 +416,8 @@ public class RestMethodAnnotation {
                private final Class<?>[] encoders, parsers, serializers;
                private final int priority;
                private final MethodSwagger swagger;
-               private final Property[] properties;
                private final String clientVersion, debug, defaultAccept, 
defaultCharset, defaultContentType, maxInput, method, path, rolesDeclared, 
roleGuard, summary, value;
-               private final String[] consumes, defaultFormData, defaultQuery, 
description, flags, paths, produces, reqAttrs, reqHeaders;
+               private final String[] consumes, defaultFormData, defaultQuery, 
description, paths, produces, reqAttrs, reqHeaders;
 
                Impl(Builder b) {
                        super(b);
@@ -456,7 +432,6 @@ public class RestMethodAnnotation {
                        this.defaultQuery = copyOf(b.defaultQuery);
                        this.description = copyOf(b.description);
                        this.encoders = copyOf(b.encoders);
-                       this.flags = copyOf(b.flags);
                        this.guards = copyOf(b.guards);
                        this.matchers = copyOf(b.matchers);
                        this.maxInput = b.maxInput;
@@ -466,7 +441,6 @@ public class RestMethodAnnotation {
                        this.paths = copyOf(b.paths);
                        this.priority = b.priority;
                        this.produces = copyOf(b.produces);
-                       this.properties = copyOf(b.properties);
                        this.reqAttrs = copyOf(b.reqAttrs);
                        this.reqHeaders = copyOf(b.reqHeaders);
                        this.roleGuard = b.roleGuard;
@@ -534,11 +508,6 @@ public class RestMethodAnnotation {
                }
 
                @Override /* RestMethod */
-               public String[] flags() {
-                       return flags;
-               }
-
-               @Override /* RestMethod */
                public Class<? extends RestGuard>[] guards() {
                        return guards;
                }
@@ -584,11 +553,6 @@ public class RestMethodAnnotation {
                }
 
                @Override /* RestMethod */
-               public Property[] properties() {
-                       return properties;
-               }
-
-               @Override /* RestMethod */
                public String[] reqAttrs() {
                        return reqAttrs;
                }
@@ -651,16 +615,6 @@ public class RestMethodAnnotation {
                        String sig = mi == null ? "Unknown" : mi.getSignature();
                        String s = null;
 
-                       for (Property p1 : a.properties()) {
-                               psb.set(p1.name(), string(p1.value()));  // >>> 
DEPRECATED - Remove in 9.0 <<<
-                               psb.putTo(REST_properties, string(p1.name()), 
string(p1.value()));
-                       }
-
-                       for (String p1 : a.flags()) {
-                               psb.set(p1, true);  // >>> DEPRECATED - Remove 
in 9.0 <<<
-                               psb.putTo(REST_properties, string(p1), true);
-                       }
-
                        if (a.serializers().length > 0)
                                psb.set(REST_serializers, 
merge(ConverterUtils.toType(psb.peek(REST_serializers), Object[].class), 
a.serializers()));
 
diff --git a/pom.xml b/pom.xml
index a16219e..3813479 100644
--- a/pom.xml
+++ b/pom.xml
@@ -247,25 +247,25 @@
                                                <taglets>
                                                        <taglet>
                                                                
<tagletClass>org.apache.juneau.doc.internal.DocTag</tagletClass>
-                                                               
<tagletpath>${basedir}/juneau-doc/target/juneau-doc-${project.version}.jar</tagletpath>
+                                                               
<tagletpath>${basedir}/juneau-doc/juneau-doc.jar</tagletpath>
                                                        </taglet>
                                                        <taglet>
                                                                
<tagletClass>org.apache.juneau.doc.internal.PropertyTag</tagletClass>
-                                                               
<tagletpath>${basedir}/juneau-doc/target/juneau-doc-${project.version}.jar</tagletpath>
+                                                               
<tagletpath>${basedir}/juneau-doc/juneau-doc.jar</tagletpath>
                                                        </taglet>
                                                        <taglet>
                                                                
<tagletClass>org.apache.juneau.doc.internal.FragmentTag</tagletClass>
-                                                               
<tagletpath>${basedir}/juneau-doc/target/juneau-doc-${project.version}.jar</tagletpath>
+                                                               
<tagletpath>${basedir}/juneau-doc/juneau-doc.jar</tagletpath>
                                                        </taglet>
                                                        <taglet>
                                                                
<tagletClass>org.apache.juneau.doc.internal.SourceTag</tagletClass>
-                                                               
<tagletpath>${basedir}/juneau-doc/target/juneau-doc-${project.version}.jar</tagletpath>
+                                                               
<tagletpath>${basedir}/juneau-doc/juneau-doc.jar</tagletpath>
                                                        </taglet>
                                                        
                                                        
<!--org.apache.juneau.doc.internal.DocTag</taglet-->
                                                        <!-- 
taglet>org.apache.juneau.doc.internal.PropertyTag</taglet-->
                                                </taglets>
-                                               
<tagletpath>${basedir}/juneau-doc/target/juneau-doc-${project.version}.jar</tagletpath>
+                                               
<tagletpath>${basedir}/juneau-doc/juneau-doc.jar</tagletpath>
                                        </configuration>
                                        <executions>
                                                <execution>

Reply via email to