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 2008/07/01 20:41:29 UTC

svn commit: r673167 [1/6] - in /cxf/trunk: parent/ rt/frontend/jaxrs/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ rt/frontend...

Author: sergeyb
Date: Tue Jul  1 11:41:24 2008
New Revision: 673167

URL: http://svn.apache.org/viewvc?rev=673167&view=rev
Log:
Upgrading JAX-RS implementation to 0.8 api

Added:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MappingsHandler.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/RequestHandler.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ResponseHandler.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CacheControlHeaderProvider.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/CacheControlHeaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CookieHeaderProvider.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/CookieHeaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProvider.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/EntityTagHeaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/HttpHeadersImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MediaTypeHeaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MetadataMap.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/MetadataMap.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/NewCookieHeaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/PathSegmentImpl.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PathSegmentImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ResponseBuilderImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RuntimeDelegateImpl.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RuntimeDelegateImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/SecurityContextImpl.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SecurityContextImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/UriBuilderImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/VariantListBuilderImpl.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/VariantListBuilderImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/AbstractThreadLocalProxy.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalContextResolver.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpHeaders.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletRequest.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalMessageBodyWorkers.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalProxy.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalRequest.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalSecurityContext.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalUriInfo.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/OperationResourceInfoComparator.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/ProviderInfo.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/AnnotationUtils.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSUtils.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/Messages.properties   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java   (with props)
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CacheControlHeaderProviderTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/CacheControlHeaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CookieHeaderProviderTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/CookieHeaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProviderTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/EntityTagHeaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/HttpHeadersImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProviderTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/MediaTypeHeaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MetadataMapTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/MetadataMapTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProviderTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NewCookieHeaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestImplTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RequestImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImplTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ResponseBuilderImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ResponseImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RuntimeDelegateImplTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RuntimeDelegateImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/UriBuilderImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/UriInfoImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/VariantListBuilderImplTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/VariantListBuilderImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/TestResource.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
      - copied, changed from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSUtilsTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookExceptionMapper.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java   (with props)
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java   (with props)
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_get_book_notfound_mapped.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_get_chapter1_utf.txt   (with props)
    cxf/trunk/systests/src/test/resources/jaxrs_atom/
Removed:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSUtils.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/MetadataMap.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AcceptTypeQueryHandler.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/CacheControlHeaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/CookieHeaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/EntityTagHeaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/HttpHeadersImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MediaTypeHeaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/NewCookieHeaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PathSegmentImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ResponseBuilderImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ResponseImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RuntimeDelegateImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SecurityContextImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SystemQueryHandler.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/UriBuilderImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/UriInfoImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/VariantListBuilderImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSUtilsTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/MetadataMapTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/CacheControlHeaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/CookieHeaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/EntityTagHeaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/HttpHeadersImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/MediaTypeHeaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NewCookieHeaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RequestImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ResponseBuilderImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ResponseImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RuntimeDelegateImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/UriBuilderImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/UriInfoImplTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/VariantListBuilderImplTest.java
Modified:
    cxf/trunk/parent/pom.xml
    cxf/trunk/rt/frontend/jaxrs/pom.xml
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBean.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/Messages.properties
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/Messages.properties
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/ClassResourceInfo.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/OperationResourceInfo.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AtomEntryProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AtomFeedProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/BinaryDataProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingReaderProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/StringProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XMLBeansElementProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XMLBeansJSONProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSServerFactoryBeanDefinitionParser.java
    cxf/trunk/rt/frontend/jaxrs/src/main/resources/META-INF/services/javax.ws.rs.ext.RuntimeDelegate
    cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBeanTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/ClassResourceInfoTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AtomEntryProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AtomFeedProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/BinaryDataProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingReaderProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/SourceProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/BookInterface.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/BookStore.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/BookStoreNoSubResource.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/BookSuperClass.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookServer.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomClientBookTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BadgerFishProvider.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/Book.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookInterface.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/Books.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringProviderTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/add_book.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_add_book.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_atom_book_json.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_atom_books_json.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_get_book123.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_get_book_notfound.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_get_books.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_get_cd.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_get_cds.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_get_chapter1.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_update_book.txt
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/update_book_not_exist.txt
    cxf/trunk/systests/src/test/resources/jaxrs_spring_providers/WEB-INF/beans.xml

Modified: cxf/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/parent/pom.xml?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/parent/pom.xml (original)
+++ cxf/trunk/parent/pom.xml Tue Jul  1 11:41:24 2008
@@ -481,7 +481,7 @@
             <dependency>
                 <groupId>org.codehaus.jettison</groupId>
                 <artifactId>jettison</artifactId>
-                <version>1.0</version>
+                <version>1.0.1</version>
                 <exclusions>
                     <exclusion>
                         <groupId>stax</groupId>

Modified: cxf/trunk/rt/frontend/jaxrs/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/pom.xml?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/pom.xml (original)
+++ cxf/trunk/rt/frontend/jaxrs/pom.xml Tue Jul  1 11:41:24 2008
@@ -65,7 +65,7 @@
         <dependency>
             <groupId>javax.ws.rs</groupId>
             <artifactId>jsr311-api</artifactId>
-            <version>0.6</version>
+            <version>0.8</version>
         </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
@@ -96,6 +96,14 @@
                     <artifactId>abdera-client</artifactId>
                 </exclusion>
                 <exclusion>
