//# 0 errors, 209 messages
//#
package net.sourceforge.pebble.decorator;
    //#relativeuridecorator.java:1:1: class: net.sourceforge.pebble.decorator.RelativeUriDecorator
    //#relativeuridecorator.java:1:1: method: net.sourceforge.pebble.decorator.RelativeUriDecorator.net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init

import net.sourceforge.pebble.domain.Attachment;
import net.sourceforge.pebble.domain.BlogEntry;
import net.sourceforge.pebble.domain.StaticPage;
import net.sourceforge.pebble.api.decorator.ContentDecoratorContext;

/**
 * Translates relative URIs in blog entries and static pages into absolute URLs.
 * 
 * @author Simon Brown
 */
public class RelativeUriDecorator extends ContentDecoratorSupport {
    //#relativeuridecorator.java:13: method: void net.sourceforge.pebble.decorator.RelativeUriDecorator.net.sourceforge.pebble.decorator.RelativeUriDecorator()
    //#input(void net.sourceforge.pebble.decorator.RelativeUriDecorator()): this
    //#relativeuridecorator.java:13: end of method: void net.sourceforge.pebble.decorator.RelativeUriDecorator.net.sourceforge.pebble.decorator.RelativeUriDecorator()

  /**
   * Decorates the specified blog entry.
   *
   * @param context   the context in which the decoration is running
   * @param blogEntry the blog entry to be decorated
   */
  public void decorate(ContentDecoratorContext context, BlogEntry blogEntry) {
    blogEntry.setBody(replaceCommonUris(blogEntry.getBody()));
    //#relativeuridecorator.java:22: method: void net.sourceforge.pebble.decorator.RelativeUriDecorator.decorate(ContentDecoratorContext, BlogEntry)
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): __Descendant_Table[net/sourceforge/pebble/decorator/RelativeUriDecorator]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): __Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.__Tag
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.attachment
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.attachment.__Tag
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.attachment.url
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.body
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.excerpt
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.propertyChangeSupport
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/Attachment.__Descendant_Table[net/sourceforge/pebble/domain/Attachment]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/Attachment.__Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/Attachment.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/Attachment.__Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getAttachment()Lnet/sourceforge/pebble/domain/Attachment;
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.setBody(Ljava/lang/String;)V
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.setExcerpt(Ljava/lang/String;)V
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): this
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): this.__Tag
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): this.blog
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): this.blog.__Tag
    //#input(void decorate(ContentDecoratorContext, BlogEntry)): this.blog.id
    //#output(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.attachment.url
    //#output(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.body
    //#output(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.excerpt
    //#pre[1] (void decorate(ContentDecoratorContext, BlogEntry)): blogEntry != null
    //#pre[2] (void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (void decorate(ContentDecoratorContext, BlogEntry)): init'ed(blogEntry.attachment)
    //#pre[5] (void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.propertyChangeSupport != null
    //#pre[10] (void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.body != null
    //#pre[11] (void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.excerpt != null
    //#pre[13] (void decorate(ContentDecoratorContext, BlogEntry)): this.__Tag == net/sourceforge/pebble/decorator/RelativeUriDecorator
    //#pre[14] (void decorate(ContentDecoratorContext, BlogEntry)): this.blog != null
    //#pre[4] (void decorate(ContentDecoratorContext, BlogEntry)): (soft) blogEntry.attachment.__Tag == net/sourceforge/pebble/domain/Attachment
    //#pre[6] (void decorate(ContentDecoratorContext, BlogEntry)): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[7] (void decorate(ContentDecoratorContext, BlogEntry)): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[8] (void decorate(ContentDecoratorContext, BlogEntry)): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[9] (void decorate(ContentDecoratorContext, BlogEntry)): (soft) blogEntry.attachment.url != null
    //#pre[15] (void decorate(ContentDecoratorContext, BlogEntry)): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[16] (void decorate(ContentDecoratorContext, BlogEntry)): (soft) init'ed(this.blog.id)
    //#post(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.attachment.url != null
    //#post(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.body != null
    //#post(void decorate(ContentDecoratorContext, BlogEntry)): init'ed(blogEntry.excerpt)
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:getBlog
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:getUrl
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:java.beans.PropertyChangeSupport:firePropertyChange
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void decorate(ContentDecoratorContext, BlogEntry)): Effects-of-calling:java.lang.String:trim
    //#test_vector(void decorate(ContentDecoratorContext, BlogEntry)): blogEntry.attachment: Addr_Set{null}, Inverse{null}
    //#test_vector(void decorate(ContentDecoratorContext, BlogEntry)): java.lang.String:startsWith(...)@28: {0}, {1}
    blogEntry.setExcerpt(replaceCommonUris(blogEntry.getExcerpt()));

    Attachment attachment = blogEntry.getAttachment();
    if (attachment != null) {
      String attachmentUrl = attachment.getUrl();
      if (attachmentUrl.startsWith("./")) {
        attachment.setUrl(getBlog().getUrl() + attachmentUrl.substring(2));
      }
    }
  }
    //#relativeuridecorator.java:32: end of method: void net.sourceforge.pebble.decorator.RelativeUriDecorator.decorate(ContentDecoratorContext, BlogEntry)

  /**
   * Decorates the specified static page.
   *
   * @param context    the context in which the decoration is running
   * @param staticPage the static page to be decorated
   */
  public void decorate(ContentDecoratorContext context, StaticPage staticPage) {
    staticPage.setBody(replaceCommonUris(staticPage.getBody()));
    //#relativeuridecorator.java:41: method: void net.sourceforge.pebble.decorator.RelativeUriDecorator.decorate(ContentDecoratorContext, StaticPage)
    //#input(void decorate(ContentDecoratorContext, StaticPage)): __Descendant_Table[net/sourceforge/pebble/decorator/RelativeUriDecorator]
    //#input(void decorate(ContentDecoratorContext, StaticPage)): __Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, StaticPage)): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void decorate(ContentDecoratorContext, StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.setBody(Ljava/lang/String;)V
    //#input(void decorate(ContentDecoratorContext, StaticPage)): staticPage
    //#input(void decorate(ContentDecoratorContext, StaticPage)): staticPage.__Tag
    //#input(void decorate(ContentDecoratorContext, StaticPage)): staticPage.body
    //#input(void decorate(ContentDecoratorContext, StaticPage)): staticPage.propertyChangeSupport
    //#input(void decorate(ContentDecoratorContext, StaticPage)): this
    //#input(void decorate(ContentDecoratorContext, StaticPage)): this.__Tag
    //#input(void decorate(ContentDecoratorContext, StaticPage)): this.blog
    //#input(void decorate(ContentDecoratorContext, StaticPage)): this.blog.__Tag
    //#input(void decorate(ContentDecoratorContext, StaticPage)): this.blog.id
    //#output(void decorate(ContentDecoratorContext, StaticPage)): staticPage.body
    //#pre[4] (void decorate(ContentDecoratorContext, StaticPage)): staticPage.body != null
    //#pre[5] (void decorate(ContentDecoratorContext, StaticPage)): staticPage != null
    //#pre[6] (void decorate(ContentDecoratorContext, StaticPage)): staticPage.__Tag == net/sourceforge/pebble/domain/StaticPage
    //#pre[7] (void decorate(ContentDecoratorContext, StaticPage)): staticPage.propertyChangeSupport != null
    //#pre[9] (void decorate(ContentDecoratorContext, StaticPage)): this.__Tag == net/sourceforge/pebble/decorator/RelativeUriDecorator
    //#pre[10] (void decorate(ContentDecoratorContext, StaticPage)): this.blog != null
    //#pre[1] (void decorate(ContentDecoratorContext, StaticPage)): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (void decorate(ContentDecoratorContext, StaticPage)): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (void decorate(ContentDecoratorContext, StaticPage)): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[11] (void decorate(ContentDecoratorContext, StaticPage)): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[12] (void decorate(ContentDecoratorContext, StaticPage)): (soft) init'ed(this.blog.id)
    //#post(void decorate(ContentDecoratorContext, StaticPage)): staticPage.body != null
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:getBlog
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:getUrl
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:java.beans.PropertyChangeSupport:firePropertyChange
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void decorate(ContentDecoratorContext, StaticPage)): Effects-of-calling:java.lang.String:substring
  }
    //#relativeuridecorator.java:42: end of method: void net.sourceforge.pebble.decorator.RelativeUriDecorator.decorate(ContentDecoratorContext, StaticPage)

  /**
   * Helper method to replace common relative URIs with their absolute values.
   *
   * @param s   the String containing relative URIs
   * @return    a new String containing absolute URLs
   */
  private String replaceCommonUris(String s) {
    s = s.replaceAll("href=\"\\./", "href=\"" + getBlog().getUrl());
    //#relativeuridecorator.java:51: method: String net.sourceforge.pebble.decorator.RelativeUriDecorator.replaceCommonUris(String)
    //#input(String replaceCommonUris(String)): __Descendant_Table[net/sourceforge/pebble/decorator/RelativeUriDecorator]
    //#input(String replaceCommonUris(String)): __Descendant_Table[others]
    //#input(String replaceCommonUris(String)): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(String replaceCommonUris(String)): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(String replaceCommonUris(String)): s
    //#input(String replaceCommonUris(String)): this
    //#input(String replaceCommonUris(String)): this.__Tag
    //#input(String replaceCommonUris(String)): this.blog
    //#input(String replaceCommonUris(String)): this.blog.__Tag
    //#input(String replaceCommonUris(String)): this.blog.id
    //#output(String replaceCommonUris(String)): return_value
    //#pre[4] (String replaceCommonUris(String)): s != null
    //#pre[6] (String replaceCommonUris(String)): this.__Tag == net/sourceforge/pebble/decorator/RelativeUriDecorator
    //#pre[7] (String replaceCommonUris(String)): this.blog != null
    //#pre[1] (String replaceCommonUris(String)): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (String replaceCommonUris(String)): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (String replaceCommonUris(String)): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[8] (String replaceCommonUris(String)): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[9] (String replaceCommonUris(String)): (soft) init'ed(this.blog.id)
    //#post(String replaceCommonUris(String)): return_value != null
    //#unanalyzed(String replaceCommonUris(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String replaceCommonUris(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String replaceCommonUris(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String replaceCommonUris(String)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(String replaceCommonUris(String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String replaceCommonUris(String)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(String replaceCommonUris(String)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(String replaceCommonUris(String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String replaceCommonUris(String)): Effects-of-calling:java.lang.String:substring
    s = s.replaceAll("href='\\./", "href='" + getBlog().getUrl());
    s = s.replaceAll("src=\"\\./", "src=\"" + getBlog().getUrl());
    s = s.replaceAll("src='\\./", "src='" + getBlog().getUrl());
    return s;
    //#relativeuridecorator.java:55: end of method: String net.sourceforge.pebble.decorator.RelativeUriDecorator.replaceCommonUris(String)
  }

}    //#output(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Descendant_Table[net/sourceforge/pebble/decorator/RelativeUriDecorator]
    //#output(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.decorate(Lnet/sourceforge/pebble/api/decorator/ContentDecoratorContext;Lnet/sourceforge/pebble/domain/BlogEntry;)V
    //#output(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.decorate(Lnet/sourceforge/pebble/api/decorator/ContentDecoratorContext;Lnet/sourceforge/pebble/domain/Comment;)V
    //#output(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.decorate(Lnet/sourceforge/pebble/api/decorator/ContentDecoratorContext;Lnet/sourceforge/pebble/domain/StaticPage;)V
    //#output(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.decorate(Lnet/sourceforge/pebble/api/decorator/ContentDecoratorContext;Lnet/sourceforge/pebble/domain/TrackBack;)V
    //#output(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#output(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.replaceCommonUris(Ljava/lang/String;)Ljava/lang/String;
    //#output(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#output(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): net/sourceforge/pebble/api/decorator/ContentDecorator.__Descendant_Table[net/sourceforge/pebble/decorator/RelativeUriDecorator]
    //#output(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): net/sourceforge/pebble/decorator/ContentDecoratorSupport.__Descendant_Table[net/sourceforge/pebble/decorator/RelativeUriDecorator]
    //#post(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Descendant_Table[net/sourceforge/pebble/decorator/RelativeUriDecorator] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): net/sourceforge/pebble/api/decorator/ContentDecorator.__Descendant_Table[net/sourceforge/pebble/decorator/RelativeUriDecorator] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): net/sourceforge/pebble/decorator/ContentDecoratorSupport.__Descendant_Table[net/sourceforge/pebble/decorator/RelativeUriDecorator] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.decorate(Lnet/sourceforge/pebble/api/decorator/ContentDecoratorContext;Lnet/sourceforge/pebble/domain/BlogEntry;)V == &decorate
    //#post(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.decorate(Lnet/sourceforge/pebble/api/decorator/ContentDecoratorContext;Lnet/sourceforge/pebble/domain/Comment;)V == &net/sourceforge/pebble/decorator/ContentDecoratorSupport.decorate
    //#post(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.decorate(Lnet/sourceforge/pebble/api/decorator/ContentDecoratorContext;Lnet/sourceforge/pebble/domain/StaticPage;)V == &decorate
    //#post(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.decorate(Lnet/sourceforge/pebble/api/decorator/ContentDecoratorContext;Lnet/sourceforge/pebble/domain/TrackBack;)V == &net/sourceforge/pebble/decorator/ContentDecoratorSupport.decorate
    //#post(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog; == &net/sourceforge/pebble/decorator/ContentDecoratorSupport.getBlog
    //#post(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.replaceCommonUris(Ljava/lang/String;)Ljava/lang/String; == &replaceCommonUris
    //#post(net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init): __Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V == &net/sourceforge/pebble/decorator/ContentDecoratorSupport.setBlog
    //#relativeuridecorator.java:: end of method: net.sourceforge.pebble.decorator.RelativeUriDecorator.net.sourceforge.pebble.decorator.RelativeUriDecorator__static_init
    //#relativeuridecorator.java:: end of class: net.sourceforge.pebble.decorator.RelativeUriDecorator
