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/09/08 23:25:37 UTC

svn commit: r21540 [19/27] - in /release/incubator/juneau: juneau-rest-client/ juneau-rest-client/.settings/ juneau-rest-client/bin/ juneau-rest-client/src/ juneau-rest-client/src/main/ juneau-rest-client/src/main/java/ juneau-rest-client/src/main/java...

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/converters/Traversable.java
==============================================================================
--- release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/converters/Traversable.java (added)
+++ release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/converters/Traversable.java Fri Sep  8 23:25:34 2017
@@ -0,0 +1,72 @@
+// ***************************************************************************************************************************
+// * 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.converters;
+
+import javax.servlet.http.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.rest.*;
+import org.apache.juneau.transform.*;
+import org.apache.juneau.utils.*;
+
+/**
+ * Converter for enabling of {@link PojoRest} support on response objects returned by a <code>@RestMethod</code> method.
+ *
+ * <p>
+ * When enabled, objects in a POJO tree returned by the REST method can be addressed through additional URL path
+ * information.
+ *
+ * <p class='bcode'>
+ * 	<jc>// Resource method on resource "http://localhost:8080/sample/addressBook"</jc>
+ * 	<ja>@RestMethod</ja>(name=<js>"GET"</js>, converters=Traversable.<jk>class</jk>)
+ * 	<jk>public void</jk> doGet(RestRequest req, RestResponse res) {
+ * 		<jk>return new</jk> AddressBook();
+ * 	}
+ *
+ * 	<jc>// Sample usage</jc>
+ * 	<jk>public static void</jk> main(String[] args) {
+ * 		<jc>// Get the zip code of the 2nd address of the first person in the address book.</jc>
+ * 		RestCall r = <jk>new</jk> RestClient().doGet(<js>"http://localhost:8080/sample/addressBook/0/addresses/1/zip"</js>);
+ * 		<jk>int</jk> zip = r.getResponse(Integer.<jk>class</jk>);
+ * 	}
+ * </p>
+ *
+ * <p>
+ * See {@link PojoRest} for additional information on addressing elements in a POJO tree using URL notation.
+ */
+public final class Traversable implements RestConverter {
+
+	@Override /* RestConverter */
+	@SuppressWarnings({"rawtypes", "unchecked"})
+	public Object convert(RestRequest req, Object o, ClassMeta cm) throws RestException {
+		if (o == null)
+			return null;
+
+		if (req.getPathMatch().getRemainder() != null) {
+			try {
+				BeanSession bs = req.getBeanSession();
+				PojoSwap swap = cm.getPojoSwap(bs);
+				if (swap != null)
+					o = swap.swap(bs, o);
+				PojoRest p = new PojoRest(o, req.getBody().getReaderParser());
+				o = p.get(req.getPathMatch().getRemainder());
+			} catch (PojoRestException e) {
+				throw new RestException(e.getStatus(), e);
+			} catch (Exception e) {
+				throw new RestException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
+			}
+		}
+
+		return o;
+	}
+}

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/converters/Traversable.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/converters/package.html
==============================================================================
--- release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/converters/package.html (added)
+++ release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/converters/package.html Fri Sep  8 23:25:34 2017
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML>
+<!--
+/***************************************************************************************************************************
+ * 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.
+ *
+ ***************************************************************************************************************************/
+ -->
+<html>
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<style type="text/css">
+		/* For viewing in Page Designer */
+		@IMPORT url("../../../../javadoc.css");
+
+		/* For viewing in REST interface */
+		@IMPORT url("../htdocs/javadoc.css");
+		body { 
+			margin: 20px; 
+		}	
+	</style>
+	<script>
+		/* Replace all @code and @link tags. */	
+		window.onload = function() {
+			document.body.innerHTML = document.body.innerHTML.replace(/\{\@code ([^\}]+)\}/g, '<code>$1</code>');
+			document.body.innerHTML = document.body.innerHTML.replace(/\{\@link (([^\}]+)\.)?([^\.\}]+)\}/g, '<code>$3</code>');
+		}
+	</script>
+</head>
+<body>
+<p>Predefined REST response converters</p>
+</body>
+</html>
\ No newline at end of file

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/converters/package.html
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/AddressBook.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/AddressBook.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/AddressBookJson.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/AddressBookJson.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/AddressBookOptions.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/AddressBookOptions.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/AddressBook_juneaustyle.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/AddressBook_juneaustyle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResource1.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResource1.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResource2.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResource2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResource3.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResource3.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResource4.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResource4.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResourceOptions.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResourceOptions.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResourceOptionsJson.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/HelloWorldResourceOptionsJson.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/Options2.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/Options2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/OptionsPage.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/OptionsPage.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/Samples_RootResources.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/Samples_RootResources.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/UrlEncodedForm.png
==============================================================================
Binary file - no diff available.

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/doc-files/UrlEncodedForm.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/BeanDescription.java
==============================================================================
--- release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/BeanDescription.java (added)
+++ release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/BeanDescription.java Fri Sep  8 23:25:34 2017
@@ -0,0 +1,73 @@
+// ***************************************************************************************************************************
+// * 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.labels;
+
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
+
+/**
+ * Simple serializable bean description.
+ *
+ * <p>
+ * Given a particular class type, this serializes the class into the fully-qualified class name and the properties
+ * associated with the class.
+ *
+ * <p>
+ * Useful for rendering simple information about a bean during REST OPTIONS requests.
+ */
+@Bean(properties="type,properties")
+public final class BeanDescription {
+
+	/** The bean class type. */
+	public String type;
+
+	/** The bean properties. */
+	public BeanPropertyDescription[] properties;
+
+	/**
+	 * Constructor
+	 *
+	 * @param c The bean class type.
+	 */
+	public BeanDescription(Class<?> c) {
+		type = c.getName();
+		BeanMeta<?> bm = BeanContext.DEFAULT.getBeanMeta(c);
+		properties = new BeanPropertyDescription[bm.getPropertyMetas().size()];
+		int i = 0;
+		for (BeanPropertyMeta pm : bm.getPropertyMetas())
+			properties[i++] = new BeanPropertyDescription(pm.getName(), pm.getClassMeta());
+	}
+
+	/**
+	 * Information about a bean property.
+	 */
+	public static class BeanPropertyDescription {
+
+		/** The bean property name. */
+		public String name;
+
+		/** The bean property filtered class type. */
+		public String type;
+
+		/**
+		 * Constructor.
+		 *
+		 * @param name The bean property name.
+		 * @param type The bean property class type.
+		 */
+		public BeanPropertyDescription(String name, ClassMeta<?> type) {
+			this.name = name;
+			this.type = type.getSerializedClassMeta(null).toString();
+		}
+	}
+}

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/BeanDescription.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/ChildResourceDescriptions.java
==============================================================================
--- release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/ChildResourceDescriptions.java (added)
+++ release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/ChildResourceDescriptions.java Fri Sep  8 23:25:34 2017
@@ -0,0 +1,61 @@
+// ***************************************************************************************************************************
+// * 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.labels;
+
+import java.util.*;
+
+import org.apache.juneau.rest.*;
+
+/**
+ * A POJO structure that describes the list of child resources associated with a resource.
+ *
+ * <p>
+ * Typically used in top-level GET methods of router resources to render a list of available child resources.
+ */
+public class ChildResourceDescriptions extends LinkedList<ResourceDescription> {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param context The servlet context that this bean describes.
+	 * @param req The HTTP servlet request.
+	 */
+	public ChildResourceDescriptions(RestContext context, RestRequest req) {
+		this(context, req, false);
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param context The servlet context that this bean describes.
+	 * @param req The HTTP servlet request.
+	 * @param sort
+	 * 	If <jk>true</jk>, list will be ordered by name alphabetically.
+	 * 	Default is to maintain the order as specified in the annotation.
+	 */
+	public ChildResourceDescriptions(RestContext context, RestRequest req, boolean sort) {
+		for (Map.Entry<String,RestContext> e : context.getChildResources().entrySet())
+			add(new ResourceDescription(e.getKey(), e.getValue().getInfoProvider().getTitle(req)));
+		if (sort)
+			Collections.sort(this);
+	}
+
+	/**
+	 * Bean constructor.
+	 */
+	public ChildResourceDescriptions() {
+		super();
+	}
+}

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/ChildResourceDescriptions.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/NameDescription.java
==============================================================================
--- release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/NameDescription.java (added)
+++ release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/NameDescription.java Fri Sep  8 23:25:34 2017
@@ -0,0 +1,78 @@
+// ***************************************************************************************************************************
+// * 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.labels;
+
+import org.apache.juneau.annotation.*;
+
+/**
+ * Simple bean with {@code name} and {@code description} properties.
+ *
+ * <p>
+ * Primarily used for constructing tables with name/description columns on REST OPTIONS requests.
+ */
+@Bean(properties="name,description")
+public class NameDescription {
+
+	private Object name;
+	private Object description;
+
+	/** No-arg constructor.  Used for JUnit testing of OPTIONS pages. */
+	public NameDescription() {}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param name A name.
+	 * @param description A description.
+	 */
+	public NameDescription(Object name, Object description) {
+		this.name = name;
+		this.description = description;
+	}
+
+	/**
+	 * Returns the name field on this label.
+	 *
+	 * @return The name.
+	 */
+	public Object getName() {
+		return name;
+	}
+
+	/**
+	 * Sets the name field on this label to a new value.
+	 *
+	 * @param name The new name.
+	 */
+	public void setName(Object name) {
+		this.name = name;
+	}
+
+	/**
+	 * Returns the description field on this label.
+	 *
+	 * @return The description.
+	 */
+	public Object getDescription() {
+		return description;
+	}
+
+	/**
+	 * Sets the description field on this label to a new value.
+	 *
+	 * @param description The new description.
+	 */
+	public void setDescription(Object description) {
+		this.description = description;
+	}
+}

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/NameDescription.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/ResourceDescription.java
==============================================================================
--- release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/ResourceDescription.java (added)
+++ release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/ResourceDescription.java Fri Sep  8 23:25:34 2017
@@ -0,0 +1,60 @@
+// ***************************************************************************************************************************
+// * 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.labels;
+
+import org.apache.juneau.html.annotation.*;
+
+/**
+ * Shortcut label for child resources.  Typically used in router resources.
+ *
+ * <h5 class='section'>Example:</h5>
+ * <p class='bcode'>
+ * 	<jk>new</jk> ResourceLink(<js>"httpTool"</js>, <js>"HTTP request test client"</js>);
+ * </p>
+ */
+public final class ResourceDescription extends NameDescription implements Comparable<ResourceDescription> {
+
+	/**
+	 * Constructor.
+	 *
+	 * @param name The name of the child resource.
+	 * @param description The description of the child resource.
+	 */
+	public ResourceDescription(String name, String description) {
+		super(name, description);
+	}
+
+	/** No-arg constructor.  Used for JUnit testing of OPTIONS pages. */
+	public ResourceDescription() {}
+
+	@Override /* NameDescription */
+	@Html(link="servlet:/{name}")
+	public Object getName() {
+		return super.getName();
+	}
+
+	@Override /* Comparable */
+	public int compareTo(ResourceDescription o) {
+		return getName().toString().compareTo(o.getName().toString());
+	}
+
+	@Override /* Object */
+	public boolean equals(Object o) {
+		return (o instanceof ResourceDescription) && ((ResourceDescription)o).getName().equals(getName());
+	}
+
+	@Override /* Object */
+	public int hashCode() {
+		return getName().hashCode();
+	}
+}

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/ResourceDescription.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/package.html
==============================================================================
--- release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/package.html (added)
+++ release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/package.html Fri Sep  8 23:25:34 2017
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML>
+<!--
+/***************************************************************************************************************************
+ * 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.
+ *
+ ***************************************************************************************************************************/
+ -->
+<html>
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<style type="text/css">
+		/* For viewing in Page Designer */
+		@IMPORT url("../../../../javadoc.css");
+
+		/* For viewing in REST interface */
+		@IMPORT url("../htdocs/javadoc.css");
+		body { 
+			margin: 20px; 
+		}	
+	</style>
+	<script>
+		/* Replace all @code and @link tags. */	
+		window.onload = function() {
+			document.body.innerHTML = document.body.innerHTML.replace(/\{\@code ([^\}]+)\}/g, '<code>$1</code>');
+			document.body.innerHTML = document.body.innerHTML.replace(/\{\@link (([^\}]+)\.)?([^\.\}]+)\}/g, '<code>$3</code>');
+		}
+	</script>
+</head>
+<body>
+<p>Various REST interface label classes</p>
+</body>
+</html>
\ No newline at end of file

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/labels/package.html
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/MultipartFormDataMatcher.java
==============================================================================
--- release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/MultipartFormDataMatcher.java (added)
+++ release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/MultipartFormDataMatcher.java Fri Sep  8 23:25:34 2017
@@ -0,0 +1,27 @@
+// ***************************************************************************************************************************
+// * 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.matchers;
+
+import org.apache.juneau.rest.*;
+
+/**
+ * Predefined matcher for matching requests with content type <js>"multipart/form-data"</js>.
+ */
+public class MultipartFormDataMatcher extends RestMatcher {
+
+	@Override /* RestMatcher */
+	public boolean matches(RestRequest req) {
+		String contentType = req.getContentType();
+		return contentType != null && contentType.startsWith("multipart/form-data");
+	}
+}

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/MultipartFormDataMatcher.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/UrlEncodedFormMatcher.java
==============================================================================
--- release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/UrlEncodedFormMatcher.java (added)
+++ release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/UrlEncodedFormMatcher.java Fri Sep  8 23:25:34 2017
@@ -0,0 +1,27 @@
+// ***************************************************************************************************************************
+// * 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.matchers;
+
+import org.apache.juneau.rest.*;
+
+/**
+ * Predefined matcher for matching requests with content type <js>"application/x-www-form-urlencoded"</js>.
+ */
+public class UrlEncodedFormMatcher extends RestMatcher {
+
+	@Override /* RestMatcher */
+	public boolean matches(RestRequest req) {
+		String contentType = req.getContentType();
+		return contentType != null && contentType.equals("application/x-www-form-urlencoded");
+	}
+}

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/UrlEncodedFormMatcher.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/package.html
==============================================================================
--- release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/package.html (added)
+++ release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/package.html Fri Sep  8 23:25:34 2017
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML>
+<!--
+/***************************************************************************************************************************
+ * 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.
+ *
+ ***************************************************************************************************************************/
+ -->
+<html>
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<style type="text/css">
+		/* For viewing in Page Designer */
+		@IMPORT url("../../../../../javadoc.css");
+
+		/* For viewing in REST interface */
+		@IMPORT url("../htdocs/javadoc.css");
+		body { 
+			margin: 20px; 
+		}	
+	</style>
+</head>
+<body>
+<p>Predefined Matchers</p>
+</body>
+</html>
\ No newline at end of file

Propchange: release/incubator/juneau/juneau-rest-server/src/main/java/org/apache/juneau/rest/matchers/package.html
------------------------------------------------------------------------------
    svn:mime-type = text/plain