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 6f4dcc8  Tests.
6f4dcc8 is described below

commit 6f4dcc8e849ae984349268b590a4c2b849a6095e
Author: JamesBognar <[email protected]>
AuthorDate: Sun May 13 15:47:24 2018 -0400

    Tests.
---
 .../juneau/rest/test/OnPostCallResource.java       | 110 -----------------
 .../apache/juneau/rest/test/OnPreCallResource.java |  96 ---------------
 .../java/org/apache/juneau/rest/test/Root.java     |   2 -
 .../apache/juneau/rest/test/OnPostCallTest.java    | 121 -------------------
 .../org/apache/juneau/rest/test/OnPreCallTest.java |  61 ----------
 .../org/apache/juneau/rest/test/_TestSuite.java    |   2 -
 .../rest/annotation/RestHookPostCallTest.java      | 133 +++++++++++++++++++++
 .../rest/annotation/RestHookPreCallTest.java       | 104 ++++++++++++++++
 8 files changed, 237 insertions(+), 392 deletions(-)

diff --git 
a/juneau-microservice/juneau-microservice-test/src/main/java/org/apache/juneau/rest/test/OnPostCallResource.java
 
b/juneau-microservice/juneau-microservice-test/src/main/java/org/apache/juneau/rest/test/OnPostCallResource.java
deleted file mode 100644
index 6ec2414..0000000
--- 
a/juneau-microservice/juneau-microservice-test/src/main/java/org/apache/juneau/rest/test/OnPostCallResource.java
+++ /dev/null
@@ -1,110 +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.test;
-
-import static org.apache.juneau.rest.annotation.HookEvent.*;
-import static org.apache.juneau.http.HttpMethodName.*;
-
-import java.util.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.rest.*;
-import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.serializer.*;
-import org.apache.juneau.utils.*;
-
-/**
- * JUnit automated testcase resource.
- * Validates that headers
- */
-@RestResource(
-       path="/testOnPostCall",
-       serializers=OnPostCallResource.TestSerializer.class,
-       properties={
-               @Property(name="p1",value="sp1"), // Unchanged servlet-level 
property.
-               @Property(name="p2",value="sp2"), // Servlet-level property 
overridden by onPostCall.
-               @Property(name="p3",value="sp3"), // Servlet-level property 
overridded by method.
-               @Property(name="p4",value="sp4")  // Servlet-level property 
overridden by method then onPostCall.
-       }
-)
-public class OnPostCallResource extends RestServlet {
-       private static final long serialVersionUID = 1L;
-
-       public static class TestSerializer extends WriterSerializer {
-
-               public TestSerializer(PropertyStore ps) {
-                       super(ps, "test/s1", "text/s1,text/s2,text/s3");
-               }
-
-               @Override /* Serializer */
-               public WriterSerializerSession 
createSession(SerializerSessionArgs args) {
-                       return new WriterSerializerSession(args) {
-
-                               @Override /* SerializerSession */
-                               protected void doSerialize(SerializerPipe out, 
Object o) throws Exception {
-                                       
out.getWriter().write("p1="+getProperty("p1", 
String.class)+",p2="+getProperty("p2", String.class)+",p3="+getProperty("p3", 
String.class)+",p4="+getProperty("p4", String.class)+",p5="+getProperty("p5", 
String.class)+",contentType="+getProperty("mediaType", String.class));
-                               }
-
-                               @Override /* SerializerSession */
-                               public Map<String,String> getResponseHeaders() {
-                                       ObjectMap p = getProperties();
-                                       if 
(p.containsKey("Override-Content-Type"))
-                                               return new 
AMap<String,String>().append("Content-Type", 
p.getString("Override-Content-Type"));
-                                       return Collections.emptyMap();
-                               }
-                       };
-               }
-       }
-
-       @RestHook(POST_CALL)
-       public void onPostCall(RestRequest req, RestResponse res) {
-               RequestProperties properties = req.getProperties();
-               properties.put("p2", "xp2");
-               properties.put("p4", "xp4");
-               properties.put("p5", "xp5"); // New property
-               String overrideAccept = req.getHeader("Override-Accept");
-               if (overrideAccept != null)
-                       req.getHeaders().put("Accept", overrideAccept);
-               String overrideContentType = 
req.getHeader("Override-Content-Type");
-               if (overrideContentType != null)
-                       properties.put("Override-Content-Type", 
overrideContentType);
-       }
-
-
-       
//====================================================================================================
-       // Test1 - Properties overridden via properties annotation.
-       
//====================================================================================================
-       @RestMethod(name=PUT, path="/testPropertiesOverridenByAnnotation",
-               properties={
-                       @Property(name="p3",value="mp3"),
-                       @Property(name="p4",value="mp4")
-               },
-               defaultRequestHeaders="Accept: text/s2"
-       )
-       public String testPropertiesOverridenByAnnotation() {
-               return "";
-       }
-
-       
//====================================================================================================
-       // Test2 - Properties overridden programmatically.
-       
//====================================================================================================
-       @RestMethod(name=PUT, path="/testPropertiesOverriddenProgramatically")
-       public String testPropertiesOverriddenProgramatically(RestRequest req, 
RequestProperties properties) throws Exception {
-               properties.put("p3", "pp3");
-               properties.put("p4", "pp4");
-               String accept = req.getHeader("Accept");
-               if (accept == null || accept.isEmpty())
-                       req.getHeaders().put("Accept", "text/s2");
-               return "";
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-test/src/main/java/org/apache/juneau/rest/test/OnPreCallResource.java
 
b/juneau-microservice/juneau-microservice-test/src/main/java/org/apache/juneau/rest/test/OnPreCallResource.java
deleted file mode 100644
index b341256..0000000
--- 
a/juneau-microservice/juneau-microservice-test/src/main/java/org/apache/juneau/rest/test/OnPreCallResource.java
+++ /dev/null
@@ -1,96 +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.test;
-
-import static org.apache.juneau.rest.annotation.HookEvent.*;
-import static org.apache.juneau.http.HttpMethodName.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.parser.*;
-import org.apache.juneau.plaintext.*;
-import org.apache.juneau.rest.*;
-import org.apache.juneau.rest.annotation.*;
-
-/**
- * JUnit automated testcase resource.
- * Validates that headers
- */
-@RestResource(
-       path="/testOnPreCall",
-       parsers=OnPreCallResource.TestParserA.class,
-       serializers=PlainTextSerializer.class,
-       properties={
-               @Property(name="p1",value="sp1"), // Unchanged servlet-level 
property.
-               @Property(name="p2",value="sp2"), // Servlet-level property 
overridden by onPreCall.
-               @Property(name="p3",value="sp3"), // Servlet-level property 
overridded by method.
-               @Property(name="p4",value="sp4")  // Servlet-level property 
overridden by method then onPreCall.
-       }
-)
-public class OnPreCallResource extends RestServlet {
-       private static final long serialVersionUID = 1L;
-
-       public static class TestParserA extends ReaderParser {
-
-               public TestParserA(PropertyStore ps) {
-                       super(ps, "text/a1", "text/a2", "text/a3");
-               }
-
-               @Override /* Parser */
-               public ReaderParserSession createSession(ParserSessionArgs 
args) {
-                       return new ReaderParserSession(args) {
-
-                               @Override /* ParserSession */
-                               @SuppressWarnings("unchecked")
-                               protected <T> T doParse(ParserPipe pipe, 
ClassMeta<T> type) throws Exception {
-                                       String matchingContentType = 
getProperty("mediaType", String.class);
-                                       return (T)("p1="+getProperty("p1", 
String.class)+",p2="+getProperty("p2", String.class)+",p3="+getProperty("p3", 
String.class)+",p4="+getProperty("p4", String.class)+",p5="+getProperty("p5", 
String.class)+",contentType="+matchingContentType);
-                               }
-                       };
-               }
-       }
-
-       @RestHook(PRE_CALL)
-       public void onPreCall(RestRequest req) {
-               RequestProperties properties = req.getProperties();
-               properties.put("p2", "xp2");
-               properties.put("p4", "xp4");
-               properties.put("p5", "xp5"); // New property
-               String overrideContentType = 
req.getHeader("Override-Content-Type");
-               if (overrideContentType != null)
-                       req.getHeaders().put("Content-Type", 
overrideContentType);
-       }
-
-
-       
//====================================================================================================
-       // Properties overridden via properties annotation.
-       
//====================================================================================================
-       @RestMethod(name=PUT, path="/testPropertiesOverriddenByAnnotation",
-               properties={
-                       @Property(name="p3",value="mp3"),
-                       @Property(name="p4",value="mp4")
-               }
-       )
-       public String testPropertiesOverriddenByAnnotation(@Body String in) {
-               return in;
-       }
-
-       
//====================================================================================================
-       // Properties overridden programmatically.
-       
//====================================================================================================
-       @RestMethod(name=PUT, path="/testPropertiesOverriddenProgrammatically")
-       public String testPropertiesOverriddenProgrammatically(RestRequest req, 
RequestProperties properties) throws Exception {
-               properties.put("p3", "pp3");
-               properties.put("p4", "pp4");
-               return req.getBody().asType(String.class);
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-test/src/main/java/org/apache/juneau/rest/test/Root.java
 
b/juneau-microservice/juneau-microservice-test/src/main/java/org/apache/juneau/rest/test/Root.java
index cdfc172..de2a8fe 100644
--- 
a/juneau-microservice/juneau-microservice-test/src/main/java/org/apache/juneau/rest/test/Root.java
+++ 
b/juneau-microservice/juneau-microservice-test/src/main/java/org/apache/juneau/rest/test/Root.java
@@ -35,8 +35,6 @@ import org.apache.juneau.rest.test.client.*;
                HtmlDocLinksResource.class,
                InterfaceProxyResource.class,
                LargePojosResource.class,
-               OnPostCallResource.class,
-               OnPreCallResource.class,
                OptionsWithoutNlsResource.class,
                OverlappingMethodsResource.class,
                ParsersResource.class,
diff --git 
a/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/OnPostCallTest.java
 
b/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/OnPostCallTest.java
deleted file mode 100644
index e7786b9..0000000
--- 
a/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/OnPostCallTest.java
+++ /dev/null
@@ -1,121 +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.test;
-
-import static org.junit.Assert.*;
-
-import java.io.*;
-
-import org.apache.juneau.rest.client.*;
-import org.junit.*;
-
-public class OnPostCallTest extends RestTestcase {
-
-       private static String URL = "/testOnPostCall";
-
-       
//====================================================================================================
-       // Properties overridden via properties annotation.
-       
//====================================================================================================
-       @Test
-       public void testPropertiesOverridenByAnnotation() throws Exception {
-               RestClient client = 
TestMicroservice.client().accept("text/s1").build();
-               String url = URL + "/testPropertiesOverridenByAnnotation";
-               String r;
-               RestCall rc;
-
-               r = client.doPut(url, new 
StringReader("")).getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s1", r);
-
-               r = client.doPut(url, new 
StringReader("")).header("Override-Accept", "text/s2").getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s2", r);
-
-               rc = client.doPut(url, new 
StringReader("")).header("Override-Content-Type", "text/s3").connect();
-               r = rc.getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s1", r);
-               
assertTrue(rc.getResponse().getFirstHeader("Content-Type").getValue().startsWith("text/s3"));
-
-               client.closeQuietly();
-       }
-
-       
//====================================================================================================
-       // Properties overridden via properties annotation.  Default Accept 
header.
-       
//====================================================================================================
-       @Test
-       public void testPropertiesOverridenByAnnotationDefaultAccept() throws 
Exception {
-               RestClient client = 
TestMicroservice.client().accept("").build();
-               String url = URL + "/testPropertiesOverridenByAnnotation";
-               String r;
-               RestCall rc;
-
-               r = client.doPut(url, new 
StringReader("")).getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s2", r);
-
-               r = client.doPut(url, new 
StringReader("")).header("Override-Accept", "text/s3").getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s3", r);
-
-               rc = client.doPut(url, new 
StringReader("")).header("Override-Content-Type", "text/s3").connect();
-               r = rc.getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s2", r);
-               
assertTrue(rc.getResponse().getFirstHeader("Content-Type").getValue().startsWith("text/s3"));
-
-               client.closeQuietly();
-       }
-
-       
//====================================================================================================
-       // Properties overridden programmatically.
-       
//====================================================================================================
-       @Test
-       public void testPropertiesOverriddenProgramatically() throws Exception {
-               RestClient client = 
TestMicroservice.client().accept("text/s1").build();
-               String url = URL + "/testPropertiesOverriddenProgramatically";
-               String r;
-               RestCall rc;
-
-               r = client.doPut(url, new 
StringReader("")).getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s1", r);
-
-               r = client.doPut(url, new 
StringReader("")).header("Override-Accept", "text/s2").getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s2", r);
-
-               rc = client.doPut(url, new 
StringReader("")).header("Override-Content-Type", "text/s3").connect();
-               r = rc.getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s1", r);
-               
assertTrue(rc.getResponse().getFirstHeader("Content-Type").getValue().startsWith("text/s3"));
-
-               client.closeQuietly();
-       }
-
-       
//====================================================================================================
-       // Properties overridden programmatically.  Default Accept header.
-       
//====================================================================================================
-       @Test
-       public void testPropertiesOverriddenProgramaticallyDefaultAccept() 
throws Exception {
-               RestClient client = 
TestMicroservice.client().accept("").build();
-               String url = URL + "/testPropertiesOverriddenProgramatically";
-               String r;
-               RestCall rc;
-
-               r = client.doPut(url, new 
StringReader("")).getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s2", r);
-
-               r = client.doPut(url, new 
StringReader("")).header("Override-Accept", "text/s3").getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s3", r);
-
-               rc = client.doPut(url, new 
StringReader("")).header("Override-Content-Type", "text/s3").connect();
-               r = rc.getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s2", r);
-               
assertTrue(rc.getResponse().getFirstHeader("Content-Type").getValue().startsWith("text/s3"));
-
-               client.closeQuietly();
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/OnPreCallTest.java
 
b/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/OnPreCallTest.java
deleted file mode 100644
index 12a4201..0000000
--- 
a/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/OnPreCallTest.java
+++ /dev/null
@@ -1,61 +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.test;
-
-import static org.junit.Assert.*;
-
-import java.io.*;
-
-import org.apache.juneau.rest.client.*;
-import org.junit.*;
-
-public class OnPreCallTest extends RestTestcase {
-
-       private static String URL = "/testOnPreCall";
-
-       
//====================================================================================================
-       // Properties overridden via properties annotation.
-       
//====================================================================================================
-       @Test
-       public void testPropertiesOverriddenByAnnotation() throws Exception {
-               RestClient client = 
TestMicroservice.client().contentType("text/a1").accept("text/plain").build();
-               String url = URL + "/testPropertiesOverriddenByAnnotation";
-               String r;
-
-               r = client.doPut(url, new 
StringReader("")).getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/a1", r);
-
-               r = client.doPut(url, new 
StringReader("")).header("Override-Content-Type", 
"text/a2").getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/a2", r);
-
-               client.closeQuietly();
-       }
-
-       
//====================================================================================================
-       // Properties overridden programmatically.
-       
//====================================================================================================
-       @Test
-       public void testPropertiesOverriddenProgrammatically() throws Exception 
{
-               RestClient client = 
TestMicroservice.client().contentType("text/a1").accept("text/plain").build();
-               String url = URL + "/testPropertiesOverriddenProgrammatically";
-               String r;
-
-               r = client.doPut(url, new 
StringReader("")).getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=pp3,p4=pp4,p5=xp5,contentType=text/a1", r);
-
-               r = client.doPut(url, new 
StringReader("")).header("Override-Content-Type", 
"text/a2").getResponseAsString();
-               
assertEquals("p1=sp1,p2=xp2,p3=pp3,p4=pp4,p5=xp5,contentType=text/a2", r);
-
-               client.closeQuietly();
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
 
b/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
index eb14165..ecca8bf 100644
--- 
a/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
+++ 
b/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
@@ -34,8 +34,6 @@ import org.junit.runners.Suite.*;
        InterfaceProxyTest.class,
        JacocoDummyTest.class,
        LargePojosTest.class,
-       OnPostCallTest.class,
-       OnPreCallTest.class,
        OptionsWithoutNlsTest.class,
        OverlappingMethodsTest.class,
        ParsersTest.class,
diff --git 
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/RestHookPostCallTest.java
 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/RestHookPostCallTest.java
new file mode 100644
index 0000000..1c632fd
--- /dev/null
+++ 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/RestHookPostCallTest.java
@@ -0,0 +1,133 @@
+// 
***************************************************************************************************************************
+// * 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 org.apache.juneau.http.HttpMethodName.*;
+import static org.apache.juneau.rest.annotation.HookEvent.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.rest.*;
+import org.apache.juneau.rest.mock.*;
+import org.apache.juneau.serializer.*;
+import org.apache.juneau.utils.*;
+import org.junit.*;
+import org.junit.runners.*;
+
+/**
+ * Tests aspects of @RestHook(POST_CALL).
+ */
+@SuppressWarnings({"javadoc"})
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class RestHookPostCallTest {
+
+       
//=================================================================================================================
+       // @RestHook(POST_CALL)
+       
//=================================================================================================================
+
+       @RestResource(
+               serializers=A01.class,
+               properties={
+                       @Property(name="p1",value="sp1"), // Unchanged 
servlet-level property.
+                       @Property(name="p2",value="sp2"), // Servlet-level 
property overridden by onPostCall.
+                       @Property(name="p3",value="sp3"), // Servlet-level 
property overridded by method.
+                       @Property(name="p4",value="sp4")  // Servlet-level 
property overridden by method then onPostCall.
+               }
+       )
+       public static class A {
+
+               @RestHook(POST_CALL)
+               public void onPostCall(RestRequest req, RestResponse res) {
+                       RequestProperties properties = req.getProperties();
+                       properties.put("p2", "xp2");
+                       properties.put("p4", "xp4");
+                       properties.put("p5", "xp5"); // New property
+                       String overrideAccept = 
req.getHeader("Override-Accept");
+                       if (overrideAccept != null)
+                               req.getHeaders().put("Accept", overrideAccept);
+                       String overrideContentType = 
req.getHeader("Override-Content-Type");
+                       if (overrideContentType != null)
+                               properties.put("Override-Content-Type", 
overrideContentType);
+               }
+
+               @RestMethod(name=PUT, path="/propertiesOverridenByAnnotation",
+                       properties={
+                               @Property(name="p3",value="mp3"),
+                               @Property(name="p4",value="mp4")
+                       },
+                       defaultRequestHeaders="Accept: text/s2"
+               )
+               public String a01() {
+                       return null;
+               }
+
+               @RestMethod(name=PUT, 
path="/propertiesOverriddenProgramatically")
+               public String a02(RestRequest req, RequestProperties 
properties) throws Exception {
+                       properties.put("p3", "pp3");
+                       properties.put("p4", "pp4");
+                       String accept = req.getHeader("Accept");
+                       if (accept == null || accept.isEmpty())
+                               req.getHeaders().put("Accept", "text/s2");
+                       return null;
+               }
+       }
+       static MockRest a = MockRest.create(A.class);
+
+       public static class A01 extends WriterSerializer {
+               public A01(PropertyStore ps) {
+                       super(ps, "test/s1", "text/s1,text/s2,text/s3");
+               }
+               @Override /* Serializer */
+               public WriterSerializerSession 
createSession(SerializerSessionArgs args) {
+                       return new WriterSerializerSession(args) {
+                               @Override /* SerializerSession */
+                               protected void doSerialize(SerializerPipe out, 
Object o) throws Exception {
+                                       
out.getWriter().write("p1="+getProperty("p1", 
String.class)+",p2="+getProperty("p2", String.class)+",p3="+getProperty("p3", 
String.class)+",p4="+getProperty("p4", String.class)+",p5="+getProperty("p5", 
String.class)+",contentType="+getProperty("mediaType", String.class));
+                               }
+                               @Override /* SerializerSession */
+                               public Map<String,String> getResponseHeaders() {
+                                       ObjectMap p = getProperties();
+                                       if 
(p.containsKey("Override-Content-Type"))
+                                               return new 
AMap<String,String>().append("Content-Type", 
p.getString("Override-Content-Type"));
+                                       return Collections.emptyMap();
+                               }
+                       };
+               }
+       }
+
+       @Test
+       public void a01a_propertiesOverridenByAnnotation() throws Exception {
+               a.request("PUT", 
"/propertiesOverridenByAnnotation").accept("text/s1").execute().assertBody("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s1");
+               a.request("PUT", 
"/propertiesOverridenByAnnotation").accept("text/s1").header("Override-Accept", 
"text/s2").execute().assertBody("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s2");
+               a.request("PUT", 
"/propertiesOverridenByAnnotation").accept("text/s1").header("Override-Content-Type",
 
"text/s3").execute().assertBody("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s1");
+       }
+       @Test
+       public void a01b_propertiesOverridenByAnnotation_defaultAccept() throws 
Exception {
+               a.request("PUT", 
"/propertiesOverridenByAnnotation").execute().assertBody("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s2");
+               a.request("PUT", 
"/propertiesOverridenByAnnotation").header("Override-Accept", 
"text/s3").execute().assertBody("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s3");
+               a.request("PUT", 
"/propertiesOverridenByAnnotation").header("Override-Content-Type", 
"text/s3").execute().assertBody("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/s2");
+       }
+       @Test
+       public void a02a_propertiesOverriddenProgramatically() throws Exception 
{
+               a.request("PUT", 
"/propertiesOverriddenProgramatically").accept("text/s1").execute().assertBody("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s1");
+               a.request("PUT", 
"/propertiesOverriddenProgramatically").accept("text/s1").header("Override-Accept",
 
"text/s2").execute().assertBody("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s2");
+               a.request("PUT", 
"/propertiesOverriddenProgramatically").accept("text/s1").header("Override-Content-Type",
 
"text/s3").execute().assertBody("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s1");
+       }
+       @Test
+       public void a02b_propertiesOverriddenProgramatically_defaultAccept() 
throws Exception {
+               a.request("PUT", 
"/propertiesOverriddenProgramatically").execute().assertBody("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s2");
+               a.request("PUT", 
"/propertiesOverriddenProgramatically").header("Override-Accept", 
"text/s3").execute().assertBody("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s3");
+               a.request("PUT", 
"/propertiesOverriddenProgramatically").header("Override-Content-Type", 
"text/s3").execute().assertBody("p1=sp1,p2=xp2,p3=pp3,p4=xp4,p5=xp5,contentType=text/s2");
+       }
+}
diff --git 
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/RestHookPreCallTest.java
 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/RestHookPreCallTest.java
new file mode 100644
index 0000000..ca63420
--- /dev/null
+++ 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/RestHookPreCallTest.java
@@ -0,0 +1,104 @@
+// 
***************************************************************************************************************************
+// * 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 org.apache.juneau.http.HttpMethodName.*;
+import static org.apache.juneau.rest.annotation.HookEvent.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.parser.*;
+import org.apache.juneau.rest.*;
+import org.apache.juneau.rest.mock.*;
+import org.junit.*;
+import org.junit.runners.*;
+
+/**
+ * Tests aspects of @RestHook(PRE_CALL).
+ */
+@SuppressWarnings({"javadoc"})
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class RestHookPreCallTest {
+
+       
//=================================================================================================================
+       // @RestHook(PRE_CALL)
+       
//=================================================================================================================
+       @RestResource(
+               parsers=A01.class,
+               properties={
+                       @Property(name="p1",value="sp1"), // Unchanged 
servlet-level property.
+                       @Property(name="p2",value="sp2"), // Servlet-level 
property overridden by onPreCall.
+                       @Property(name="p3",value="sp3"), // Servlet-level 
property overridded by method.
+                       @Property(name="p4",value="sp4")  // Servlet-level 
property overridden by method then onPreCall.
+               }
+       )
+       public static class A {
+
+               @RestHook(PRE_CALL)
+               public void onPreCall(RestRequest req) {
+                       RequestProperties properties = req.getProperties();
+                       properties.put("p2", "xp2");
+                       properties.put("p4", "xp4");
+                       properties.put("p5", "xp5"); // New property
+                       String overrideContentType = 
req.getHeader("Override-Content-Type");
+                       if (overrideContentType != null)
+                               req.getHeaders().put("Content-Type", 
overrideContentType);
+               }
+
+               @RestMethod(name=PUT, path="/propertiesOverriddenByAnnotation",
+                       properties={
+                               @Property(name="p3",value="mp3"),
+                               @Property(name="p4",value="mp4")
+                       }
+               )
+               public String a01(@Body String in) {
+                       return in;
+               }
+
+               @RestMethod(name=PUT, 
path="/propertiesOverriddenProgrammatically")
+               public String a02(RestRequest req, RequestProperties 
properties) throws Exception {
+                       properties.put("p3", "pp3");
+                       properties.put("p4", "pp4");
+                       return req.getBody().asType(String.class);
+               }
+       }
+       static MockRest a = MockRest.create(A.class);
+
+       public static class A01 extends ReaderParser {
+               public A01(PropertyStore ps) {
+                       super(ps, "text/a1", "text/a2", "text/a3");
+               }
+               @Override /* Parser */
+               public ReaderParserSession createSession(ParserSessionArgs 
args) {
+                       return new ReaderParserSession(args) {
+                               @Override /* ParserSession */
+                               @SuppressWarnings("unchecked")
+                               protected <T> T doParse(ParserPipe pipe, 
ClassMeta<T> type) throws Exception {
+                                       String matchingContentType = 
getProperty("mediaType", String.class);
+                                       return (T)("p1="+getProperty("p1", 
String.class)+",p2="+getProperty("p2", String.class)+",p3="+getProperty("p3", 
String.class)+",p4="+getProperty("p4", String.class)+",p5="+getProperty("p5", 
String.class)+",contentType="+matchingContentType);
+                               }
+                       };
+               }
+       }
+
+       @Test
+       public void a01_propertiesOverriddenByAnnotation() throws Exception {
+               a.request("PUT", 
"/propertiesOverriddenByAnnotation").contentType("text/a1").execute().assertBody("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/a1");
+               a.request("PUT", 
"/propertiesOverriddenByAnnotation").contentType("text/a1").header("Override-Content-Type",
 
"text/a2").execute().assertBody("p1=sp1,p2=xp2,p3=mp3,p4=xp4,p5=xp5,contentType=text/a2");
+       }
+
+       @Test
+       public void a02_propertiesOverriddenProgrammatically() throws Exception 
{
+               a.request("PUT", 
"/propertiesOverriddenProgrammatically").contentType("text/a1").execute().assertBody("p1=sp1,p2=xp2,p3=pp3,p4=pp4,p5=xp5,contentType=text/a1");
+               a.request("PUT", 
"/propertiesOverriddenProgrammatically").contentType("text/a1").header("Override-Content-Type",
 
"text/a2").execute().assertBody("p1=sp1,p2=xp2,p3=pp3,p4=pp4,p5=xp5,contentType=text/a2");
+       }
+}

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to