+                    <groupId>org.apache.abdera</groupId>
+                    <artifactId>abdera-server</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.abdera</groupId>
+                    <artifactId>abdera-extensions-html</artifactId>
+                </exclusion>
+                <exclusion>
                     <groupId>org.apache.geronimo.specs</groupId>
                     <artifactId>geronimo-activation_1.0.2_spec</artifactId>
                 </exclusion>
@@ -138,6 +146,11 @@
             <name>Apache Incubating Repository</name>
             <url>http://people.apache.org/repo/m2-incubating-repository</url>
         </repository>
+        <repository>
+            <id>java.net.2</id>
+            <name>Java Net 2 Repository</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
     </repositories>
 
 </project>

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java Tue Jul  1 11:41:24 2008
@@ -21,26 +21,36 @@
 
 
 import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.ResourceBundle;
+import java.util.logging.Logger;
 
-import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response;
 
+import org.apache.cxf.common.i18n.BundleUtils;
+import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.jaxrs.impl.MetadataMap;
 import org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor;
 import org.apache.cxf.jaxrs.model.ClassResourceInfo;
 import org.apache.cxf.jaxrs.model.OperationResourceInfo;
 import org.apache.cxf.jaxrs.model.URITemplate;
+import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.jaxrs.utils.InjectionUtils;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageContentsList;
 import org.apache.cxf.service.invoker.AbstractInvoker;
 
 public class JAXRSInvoker extends AbstractInvoker {
+    private static final Logger LOG = LogUtils.getL7dLogger(JAXRSServiceFactoryBean.class);
+    private static final ResourceBundle BUNDLE = BundleUtils.getBundle(JAXRSInvoker.class);
+    
     private List<Object> resourceObjects;
 
     public JAXRSInvoker() {
@@ -52,38 +62,39 @@
     public Object invoke(Exchange exchange, Object request) {
         return invoke(exchange, request, resourceObjects);
     }    
+    @SuppressWarnings("unchecked")
     public Object invoke(Exchange exchange, Object request, List<Object> resources) {
+        
+        Response response = exchange.get(Response.class);
+        if (response != null) {
+            // this means a blocking request filter provided a Response
+            // or earlier exception has been converted to Response
+            
+            //TODO: should we remove response from exchange ?
+            //      or should we rather ignore content list and have 
+            //      Response set here for all cases and extract it 
+            //      in the out interceptor instead of dealing with the contents list ?  
+            return new MessageContentsList(response);    
+        }
+        
         OperationResourceInfo ori = exchange.get(OperationResourceInfo.class);
 
         ClassResourceInfo cri = ori.getClassResourceInfo();
-        Method methodToInvoke = cri.getMethodDispatcher().getMethod(ori);
         Object resourceObject = getServiceObject(exchange, resources);
         
-        // TODO : update the method dispatcher
-        if (Proxy.class.isInstance(resourceObject)) {
-            
-            for (Class<?> c : resourceObject.getClass().getInterfaces()) {
-                try {
-                    Method m = c.getMethod(
-                        methodToInvoke.getName(), methodToInvoke.getParameterTypes());
-                    if (m != null) {
-                        methodToInvoke = m;
-                        break;
-                    }
-                } catch (NoSuchMethodException ex) {
-                    //ignore
-                }
-            }
-            
-        }
+        Method methodToInvoke = InjectionUtils.checkProxy(
+             cri.getMethodDispatcher().getMethod(ori), resourceObject);
         
         if (cri.isRoot()) {
-            JAXRSUtils.injectHttpContextValues(resourceObject, 
-                                               ori, 
-                                               exchange.getInMessage());
-            JAXRSUtils.injectServletResourceValues(resourceObject, 
-                                               ori, 
+            JAXRSUtils.handleSetters(cri, resourceObject, 
+                                     exchange.getInMessage());
+            
+            InjectionUtils.injectContextFields(resourceObject, 
+                                               ori.getClassResourceInfo(), 
                                                exchange.getInMessage());
+            InjectionUtils.injectResourceFields(resourceObject, 
+                                            ori.getClassResourceInfo(), 
+                                            exchange.getInMessage());
         }
 
         List<Object> params = null;
@@ -97,16 +108,17 @@
         try {
             result = invoke(exchange, resourceObject, methodToInvoke, params);
         } catch (Fault ex) {
-            if (ex.getCause() instanceof WebApplicationException) {
-                WebApplicationException wex = (WebApplicationException)ex.getCause();
-                if (wex.getResponse() != null) {
-                    result = wex.getResponse();
-                } else {
-                    result = Response.serverError().build();
+            Response excResponse = JAXRSUtils.convertFaultToResponse(ex.getCause());
+            if (excResponse == null) {
+                ProviderFactory.getInstance().cleatThreadLocalProxies();
+                ClassResourceInfo criRoot =
+                    (ClassResourceInfo)exchange.get(JAXRSInInterceptor.ROOT_RESOURCE_CLASS);
+                if (criRoot != null) {
+                    criRoot.clearThreadLocalProxies();
                 }
-                return new MessageContentsList(result);
+                throw ex;
             }
-            throw ex;
+            return new MessageContentsList(excResponse);
         }
         
         if (ori.isSubResourceLocator()) {
@@ -131,17 +143,35 @@
             if (contentType == null) {
                 contentType = "*/*";
             }
-            String acceptContentType = (String)msg.get(Message.ACCEPT_CONTENT_TYPE);
-            if (acceptContentType == null) {
-                acceptContentType = "*/*";
-            }
+            List<MediaType> acceptContentType = 
+                (List<MediaType>)msg.getExchange().get(Message.ACCEPT_CONTENT_TYPE);
             ClassResourceInfo subCri = JAXRSUtils.findSubResourceClass(cri, result.getClass());
+            
+            if (subCri == null) {
+                org.apache.cxf.common.i18n.Message errorM = 
+                    new org.apache.cxf.common.i18n.Message("NO_SUBRESOURCE_FOUND",  
+                                                           BUNDLE, 
+                                                           subResourcePath);
+                LOG.severe(errorM.toString());
+                throw new Fault(errorM);
+            }
+            
             OperationResourceInfo subOri = JAXRSUtils.findTargetMethod(subCri, 
                                                                        subResourcePath, 
                                                                        httpMethod, 
                                                                        values, 
                                                                        contentType, 
                                                                        acceptContentType);
+            
+            if (subCri == null) {
+                org.apache.cxf.common.i18n.Message errorM = 
+                    new org.apache.cxf.common.i18n.Message("NO_SUBRESOURCE_METHOD_FOUND",  
+                                                           BUNDLE, 
+                                                           subCri.getResourceClass().getSimpleName());
+                LOG.severe(errorM.toString());
+                throw new Fault(errorM);
+            }
+            
             exchange.put(OperationResourceInfo.class, subOri);
             msg.put(JAXRSInInterceptor.RELATIVE_PATH, values.getFirst(URITemplate.FINAL_MATCH_GROUP));
             msg.put(URITemplate.TEMPLATE_PARAMETERS, values);

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java Tue Jul  1 11:41:24 2008
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.cxf.BusException;
 import org.apache.cxf.binding.BindingConfiguration;
@@ -33,6 +34,7 @@
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.endpoint.ServerImpl;
 import org.apache.cxf.feature.AbstractFeature;
+import org.apache.cxf.jaxrs.impl.RequestPreprocessor;
 import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
 import org.apache.cxf.jaxrs.provider.ProviderFactory;
 import org.apache.cxf.service.Service;
@@ -63,6 +65,8 @@
     private JAXRSServiceFactoryBean serviceFactory;
     private List<Object> serviceBeans;
     private List<?> entityProviders;
+    private Map<Object, Object> languageMappings;
+    private Map<Object, Object> extensionMappings;
 
     public JAXRSServerFactoryBean() {
         this(new JAXRSServiceFactoryBean());
@@ -89,8 +93,11 @@
                 ep.getService().setInvoker(invoker);
             }
             if (entityProviders != null) {
-                ProviderFactory.getInstance().setUserEntityProviders(entityProviders); 
+                ProviderFactory.getInstance().setUserProviders(entityProviders); 
             }
+            ProviderFactory.getInstance().setRequestPreporcessor(
+                new RequestPreprocessor(languageMappings, extensionMappings));
+            
             
             if (start) {
                 server.start();
@@ -216,6 +223,14 @@
         return null;
     }
 
+    public void setLanguageMappings(Map<Object, Object> lMaps) {
+        languageMappings = lMaps;
+    }
+    
+    public void setExtensionMappings(Map<Object, Object> extMaps) {
+        extensionMappings = extMaps;
+    }
+    
     public JAXRSServiceFactoryBean getServiceFactory() {
         return serviceFactory;
     }
@@ -258,14 +273,14 @@
     /**
      * @return the entityProviders
      */
-    public List<?> getEntityProviders() {
+    public List<?> getProviders() {
         return entityProviders;
     }
 
     /**
      * @param entityProviders the entityProviders to set
      */
-    public void setEntityProviders(List<? extends Object> entityProviders) {
-        this.entityProviders = entityProviders;
+    public void setProviders(List<? extends Object> providers) {
+        this.entityProviders = providers;
     }
 }

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBean.java?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBean.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBean.java Tue Jul  1 11:41:24 2008
@@ -22,20 +22,28 @@
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.ResourceBundle;
 import java.util.concurrent.Executor;
+import java.util.logging.Logger;
 
 import javax.ws.rs.Path;
 
+import org.apache.cxf.common.i18n.BundleUtils;
+import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.ClassHelper;
 import org.apache.cxf.jaxrs.lifecycle.PerRequestResourceProvider;
 import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
+import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
 import org.apache.cxf.jaxrs.model.ClassResourceInfo;
 import org.apache.cxf.jaxrs.model.MethodDispatcher;
 import org.apache.cxf.jaxrs.model.OperationResourceInfo;
 import org.apache.cxf.jaxrs.model.URITemplate;
+import org.apache.cxf.jaxrs.utils.AnnotationUtils;
+import org.apache.cxf.jaxrs.utils.InjectionUtils;
 import org.apache.cxf.service.Service;
 import org.apache.cxf.service.factory.AbstractServiceFactoryBean;
 import org.apache.cxf.service.invoker.Invoker;
@@ -46,8 +54,8 @@
  */
 public class JAXRSServiceFactoryBean extends AbstractServiceFactoryBean {
     
-    //private static final Logger LOG = Logger.getLogger(JAXRSServiceFactoryBean.class.getName());
-    //private static final ResourceBundle BUNDLE = BundleUtils.getBundle(JAXRSServiceFactoryBean.class);
+    private static final Logger LOG = LogUtils.getL7dLogger(JAXRSServiceFactoryBean.class);
+    private static final ResourceBundle BUNDLE = BundleUtils.getBundle(JAXRSServiceFactoryBean.class);
 
     protected List<ClassResourceInfo> classResourceInfos = 
         new ArrayList<ClassResourceInfo>();
@@ -106,12 +114,19 @@
         return resourceClasses;
     }
 
+    public List<ClassResourceInfo> getClassResourceInfo() {
+        return Collections.unmodifiableList(classResourceInfos);
+    }
+    
     public void setResourceClasses(List<Class> classes) {
         for (Class resourceClass : classes) {
             ClassResourceInfo classResourceInfo = 
                 createClassResourceInfo(resourceClass, resourceClass, true);
-            classResourceInfos.add(classResourceInfo);
+            if (classResourceInfo != null) {
+                classResourceInfos.add(classResourceInfo);
+            }
         }
+        injectContexts();
     }
 
     public void setResourceClasses(Class... classes) {
@@ -126,12 +141,22 @@
                                         ClassHelper.getRealClass(bean),
                                             true);
             classResourceInfos.add(classResourceInfo);
+            classResourceInfo.setResourceProvider(
+                               new SingletonResourceProvider(bean));
+        }
+    }
+    
+    private void injectContexts() {
+        for (ClassResourceInfo cri : classResourceInfos) {
+            if (cri.isSingleton()) {
+                InjectionUtils.injectContextProxies(cri, 
+                                                    cri.getResourceProvider().getInstance());
+            }
         }
     }
     
     public void setResourceProvider(Class c, ResourceProvider rp) {
         resourceProviders.put(c, rp);
-        updateClassResourceProviders();
     }
     
     protected void initializeServiceModel() {
@@ -149,7 +174,10 @@
 
     private void updateClassResourceProviders() {
         for (ClassResourceInfo cri : classResourceInfos) {
-            //TODO: Using information from annotation to determine which lifecycle provider to use
+            if (cri.getResourceProvider() != null) {
+                continue;
+            }
+            
             ResourceProvider rp = resourceProviders.get(cri.getResourceClass());
             if (rp != null) {
                 cri.setResourceProvider(rp);
@@ -159,6 +187,7 @@
                 cri.setResourceProvider(rp);  
             }
         }
+        injectContexts();
     }
     
     protected ClassResourceInfo createClassResourceInfo(
@@ -172,52 +201,56 @@
         
         MethodDispatcher md = createOperation(cri);
         cri.setMethodDispatcher(md);
-        return cri;
+        return checkMethodDispatcher(cri) ? cri : null;
     }
 
     protected MethodDispatcher createOperation(ClassResourceInfo cri) {
         MethodDispatcher md = new MethodDispatcher();
         for (Method m : cri.getServiceClass().getMethods()) {
             
-                       
-            String httpMethod = JAXRSUtils.getHttpMethodValue(m);
-            Path path = (Path)JAXRSUtils.getMethodAnnotation(m, Path.class);
-            if (httpMethod != null && path != null) {
-                /*
-                 * Sub-resource method, URI template created by concatenating
-                 * the URI template of the resource class with the URI template
-                 * of the method
-                 */
-                OperationResourceInfo ori = new OperationResourceInfo(m, cri);
-                URITemplate t = 
-                    URITemplate.createTemplate(cri, path);
-                ori.setURITemplate(t);
-                ori.setHttpMethod(httpMethod);
-                md.bind(ori, m);
-            } else if (path != null) {
-                // sub-resource locator
-                OperationResourceInfo ori = new OperationResourceInfo(m, cri);
-                URITemplate t = 
-                    URITemplate.createTemplate(cri, path);
-                ori.setURITemplate(t);
-                md.bind(ori, m);     
-                Class subResourceClass = m.getReturnType();
-                ClassResourceInfo subCri = createClassResourceInfo(
-                     subResourceClass, subResourceClass, false);
-                cri.addSubClassResourceInfo(subCri);
-            } else if (httpMethod != null) {
-                OperationResourceInfo ori = new OperationResourceInfo(m, cri);
-                URITemplate t = 
-                    URITemplate.createTemplate(cri, null);
-                ori.setURITemplate(t);
-                ori.setHttpMethod(httpMethod);
-                md.bind(ori, m);
+            Method annotatedMethod = AnnotationUtils.getAnnotatedMethod(m);
+            
+            String httpMethod = AnnotationUtils.getHttpMethodValue(annotatedMethod);
+            Path path = (Path)AnnotationUtils.getMethodAnnotation(annotatedMethod, Path.class);
+            
+            if (httpMethod != null || path != null) {
+                md.bind(createOperationInfo(m, annotatedMethod, cri, path, httpMethod), m);
+                if (httpMethod == null) {
+                    // subresource locator
+                    Class subResourceClass = m.getReturnType();
+                    ClassResourceInfo subCri = createClassResourceInfo(
+                         subResourceClass, subResourceClass, false);
+                    if (checkMethodDispatcher(subCri)) {
+                        cri.addSubClassResourceInfo(subCri);
+                    }
+                }
             }
         }
-
+        
         return md;
     }
     
+    private OperationResourceInfo createOperationInfo(Method m, Method annotatedMethod, 
+                                                      ClassResourceInfo cri, Path path, String httpMethod) {
+        OperationResourceInfo ori = new OperationResourceInfo(m, cri);
+        URITemplate t = 
+            URITemplate.createTemplate(cri, path);
+        ori.setURITemplate(t);
+        ori.setHttpMethod(httpMethod);
+        ori.setAnnotatedMethod(annotatedMethod);
+        return ori;
+    }
+    
+       
+    private boolean checkMethodDispatcher(ClassResourceInfo cr) {
+        if (cr.getMethodDispatcher().getOperationResourceInfos().isEmpty()) {
+            LOG.warning(new org.apache.cxf.common.i18n.Message("NO_RESOURCE_OP_EXC", 
+                                                               BUNDLE, 
+                                                               cr.getClass().getName()).toString());
+            return false;
+        }
+        return true;
+    }
     
     
     protected Invoker createInvoker() {

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/Messages.properties
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/Messages.properties?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/Messages.properties (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/Messages.properties Tue Jul  1 11:41:24 2008
@@ -18,4 +18,6 @@
 #    under the License.
 #
 #
-NO_CONTENT_TYPE_SPECIFIED=No Content-Type specified for HTTP {0}
+NO_RESOURCE_OP_EXC=No resource methods found for resource class {0}
+NO_SUBRESOURCE_FOUND=No subresource locator found for path {0}
+NO_SUBRESOURCE_METHOD_FOUND=No resource method found on a subresource locator {0}

Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MappingsHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MappingsHandler.java?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MappingsHandler.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MappingsHandler.java Tue Jul  1 11:41:24 2008
@@ -0,0 +1,71 @@
+/**
+ * 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.ext;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import org.apache.cxf.jaxrs.impl.UriInfoImpl;
+import org.apache.cxf.jaxrs.model.ClassResourceInfo;
+import org.apache.cxf.message.Message;
+
+public class MappingsHandler implements RequestHandler {
+
+    private static final String CONTENT_QUERY = "_type";
+    private static final Map<String, String> SHORTCUTS;
+    static {
+        SHORTCUTS = new HashMap<String, String>();
+        SHORTCUTS.put("json", "application/json");
+        SHORTCUTS.put("text", "text/*");
+        SHORTCUTS.put("xml", "application/xml");
+        // more to come
+    }
+    
+    public Response handleRequest(Message m, ClassResourceInfo resourceClass) {
+        
+        UriInfo uriInfo = new UriInfoImpl(m, null);
+        handleTypeQuery(m, uriInfo.getQueryParameters());
+        
+        
+        return null;
+    }
+
+    private boolean handleTypeQuery(Message m, 
+                                    MultivaluedMap<String, String> queries) {
+        String type = queries.getFirst(CONTENT_QUERY);
+        if (type != null) {
+            if (SHORTCUTS.containsKey(type)) {
+                type = SHORTCUTS.get(type);
+            }
+            updateAcceptTypeHeader(m, type);
+            return true;
+        }
+        return false;
+    }
+    
+    private void updateAcceptTypeHeader(Message m, String anotherValue) {
+        m.put(Message.ACCEPT_CONTENT_TYPE, anotherValue);
+    }
+    
+}

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MappingsHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MappingsHandler.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/RequestHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/RequestHandler.java?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/RequestHandler.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/RequestHandler.java Tue Jul  1 11:41:24 2008
@@ -0,0 +1,38 @@
+/**
+ * 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.ext;
+
+import javax.ws.rs.core.Response;
+
+import org.apache.cxf.jaxrs.model.ClassResourceInfo;
+import org.apache.cxf.message.Message;
+
+/**
+ * SystemHandler is capable of pre/post processing requests 
+ * ex., they can handle query extensions starting from _type
+ *
+ */
+    
+public interface RequestHandler {
+    
+    Response handleRequest(Message m, 
+                           ClassResourceInfo resourceClass);
+
+}

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/RequestHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/RequestHandler.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ResponseHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ResponseHandler.java?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ResponseHandler.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ResponseHandler.java Tue Jul  1 11:41:24 2008
@@ -0,0 +1,31 @@
+/**
+ * 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.ext;
+
+import javax.ws.rs.core.Response;
+
+import org.apache.cxf.jaxrs.model.OperationResourceInfo;
+import org.apache.cxf.message.Message;
+
+public interface ResponseHandler {
+    Response handleResponse(Message m,
+                            OperationResourceInfo ori,
+                            Response response);
+}

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ResponseHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ResponseHandler.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CacheControlHeaderProvider.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/CacheControlHeaderProvider.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CacheControlHeaderProvider.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CacheControlHeaderProvider.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/CacheControlHeaderProvider.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/CacheControlHeaderProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CacheControlHeaderProvider.java Tue Jul  1 11:41:24 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 import java.util.ArrayList;
 import java.util.Iterator;

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CookieHeaderProvider.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/CookieHeaderProvider.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CookieHeaderProvider.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CookieHeaderProvider.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/CookieHeaderProvider.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/CookieHeaderProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CookieHeaderProvider.java Tue Jul  1 11:41:24 2008
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 import javax.ws.rs.core.Cookie;
 import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProvider.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/EntityTagHeaderProvider.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProvider.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProvider.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/EntityTagHeaderProvider.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/EntityTagHeaderProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProvider.java Tue Jul  1 11:41:24 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 import javax.ws.rs.core.EntityTag;
 import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/HttpHeadersImpl.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/HttpHeadersImpl.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/HttpHeadersImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java Tue Jul  1 11:41:24 2008
@@ -17,9 +17,12 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -29,8 +32,7 @@
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 
-import org.apache.cxf.jaxrs.JAXRSUtils;
-import org.apache.cxf.jaxrs.MetadataMap;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.message.Message;
 
 public class HttpHeadersImpl implements HttpHeaders {
@@ -46,26 +48,26 @@
     }
     
     public List<MediaType> getAcceptableMediaTypes() {
-        return JAXRSUtils.parseMediaTypes((String)m.get(Message.ACCEPT_CONTENT_TYPE));
+        return JAXRSUtils.sortMediaTypes((String)m.get(Message.ACCEPT_CONTENT_TYPE)); 
     }
 
     public Map<String, Cookie> getCookies() {
-        List<String> cs = headers.get("Cookie");
+        List<String> cs = headers.get(HttpHeaders.COOKIE);
         Map<String, Cookie> cl = new HashMap<String, Cookie>(); 
         for (String c : cs) {
-            Cookie cookie = Cookie.parse(c);
+            Cookie cookie = Cookie.valueOf(c);
             cl.put(cookie.getName(), cookie);
         }
         return cl;
     }
 
     public String getLanguage() {
-        String l = headers.getFirst("Content-Language");
+        String l = headers.getFirst(HttpHeaders.CONTENT_LANGUAGE);
         return l == null ? "UTF-8" : l;
     }
 
     public MediaType getMediaType() {
-        return MediaType.parse((String)m.get(Message.CONTENT_TYPE));
+        return MediaType.valueOf((String)m.get(Message.CONTENT_TYPE));
     }
 
     public MultivaluedMap<String, String> getRequestHeaders() {
@@ -75,4 +77,52 @@
         return map;
     }
 
+    public List<String> getAcceptableLanguages() {
+        List<String> values = getRequestHeader(HttpHeaders.ACCEPT_LANGUAGE);
+        if (values == null || values.isEmpty()) {
+            return Collections.emptyList();
+        }
+        List<String> newLs = new ArrayList<String>(); 
+        String[] ls =  values.get(0).split(",");
+        Map<String, Float> prefs = new HashMap<String, Float>();
+        for (String l : ls) {
+            String[] pair = l.split(";"); 
+            newLs.add(pair[0]);
+            if (pair.length > 1) {
+                String[] pair2 = pair[1].split("=");
+                if (pair2.length > 1) {
+                    prefs.put(pair[0], JAXRSUtils.getMediaTypeQualityFactor(pair2[1]));
+                } else {
+                    prefs.put(pair[0], 1F);
+                }
+            } else {
+                prefs.put(pair[0], 1F);
+            }
+        }
+        if (newLs.size() == 1) {
+            return newLs;
+        }
+        Collections.sort(newLs, new AcceptLanguageComparator(prefs));
+        return newLs;
+        
+    }
+
+    public List<String> getRequestHeader(String name) {
+        return headers.get(name);
+    }
+
+    private static class AcceptLanguageComparator implements Comparator<String> {
+        private Map<String, Float> prefs;
+        
+        public AcceptLanguageComparator(Map<String, Float> prefs) {
+            this.prefs = prefs;
+        }
+
+        public int compare(String lang1, String lang2) {
+            float p1 = prefs.get(lang1);
+            float p2 = prefs.get(lang2);
+            int result = Float.compare(p1, p2);
+            return result == 0 ? result : ~result;
+        }
+    }
 }

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MediaTypeHeaderProvider.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MediaTypeHeaderProvider.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MediaTypeHeaderProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java Tue Jul  1 11:41:24 2008
@@ -17,8 +17,9 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -46,7 +47,7 @@
         String type = mType.substring(0, i); 
         String subtype = mType.substring(i + 1, end);
         
-        Map<String, String> parameters = null;
+        Map<String, String> parameters = Collections.emptyMap();
         if (paramsStart != -1) {
             // Using Pattern.compile might be marginally faster ?
             // though it's rare when more than one parameter is provided
@@ -74,10 +75,13 @@
         StringBuilder sb = new StringBuilder();
         sb.append(type.getType()).append('/').append(type.getSubtype());
         
-        for (Iterator<Map.Entry<String, String>> iter = type.getParameters().entrySet().iterator();
-            iter.hasNext();) {
-            Map.Entry<String, String> entry = iter.next();
-            sb.append(';').append(entry.getKey()).append('=').append(entry.getValue());
+        Map<String, String> params = type.getParameters();
+        if (params != null) {
+            for (Iterator<Map.Entry<String, String>> iter = params.entrySet().iterator();
+                iter.hasNext();) {
+                Map.Entry<String, String> entry = iter.next();
+                sb.append(';').append(entry.getKey()).append('=').append(entry.getValue());
+            }
         }
         
         return sb.toString();

Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java Tue Jul  1 11:41:24 2008
@@ -0,0 +1,52 @@
+/**
+ * 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.impl;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.ext.MessageBodyReader;
+import javax.ws.rs.ext.MessageBodyWorkers;
+import javax.ws.rs.ext.MessageBodyWriter;
+
+import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.message.Message;
+
+public class MessageBodyWorkersImpl implements MessageBodyWorkers {
+
+    private Message m;
+    public MessageBodyWorkersImpl(Message m) {
+        this.m = m;
+    }
+    
+    public <T> MessageBodyReader<T> getMessageBodyReader(
+         Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+        return ProviderFactory.getInstance().createMessageBodyReader(
+            type, genericType, annotations, mediaType, m);
+    }
+
+    public <T> MessageBodyWriter<T> getMessageBodyWriter(
+        Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+        return ProviderFactory.getInstance().createMessageBodyWriter(
+                   type, genericType, annotations, mediaType, m);
+    }
+
+}

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MetadataMap.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/MetadataMap.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MetadataMap.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MetadataMap.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/MetadataMap.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/MetadataMap.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MetadataMap.java Tue Jul  1 11:41:24 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs;
+package org.apache.cxf.jaxrs.impl;
 
 import java.util.ArrayList;
 import java.util.Collection;

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/NewCookieHeaderProvider.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/NewCookieHeaderProvider.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/NewCookieHeaderProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java Tue Jul  1 11:41:24 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 import javax.ws.rs.core.NewCookie;
 import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/PathSegmentImpl.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PathSegmentImpl.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/PathSegmentImpl.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/PathSegmentImpl.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PathSegmentImpl.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PathSegmentImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/PathSegmentImpl.java Tue Jul  1 11:41:24 2008
@@ -17,13 +17,13 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.PathSegment;
 import javax.ws.rs.ext.Provider;
 
-import org.apache.cxf.jaxrs.JAXRSUtils;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 
 @Provider
 public class PathSegmentImpl implements PathSegment {

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestImpl.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestImpl.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java Tue Jul  1 11:41:24 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 import java.util.Date;
 import java.util.List;
@@ -61,7 +61,7 @@
         }
         
         try {
-            EntityTag requestTag = EntityTag.parse(ifMatch);
+            EntityTag requestTag = EntityTag.valueOf(ifMatch);
             if (requestTag.equals(eTag) && !requestTag.isWeak()) {
                 return null;
             }

Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java Tue Jul  1 11:41:24 2008
@@ -0,0 +1,95 @@
+/**
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.core.UriInfo;
+
+import org.apache.cxf.message.Message;
+
+public class RequestPreprocessor {
+    
+    private Map<Object, Object> languageMappings;
+    private Map<Object, Object> extensionMappings;
+    
+    @SuppressWarnings("unchecked")
+    public RequestPreprocessor(Map<Object, Object> languageMappings,
+                           Map<Object, Object> extensionMappings) {
+        this.languageMappings = 
+            languageMappings == null ? Collections.EMPTY_MAP : languageMappings;
+        this.extensionMappings = 
+            extensionMappings == null ? Collections.EMPTY_MAP : extensionMappings;
+    }
+
+    public String preprocess(Message m, UriInfo u) {
+        handleExtensionMappings(m, u);
+        handleLanguageMappings(m, u);
+        return new UriInfoImpl(m, null).getPath();
+    }
+    
+    private void handleLanguageMappings(Message m, UriInfo uriInfo) {
+        String path = uriInfo.getPath(false);
+        for (Map.Entry<?, ?> entry : languageMappings.entrySet()) {
+            if (path.endsWith("." + entry.getKey())) {
+                updateAcceptLanguageHeader(m, entry.getValue().toString());
+                updatePath(m, path, entry.getKey().toString());
+                break;
+            }    
+        }
+    }
+    
+    private void handleExtensionMappings(Message m, UriInfo uriInfo) {
+        String path = uriInfo.getPath(false);
+        for (Map.Entry<?, ?> entry : extensionMappings.entrySet()) {
+            if (path.endsWith("." + entry.getKey().toString())) {
+                updateAcceptTypeHeader(m, entry.getValue().toString());
+                updatePath(m, path, entry.getKey().toString());
+                break;
+            }
+        }
+        
+    }
+    
+    private void updateAcceptTypeHeader(Message m, String anotherValue) {
+        m.put(Message.ACCEPT_CONTENT_TYPE, anotherValue);
+    }
+    
+    @SuppressWarnings("unchecked")
+    private void updateAcceptLanguageHeader(Message m, String anotherValue) {
+        List<String> acceptLanguage =
+            ((Map<String, List<String>>)m.get(Message.PROTOCOL_HEADERS)).get("Accept-Language");
+        if (acceptLanguage == null) {
+            acceptLanguage = new ArrayList<String>(); 
+        }
+        
+        acceptLanguage.add(anotherValue);
+        ((Map<String, List<String>>)m.get(Message.PROTOCOL_HEADERS))
+            .put("Accept-Language", acceptLanguage);
+    }
+    
+    private void updatePath(Message m, String path, String suffix) {
+        String newPath = path.substring(0, path.length() - (suffix.length() + 1));
+        m.put(Message.PATH_INFO, newPath);
+    }
+    
+}

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ResponseBuilderImpl.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ResponseBuilderImpl.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ResponseBuilderImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java Tue Jul  1 11:41:24 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 import java.net.URI;
 import java.util.Date;
@@ -32,7 +32,6 @@
 import javax.ws.rs.core.Response.ResponseBuilder;
 import javax.ws.rs.core.Variant;
 
-import org.apache.cxf.jaxrs.MetadataMap;
 
 public final class ResponseBuilderImpl extends ResponseBuilder {
     private int status = 200;

Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java Tue Jul  1 11:41:24 2008
@@ -0,0 +1,53 @@
+/**
+ * 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.impl;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+
+public final class ResponseImpl extends Response {
+    private final int status;
+    private final Object entity;
+    private MultivaluedMap<String, Object> metadata;
+    
+    
+    ResponseImpl(int s, Object e) {
+        this.status = s;
+        this.entity = e;
+    }
+
+    public Object getEntity() {
+        return entity;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    void addMetadata(MultivaluedMap<String, Object> meta) { 
+        this.metadata = meta;
+    }
+    
+    public MultivaluedMap<String, Object> getMetadata() {
+        // don't worry about cloning for now
+        return metadata;
+    }
+    
+}

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RuntimeDelegateImpl.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RuntimeDelegateImpl.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RuntimeDelegateImpl.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RuntimeDelegateImpl.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RuntimeDelegateImpl.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RuntimeDelegateImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RuntimeDelegateImpl.java Tue Jul  1 11:41:24 2008
@@ -17,11 +17,12 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.ws.rs.core.ApplicationConfig;
 import javax.ws.rs.core.CacheControl;
 import javax.ws.rs.core.Cookie;
 import javax.ws.rs.core.EntityTag;
@@ -33,6 +34,7 @@
 import javax.ws.rs.ext.RuntimeDelegate;
 
 
+
 public class RuntimeDelegateImpl extends RuntimeDelegate {
     protected Map<Class, HeaderDelegate> headerProviders 
         = new HashMap<Class, HeaderDelegate>();    
@@ -87,6 +89,14 @@
     public VariantListBuilder createVariantListBuilder() {
         return new VariantListBuilderImpl(); 
     }
+
+
+
+    @Override
+    public <T> T createEndpoint(ApplicationConfig applicationConfig, Class<T> endpointType) 
+        throws IllegalArgumentException, UnsupportedOperationException {
+        throw new UnsupportedOperationException();
+    }
     
 
 }

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/SecurityContextImpl.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SecurityContextImpl.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/SecurityContextImpl.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/SecurityContextImpl.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SecurityContextImpl.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SecurityContextImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/SecurityContextImpl.java Tue Jul  1 11:41:24 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 import java.security.Principal;
 

Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/UriBuilderImpl.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/UriBuilderImpl.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/UriBuilderImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java Tue Jul  1 11:41:24 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
 
 import java.lang.reflect.Method;
 import java.net.URI;
@@ -32,8 +32,7 @@
 import javax.ws.rs.core.UriBuilder;
 import javax.ws.rs.core.UriBuilderException;
 
-import org.apache.cxf.jaxrs.JAXRSUtils;
-import org.apache.cxf.jaxrs.MetadataMap;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 
 public class UriBuilderImpl extends UriBuilder {
     
@@ -72,13 +71,13 @@
     }
 
     @Override
-    public URI build(Map<String, String> parts) throws IllegalArgumentException, UriBuilderException {
+    public URI build(Map<String, Object> parts) throws IllegalArgumentException, UriBuilderException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
-    public URI build(String... values) throws IllegalArgumentException, UriBuilderException {
+    public URI build(Object... values) throws IllegalArgumentException, UriBuilderException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -240,6 +239,12 @@
         // TODO Auto-generated method stub
         return null;
     }
+
+    @Override
+    public UriBuilder extension(String arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
     
     
 }

Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java Tue Jul  1 11:41:24 2008
@@ -0,0 +1,153 @@
+/**
+ * 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.impl;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.PathSegment;
+import javax.ws.rs.core.UriBuilder;
+import javax.ws.rs.core.UriInfo;
+
+import org.apache.cxf.jaxrs.model.URITemplate;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
+import org.apache.cxf.message.Message;
+
+public class UriInfoImpl implements UriInfo {
+
+    private MultivaluedMap<String, String> templateParams; 
+    private Message message;
+    
+    public UriInfoImpl(Message m, MultivaluedMap<String, String> templateParams) {
+        this.message = m;
+        this.templateParams = templateParams;
+    }
+    
+    public URI getAbsolutePath() {
+        String address = getEndpointAddress();
+        address = address.endsWith("/") ? address.substring(0, address.length() - 1)
+                                        : address; 
+        return URI.create(address + getPath());
+    }
+
+    public UriBuilder getAbsolutePathBuilder() {
+        return new UriBuilderImpl(getAbsolutePath());
+    }
+
+    public URI getBaseUri() {
+        return URI.create(getEndpointAddress());
+    }
+
+    public UriBuilder getBaseUriBuilder() {
+        return new UriBuilderImpl(getBaseUri());
+    }
+
+    public String getPath() {
+        return getPath(true);
+    }
+
+    public String getPath(boolean decode) {
+        
+        String path = (String)message.get(Message.PATH_INFO);
+        return decode ? JAXRSUtils.uriDecode(path) : path;
+    }
+
+    public List<PathSegment> getPathSegments() {
+        return getPathSegments(true);
+    }
+
+    public List<PathSegment> getPathSegments(boolean decode) {
+        return JAXRSUtils.getPathSegments(getPath(), decode);
+    }
+
+    public MultivaluedMap<String, String> getQueryParameters() {
+        return getQueryParameters(true);
+    }
+
+    public MultivaluedMap<String, String> getQueryParameters(boolean decode) {
+        return JAXRSUtils.getStructuredParams((String)message.get(Message.QUERY_STRING),
+                                              "&",
+                                              decode);
+    }
+
+    //TODO : check the fragment as well
+    public URI getRequestUri() {
+        String queries = (String)message.get(Message.QUERY_STRING);
+        return URI.create(getEndpointAddress() 
+                          + message.get(Message.PATH_INFO)
+                          + (queries == null ? "" : "?" + queries));
+    }
+
+    public UriBuilder getRequestUriBuilder() {
+        return new UriBuilderImpl(getRequestUri());
+    }
+
+    public MultivaluedMap<String, String> getPathParameters() {
+        return getPathParameters(true);
+    }
+
+    public MultivaluedMap<String, String> getPathParameters(boolean decode) {
+        // this needs to be changed
+        MetadataMap<String, String> values = new MetadataMap<String, String>();
+        for (Map.Entry<String, List<String>> entry : templateParams.entrySet()) {
+            if (entry.getKey().equals(URITemplate.FINAL_MATCH_GROUP)) {
+                continue;
+            }
+            values.add(entry.getKey(), 
+                       decode ? JAXRSUtils.uriDecode(entry.getValue().get(0)) 
+                              : entry.getValue().get(0));
+        }
+        return values;
+    }
+
+    protected String getEndpointAddress() {
+        String value = message.getExchange().getDestination().getAddress()
+               .getAddress().getValue();
+        
+        return value;
+    }
+
+    public List<String> getAncestorResourceURIs() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public List<Object> getAncestorResources() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public List<String> getAncestorResourceURIs(boolean arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getPathExtension() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public UriBuilder getPlatonicRequestUriBuilder() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+}

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date