Author: heiko.braun(a)jboss.com
Date: 2007-11-20 10:34:24 -0500 (Tue, 20 Nov 2007)
New Revision: 5075
Added:
stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/
stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/JAXBReader.java
stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/JAXBWriter.java
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/BookResource.java
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/BookStoreResource.java
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/MediaTypeTestCase.java
stack/native/branches/rest/src/test/resources/rs/media/
stack/native/branches/rest/src/test/resources/rs/media/jbossrs.xml
stack/native/branches/rest/src/test/resources/rs/media/web.xml
Modified:
stack/native/branches/rest/ant-import-tests/build-jars-jaxws.xml
stack/native/branches/rest/src/main/java/org/jboss/rs/deployment/ResourceServlet.java
stack/native/branches/rest/src/main/java/org/jboss/rs/model/StatefulResourceResolver.java
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/JbossrsType.java
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/ObjectFactory.java
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/ResourceType.java
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/package-info.java
stack/native/branches/rest/src/main/java/org/jboss/rs/runtime/InvocationMediator.java
stack/native/branches/rest/src/main/java/org/jboss/ws/core/jaxrpc/SOAPFaultHelperJAXRPC.java
stack/native/branches/rest/src/main/java/org/jboss/ws/core/jaxws/SOAPFaultHelperJAXWS.java
stack/native/branches/rest/src/main/java/org/jboss/ws/metadata/umdm/FaultMetaData.java
stack/native/branches/rest/src/main/java/org/jboss/ws/tools/wsdl/WSDL11DefinitionFactory.java
stack/native/branches/rest/src/test/java/org/jboss/test/ws/jaxws/jaxbintros/JAXBIntroTestCase.java
Log:
Begin work on ProviderFactory
Modified: stack/native/branches/rest/ant-import-tests/build-jars-jaxws.xml
===================================================================
--- stack/native/branches/rest/ant-import-tests/build-jars-jaxws.xml 2007-11-20 14:05:33
UTC (rev 5074)
+++ stack/native/branches/rest/ant-import-tests/build-jars-jaxws.xml 2007-11-20 15:34:24
UTC (rev 5075)
@@ -663,6 +663,16 @@
</webinf>
</war>
+ <war warfile="${tests.output.dir}/libs/jbossrs-mediatype.war"
webxml="${tests.output.dir}/resources/rs/media/web.xml">
+ <classes dir="${tests.output.dir}/classes">
+ <include name="org/jboss/test/rs/media/BookResource.class"/>
+ <include name="org/jboss/test/rs/media/BookStoreResource.class"/>
+ </classes>
+ <webinf dir="${tests.output.dir}/resources/rs/media">
+ <include name="jbossrs.xml"/>
+ </webinf>
+ </war>
+
<!-- Please add alphabetically -->
<antcall target="build-interop-jars"/>
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-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/deployment/ResourceServlet.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -28,6 +28,7 @@
import org.jboss.rs.model.ResourceModel;
import org.jboss.rs.runtime.InvocationMediator;
import org.jboss.rs.runtime.RuntimeContext;
+import org.jboss.logging.Logger;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
@@ -46,7 +47,7 @@
*/
public class ResourceServlet extends HttpServlet
{
-
+ private static Logger log = Logger.getLogger(ResourceServlet.class);
private List<ResourceModel> rootResources = new
ArrayList<ResourceModel>();
public void init(ServletConfig servletConfig) throws ServletException
@@ -131,6 +132,9 @@
private void serverError(int status, String message, HttpServletResponse res)
{
+
+ log.error(status + ":" + message);
+
try
{
res.setStatus(status);
Added: stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/JAXBReader.java
===================================================================
--- stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/JAXBReader.java
(rev 0)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/JAXBReader.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -0,0 +1,33 @@
+package org.jboss.rs.media;
+
+import javax.ws.rs.ext.MessageBodyReader;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import java.io.InputStream;
+import java.io.IOException;
+
+public class JAXBReader implements MessageBodyReader
+{
+
+ public boolean isReadable(Class aClass)
+ {
+ return aClass.isAnnotationPresent(XmlRootElement.class);
+ }
+
+ public Object readFrom(Class aClass, MediaType mediaType, MultivaluedMap
multivaluedMap, InputStream inputStream)
+ throws IOException
+ {
+ try
+ {
+ JAXBContext jaxb = JAXBContext.newInstance(aClass);
+ Object obj = jaxb.createUnmarshaller().unmarshal(inputStream);
+ return obj;
+ } catch (JAXBException e)
+ {
+ throw new IOException(e.getMessage());
+ }
+ }
+}
Property changes on:
stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/JAXBReader.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/JAXBWriter.java
===================================================================
--- stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/JAXBWriter.java
(rev 0)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/JAXBWriter.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -0,0 +1,37 @@
+package org.jboss.rs.media.xml;
+
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import java.io.OutputStream;
+import java.io.IOException;
+
+public class JAXBWriter implements MessageBodyWriter
+{
+
+ public boolean isWriteable(Class aClass)
+ {
+ return aClass.isAnnotationPresent(XmlRootElement.class);
+ }
+
+ public long getSize(Object o)
+ {
+ return -1;
+ }
+
+ public void writeTo(Object o, MediaType mediaType, MultivaluedMap multivaluedMap,
OutputStream outputStream)
+ throws IOException
+ {
+ try
+ {
+ JAXBContext jaxb = JAXBContext.newInstance(o.getClass());
+ jaxb.createMarshaller().marshal(o, outputStream);
+ } catch (JAXBException e)
+ {
+ throw new IOException(e.getMessage());
+ }
+ }
+}
Property changes on:
stack/native/branches/rest/src/main/java/org/jboss/rs/media/xml/JAXBWriter.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified:
stack/native/branches/rest/src/main/java/org/jboss/rs/model/StatefulResourceResolver.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/rs/model/StatefulResourceResolver.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/model/StatefulResourceResolver.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -99,7 +99,7 @@
resourceMethod = dfsResourceMatch(rootResource);
}
- if(null == resourceMethod)
+ if(null == resourceMethod && visitedLocator.isEmpty())
throw new NoMethodException("No method matches URI
'"+context.getPath());
// gotcha
@@ -141,36 +141,53 @@
throws NoResourceException
{
ResourceMatch<ResourceModel> match = null;
+ String uriToken = resourceMatch.qualifier.nextUriToken;
List<ResourceMatch<ResourceModel>> weightedResults = new
ArrayList<ResourceMatch<ResourceModel>>();
Iterator<ResourceLocator> locators =
resourceMatch.model.getResourceLocator().iterator();
while(locators.hasNext())
{
ResourceLocator bridge = locators.next();
- RegexQualifier qualifier =
bridge.resolve(resourceMatch.qualifier.nextUriToken);
- if(qualifier!=null)
+ RegexQualifier qualifier = bridge.resolve(uriToken);
+
+ if(qualifier!=null && ! ("".equals(qualifier.nextUriToken) ||
"/".equals(qualifier.nextUriToken)))
+ {
+ // a subresource method is the target
weightedResults.add( new ResourceMatch<ResourceModel>( bridge.field(),
qualifier) );
+ }
+ else if(qualifier!=null)
+ {
+ // the locator is the target itself
+ rememberLocator(bridge, uriToken);
+ }
}
if(!weightedResults.isEmpty())
{
Collections.sort(weightedResults);
match = weightedResults.get(0);
- }
- // TODO: cleanup locator matching after sort
- for(ResourceLocator loc : resourceMatch.model.getResourceLocator())
- {
- if(match.model == loc.field())
+ // for subresource methods we need to identify the locator after sorting
+ for(ResourceLocator loc : resourceMatch.model.getResourceLocator())
{
- visitedLocator.add(0, loc);
- locatorWorkingPath.put(loc, resourceMatch.qualifier.nextUriToken);
+ if(match.model == loc.field())
+ {
+ rememberLocator(loc, uriToken);
+ }
}
}
+
+
return match;
}
+ private void rememberLocator(ResourceLocator loc, String workingPath)
+ {
+ visitedLocator.add(0, loc);
+ locatorWorkingPath.put(loc, workingPath);
+ }
+
private ResourceMethod resolveResourceMethod(ResourceMatch<ResourceModel>
methodTarget, String uriToken)
throws NoMethodException
{
Modified: stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/JbossrsType.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/JbossrsType.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/JbossrsType.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -1,6 +1,6 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference
Implementation, v2.0.5-b02-fcs
-// See <a
href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/...
+// See <a
href="http://java.sun.com/xml/xml">http://java.sun.com/xml/x...
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2007.11.06 at 02:11:05 PM CET
//
Modified:
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/ObjectFactory.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/ObjectFactory.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/ObjectFactory.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -1,6 +1,6 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference
Implementation, v2.0.5-b02-fcs
-// See <a
href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/...
+// See <a
href="http://java.sun.com/xml/xml">http://java.sun.com/xml/x...
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2007.11.06 at 02:11:05 PM CET
//
Modified:
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/ResourceType.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/ResourceType.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/ResourceType.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -1,6 +1,6 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference
Implementation, v2.0.5-b02-fcs
-// See <a
href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/...
+// See <a
href="http://java.sun.com/xml/xml">http://java.sun.com/xml/x...
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2007.11.06 at 02:11:05 PM CET
//
Modified:
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/package-info.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/package-info.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/model/dd/package-info.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -1,6 +1,6 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference
Implementation, v2.0.5-b02-fcs
-// See <a
href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/...
+// See <a
href="http://java.sun.com/xml/xml">http://java.sun.com/xml/x...
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2007.11.06 at 02:11:05 PM CET
//
Modified:
stack/native/branches/rest/src/main/java/org/jboss/rs/runtime/InvocationMediator.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/rs/runtime/InvocationMediator.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/rs/runtime/InvocationMediator.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -24,6 +24,8 @@
public Object invoke() throws ResourceError
{
+ Object result = null;
+
StatefulResourceResolver resolver =
StatefulResourceResolver.newInstance(runtimeContext);
ResourceMethod resourceMethod = resolver.resolve();
@@ -42,23 +44,26 @@
InvocationHandler bridgeInvoker = new DefaultInvocationHandler();
subResourceInstance = bridgeInvoker.invoke(locatorInvocation);
-
+ result = subResourceInstance; // best match
}
- // create an Invocation instance
- InvocationBuilder builder = new DefaultInvocationBuilder();
- runtimeContext.setWorkingPath(resolver.getMethodWorkingPath());
+ if(resourceMethod!=null)
+ {
+ // create an Invocation instance
+ InvocationBuilder builder = new DefaultInvocationBuilder();
+ runtimeContext.setWorkingPath(resolver.getMethodWorkingPath());
- if(subResourceInstance!=null)
- builder.addInvocationModel(new PresetInvocationTarget(subResourceInstance));
+ if(subResourceInstance!=null)
+ builder.addInvocationModel(new PresetInvocationTarget(subResourceInstance));
- builder.addInvocationModel( resourceMethod.getParameterBinding() );
- builder.addInvocationModel( resourceMethod.getOperationBinding() );
- Invocation invocation = builder.build(runtimeContext);
+ builder.addInvocationModel( resourceMethod.getParameterBinding() );
+ builder.addInvocationModel( resourceMethod.getOperationBinding() );
+ Invocation invocation = builder.build(runtimeContext);
- // invoke it
- InvocationHandler invoker = new DefaultInvocationHandler();
- Object result = invoker.invoke(invocation);
+ // invoke it
+ InvocationHandler invoker = new DefaultInvocationHandler();
+ result = invoker.invoke(invocation); // more fine grained match
+ }
return result;
}
Modified:
stack/native/branches/rest/src/main/java/org/jboss/ws/core/jaxrpc/SOAPFaultHelperJAXRPC.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/ws/core/jaxrpc/SOAPFaultHelperJAXRPC.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/ws/core/jaxrpc/SOAPFaultHelperJAXRPC.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -128,7 +128,7 @@
if (desFactory == null)
throw new JAXRPCException("Cannot obtain deserializer factory for:
" + xmlType);
- // Try jaxb deserialization
+ // Try xml deserialization
try
{
//
http://jira.jboss.org/jira/browse/JBWS-955
Modified:
stack/native/branches/rest/src/main/java/org/jboss/ws/core/jaxws/SOAPFaultHelperJAXWS.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/ws/core/jaxws/SOAPFaultHelperJAXWS.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/ws/core/jaxws/SOAPFaultHelperJAXWS.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -118,7 +118,7 @@
}
}
- // Try jaxb deserialization
+ // Try xml deserialization
try
{
Class[] types =
opMetaData.getEndpointMetaData().getRegisteredTypes().toArray(new Class[0]);
Modified:
stack/native/branches/rest/src/main/java/org/jboss/ws/metadata/umdm/FaultMetaData.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/ws/metadata/umdm/FaultMetaData.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/ws/metadata/umdm/FaultMetaData.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -314,7 +314,7 @@
private AccessorFactory getAccessorFactory(Class faultBean)
{
// This should catch all cases due to the constraints that JAX-WS puts on the fault
bean
- // However, if issues arrise then switch this to a full jaxb reflection library
+ // However, if issues arrise then switch this to a full xml reflection library
XmlAccessorType type =
(XmlAccessorType)faultBean.getAnnotation(XmlAccessorType.class);
if (type != null && type.value() == XmlAccessType.FIELD)
return ReflectiveFieldAccessor.FACTORY_CREATOR.create(this);
Modified:
stack/native/branches/rest/src/main/java/org/jboss/ws/tools/wsdl/WSDL11DefinitionFactory.java
===================================================================
---
stack/native/branches/rest/src/main/java/org/jboss/ws/tools/wsdl/WSDL11DefinitionFactory.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/main/java/org/jboss/ws/tools/wsdl/WSDL11DefinitionFactory.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -59,7 +59,7 @@
{
WSDLFactory wsdlFactory = WSDLFactory.newInstance();
wsdlReader = wsdlFactory.newWSDLReader();
- // Allow unknown extensions (jaxws/jaxb binding elements)
+ // Allow unknown extensions (jaxws/xml binding elements)
wsdlReader.setExtensionRegistry(new ExtensionRegistry());
wsdlReader.setFeature(WSDL11DefinitionFactory.FEATURE_VERBOSE, false);
}
Added: stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/BookResource.java
===================================================================
--- stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/BookResource.java
(rev 0)
+++
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/BookResource.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -0,0 +1,62 @@
+package org.jboss.test.rs.media;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.ws.rs.HttpMethod;
+import javax.ws.rs.UriTemplate;
+
+@XmlRootElement(name = "book")
+public class BookResource
+{
+ private String author;
+ private String ISBN;
+ private String title;
+
+ public BookResource()
+ {
+ }
+
+ public BookResource(String author, String ISBN, String title)
+ {
+ this.author = author;
+ this.ISBN = ISBN;
+ this.title = title;
+ }
+
+ @HttpMethod
+ @UriTemplate("author")
+ @XmlElement
+ public String getAuthor()
+ {
+ return author;
+ }
+
+ public void setAuthor(String author)
+ {
+ this.author = author;
+ }
+
+ @XmlElement
+ public String getISBN()
+ {
+ return ISBN;
+ }
+
+ public void setISBN(String ISBN)
+ {
+ this.ISBN = ISBN;
+ }
+
+ @HttpMethod
+ @UriTemplate("title")
+ @XmlElement
+ public String getTitle()
+ {
+ return title;
+ }
+
+ public void setTitle(String title)
+ {
+ this.title = title;
+ }
+}
Property changes on:
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/BookResource.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added:
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/BookStoreResource.java
===================================================================
---
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/BookStoreResource.java
(rev 0)
+++
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/BookStoreResource.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -0,0 +1,47 @@
+package org.jboss.test.rs.media;
+
+import javax.ws.rs.UriTemplate;
+import javax.ws.rs.HttpMethod;
+import javax.ws.rs.UriParam;
+import javax.ws.rs.ProduceMime;
+import java.util.List;
+import java.util.ArrayList;
+
+@UriTemplate("books")
+public class BookStoreResource
+{
+
+ private List<BookResource> availableBooks = new
ArrayList<BookResource>();
+
+ public BookStoreResource()
+ {
+ availableBooks.add( new BookResource("Leonard Richardson",
"596529260", "RESTful Web Services") );
+ availableBooks.add( new BookResource("Sam Ruby", "3897217279",
"Web Services mit REST") );
+ }
+
+ @UriTemplate("{isbn}")
+ public BookResource getBookByISBN(
+ @UriParam("isbn")
+ String isbn)
+ {
+ BookResource match = null;
+
+ for(BookResource book : availableBooks)
+ {
+ if(book.getISBN().equals(isbn))
+ {
+ match = book;
+ break;
+ }
+ }
+
+ return match;
+ }
+
+ @HttpMethod
+ @ProduceMime("text/xml")
+ public List<BookResource> getAllBooks()
+ {
+ return availableBooks;
+ }
+}
Property changes on:
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/BookStoreResource.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added:
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/MediaTypeTestCase.java
===================================================================
---
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/MediaTypeTestCase.java
(rev 0)
+++
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/MediaTypeTestCase.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -0,0 +1,68 @@
+package org.jboss.test.rs.media;
+
+import junit.framework.Test;
+import org.jboss.wsf.test.JBossWSTest;
+import org.jboss.wsf.test.JBossWSTestSetup;
+import org.jboss.rs.media.JAXBReader;
+
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * @author Heiko.Braun(a)jboss.com
+ * @version $Revision$
+ */
+public class MediaTypeTestCase extends JBossWSTest
+{
+ public static Test suite()
+ {
+ return new JBossWSTestSetup(MediaTypeTestCase.class,
"jbossrs-mediatype.war");
+ }
+
+ /**
+ * Request a xml resource representation
+ *
+ * @throws Exception
+ */
+ public void testRequest1() throws Exception
+ {
+ URL url = new URL("http://localhost:8080/jbossrs-mediatype" +
+ "/books/3897217279");
+
+ Object response = doMediaRequest(url, null);
+ assertNotNull(response );
+ assertTrue( (response instanceof BookResource));
+ assertEquals( "Sam Ruby", ((BookResource)response ).getAuthor());
+ }
+
+ private Object doMediaRequest(URL url, Object data) throws Exception
+ {
+ HttpURLConnection conn = (HttpURLConnection)url.openConnection();
+ conn.setDoOutput( data!=null );
+ conn.setRequestProperty("accept", "text/xml");
+
+ if(data !=null)
+ {
+ OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
+
+ // TODO: resolve MessageBodyWriter
+
+ wr.flush();
+ wr.close();
+ }
+
+ // TODO: resolve MessageBodyReader
+
+ Object result = null;
+
+ JAXBReader reader = new JAXBReader();
+ if(reader.isReadable(BookResource.class))
+ {
+ result = reader.readFrom(BookResource.class, null, null,
conn.getInputStream());
+ }
+
+
+ return result;
+ }
+}
Property changes on:
stack/native/branches/rest/src/test/java/org/jboss/test/rs/media/MediaTypeTestCase.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified:
stack/native/branches/rest/src/test/java/org/jboss/test/ws/jaxws/jaxbintros/JAXBIntroTestCase.java
===================================================================
---
stack/native/branches/rest/src/test/java/org/jboss/test/ws/jaxws/jaxbintros/JAXBIntroTestCase.java 2007-11-20
14:05:33 UTC (rev 5074)
+++
stack/native/branches/rest/src/test/java/org/jboss/test/ws/jaxws/jaxbintros/JAXBIntroTestCase.java 2007-11-20
15:34:24 UTC (rev 5075)
@@ -41,7 +41,7 @@
/**
* Test the JAXBIntroduction features.
*
- * jaxb-intros.xml can reside under META-INF or WEB-INF and should be
+ * xml-intros.xml can reside under META-INF or WEB-INF and should be
* picked up by JAXBIntroduction deployment aspect.
*
* On the server side the default JAXBContextFactory takes it into consideration.
Added: stack/native/branches/rest/src/test/resources/rs/media/jbossrs.xml
===================================================================
--- stack/native/branches/rest/src/test/resources/rs/media/jbossrs.xml
(rev 0)
+++ stack/native/branches/rest/src/test/resources/rs/media/jbossrs.xml 2007-11-20 15:34:24
UTC (rev 5075)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
+
+<jbossrs xmlns="http://org.jboss.rs/">
+ <resource>
+ <name>BookStore</name>
+
<implementation>org.jboss.test.rs.media.BookStoreResource</implementation>
+ </resource>
+</jbossrs>
Property changes on: stack/native/branches/rest/src/test/resources/rs/media/jbossrs.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: stack/native/branches/rest/src/test/resources/rs/media/web.xml
===================================================================
--- stack/native/branches/rest/src/test/resources/rs/media/web.xml
(rev 0)
+++ stack/native/branches/rest/src/test/resources/rs/media/web.xml 2007-11-20 15:34:24 UTC
(rev 5075)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+ version="2.4">
+
+ <servlet>
+ <servlet-name>JBossRS</servlet-name>
+ <servlet-class>org.jboss.rs.deployment.ResourceServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>JBossRS</servlet-name>
+ <url-pattern>/*</url-pattern>
+ </servlet-mapping>
+
+</web-app>
+
Property changes on: stack/native/branches/rest/src/test/resources/rs/media/web.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF