//# 0 errors, 377 messages
//#
/*
    //#request.java:1:1: class: net.sourceforge.pebble.logging.Request
 * Copyright (c) 2003-2006, Simon Brown
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in
 *     the documentation and/or other materials provided with the
 *     distribution.
 *
 *   - Neither the name of Pebble nor the names of its contributors may
 *     be used to endorse or promote products derived from this software
 *     without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
package net.sourceforge.pebble.logging;

import net.sourceforge.pebble.api.permalink.PermalinkProvider;
import net.sourceforge.pebble.domain.Blog;
import net.sourceforge.pebble.domain.BlogEntry;
import net.sourceforge.pebble.domain.Month;
import net.sourceforge.pebble.domain.Day;
import net.sourceforge.pebble.permalink.DefaultPermalinkProvider;

import java.text.SimpleDateFormat;
import java.util.regex.Pattern;


/**
 * Represents a requested URL along with a count of how many times it
 * has been accessed.
 *
 * @author    Simon Brown
 */
public class Request extends CountedUrl {

  private static final Pattern RESPONSES_FEED_REGEX = Pattern.compile("\\/responses\\/.*.xml");
    //#request.java:53: method: net.sourceforge.pebble.logging.Request.net.sourceforge.pebble.logging.Request__static_init
    //#output(net.sourceforge.pebble.logging.Request__static_init): AUTHOR_FEED_REGEX
    //#output(net.sourceforge.pebble.logging.Request__static_init): CATEGORY_FEED_REGEX
    //#output(net.sourceforge.pebble.logging.Request__static_init): RESPONSES_FEED_REGEX
    //#output(net.sourceforge.pebble.logging.Request__static_init): TAG_FEED_REGEX
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Descendant_Table[net/sourceforge/pebble/logging/Request]
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.addLogEntry(Lnet/sourceforge/pebble/logging/LogEntry;)V
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.getCount()I
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.getLogEntries()Ljava/util/List;
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.getName()Ljava/lang/String;
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.getTruncatedName()Ljava/lang/String;
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.getUrl()Ljava/lang/String;
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.hashCode()I
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.isFileDownload()Z
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.isNewsFeed()Z
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.isPageView()Z
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.matchOnPermalinkProvider(Ljava/lang/String;Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;)V
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.setFileDownload(Z)V
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.setName(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.setNewsFeed(Z)V
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.setPageView(Z)V
    //#output(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.logging.Request__static_init): net/sourceforge/pebble/logging/CountedUrl.__Descendant_Table[net/sourceforge/pebble/logging/Request]
    //#post(net.sourceforge.pebble.logging.Request__static_init): init'ed(AUTHOR_FEED_REGEX)
    //#post(net.sourceforge.pebble.logging.Request__static_init): init'ed(CATEGORY_FEED_REGEX)
    //#post(net.sourceforge.pebble.logging.Request__static_init): init'ed(RESPONSES_FEED_REGEX)
    //#post(net.sourceforge.pebble.logging.Request__static_init): init'ed(TAG_FEED_REGEX)
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Descendant_Table[net/sourceforge/pebble/logging/Request] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.logging.Request__static_init): net/sourceforge/pebble/logging/CountedUrl.__Descendant_Table[net/sourceforge/pebble/logging/Request] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.addLogEntry(Lnet/sourceforge/pebble/logging/LogEntry;)V == &net/sourceforge/pebble/logging/CountedUrl.addLogEntry
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.equals(Ljava/lang/Object;)Z == &net/sourceforge/pebble/logging/CountedUrl.equals
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.getCount()I == &net/sourceforge/pebble/logging/CountedUrl.getCount
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.getLogEntries()Ljava/util/List; == &net/sourceforge/pebble/logging/CountedUrl.getLogEntries
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.getName()Ljava/lang/String; == &net/sourceforge/pebble/logging/CountedUrl.getName
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.getTruncatedName()Ljava/lang/String; == &net/sourceforge/pebble/logging/CountedUrl.getTruncatedName
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.getUrl()Ljava/lang/String; == &net/sourceforge/pebble/logging/CountedUrl.getUrl
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.hashCode()I == &net/sourceforge/pebble/logging/CountedUrl.hashCode
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.isFileDownload()Z == &net/sourceforge/pebble/logging/CountedUrl.isFileDownload
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.isNewsFeed()Z == &net/sourceforge/pebble/logging/CountedUrl.isNewsFeed
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.isPageView()Z == &net/sourceforge/pebble/logging/CountedUrl.isPageView
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.matchOnPermalinkProvider(Ljava/lang/String;Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;)V == &matchOnPermalinkProvider
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.setFileDownload(Z)V == &net/sourceforge/pebble/logging/CountedUrl.setFileDownload
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.setName(Ljava/lang/String;)V == &net/sourceforge/pebble/logging/CountedUrl.setName
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.setNewsFeed(Z)V == &net/sourceforge/pebble/logging/CountedUrl.setNewsFeed
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.setPageView(Z)V == &net/sourceforge/pebble/logging/CountedUrl.setPageView
    //#post(net.sourceforge.pebble.logging.Request__static_init): __Dispatch_Table.setUrl(Ljava/lang/String;)V == &setUrl
  private static final Pattern CATEGORY_FEED_REGEX = Pattern.compile("\\/categories\\/.*\\/.*.xml");
  private static final Pattern TAG_FEED_REGEX = Pattern.compile("\\/tags\\/.*\\/.*.xml");
  private static final Pattern AUTHOR_FEED_REGEX = Pattern.compile("\\/authors\\/.*\\/.*.xml");
    //#request.java:56: end of method: net.sourceforge.pebble.logging.Request.net.sourceforge.pebble.logging.Request__static_init

