You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/08/14 14:40:56 UTC

incubator-juneau-website git commit: Add info about @RestHook methods.

Repository: incubator-juneau-website
Updated Branches:
  refs/heads/asf-site 84931d4db -> ca543e5e9


Add info about @RestHook methods.

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/commit/ca543e5e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/tree/ca543e5e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/diff/ca543e5e

Branch: refs/heads/asf-site
Commit: ca543e5e925d37aa60366116aa2dc9d2d1c743b7
Parents: 84931d4
Author: JamesBognar <ja...@apache.org>
Authored: Mon Aug 14 10:40:54 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Mon Aug 14 10:40:54 2017 -0400

----------------------------------------------------------------------
 content/about.html | 54 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/ca543e5e/content/about.html
----------------------------------------------------------------------
diff --git a/content/about.html b/content/about.html
index 724bb16..f8f04d3 100644
--- a/content/about.html
+++ b/content/about.html
@@ -897,6 +897,60 @@
 	</p>
 	<br><hr>
 	<p>
+		Lifecycle hooks allow you to hook into lifecycle events of the servlet or REST call.
+		Like <ja>@RestMethod</ja> methods, the list of parameters are specified by the developer.
+	</p>
+	<p>
+		For example, if you want to add an initialization method to your resource:
+	</p>
+	<p class='bcode'>
+	<ja>@RestResource</ja>(...)
+	<jk>public class</jk> MyResource  {
+
+		<jc>// Our database.</jc>
+		<jk>private</jk> Map&lt;Integer,Object&gt; <jf>myDatabase</jf>;
+
+		<ja>@RestHook</ja>(<jsf>INIT</jsf>)
+		<jk>public void</jk> initMyDatabase(RestConfig config) <jk>throws</jk> Exception {
+			<jf>myDatabase</jf> = <jk>new</jk> LinkedHashMap&lt;&gt;();
+		}
+	}
+	</p>
+	<p>
+		Or if you want to intercept REST calls:
+	</p>
+	<p class='bcode'>
+	<ja>@RestResource</ja>(...)
+	<jk>public class</jk> MyResource {
+
+		<jc>// Add a request attribute to all incoming requests.</jc>
+		<ja>@RestHook</ja>(<jsf>PRE_CALL</jsf>)
+		<jk>public void</jk> onPreCall(RestRequest req) {
+			req.setAttribute(<js>"foo"</js>, <js>"bar"</js>);
+		}
+	}
+	</p>
+	<p>
+		The hook events can be broken down into two categories:
+	</p>
+	<ul class='spaced-list'>
+		<li>Resource lifecycle events:
+			<ul>
+				<li><jsf>INIT</jsf> - Right before initialization.
+				<li><jsf>POST_INIT</jsf> - Right after initialization.
+				<li><jsf>POST_INIT_CHILD_FIRST</jsf> - Right after initialization, but run child methods first.
+				<li><jsf>DESTROY</jsf> - Right before servlet destroy.
+			</ul>
+		<li>REST call lifecycle events:
+			<ul>
+				<li><jsf>START_CALL</jsf> - At the beginning of a REST call.
+				<li><jsf>PRE_CALL</jsf> - Right before the <ja>@RestMethod</ja> method is invoked.
+				<li><jsf>POST_CALL</jsf> - Right after the <ja>@RestMethod</ja> method is invoked.
+				<li><jsf>END_CALL} - At the end of the REST call after the response has been flushed.
+			</ul>
+	</ul>
+	<br><hr>
+	<p>
 		Auto-generated OPTIONS pages are constructed from Swagger DTO beans, here shown serialized as HTML:
 	</p>
 	<img class='bordered' src='images/Swagger.png'>