You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@abdera.apache.org by Dan Diephouse <da...@envoisolutions.com> on 2007/08/11 01:45:17 UTC
Re: svn commit: r564805 - in /incubator/abdera/java/trunk: examples/src/main/java/org/apache/abdera/examples/appserver/ server/src/main/java/org/apache/abdera/protocol/server/ server/src/main/java/org/apache/abdera/protocol/server/impl/ server/src/te
Cool - this is much better than my solution. :-)
On 8/10/07, jmsnell@apache.org <jm...@apache.org> wrote:
>
> Author: jmsnell
> Date: Fri Aug 10 16:42:40 2007
> New Revision: 564805
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=564805
> Log:
> Inspired by Dan Diephouse's spring patch. Instead of initializing the
> context path, let's pull
> it directly from the request context on each resolution. Doing so
> simplifies target resolver
> implementations somewhat.
>
> Modified:
>
> incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleTargetResolver.java
>
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/RequestContext.java
>
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractRequestContext.java
>
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/DefaultServiceContext.java
>
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/HttpServletRequestContext.java
>
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/RegexTargetResolver.java
>
> incubator/abdera/java/trunk/server/src/test/java/org/apache/abdera/test/server/UtilityTest.java
>
> Modified:
> incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleTargetResolver.java
> URL:
> http://svn.apache.org/viewvc/incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleTargetResolver.java?view=diff&rev=564805&r1=564804&r2=564805
>
> ==============================================================================
> ---
> incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleTargetResolver.java
> (original)
> +++
> incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleTargetResolver.java
> Fri Aug 10 16:42:40 2007
> @@ -23,8 +23,7 @@
> public class SimpleTargetResolver
> extends RegexTargetResolver {
>
> - public SimpleTargetResolver(String contextPath) {
> - super(contextPath);
> + public SimpleTargetResolver() {
> setPattern("/atom(\\?[^#]*)?", TargetType.TYPE_SERVICE);
> setPattern("/atom/feed(\\?[^#]*)?", TargetType.TYPE_COLLECTION);
> setPattern("/atom/feed/([^/#?]+)(\\?[^#]*)?", TargetType.TYPE_ENTRY);
>
> Modified:
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/RequestContext.java
> URL:
> http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/RequestContext.java?view=diff&rev=564805&r1=564804&r2=564805
>
> ==============================================================================
> ---
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/RequestContext.java
> (original)
> +++
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/RequestContext.java
> Fri Aug 10 16:42:40 2007
> @@ -90,4 +90,12 @@
> <T extends Element>Document<T> getDocument(ParserOptions options)
> throws ParseException, IOException;
>
> boolean isUserInRole(String role);
> +
> + String getContextPath();
> +
> + /**
> + * Returns the subset of the request URI that is to be used to resolve
> the Target
> + * (everything after the context path)
> + */
> + String getTargetPath();
> }
>
> Modified:
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractRequestContext.java
> URL:
> http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractRequestContext.java?view=diff&rev=564805&r1=564804&r2=564805
>
> ==============================================================================
> ---
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractRequestContext.java
> (original)
> +++
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractRequestContext.java
> Fri Aug 10 16:42:40 2007
> @@ -153,4 +153,11 @@
> public ServiceContext getServiceContext() {
> return context;
> }
> +
> + public String getTargetPath() {
> + String uri = getUri().toString();
> + String cpath = getContextPath();
> + return cpath == null ? uri : uri.substring(cpath.length());
> + }
> +
> }
>
> Modified:
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/DefaultServiceContext.java
> URL:
> http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/DefaultServiceContext.java?view=diff&rev=564805&r1=564804&r2=564805
>
> ==============================================================================
> ---
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/DefaultServiceContext.java
> (original)
> +++
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/DefaultServiceContext.java
> Fri Aug 10 16:42:40 2007
> @@ -100,8 +100,7 @@
> public Resolver<Target> getTargetResolver(String contextPath) {
> if (targetResolver == null) {
> targetResolver = (Resolver<Target>) instance(
> - TARGET_RESOLVER, getDefaultTargetResolver(),
> - contextPath);
> + TARGET_RESOLVER, getDefaultTargetResolver());
> }
> return targetResolver;
> }
>
> Modified:
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/HttpServletRequestContext.java
> URL:
> http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/HttpServletRequestContext.java?view=diff&rev=564805&r1=564804&r2=564805
>
> ==============================================================================
> ---
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/HttpServletRequestContext.java
> (original)
> +++
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/HttpServletRequestContext.java
> Fri Aug 10 16:42:40 2007
> @@ -235,4 +235,8 @@
> public boolean isUserInRole(String role) {
> return request.isUserInRole(role);
> }
> +
> + public String getContextPath() {
> + return request.getContextPath();
> + }
> }
>
> Modified:
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/RegexTargetResolver.java
> URL:
> http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/RegexTargetResolver.java?view=diff&rev=564805&r1=564804&r2=564805
>
> ==============================================================================
> ---
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/RegexTargetResolver.java
> (original)
> +++
> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/RegexTargetResolver.java
> Fri Aug 10 16:42:40 2007
> @@ -57,15 +57,12 @@
> implements Resolver<Target> {
>
> private final Map<Pattern, TargetType> patterns;
> - private String contextPath;
>
> - public RegexTargetResolver(String contextPath) {
> - this.contextPath = contextPath;
> + public RegexTargetResolver() {
> this.patterns = new HashMap<Pattern, TargetType>();
> }
>
> - public RegexTargetResolver(String contextPath, Map<String, TargetType>
> patterns) {
> - this.contextPath = contextPath;
> + public RegexTargetResolver(Map<String, TargetType> patterns) {
> this.patterns = new HashMap<Pattern, TargetType>();
> for (String p : patterns.keySet()) {
> TargetType type = patterns.get(p);
> @@ -74,13 +71,13 @@
> }
>
> public synchronized void setPattern(String pattern, TargetType type) {
> - Pattern p = Pattern.compile(getContextPath() + pattern);
> + Pattern p = Pattern.compile(pattern);
> this.patterns.put(p,type);
> }
>
> public Target resolve(Request request) {
> RequestContext context = (RequestContext) request;
> - String uri = context.getUri().toString();
> + String uri = context.getTargetPath();
> for (Pattern pattern : patterns.keySet()) {
> Matcher matcher = pattern.matcher(uri);
> if (matcher.matches()) {
> @@ -179,12 +176,4 @@
>
> }
>
> - public void setContextPath(String contextPath) {
> - this.contextPath = contextPath;
> - }
> -
> - protected String getContextPath() {
> - return this.contextPath;
> - }
> -
> }
>
> Modified:
> incubator/abdera/java/trunk/server/src/test/java/org/apache/abdera/test/server/UtilityTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/test/java/org/apache/abdera/test/server/UtilityTest.java?view=diff&rev=564805&r1=564804&r2=564805
>
> ==============================================================================
> ---
> incubator/abdera/java/trunk/server/src/test/java/org/apache/abdera/test/server/UtilityTest.java
> (original)
> +++
> incubator/abdera/java/trunk/server/src/test/java/org/apache/abdera/test/server/UtilityTest.java
> Fri Aug 10 16:42:40 2007
> @@ -89,7 +89,7 @@
>
> public static void testRegexTargetResolver() throws Exception {
>
> - RegexTargetResolver r = new RegexTargetResolver("/test");
> + RegexTargetResolver r = new RegexTargetResolver();
> r.setPattern("", TargetType.TYPE_SERVICE);
> r.setPattern("/([^/?#]+)", TargetType.TYPE_COLLECTION);
>
> @@ -187,6 +187,10 @@
>
> public boolean isUserInRole(String role) {
> return false;
> + }
> +
> + public String getContextPath() {
> + return "/test";
> }
>
> }
>
>
>
--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog