You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2009/12/18 18:01:04 UTC
svn commit: r892314 - in /cxf/branches/2.2.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ rt/frontend...
Author: sergeyb
Date: Fri Dec 18 17:01:03 2009
New Revision: 892314
URL: http://svn.apache.org/viewvc?rev=892314&view=rev
Log:
Merged revisions 892307 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r892307 | sergeyb | 2009-12-18 16:33:39 +0000 (Fri, 18 Dec 2009) | 1 line
JAXRS : simplifying AtomElementReader/Writer interfaces and fixing URITemplate to escape *
........
Modified:
cxf/branches/2.2.x-fixes/ (props changed)
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/AtomElementReader.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/AtomElementWriter.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AtomPojoProvider.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AtomPojoProviderTest.java
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Dec 18 17:01:03 2009
@@ -1 +1 @@
-/cxf/trunk:891375-891393,891452,891817,891827,891859,891945-891946,892056
+/cxf/trunk:891375-891393,891452,891817,891827,891859,891945-891946,892056,892307
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/AtomElementReader.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/AtomElementReader.java?rev=892314&r1=892313&r2=892314&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/AtomElementReader.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/AtomElementReader.java Fri Dec 18 17:01:03 2009
@@ -19,7 +19,6 @@
package org.apache.cxf.jaxrs.ext.atom;
import org.apache.abdera.model.Element;
-import org.apache.cxf.jaxrs.ext.MessageContext;
/**
* A callback-style interface which can be used to deserialize an Atom Feed or Entry into a custom object
@@ -32,8 +31,7 @@
public interface AtomElementReader<T extends Element, E> {
/**
* @param element Feed or Entry instance
- * @param context current MessageContext
* @return pojoElement
*/
- E readFrom(T element, MessageContext mc);
+ E readFrom(T element);
}
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/AtomElementWriter.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/AtomElementWriter.java?rev=892314&r1=892313&r2=892314&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/AtomElementWriter.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/atom/AtomElementWriter.java Fri Dec 18 17:01:03 2009
@@ -19,7 +19,6 @@
package org.apache.cxf.jaxrs.ext.atom;
import org.apache.abdera.model.Element;
-import org.apache.cxf.jaxrs.ext.MessageContext;
/**
* A callback-style interface which can be used to map an object to an Atom Feed or Entry
@@ -33,8 +32,6 @@
/**
* @param element Feed or Entry instance
* @param pojoElement An object which needs to be mapped to the feed or entry
- * @param context modifiable output headers
- * @param context MessageContext which can be used for adding properties related to the current URI, etc
*/
- void writeTo(T element, E pojoElement, MessageContext mc);
+ void writeTo(T element, E pojoElement);
}
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java?rev=892314&r1=892313&r2=892314&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java Fri Dec 18 17:01:03 2009
@@ -41,7 +41,7 @@
public static final String LIMITED_REGEX_SUFFIX = "(/.*)?";
public static final String FINAL_MATCH_GROUP = "FINAL_MATCH_GROUP";
private static final String DEFAULT_PATH_VARIABLE_REGEX = "([^/]+?)";
- private static final String CHARACTERS_TO_ESCAPE = ".";
+ private static final String CHARACTERS_TO_ESCAPE = ".*";
private final String template;
private final List<String> variables = new ArrayList<String>();
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AtomPojoProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AtomPojoProvider.java?rev=892314&r1=892313&r2=892314&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AtomPojoProvider.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AtomPojoProvider.java Fri Dec 18 17:01:03 2009
@@ -90,6 +90,23 @@
for (AbstractAtomElementBuilder builder : atomBuilders.values()) {
builder.setMessageContext(context);
}
+ for (AtomElementWriter writer : atomWriters.values()) {
+ tryInjectMessageContext(writer);
+ }
+ for (AtomElementReader reader : atomReaders.values()) {
+ tryInjectMessageContext(reader);
+ }
+ }
+
+ protected void tryInjectMessageContext(Object handler) {
+ try {
+ Method m = handler.getClass().getMethod("setMessageContext",
+ new Class[]{MessageContext.class});
+ InjectionUtils.injectThroughMethod(handler, m, mc);
+ } catch (Throwable t) {
+ LOG.warning("Message context can not be injected into " + handler.getClass().getName()
+ + " : " + t.getMessage());
+ }
}
public long getSize(Object t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mt) {
@@ -199,7 +216,7 @@
protected boolean buildFeed(Feed feed, Object o) {
AtomElementWriter<?, ?> builder = atomWriters.get(o.getClass().getName());
if (builder != null) {
- ((AtomElementWriter)builder).writeTo(feed, o, mc);
+ ((AtomElementWriter)builder).writeTo(feed, o);
return true;
}
return false;
@@ -313,7 +330,7 @@
protected boolean buildEntry(Entry entry, Object o) {
AtomElementWriter<?, ?> builder = atomWriters.get(o.getClass().getName());
if (builder != null) {
- ((AtomElementWriter)builder).writeTo(entry, o, mc);
+ ((AtomElementWriter)builder).writeTo(entry, o);
return true;
}
return false;
@@ -466,7 +483,7 @@
AtomElementReader<?, ?> reader = atomReaders.get(cls.getName());
if (reader != null) {
- return ((AtomElementReader)reader).readFrom(feed, mc);
+ return ((AtomElementReader)reader).readFrom(feed);
}
Object instance = null;
try {
@@ -493,7 +510,7 @@
AtomElementReader<?, ?> reader = atomReaders.get(cls.getName());
if (reader != null) {
- return ((AtomElementReader)reader).readFrom(entry, mc);
+ return ((AtomElementReader)reader).readFrom(entry);
}
try {
Unmarshaller um =
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java?rev=892314&r1=892313&r2=892314&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java Fri Dec 18 17:01:03 2009
@@ -34,10 +34,27 @@
public void testEncoding() {
URI u = WebClient.create("http://foo").path("bar+ %2B").matrix("a", "value+ ")
.query("b", "bv+ ").getCurrentURI();
- System.out.println("'" + u.toString() + "'");
assertEquals("http://foo/bar+%20%2B;a=value+%20?b=bv%2B+", u.toString());
}
+ @Test
+ public void testExistingAsteriscs() {
+ URI u = WebClient.create("http://foo/*").getCurrentURI();
+ assertEquals("http://foo/*", u.toString());
+ }
+
+ @Test
+ public void testAsteriscs() {
+ URI u = WebClient.create("http://foo").path("*").getCurrentURI();
+ assertEquals("http://foo/*", u.toString());
+ }
+
+ @Test
+ public void testDoubleAsteriscs() {
+ URI u = WebClient.create("http://foo").path("**").getCurrentURI();
+ assertEquals("http://foo/**", u.toString());
+ }
+
@Test
public void testBaseCurrentPath() {
assertEquals(URI.create("http://foo"), WebClient.create("http://foo").getBaseURI());
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java?rev=892314&r1=892313&r2=892314&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java Fri Dec 18 17:01:03 2009
@@ -111,6 +111,38 @@
}
@Test
+ public void testEncodedPathWithAsteriscs() throws Exception {
+ URI uri = new URI("http://bar/foo/");
+ URI newUri = new UriBuilderImpl(uri).path("*").buildFromEncoded();
+ assertEquals("URI is not built correctly",
+ "http://bar/foo/*", newUri.toString());
+ }
+
+ @Test
+ public void testPathWithAsteriscs() throws Exception {
+ URI uri = new URI("http://bar/foo/");
+ URI newUri = new UriBuilderImpl(uri).path("*").build();
+ assertEquals("URI is not built correctly",
+ "http://bar/foo/*", newUri.toString());
+ }
+
+ @Test
+ public void testEncodedPathWithTwoAsteriscs() throws Exception {
+ URI uri = new URI("http://bar/foo/");
+ URI newUri = new UriBuilderImpl(uri).path("**").buildFromEncoded();
+ assertEquals("URI is not built correctly",
+ "http://bar/foo/**", newUri.toString());
+ }
+
+ @Test
+ public void testPathWithTwoAsteriscs() throws Exception {
+ URI uri = new URI("http://bar/foo/");
+ URI newUri = new UriBuilderImpl(uri).path("**").build();
+ assertEquals("URI is not built correctly",
+ "http://bar/foo/**", newUri.toString());
+ }
+
+ @Test
public void testEncodedAddedQuery() throws Exception {
URI uri = new URI("http://bar");
URI newUri = new UriBuilderImpl(uri).queryParam("q", "a+b%20%2B").buildFromEncoded();
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AtomPojoProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AtomPojoProviderTest.java?rev=892314&r1=892313&r2=892314&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AtomPojoProviderTest.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AtomPojoProviderTest.java Fri Dec 18 17:01:03 2009
@@ -31,7 +31,6 @@
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Feed;
-import org.apache.cxf.jaxrs.ext.MessageContext;
import org.apache.cxf.jaxrs.ext.atom.AbstractEntryBuilder;
import org.apache.cxf.jaxrs.ext.atom.AbstractFeedBuilder;
import org.apache.cxf.jaxrs.ext.atom.AtomElementReader;
@@ -43,7 +42,6 @@
import org.springframework.context.support.ClassPathXmlApplicationContext;
-
public class AtomPojoProviderTest extends Assert {
private ClassPathXmlApplicationContext ctx;
@@ -165,7 +163,7 @@
public static class CustomFeedWriter implements AtomElementWriter<Feed, Books> {
- public void writeTo(Feed feed, Books pojoFeed, MessageContext context) {
+ public void writeTo(Feed feed, Books pojoFeed) {
feed.setTitle("Books");
}
@@ -173,7 +171,7 @@
public static class CustomEntryWriter implements AtomElementWriter<Entry, Book> {
- public void writeTo(Entry entry, Book pojoEntry, MessageContext context) {
+ public void writeTo(Entry entry, Book pojoEntry) {
entry.setTitle(pojoEntry.getName());
}
@@ -181,7 +179,7 @@
public static class CustomEntryReader implements AtomElementReader<Entry, Book> {
- public Book readFrom(Entry element, MessageContext mc) {
+ public Book readFrom(Entry element) {
try {
String s = element.getContent();
@@ -198,12 +196,12 @@
public static class CustomFeedReader implements AtomElementReader<Feed, Books> {
- public Books readFrom(Feed element, MessageContext mc) {
+ public Books readFrom(Feed element) {
Books books = new Books();
List<Book> list = new ArrayList<Book>();
CustomEntryReader entryReader = new CustomEntryReader();
for (Entry e : element.getEntries()) {
- list.add(entryReader.readFrom(e, mc));
+ list.add(entryReader.readFrom(e));
}
books.setBooks(list);
return books;