Author: heiko.braun(a)jboss.com
Date: 2007-11-13 10:49:19 -0500 (Tue, 13 Nov 2007)
New Revision: 5043
Added:
stack/native/branches/rest/src/test/java/org/jboss/test/rs/runtime/
stack/native/branches/rest/src/test/java/org/jboss/test/rs/runtime/RuntimeContextTestCase.java
Modified:
stack/native/branches/rest/ant-import/build-thirdparty.xml
stack/native/branches/rest/src/main/java/org/jboss/rs/deployment/DescriptorDeploymentAspect.java
stack/native/branches/rest/src/main/java/org/jboss/rs/deployment/ResourceServlet.java
stack/native/branches/rest/src/main/java/org/jboss/rs/model/ResourceLocator.java
stack/native/branches/rest/src/main/java/org/jboss/rs/model/ResourceModelParser.java
stack/native/branches/rest/src/main/java/org/jboss/rs/util/Convert.java
stack/native/branches/rest/src/main/resources/jbossws-native-config.xml
stack/native/branches/rest/src/test/java/org/jboss/test/rs/Widget.java
stack/native/branches/rest/src/test/java/org/jboss/test/rs/WidgetList.java
stack/native/branches/rest/version.properties
Log:
parse accept header, logging, cleanup
Modified: stack/native/branches/rest/ant-import/build-thirdparty.xml
===================================================================
--- stack/native/branches/rest/ant-import/build-thirdparty.xml 2007-11-13 11:09:59 UTC
(rev 5042)
+++ stack/native/branches/rest/ant-import/build-thirdparty.xml 2007-11-13 15:49:19 UTC
(rev 5043)
@@ -59,6 +59,8 @@
<get
src="${jboss.repository}/jboss/jbossws-jboss42/${jbossws-jboss42}/lib/jbossws-jboss42.jar"
dest="${thirdparty.dir}/jbossws-jboss421.jar" usetimestamp="true"
verbose="true"/>
<get
src="${jboss.repository}/jboss/jbossws-jboss42/${jbossws-jboss42}/lib/jbossws-jboss42-src.zip"
dest="${thirdparty.dir}/jbossws-jboss421-src.zip" usetimestamp="true"
verbose="true"/>
<get
src="${jboss.repository}/jboss/jbossws-jboss42/${jbossws-jboss42}/lib/jbossws-jboss42-resources.zip"
dest="${thirdparty.dir}/jbossws-jboss42-resources.zip"
usetimestamp="true" verbose="true"/>
+
+<get src="${jboss.repository}/jsr-311/${jsr-311}/lib/jsr311-api.jar"
dest="${thirdparty.dir}/jsr311-api.jar" usetimestamp="true"
verbose="true"/>
<get src="${jboss.repository}/apache-ant/${apache-ant}/lib/ant.jar"
dest="${thirdparty.dir}/ant.jar" usetimestamp="true"
verbose="true"/>
<get
src="${jboss.repository}/apache-collections/${apache-collections}/lib/commons-collections.jar"
dest="${thirdparty.dir}/commons-collections.jar" usetimestamp="true"
verbose="true"/>
Modified:
stack/native/branches/rest/src/main/java/org/jboss/rs/deployment/DescriptorDeploymentAspect.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/rs/deployment/DescriptorDeploymentAspect.java 2007-11-13
11:09:59 UTC (rev 5042)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/deployment/DescriptorDeploymentAspect.java 2007-11-13
15:49:19 UTC (rev 5043)
@@ -24,15 +24,9 @@
import org.jboss.rs.model.dd.DeploymentDescriptorParser;
import org.jboss.rs.model.dd.JbossrsType;
import org.jboss.rs.model.dd.ResourceType;
-import org.jboss.rs.ResourceRegistry;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
-import org.jboss.wsf.spi.deployment.Deployment;
-import org.jboss.wsf.spi.deployment.DeploymentAspect;
-import org.jboss.wsf.spi.deployment.DeploymentModelFactory;
-import org.jboss.wsf.spi.deployment.Endpoint;
-import org.jboss.wsf.spi.deployment.Service;
-import org.jboss.wsf.spi.deployment.UnifiedVirtualFile;
+import org.jboss.wsf.spi.deployment.*;
import java.io.IOException;
@@ -48,10 +42,12 @@
public class DescriptorDeploymentAspect extends DeploymentAspect
{
+ public final static String RSDD_POINTER = "jbossrs.dd.pointer";
+
public void create(Deployment deployment)
{
try
- {
+ {
UnifiedVirtualFile vf = getJBossRSDescriptor(deployment);
JbossrsType dd = DeploymentDescriptorParser.read(vf.toURL().openStream());
@@ -59,7 +55,7 @@
deployment.addAttachment(JbossrsType.class, dd);
Service service = deployment.getService();
-
+
for(ResourceType resourceDesc : dd.getResource())
{
String name = resourceDesc.getName() != null ? resourceDesc.getName() :
"";
@@ -74,12 +70,17 @@
{
throw new RuntimeException("Failed to parse JBossRS descriptor", e);
}
-
+
}
private UnifiedVirtualFile getJBossRSDescriptor(Deployment deployment)
{
- return (UnifiedVirtualFile)deployment.getProperty("jbossrs.dd.pointer");
+ Object vfs = deployment.getProperty(RSDD_POINTER);
+
+ if(null==vfs)
+ throw new IllegalArgumentException("JBossRS deployment descripto not
found");
+
+ return (UnifiedVirtualFile) vfs;
}
private Endpoint newEndpoint(String impl)
Modified:
stack/native/branches/rest/src/main/java/org/jboss/rs/deployment/ResourceServlet.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/rs/deployment/ResourceServlet.java 2007-11-13
11:09:59 UTC (rev 5042)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/deployment/ResourceServlet.java 2007-11-13
15:49:19 UTC (rev 5043)
@@ -95,11 +95,9 @@
{
// construct a runtime context
URI uri = new URI(req.getRequestURI());
- RuntimeContext rt = new RuntimeContext(method, uri, rootResources);
+ RuntimeContext rt = new RuntimeContext(method, uri, rootResources);
+ parseAcceptHeader(req, rt);
- // TODO: impement accept header parsing
- rt.parseAcceptHeader("text/plain, text/html");
-
// locate the resource to be invoked
ResourceResolver resolver = ResourceResolver.newInstance(rt);
ResourceMethod resourceMethod = resolver.resolve();
@@ -138,6 +136,14 @@
}
}
+ private void parseAcceptHeader(HttpServletRequest req, RuntimeContext rt) throws
ServletException {
+ String requestAccept = req.getHeader("Accept");
+ if(requestAccept!=null)
+ rt.parseAcceptHeader("text/plain, text/html");
+ else
+ throw new ServletException("Accept header is missing");
+ }
+
private void serverError(int status, String message, HttpServletResponse res)
{
try
Modified:
stack/native/branches/rest/src/main/java/org/jboss/rs/model/ResourceLocator.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/rs/model/ResourceLocator.java 2007-11-13
11:09:59 UTC (rev 5042)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/model/ResourceLocator.java 2007-11-13
15:49:19 UTC (rev 5043)
@@ -31,15 +31,6 @@
private String uriTemplate;
- UriParamHandler paramHandler = new UriParamHandler()
- {
-
- public void newUriParam(int regexGroup, String paramName)
- {
- System.out.println("UriParam: group="+regexGroup +",
name="+paramName);
- }
- };
-
ResourceLocator(ResourceModel target)
{
this.uriTemplate = target.getUriTemplate();
@@ -64,6 +55,6 @@
void freeze()
{
- initFromUriTemplate(this.uriTemplate, paramHandler);
+ initFromUriTemplate(this.uriTemplate, null);
}
}
Modified:
stack/native/branches/rest/src/main/java/org/jboss/rs/model/ResourceModelParser.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/rs/model/ResourceModelParser.java 2007-11-13
11:09:59 UTC (rev 5042)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/model/ResourceModelParser.java 2007-11-13
15:49:19 UTC (rev 5043)
@@ -22,6 +22,7 @@
package org.jboss.rs.model;
import org.jboss.rs.util.Convert;
+import org.jboss.logging.Logger;
import javax.ws.rs.UriTemplate;
import java.lang.annotation.Annotation;
@@ -33,6 +34,8 @@
*/
public class ResourceModelParser
{
+ private static Logger log = Logger.getLogger(ResourceModelParser.class);
+
ResourceModelParser()
{
}
@@ -50,7 +53,7 @@
UriTemplate rootUri = (UriTemplate)bean.getAnnotation(UriTemplate.class);
ResourceModel rootResource = new ResourceModel(rootUri.value(), bean);
- System.out.println("Creating resource model from bean: " + bean);
+ log.debug("Creating resource model from bean: " + bean);
parseInternal(rootResource);
@@ -70,24 +73,24 @@
// freeze resource
resource.freeze();
- System.out.println("---");
- System.out.println(resource);
+ log.debug("---");
+ log.debug(resource);
// freeze resource methods
for(ResourceMethod rm : resource.getResourceMethods())
{
rm.freeze();
- System.out.println(rm);
+ log.debug(rm);
}
// freeze sub resource methods
for(ResourceMethod srm : resource.getSubResourceMethods())
{
srm.freeze();
- System.out.println(srm);
+ log.debug(srm);
}
- System.out.println("---");
+ log.debug("---");
}
private void parseMethod(Method method, ResourceModel resource)
Modified: stack/native/branches/rest/src/main/java/org/jboss/rs/util/Convert.java
===================================================================
--- stack/native/branches/rest/src/main/java/org/jboss/rs/util/Convert.java 2007-11-13
11:09:59 UTC (rev 5042)
+++ stack/native/branches/rest/src/main/java/org/jboss/rs/util/Convert.java 2007-11-13
15:49:19 UTC (rev 5043)
@@ -80,7 +80,7 @@
return mimeStringsToMimeTypes(consumeMime.value());
}
- public static List<MimeType> annotationToMimeType(ProduceMime produceMime)
+ public static List<MimeType> annotationToMimeType(ProduceMime produceMime)
{
return mimeStringsToMimeTypes(produceMime.value());
}
@@ -93,9 +93,10 @@
{
StringTokenizer tokenizer = new StringTokenizer(mime, ",");
while(tokenizer.hasMoreTokens())
- {
- String tok = tokenizer.nextToken().trim();
- mimes.add( new MimeType(tok) );
+ {
+ String tok = tokenizer.nextToken().trim();
+ if(tok.indexOf("/") != -1) // Ignore mimes without subtype, i.e
'*; q=.2'
+ mimes.add( new MimeType(tok) );
}
}
catch (MimeTypeParseException e)
@@ -113,7 +114,7 @@
try
{
for(String s : mimeStrings)
- {
+ {
mimes.add( new MimeType(s) );
}
}
Modified: stack/native/branches/rest/src/main/resources/jbossws-native-config.xml
===================================================================
--- stack/native/branches/rest/src/main/resources/jbossws-native-config.xml 2007-11-13
11:09:59 UTC (rev 5042)
+++ stack/native/branches/rest/src/main/resources/jbossws-native-config.xml 2007-11-13
15:49:19 UTC (rev 5043)
@@ -159,8 +159,8 @@
</bean>
- <bean name="WSNativeDeploymentAspectInstallerREST"
class="org.jboss.wsf.framework.deployment.DeploymentAspectInstaller">
- <property name="manager"><inject
bean="WSDeploymentAspectManagerREST"/></property>
+ <bean name="NativeRestDeploymentAspectInstaller"
class="org.jboss.wsf.framework.deployment.DeploymentAspectInstaller">
+ <property name="manager"><inject
bean="RestDeploymentAspectManager"/></property>
<property name="sortAspectsOnCreate">true</property>
<property name="aspects">
<set class="java.util.HashSet"
elementClass="org.jboss.wsf.spi.deployment.DeploymentAspect">
Modified: stack/native/branches/rest/src/test/java/org/jboss/test/rs/Widget.java
===================================================================
--- stack/native/branches/rest/src/test/java/org/jboss/test/rs/Widget.java 2007-11-13
11:09:59 UTC (rev 5042)
+++ stack/native/branches/rest/src/test/java/org/jboss/test/rs/Widget.java 2007-11-13
15:49:19 UTC (rev 5043)
@@ -33,6 +33,10 @@
{
String id;
+
+ public Widget() {
+ }
+
public Widget(String id)
{
this.id = id;
@@ -40,13 +44,13 @@
@GET
@UriTemplate("spec")
- Specification[] getSpecification() {
+ public Specification[] getSpecification() {
return new Specification[]{ new Specification() };
}
@GET
@UriTemplate("spec/{name}")
- Specification getSpecByName(@UriParam("name")String name)
+ public Specification getSpecByName(@UriParam("name")String name)
{
return new Specification(name);
}
Modified: stack/native/branches/rest/src/test/java/org/jboss/test/rs/WidgetList.java
===================================================================
--- stack/native/branches/rest/src/test/java/org/jboss/test/rs/WidgetList.java 2007-11-13
11:09:59 UTC (rev 5042)
+++ stack/native/branches/rest/src/test/java/org/jboss/test/rs/WidgetList.java 2007-11-13
15:49:19 UTC (rev 5043)
@@ -35,20 +35,20 @@
{
@GET
@ProduceMime({"text/plain"})
- String getDescription() {
+ public String getDescription() {
return "A widgetlist";
}
@GET
@UriTemplate("offers")
- WidgetList getDiscounted() {
+ public WidgetList getDiscounted() {
return null;
}
@POST
@UriTemplate("special")
@ConsumeMime({"text/xml", "application/xml"})
- void setDiscounted(
+ public void setDiscounted(
@HttpContext HttpHeaders headers,
Widget special
)
@@ -57,7 +57,7 @@
}
@UriTemplate("{id}")
- Widget findWidget(@UriParam("id") String id) {
+ public Widget findWidget(@UriParam("id") String id) {
return new Widget(id);
}
}
Added:
stack/native/branches/rest/src/test/java/org/jboss/test/rs/runtime/RuntimeContextTestCase.java
===================================================================
---
stack/native/branches/rest/src/test/java/org/jboss/test/rs/runtime/RuntimeContextTestCase.java
(rev 0)
+++
stack/native/branches/rest/src/test/java/org/jboss/test/rs/runtime/RuntimeContextTestCase.java 2007-11-13
15:49:19 UTC (rev 5043)
@@ -0,0 +1,26 @@
+package org.jboss.test.rs.runtime;
+
+import junit.framework.TestCase;
+import org.jboss.rs.runtime.RuntimeContext;
+import org.jboss.rs.MethodHTTP;
+import org.jboss.rs.model.ResourceModel;
+
+import java.net.URI;
+import java.util.ArrayList;
+
+
+public class RuntimeContextTestCase extends TestCase
+{
+ public void testAcceptHeaderParsing() throws Exception
+ {
+ // typical firefox accept header
+ String headerValue = "text/html, image/gif, image/jpeg, *; q=.2, */*;
q=.2";
+ RuntimeContext ctx = new RuntimeContext(
+ MethodHTTP.GET,
+ new URI("/jbossrs-deployment/widgets"),
+ new ArrayList<ResourceModel>()
+ );
+
+ ctx.parseAcceptHeader(headerValue);
+ }
+}
Property changes on:
stack/native/branches/rest/src/test/java/org/jboss/test/rs/runtime/RuntimeContextTestCase.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: stack/native/branches/rest/version.properties
===================================================================
--- stack/native/branches/rest/version.properties 2007-11-13 11:09:59 UTC (rev 5042)
+++ stack/native/branches/rest/version.properties 2007-11-13 15:49:19 UTC (rev 5043)
@@ -67,7 +67,7 @@
jboss-vfs=2.0.0.Beta2
jbossas-core-libs=4.2.0.GA
junit=3.8.1
-jsr311=0.3
+jsr-311=0.3
oswego-concurrent=1.3.4
qdox=1.4
sun-hudson=1.93