  /**
   * Creates a new instance representing the specified url.
   *
   * @param url   the url as a String
   */
  public Request(String url) {
    super(url);
    //#request.java:64: method: void net.sourceforge.pebble.logging.Request.net.sourceforge.pebble.logging.Request(String)
    //#request.java:64: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void net.sourceforge.pebble.logging.Request(String)
    //#    suspicious precondition index: [1]
    //#input(void net.sourceforge.pebble.logging.Request(String)): AUTHOR_FEED_REGEX
    //#input(void net.sourceforge.pebble.logging.Request(String)): CATEGORY_FEED_REGEX
    //#input(void net.sourceforge.pebble.logging.Request(String)): RESPONSES_FEED_REGEX
    //#input(void net.sourceforge.pebble.logging.Request(String)): TAG_FEED_REGEX
    //#input(void net.sourceforge.pebble.logging.Request(String)): __Descendant_Table[net/sourceforge/pebble/logging/Request]
    //#input(void net.sourceforge.pebble.logging.Request(String)): __Descendant_Table[others]
    //#input(void net.sourceforge.pebble.logging.Request(String)): __Dispatch_Table.getName()Ljava/lang/String;
    //#input(void net.sourceforge.pebble.logging.Request(String)): __Dispatch_Table.setFileDownload(Z)V
    //#input(void net.sourceforge.pebble.logging.Request(String)): __Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void net.sourceforge.pebble.logging.Request(String)): __Dispatch_Table.setNewsFeed(Z)V
    //#input(void net.sourceforge.pebble.logging.Request(String)): __Dispatch_Table.setPageView(Z)V
    //#input(void net.sourceforge.pebble.logging.Request(String)): __Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/CountedUrl.__Descendant_Table[net/sourceforge/pebble/logging/CountedUrl]
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/CountedUrl.__Descendant_Table[net/sourceforge/pebble/logging/Referer]
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/CountedUrl.__Descendant_Table[net/sourceforge/pebble/logging/Request]
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/CountedUrl.__Descendant_Table[others]
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/CountedUrl.__Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.BING_QUERY_STRING_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.GOOGLE_IMAGES_QUERY_STRING_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.GOOGLE_QUERY_STRING_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.JAVABLOGS_HOT_ENTRIES_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.JAVABLOGS_WELCOME_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.MSN_QUERY_STRING_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.YAHOO_QUERY_STRING_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.__Descendant_Table[net/sourceforge/pebble/logging/Referer]
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.__Descendant_Table[others]
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/logging/Referer.__Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/permalink/DefaultPermalinkProvider.__Descendant_Table[net/sourceforge/pebble/permalink/DefaultPermalinkProvider]
    //#input(void net.sourceforge.pebble.logging.Request(String)): net/sourceforge/pebble/permalink/DefaultPermalinkProvider.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void net.sourceforge.pebble.logging.Request(String)): this
    //#input(void net.sourceforge.pebble.logging.Request(String)): this.__Tag
    //#input(void net.sourceforge.pebble.logging.Request(String)): url
    //#output(void net.sourceforge.pebble.logging.Request(String)): new LinkedList(CountedUrl#1) num objects
    //#output(void net.sourceforge.pebble.logging.Request(String)): this.__Tag
    //#output(void net.sourceforge.pebble.logging.Request(String)): this.blog
    //#output(void net.sourceforge.pebble.logging.Request(String)): this.fileDownload
    //#output(void net.sourceforge.pebble.logging.Request(String)): this.logEntries
    //#output(void net.sourceforge.pebble.logging.Request(String)): this.name
    //#output(void net.sourceforge.pebble.logging.Request(String)): this.newsFeed
    //#output(void net.sourceforge.pebble.logging.Request(String)): this.pageView
    //#output(void net.sourceforge.pebble.logging.Request(String)): this.url
    //#new obj(void net.sourceforge.pebble.logging.Request(String)): new LinkedList(CountedUrl#1)
    //#pre[1] (void net.sourceforge.pebble.logging.Request(String)): this.__Tag in {net/sourceforge/pebble/logging/CountedUrl, net/sourceforge/pebble/logging/Referer, net/sourceforge/pebble/logging/Request}
    //#post(void net.sourceforge.pebble.logging.Request(String)): this.__Tag == old this.__Tag
    //#post(void net.sourceforge.pebble.logging.Request(String)): this.__Tag in {net/sourceforge/pebble/logging/CountedUrl, net/sourceforge/pebble/logging/Referer, net/sourceforge/pebble/logging/Request}
    //#post(void net.sourceforge.pebble.logging.Request(String)): init'ed(this.blog)
    //#post(void net.sourceforge.pebble.logging.Request(String)): init'ed(this.fileDownload)
    //#post(void net.sourceforge.pebble.logging.Request(String)): this.logEntries == &new LinkedList(CountedUrl#1)
    //#post(void net.sourceforge.pebble.logging.Request(String)): possibly_updated(this.name)
    //#post(void net.sourceforge.pebble.logging.Request(String)): init'ed(this.newsFeed)
    //#post(void net.sourceforge.pebble.logging.Request(String)): init'ed(this.pageView)
    //#post(void net.sourceforge.pebble.logging.Request(String)): init'ed(this.url)
    //#post(void net.sourceforge.pebble.logging.Request(String)): new LinkedList(CountedUrl#1) num objects == 1
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:isBlogEntryPermalink
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:getBlogEntry
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getTitle
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:setName
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:setPageView
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:isMonthPermalink
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:getMonth
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getLocale
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.text.SimpleDateFormat
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getTimeZone
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.text.SimpleDateFormat:setTimeZone
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getDate
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.text.SimpleDateFormat:format
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:isDayPermalink
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:getDay
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.domain.Day:getDate
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:setUrl
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.util.regex.Pattern:matcher
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.util.regex.Matcher:matches
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:setNewsFeed
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.String:endsWith
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:setFileDownload
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getPermalinkProvider
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:getName
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.util.LinkedList
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.util.regex.Matcher:find
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.util.regex.Matcher:start
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.util.regex.Matcher:end
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.net.URLDecoder:decode
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String)): Effects-of-calling:java.lang.String:equalsIgnoreCase
  }
    //#request.java:65: end of method: void net.sourceforge.pebble.logging.Request.net.sourceforge.pebble.logging.Request(String)

  /**
   * Creates a new instance representing the specified url.
   *
   * @param url     the url as a String
   * @param blog    the owning Blog
   */
  public Request(String url, Blog blog) {
    super(url, blog);
    //#request.java:74: method: void net.sourceforge.pebble.logging.Request.net.sourceforge.pebble.logging.Request(String, Blog)
    //#request.java:74: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void net.sourceforge.pebble.logging.Request(String, Blog)
    //#    suspicious precondition index: [2]
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): AUTHOR_FEED_REGEX
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): CATEGORY_FEED_REGEX
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): RESPONSES_FEED_REGEX
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): TAG_FEED_REGEX
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): __Descendant_Table[net/sourceforge/pebble/logging/Request]
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): __Descendant_Table[others]
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): __Dispatch_Table.getName()Ljava/lang/String;
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): __Dispatch_Table.setFileDownload(Z)V
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): __Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): __Dispatch_Table.setNewsFeed(Z)V
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): __Dispatch_Table.setPageView(Z)V
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): __Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): blog
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/CountedUrl.__Descendant_Table[net/sourceforge/pebble/logging/CountedUrl]
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/CountedUrl.__Descendant_Table[net/sourceforge/pebble/logging/Referer]
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/CountedUrl.__Descendant_Table[net/sourceforge/pebble/logging/Request]
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/CountedUrl.__Descendant_Table[others]
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/CountedUrl.__Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.BING_QUERY_STRING_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.GOOGLE_IMAGES_QUERY_STRING_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.GOOGLE_QUERY_STRING_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.JAVABLOGS_HOT_ENTRIES_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.JAVABLOGS_WELCOME_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.MSN_QUERY_STRING_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.YAHOO_QUERY_STRING_PATTERN
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.__Descendant_Table[net/sourceforge/pebble/logging/Referer]
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.__Descendant_Table[others]
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/logging/Referer.__Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/permalink/DefaultPermalinkProvider.__Descendant_Table[net/sourceforge/pebble/permalink/DefaultPermalinkProvider]
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): net/sourceforge/pebble/permalink/DefaultPermalinkProvider.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): this
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): this.__Tag
    //#input(void net.sourceforge.pebble.logging.Request(String, Blog)): url
    //#output(void net.sourceforge.pebble.logging.Request(String, Blog)): new LinkedList(CountedUrl#1) num objects
    //#output(void net.sourceforge.pebble.logging.Request(String, Blog)): this.__Tag
    //#output(void net.sourceforge.pebble.logging.Request(String, Blog)): this.blog
    //#output(void net.sourceforge.pebble.logging.Request(String, Blog)): this.fileDownload
    //#output(void net.sourceforge.pebble.logging.Request(String, Blog)): this.logEntries
    //#output(void net.sourceforge.pebble.logging.Request(String, Blog)): this.name
    //#output(void net.sourceforge.pebble.logging.Request(String, Blog)): this.newsFeed
    //#output(void net.sourceforge.pebble.logging.Request(String, Blog)): this.pageView
    //#output(void net.sourceforge.pebble.logging.Request(String, Blog)): this.url
    //#new obj(void net.sourceforge.pebble.logging.Request(String, Blog)): new LinkedList(CountedUrl#1)
    //#pre[2] (void net.sourceforge.pebble.logging.Request(String, Blog)): this.__Tag in {net/sourceforge/pebble/logging/CountedUrl, net/sourceforge/pebble/logging/Referer, net/sourceforge/pebble/logging/Request}
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): this.__Tag == old this.__Tag
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): this.__Tag in {net/sourceforge/pebble/logging/CountedUrl, net/sourceforge/pebble/logging/Referer, net/sourceforge/pebble/logging/Request}
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): this.blog == blog
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): init'ed(this.blog)
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): init'ed(this.fileDownload)
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): this.logEntries == &new LinkedList(CountedUrl#1)
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): possibly_updated(this.name)
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): init'ed(this.newsFeed)
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): init'ed(this.pageView)
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): init'ed(this.url)
    //#post(void net.sourceforge.pebble.logging.Request(String, Blog)): new LinkedList(CountedUrl#1) num objects == 1
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:isBlogEntryPermalink
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:getBlogEntry
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getTitle
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:setName
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:setPageView
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:isMonthPermalink
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:getMonth
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getLocale
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.text.SimpleDateFormat
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getTimeZone
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.text.SimpleDateFormat:setTimeZone
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getDate
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.text.SimpleDateFormat:format
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:isDayPermalink
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:getDay
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.domain.Day:getDate
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:setUrl
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.util.regex.Pattern:matcher
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.util.regex.Matcher:matches
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:setNewsFeed
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.String:endsWith
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:setFileDownload
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getPermalinkProvider
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:getName
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.util.LinkedList
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.util.regex.Matcher:find
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.util.regex.Matcher:start
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.util.regex.Matcher:end
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.net.URLDecoder:decode
    //#unanalyzed(void net.sourceforge.pebble.logging.Request(String, Blog)): Effects-of-calling:java.lang.String:equalsIgnoreCase
  }
    //#request.java:75: end of method: void net.sourceforge.pebble.logging.Request.net.sourceforge.pebble.logging.Request(String, Blog)

  protected void setUrl(String url) {
    super.setUrl(url);
    //#request.java:78: method: void net.sourceforge.pebble.logging.Request.setUrl(String)
    //#input(void setUrl(String)): AUTHOR_FEED_REGEX
    //#input(void setUrl(String)): CATEGORY_FEED_REGEX
    //#input(void setUrl(String)): RESPONSES_FEED_REGEX
    //#input(void setUrl(String)): TAG_FEED_REGEX
    //#input(void setUrl(String)): __Descendant_Table[net/sourceforge/pebble/logging/Request]
    //#input(void setUrl(String)): __Descendant_Table[others]
    //#input(void setUrl(String)): __Dispatch_Table.getName()Ljava/lang/String;
    //#input(void setUrl(String)): __Dispatch_Table.setFileDownload(Z)V
    //#input(void setUrl(String)): __Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void setUrl(String)): __Dispatch_Table.setNewsFeed(Z)V
    //#input(void setUrl(String)): __Dispatch_Table.setPageView(Z)V
    //#input(void setUrl(String)): net/sourceforge/pebble/permalink/DefaultPermalinkProvider.__Descendant_Table[net/sourceforge/pebble/permalink/DefaultPermalinkProvider]
    //#input(void setUrl(String)): net/sourceforge/pebble/permalink/DefaultPermalinkProvider.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void setUrl(String)): this
    //#input(void setUrl(String)): this.__Tag
    //#input(void setUrl(String)): this.blog
    //#input(void setUrl(String)): this.name
    //#input(void setUrl(String)): url
    //#output(void setUrl(String)): this.fileDownload
    //#output(void setUrl(String)): this.name
    //#output(void setUrl(String)): this.newsFeed
    //#output(void setUrl(String)): this.pageView
    //#output(void setUrl(String)): this.url
    //#pre[6] (void setUrl(String)): this.__Tag == net/sourceforge/pebble/logging/Request
    //#pre[2] (void setUrl(String)): (soft) init'ed(this.name)
    //#pre[7] (void setUrl(String)): (soft) init'ed(this.blog)
    //#presumption(void setUrl(String)): java.util.regex.Pattern:compile(...)@53 != null
    //#presumption(void setUrl(String)): java.util.regex.Pattern:compile(...)@54 != null
    //#presumption(void setUrl(String)): java.util.regex.Pattern:compile(...)@55 != null
    //#presumption(void setUrl(String)): java.util.regex.Pattern:compile(...)@56 != null
    //#presumption(void setUrl(String)): java.util.regex.Pattern:matcher(...)@82 != null
    //#presumption(void setUrl(String)): java.util.regex.Pattern:matcher(...)@85 != null
    //#presumption(void setUrl(String)): java.util.regex.Pattern:matcher(...)@89 != null
    //#presumption(void setUrl(String)): java.util.regex.Pattern:matcher(...)@93 != null
    //#presumption(void setUrl(String)): net.sourceforge.pebble.domain.Blog:getPermalinkProvider(...)@163 != null
    //#post(void setUrl(String)): possibly_updated(this.fileDownload)
    //#post(void setUrl(String)): init'ed(this.name)
    //#post(void setUrl(String)): possibly_updated(this.newsFeed)
    //#post(void setUrl(String)): possibly_updated(this.pageView)
    //#post(void setUrl(String)): this.url == url
    //#post(void setUrl(String)): init'ed(this.url)
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:isBlogEntryPermalink
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:getBlogEntry
    //#unanalyzed(void setUrl(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getTitle
    //#unanalyzed(void setUrl(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void setUrl(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void setUrl(String)): Effects-of-calling:setName
    //#unanalyzed(void setUrl(String)): Effects-of-calling:setPageView
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:isMonthPermalink
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:getMonth
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getLocale
    //#unanalyzed(void setUrl(String)): Effects-of-calling:java.text.SimpleDateFormat
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getTimeZone
    //#unanalyzed(void setUrl(String)): Effects-of-calling:java.text.SimpleDateFormat:setTimeZone
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getDate
    //#unanalyzed(void setUrl(String)): Effects-of-calling:java.text.SimpleDateFormat:format
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:isDayPermalink
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.api.permalink.PermalinkProvider:getDay
    //#unanalyzed(void setUrl(String)): Effects-of-calling:net.sourceforge.pebble.domain.Day:getDate
    //#test_vector(void setUrl(String)): this.blog: Addr_Set{null}, Inverse{null}
    //#test_vector(void setUrl(String)): url: Addr_Set{null}, Inverse{null}
    //#test_vector(void setUrl(String)): java.lang.String:endsWith(...)@115: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:endsWith(...)@120: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:endsWith(...)@127: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:endsWith(...)@134: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:endsWith(...)@141: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:equals(...)@106: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:equals(...)@109: {1}, {0}
    //#test_vector(void setUrl(String)): java.lang.String:equals(...)@109: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:equals(...)@112: {1}, {0}
    //#test_vector(void setUrl(String)): java.lang.String:equals(...)@112: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:equals(...)@115: {1}, {0}
    //#test_vector(void setUrl(String)): java.lang.String:indexOf(...)@100: {0..4_294_967_295}, {-2_147_483_648..-1}
    //#test_vector(void setUrl(String)): java.lang.String:indexOf(...)@101: {-2_147_483_648..-1}, {0..4_294_967_295}
    //#test_vector(void setUrl(String)): java.lang.String:indexOf(...)@155: {-2_147_483_648..-1}, {0..4_294_967_295}
    //#test_vector(void setUrl(String)): java.lang.String:indexOf(...)@97: {0..4_294_967_295}, {-2_147_483_648..-1}
    //#test_vector(void setUrl(String)): java.lang.String:indexOf(...)@98: {0..4_294_967_295}, {-2_147_483_648..-1}
    //#test_vector(void setUrl(String)): java.lang.String:indexOf(...)@99: {0..4_294_967_295}, {-2_147_483_648..-1}
    //#test_vector(void setUrl(String)): java.lang.String:length(...)@80: {1..4_294_967_295}, {0}
    //#test_vector(void setUrl(String)): java.lang.String:startsWith(...)@115: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:startsWith(...)@118: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:startsWith(...)@125: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:startsWith(...)@132: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:startsWith(...)@139: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:startsWith(...)@146: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:startsWith(...)@150: {0}, {1}
    //#test_vector(void setUrl(String)): java.lang.String:startsWith(...)@153: {0}, {1}
    //#test_vector(void setUrl(String)): java.util.regex.Matcher:matches(...)@82: {0}, {1}
    //#test_vector(void setUrl(String)): java.util.regex.Matcher:matches(...)@85: {0}, {1}
    //#test_vector(void setUrl(String)): java.util.regex.Matcher:matches(...)@89: {0}, {1}
    //#test_vector(void setUrl(String)): java.util.regex.Matcher:matches(...)@93: {0}, {1}

    if (url == null || url.length() == 0) {
      setName("None");
    } else if (RESPONSES_FEED_REGEX.matcher(url).matches()) {
      setName("Feed : Responses");
      setNewsFeed(true);
    } else if (CATEGORY_FEED_REGEX.matcher(url).matches()) {
      String categoryName = url.substring("/categories/".length(), url.lastIndexOf("/"));
      setName("Feed : category=" + categoryName);
      setNewsFeed(true);
    } else if (TAG_FEED_REGEX.matcher(url).matches()) {
      String tagName = url.substring("/tags/".length(), url.lastIndexOf("/"));
      setName("Feed : tag=" + tagName);
      setNewsFeed(true);
    } else if (AUTHOR_FEED_REGEX.matcher(url).matches()) {
      String authorName = url.substring("/authors/".length(), url.lastIndexOf("/"));
      setName("Feed : author=" + authorName);
      setNewsFeed(true);
    } else if (url.indexOf("rss.xml") > -1 ||
        url.indexOf("feed.xml") > -1 ||
        url.indexOf("feed.action") > -1 ||
        url.indexOf("rdf.xml") > -1 ||
        url.indexOf("atom.xml") > -1
        ) {
      setName("Feed : Blog Entries");
      setNewsFeed(true);
    } else if (blog != null) {
      if (url.equals("/")) {
        setName("Home");
        setPageView(true);
      } else if (url.equals("/categories/") || url.equals("/categories")) {
        setName("Categories");
        setPageView(true);
      } else if (url.equals("/tags/") || url.equals("/tags")) {
        setName("Tags");
        setPageView(true);
      } else if (url.equals("/files") || (url.startsWith("/files/") && url.endsWith("/"))) {
        setName("Files");
        setPageView(true);
      } else if (url.startsWith("/categories/")) {
        String categoryName = url.substring("/categories/".length());
        if (categoryName.endsWith("/")) {
          categoryName = categoryName.substring(0, categoryName.length()-1);
        }
        setName("Category : " + categoryName);
        setPageView(true);
      } else if (url.startsWith("/tags/")) {
        String tagName = url.substring("/tags/".length());
        if (tagName.endsWith("/")) {
          tagName = tagName.substring(0, tagName.length()-1);
        }
        setName("Tag : " + tagName);
        setPageView(true);
      } else if (url.startsWith("/authors/")) {
        String authorName = url.substring("/authors/".length());
        if (authorName.endsWith("/")) {
          authorName = authorName.substring(0, authorName.length()-1);
        }
        setName("Author : " + authorName);
        setPageView(true);
      } else if (url.startsWith("/files/")) {
        String fileName = url.substring("/files/".length());
        if (fileName.endsWith("/")) {
          fileName = fileName.substring(0, fileName.length()-1);
        }
        setName("File : " + fileName);
        setFileDownload(true);
      } else if (url.startsWith("/pages/")) {
        String pageName = url.substring("/pages/".length());
        setName("Static Page : " + pageName);
        setPageView(true);
      } else if (url.startsWith("/search.action")) {
        setName("Search");
        setPageView(true);
      } else if (url.startsWith("/blogentries/")) {
        String pageNumber = url.substring("/blogentries/".length());
        if (pageNumber.indexOf(".") > -1) {
	        pageNumber = pageNumber.substring(0, pageNumber.indexOf("."));
		} else {
			pageNumber = "1";
		}
        setName("Blog Entries : Page " + pageNumber);
        setPageView(true);
      } else {
        matchOnPermalinkProvider(url, blog.getPermalinkProvider());
    //#request.java:163: Warning: method not available
    //#    -- call on PermalinkProvider net.sourceforge.pebble.domain.Blog:getPermalinkProvider()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void setUrl(String)
    //#    unanalyzed callee: PermalinkProvider net.sourceforge.pebble.domain.Blog:getPermalinkProvider()

        if (getName() == null) {
          // try with the default permalink provider
          DefaultPermalinkProvider defaultPermalinkProvider = new DefaultPermalinkProvider();
          defaultPermalinkProvider.setBlog(blog);
          matchOnPermalinkProvider(url, defaultPermalinkProvider);
        }
      }
    }

    if (getName() == null) {
      setName(url);
      setPageView(true);
    }
  }
    //#request.java:178: end of method: void net.sourceforge.pebble.logging.Request.setUrl(String)

  private void matchOnPermalinkProvider(String url,
      PermalinkProvider permalinkProvider) {
    try {
      if (permalinkProvider.isBlogEntryPermalink(url)) {
    //#request.java:183: method: void net.sourceforge.pebble.logging.Request.matchOnPermalinkProvider(String, PermalinkProvider)
    //#request.java:183: Warning: method not available
    //#    -- call on bool net.sourceforge.pebble.api.permalink.PermalinkProvider:isBlogEntryPermalink(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: bool net.sourceforge.pebble.api.permalink.PermalinkProvider:isBlogEntryPermalink(String)
    //#input(void matchOnPermalinkProvider(String, PermalinkProvider)): __Descendant_Table[net/sourceforge/pebble/logging/Request]
    //#input(void matchOnPermalinkProvider(String, PermalinkProvider)): __Descendant_Table[others]
    //#input(void matchOnPermalinkProvider(String, PermalinkProvider)): __Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void matchOnPermalinkProvider(String, PermalinkProvider)): __Dispatch_Table.setPageView(Z)V
    //#input(void matchOnPermalinkProvider(String, PermalinkProvider)): permalinkProvider
    //#input(void matchOnPermalinkProvider(String, PermalinkProvider)): this
    //#input(void matchOnPermalinkProvider(String, PermalinkProvider)): this.__Tag
    //#input(void matchOnPermalinkProvider(String, PermalinkProvider)): this.blog
    //#input(void matchOnPermalinkProvider(String, PermalinkProvider)): url
    //#output(void matchOnPermalinkProvider(String, PermalinkProvider)): this.name
    //#output(void matchOnPermalinkProvider(String, PermalinkProvider)): this.pageView
    //#pre[3] (void matchOnPermalinkProvider(String, PermalinkProvider)): (soft) permalinkProvider != null
    //#pre[5] (void matchOnPermalinkProvider(String, PermalinkProvider)): (soft) this.__Tag == net/sourceforge/pebble/logging/Request
    //#pre[6] (void matchOnPermalinkProvider(String, PermalinkProvider)): (soft) this.blog != null
    //#post(void matchOnPermalinkProvider(String, PermalinkProvider)): possibly_updated(this.name)
    //#post(void matchOnPermalinkProvider(String, PermalinkProvider)): possibly_updated(this.pageView)
    //#test_vector(void matchOnPermalinkProvider(String, PermalinkProvider)): net.sourceforge.pebble.api.permalink.PermalinkProvider:getBlogEntry(...)@184: Addr_Set{null}, Inverse{null}
    //#test_vector(void matchOnPermalinkProvider(String, PermalinkProvider)): net.sourceforge.pebble.api.permalink.PermalinkProvider:getDay(...)@200: Addr_Set{null}, Inverse{null}
    //#test_vector(void matchOnPermalinkProvider(String, PermalinkProvider)): net.sourceforge.pebble.api.permalink.PermalinkProvider:getMonth(...)@190: Addr_Set{null}, Inverse{null}
    //#test_vector(void matchOnPermalinkProvider(String, PermalinkProvider)): net.sourceforge.pebble.api.permalink.PermalinkProvider:isBlogEntryPermalink(...)@183: {0}, {1}
    //#test_vector(void matchOnPermalinkProvider(String, PermalinkProvider)): net.sourceforge.pebble.api.permalink.PermalinkProvider:isDayPermalink(...)@198: {0}, {1}
    //#test_vector(void matchOnPermalinkProvider(String, PermalinkProvider)): net.sourceforge.pebble.api.permalink.PermalinkProvider:isMonthPermalink(...)@189: {0}, {1}
        BlogEntry blogEntry = permalinkProvider.getBlogEntry(url);
    //#request.java:184: Warning: method not available
    //#    -- call on BlogEntry net.sourceforge.pebble.api.permalink.PermalinkProvider:getBlogEntry(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: BlogEntry net.sourceforge.pebble.api.permalink.PermalinkProvider:getBlogEntry(String)
        if (blogEntry != null) {
          setName("Blog Entry : " + blogEntry.getTitle());
    //#request.java:186: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.BlogEntry:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.BlogEntry:getTitle()
          setPageView(true);
        }
      } else if (permalinkProvider.isMonthPermalink(url)) {
    //#request.java:189: Warning: method not available
    //#    -- call on bool net.sourceforge.pebble.api.permalink.PermalinkProvider:isMonthPermalink(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: bool net.sourceforge.pebble.api.permalink.PermalinkProvider:isMonthPermalink(String)
        Month month = permalinkProvider.getMonth(url);
    //#request.java:190: Warning: method not available
    //#    -- call on Month net.sourceforge.pebble.api.permalink.PermalinkProvider:getMonth(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: Month net.sourceforge.pebble.api.permalink.PermalinkProvider:getMonth(String)
        SimpleDateFormat formatter = new SimpleDateFormat("MMMM yyyy", blog
            .getLocale());
    //#request.java:192: Warning: method not available
    //#    -- call on Locale net.sourceforge.pebble.domain.Blog:getLocale()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: Locale net.sourceforge.pebble.domain.Blog:getLocale()
        formatter.setTimeZone(blog.getTimeZone());
    //#request.java:193: Warning: method not available
    //#    -- call on TimeZone net.sourceforge.pebble.domain.Blog:getTimeZone()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: TimeZone net.sourceforge.pebble.domain.Blog:getTimeZone()
        if (month != null) {
          setName("Month : " + formatter.format(month.getDate()));
    //#request.java:195: Warning: method not available
    //#    -- call on Date net.sourceforge.pebble.domain.Month:getDate()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: Date net.sourceforge.pebble.domain.Month:getDate()
          setPageView(true);
        }
      } else if (permalinkProvider.isDayPermalink(url)) {
    //#request.java:198: Warning: method not available
    //#    -- call on bool net.sourceforge.pebble.api.permalink.PermalinkProvider:isDayPermalink(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: bool net.sourceforge.pebble.api.permalink.PermalinkProvider:isDayPermalink(String)
        Day day = null;
    //#request.java:199: Warning: unused assignment
    //#    unused assignment into day
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    Attribs:  Uncertain
        day = permalinkProvider.getDay(url);
    //#request.java:200: Warning: method not available
    //#    -- call on Day net.sourceforge.pebble.api.permalink.PermalinkProvider:getDay(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: Day net.sourceforge.pebble.api.permalink.PermalinkProvider:getDay(String)
        SimpleDateFormat formatter = new SimpleDateFormat("dd MMMM yyyy", blog
            .getLocale());
    //#request.java:202: Warning: method not available
    //#    -- call on Locale net.sourceforge.pebble.domain.Blog:getLocale()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: Locale net.sourceforge.pebble.domain.Blog:getLocale()
        formatter.setTimeZone(blog.getTimeZone());
    //#request.java:203: Warning: method not available
    //#    -- call on TimeZone net.sourceforge.pebble.domain.Blog:getTimeZone()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: TimeZone net.sourceforge.pebble.domain.Blog:getTimeZone()
        if (day != null) {
          setName("Day : " + formatter.format(day.getDate()));
    //#request.java:205: Warning: method not available
    //#    -- call on Date net.sourceforge.pebble.domain.Day:getDate()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.logging.Request
    //#    method: void matchOnPermalinkProvider(String, PermalinkProvider)
    //#    unanalyzed callee: Date net.sourceforge.pebble.domain.Day:getDate()
          setPageView(true);
        }
      }
    } catch (IllegalArgumentException e) {
      setName("Error: " + url);
      setPageView(false);
    }
  }
    //#request.java:213: end of method: void net.sourceforge.pebble.logging.Request.matchOnPermalinkProvider(String, PermalinkProvider)

}    //#request.java:: end of class: net.sourceforge.pebble.logging.Request
