Added FormParam

svn path=/trunk/; revision=368
diff --git a/spec/chapters/resources.tex b/spec/chapters/resources.tex
index 4525241..843da25 100644
--- a/spec/chapters/resources.tex
+++ b/spec/chapters/resources.tex
@@ -31,6 +31,7 @@
 \item[\MatrixParam] Extracts the value of a URI matrix parameter.
 \item[\QueryParam] Extracts the value of a URI query parameter.
 \item[\PathParam] Extracts the value of a URI template parameter.
+\item[\FormParam] Extracts the value of a form parameter contained within a request entity body.
 \item[\CookieParam] Extracts the value of a cookie.
 \item[\HeaderParam] Extracts the value of a header.
 \item[\Context] Injects an instance of a supported resource, see chapters \ref{context} and \ref{environment} for more details.
@@ -51,7 +52,7 @@
 
 The \code{Default\-Value} annotation may be used to supply a default value for some of the above, see the Javadoc for \code{Default\-Value} for usage details and rules for generating a value in the absence of this annotation and the requested data. The \code{Encoded} annotation may be used to disable automatic URI decoding for \MatrixParam, \QueryParam\ and \PathParam\ annotated fields and properties.
 
-A \WebAppExc\ thrown during construction of field or property values using \ref{stringctor} or \ref{valueofmethod} above is processed directly as described in section \ref{method_exc}. Other exceptions thrown during construction of field or property values using \ref{stringctor} or \ref{valueofmethod} above are treated as client errors: if the field or property is annotated with \MatrixParam, \QueryParam\ or \PathParam\ then an implementation MUST generate a \WebAppExc\ that wraps the thrown exception with a not found response (404 status) and no entity; if the field or property is annotated with \HeaderParam\ or \CookieParam\ then an implementation MUST generate a \WebAppExc\ that wraps the thrown exception with  a client error response (400 status) and no entity. The \WebAppExc\ MUST be then be processed as described in section \ref{method_exc}.
+A \WebAppExc\ thrown during construction of field or property values using \ref{stringctor} or \ref{valueofmethod} above is processed directly as described in section \ref{method_exc}. Other exceptions thrown during construction of field or property values using \ref{stringctor} or \ref{valueofmethod} above are treated as client errors: if the field or property is annotated with \MatrixParam, \QueryParam\ or \PathParam\ then an implementation MUST generate a \WebAppExc\ that wraps the thrown exception with a not found response (404 status) and no entity; if the field or property is annotated with \FormParam, \HeaderParam\ or \CookieParam\ then an implementation MUST generate a \WebAppExc\ that wraps the thrown exception with  a client error response (400 status) and no entity. The \WebAppExc\ MUST be then be processed as described in section \ref{method_exc}.
 
 \section{Resource Methods}
 \label{resource_method}
@@ -74,7 +75,11 @@
 \item Exceptions thrown during construction of parameter values are treated the same as exceptions thrown during construction of field or bean property values, see section \ref{resource_field}.
 \end{itemize}
 
-The value of a non-annotated  parameter, called the entity parameter, is mapped from the request entity body. Resource methods MUST NOT have more than one parameter that is not annotated with one of the above-listed annotations. Conversion between an entity body and a Java type is the responsibility of an entity provider, see section \ref{entity_providers}.
+\subsubsection{Entity Parameters}
+
+The value of a non-annotated parameter, called the entity parameter, is mapped from the request entity body. Conversion between an entity body and a Java type is the responsibility of an entity provider, see section \ref{entity_providers}.
+
+Resource methods MUST NOT have more than one parameter that is not annotated with one of the above-listed annotations. If a sibling method parameter, class field, or property, is annotated with \FormParam, the type of the entity parameter MUST be \code{Multi\-valued\-Map<String, String>}.
 
 \subsection{Return Type}
 \label{resource_method_return}
diff --git a/spec/styles/macros.tex b/spec/styles/macros.tex
index f466da7..864cfec 100644
--- a/spec/styles/macros.tex
+++ b/spec/styles/macros.tex
@@ -18,6 +18,7 @@
 \newcommand{\ProduceMime}{\code{@Produce\-Mime}}
 \newcommand{\Provider}{\code{@Provider}}
 \newcommand{\QueryParam}{\code{@Query\-Param}}
+\newcommand{\FormParam}{\code{@Form\-Param}}
 \newcommand{\CookieParam}{\code{@Cookie\-Param}}
 \newcommand{\Request}{\code{Request}}
 \newcommand{\Response}{\code{Response}}