Author: sergeyb
Date: Fri Oct 17 03:32:05 2008
New Revision: 705549
URL: http://svn.apache.org/viewvc?rev=705549&view=rev
Log:
JAX-RS : updating primitive text provider to support Boolean
Added:
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProviderTest.java
(with props)
Modified:
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
Modified:
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java?rev=705549&r1=705548&r2=705549&view=diff
==============================================================================
---
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java
(original)
+++
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java
Fri Oct 17 03:32:05 2008
@@ -40,14 +40,16 @@
implements MessageBodyReader<Object>, MessageBodyWriter<Object> {
private static boolean isSupported(Class<?> type) {
- return type.isPrimitive() || Number.class.isAssignableFrom(type);
+ return type.isPrimitive()
+ || Number.class.isAssignableFrom(type)
+ || Boolean.class.isAssignableFrom(type);
}
public boolean isReadable(Class<?> type, Type genericType, Annotation[]
annotations) {
return isSupported(type);
}
- public Object readFrom(Class type, Type genType, Annotation[] anns,
MediaType mt,
+ public Object readFrom(Class<Object> type, Type genType, Annotation[]
anns, MediaType mt,
MultivaluedMap headers, InputStream is) throws
IOException {
return InjectionUtils.handleParameter(
IOUtils.readStringFromStream(is).toString(), type);
@@ -57,11 +59,11 @@
return -1;
}
- public boolean isWriteable(Class type, Type genericType, Annotation[]
annotations) {
+ public boolean isWriteable(Class<?> type, Type genericType, Annotation[]
annotations) {
return isSupported(type);
}
- public void writeTo(Object obj, Class type, Type genType, Annotation[]
anns,
+ public void writeTo(Object obj, Class<?> type, Type genType, Annotation[]
anns,
MediaType mt, MultivaluedMap headers, OutputStream os)
throws IOException {
os.write(obj.toString().getBytes("UTF-8"));
}
Added:
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProviderTest.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProviderTest.java?rev=705549&view=auto
==============================================================================
---
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProviderTest.java
(added)
+++
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProviderTest.java
Fri Oct 17 03:32:05 2008
@@ -0,0 +1,96 @@
+/**
+ * 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.cxf.jaxrs.provider;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.Arrays;
+
+import javax.ws.rs.ext.MessageBodyReader;
+import javax.ws.rs.ext.MessageBodyWriter;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class PrimitiveTextProviderTest extends Assert {
+
+ @Test
+ public void testIsWriteable() {
+ MessageBodyWriter<Object> p = new PrimitiveTextProvider();
+ assertTrue(p.isWriteable(byte.class, null, null)
+ && p.isWriteable(Byte.class, null, null)
+ && p.isWriteable(boolean.class, null, null)
+ && p.isWriteable(Boolean.class, null, null));
+ }
+
+ @Test
+ public void testIsReadable() {
+ MessageBodyReader<Object> p = new PrimitiveTextProvider();
+ assertTrue(p.isReadable(byte.class, null, null)
+ && p.isReadable(Byte.class, null, null)
+ && p.isReadable(boolean.class, null, null)
+ && p.isReadable(Boolean.class, null, null));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testReadByte() throws Exception {
+ MessageBodyReader p = new PrimitiveTextProvider();
+
+ byte valueRead = (Byte)p.readFrom((Class)byte.class,
+ null,
+ null,
+ null,
+ null,
+ new
ByteArrayInputStream("1".getBytes()));
+ assertEquals(1, valueRead);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testReadBoolean() throws Exception {
+ MessageBodyReader p = new PrimitiveTextProvider();
+
+ boolean valueRead = (Boolean)p.readFrom((Class)boolean.class,
+ null,
+ null,
+ null,
+ null,
+ new
ByteArrayInputStream("true".getBytes()));
+ assertTrue(valueRead);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testWriteBoolean() throws Exception {
+ MessageBodyWriter p = new PrimitiveTextProvider();
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ p.writeTo(Boolean.TRUE, null, null, null, null, null, os);
+ assertTrue(Arrays.equals(new String("true").getBytes(),
os.toByteArray()));
+
+ os = new ByteArrayOutputStream();
+
+ final boolean value = true;
+ p.writeTo(value, null, null, null, null, null, os);
+ assertTrue(Arrays.equals(new String("true").getBytes(),
os.toByteArray()));
+ }
+}
Propchange:
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProviderTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProviderTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java?rev=705549&r1=705548&r2=705549&view=diff
==============================================================================
---
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
(original)
+++
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
Fri Oct 17 03:32:05 2008
@@ -20,6 +20,7 @@
package org.apache.cxf.systest.jaxrs;
+import java.net.URL;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
@@ -70,12 +71,27 @@
throw new WebApplicationException(response);
}
+ @GET
+ @Path("books/check/{id}")
+ @ProduceMime("text/plain")
+ public boolean checkBook(@PathParam("id") Long id) {
+ return books.containsKey(id);
+ }
+
@GET
@Path("timetable")
public Calendar getTimetable() {
return new GregorianCalendar();
}
+
+ @GET
+ @Path("/bookurl/{URL}/")
+ public Book getBookByURL(@PathParam("URL") String urlValue) throws
Exception {
+ String url2 = new URL(urlValue).toString();
+ int index = url2.lastIndexOf('/');
+ return doGetBook(url2.substring(index + 1));
+ }
@GET
@Path("/books/{bookId}/")
Modified:
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=705549&r1=705548&r2=705549&view=diff
==============================================================================
---
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
(original)
+++
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
Fri Oct 17 03:32:05 2008
@@ -34,6 +34,7 @@
import org.apache.cxf.io.CachedOutputStream;
import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
public class JAXRSClientServerBookTest extends AbstractBusClientServerTestBase
{
@@ -52,6 +53,15 @@
}
@Test
+ @Ignore
+ public void testGetBookByURL() throws Exception {
+
getAndCompareAsStrings("http://localhost:9080/bookstore/bookurl/http%3A%2F%2Ftest.com%2Frss%2F123",
+ "resources/expected_get_book123.txt",
+ "application/xml", 200);
+ }
+
+
+ @Test
public void testNoRootResourceException() throws Exception {
getAndCompare("http://localhost:9080/nobookstore/webappexception",
"",
@@ -140,6 +150,34 @@
}
@Test
+ public void testBookExists() throws Exception {
+ checkBook("http://localhost:9080/bookstore/books/check/123", true);
+ checkBook("http://localhost:9080/bookstore/books/check/124", false);
+
+ }
+
+ private void checkBook(String address, boolean expected) throws Exception {
+ GetMethod get = new GetMethod(address);
+ get.setRequestHeader("Accept", "text/plain");
+ HttpClient httpclient = new HttpClient();
+
+ try {
+ int result = httpclient.executeMethod(get);
+ assertEquals(200, result);
+ if (expected) {
+ assertEquals("Book must be available",
+ "true", get.getResponseBodyAsString());
+ } else {
+ assertEquals("Book must not be available",
+ "false", get.getResponseBodyAsString());
+ }
+ } finally {
+ // Release current connection to the connection pool once you are
done
+ get.releaseConnection();
+ }
+ }
+
+ @Test
public void testGetBook123() throws Exception {
getAndCompareAsStrings("http://localhost:9080/bookstore/books/123",
"resources/expected_get_book123.txt",