[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine ...

Christian Bauer christian at hibernate.org
Sat Dec 29 21:33:23 EST 2007


  User: cbauer  
  Date: 07/12/29 21:33:23

  Modified:    examples/wiki/src/main/org/jboss/seam/wiki/core/engine      
                        MacroWikiTextRenderer.java WikiTextRenderer.java
                        NullWikiTextRenderer.java
                        DefaultWikiTextRenderer.java WikiTextParser.java
  Added:       examples/wiki/src/main/org/jboss/seam/wiki/core/engine      
                        WikiMacro.java
  Log:
  Complete overhaul of the preferences system
  
  Revision  Changes    Path
  1.2       +3 -8      jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/MacroWikiTextRenderer.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: MacroWikiTextRenderer.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/MacroWikiTextRenderer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- MacroWikiTextRenderer.java	19 Dec 2007 04:29:18 -0000	1.1
  +++ MacroWikiTextRenderer.java	30 Dec 2007 02:33:23 -0000	1.2
  @@ -1,8 +1,5 @@
   package org.jboss.seam.wiki.core.engine;
   
  -import org.jboss.seam.wiki.core.model.WikiMacro;
  -import org.jboss.seam.Component;
  -
   import java.util.Set;
   import java.util.LinkedHashSet;
   
  @@ -14,9 +11,10 @@
       private Set<WikiMacro> macros = new LinkedHashSet<WikiMacro>();
       private StringBuilder macrosString = new StringBuilder();
   
  -    public void addMacro(WikiMacro macro) {
  +    public String renderMacro(WikiMacro macro) {
           macros.add(macro);
           macrosString.append(macro.getName()).append(" ");
  +        return null;
       }
   
       public Set<WikiMacro> getMacros() {
  @@ -27,14 +25,11 @@
           return macrosString.toString();
       }
   
  -    public static MacroWikiTextRenderer renderMacros(Long areaNumber, String wikiText) {
  +    public static MacroWikiTextRenderer renderMacros(String wikiText) {
           WikiTextParser parser = new WikiTextParser(wikiText, false, false);
  -        parser.setCurrentAreaNumber(areaNumber);
  -        parser.setResolver((WikiLinkResolver) Component.getInstance("wikiLinkResolver"));
           MacroWikiTextRenderer renderer = new MacroWikiTextRenderer();
           try {
               parser.setRenderer(renderer).parse();
  -
           } catch (RecognitionException rex) {
               // Swallowing, we don't really care if there was a parse error
           } catch (ANTLRException ex) {
  
  
  
  1.7       +2 -3      jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiTextRenderer.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: WikiTextRenderer.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiTextRenderer.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -b -r1.6 -r1.7
  --- WikiTextRenderer.java	19 Dec 2007 15:07:39 -0000	1.6
  +++ WikiTextRenderer.java	30 Dec 2007 02:33:23 -0000	1.7
  @@ -1,6 +1,6 @@
   package org.jboss.seam.wiki.core.engine;
   
  -import org.jboss.seam.wiki.core.model.WikiMacro;
  +import org.jboss.seam.wiki.core.engine.WikiMacro;
   
   import java.util.List;
   
  @@ -15,8 +15,7 @@
       public String renderExternalLink(WikiLink externalLink);
       public String renderThumbnailImageInlineLink(WikiLink inlineLink);
       public String renderFileAttachmentLink(int attachmentNumber, WikiLink attachmentLink);
  -    public String renderMacro(String macroName);
  -    public void addMacro(WikiMacro macro);
  +    public String renderMacro(WikiMacro macro);
   
       public String renderParagraphOpenTag();
       public String renderPreformattedOpenTag();
  
  
  
  1.4       +2 -3      jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/NullWikiTextRenderer.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: NullWikiTextRenderer.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/NullWikiTextRenderer.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- NullWikiTextRenderer.java	19 Dec 2007 15:07:39 -0000	1.3
  +++ NullWikiTextRenderer.java	30 Dec 2007 02:33:23 -0000	1.4
  @@ -1,6 +1,6 @@
   package org.jboss.seam.wiki.core.engine;
   
  -import org.jboss.seam.wiki.core.model.WikiMacro;
  +import org.jboss.seam.wiki.core.engine.WikiMacro;
   
   import java.util.List;
   
  @@ -17,8 +17,7 @@
       public String renderThumbnailImageInlineLink(WikiLink inlineLink) { return null; }
       public void setAttachmentLinks(List<WikiLink> attachmentLinks) {}
       public void setExternalLinks(List<WikiLink> externalLinks) {}
  -    public String renderMacro(String macroName) { return null; }
  -    public void addMacro(WikiMacro macro) {}
  +    public String renderMacro(WikiMacro macro) { return null; }
       public String renderParagraphOpenTag() { return "<p>\n"; }
       public String renderPreformattedOpenTag() { return "<pre>\n"; }
       public String renderBlockquoteOpenTag() { return "<blockquote>\n"; }
  
  
  
  1.5       +2 -4      jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/DefaultWikiTextRenderer.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DefaultWikiTextRenderer.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/DefaultWikiTextRenderer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- DefaultWikiTextRenderer.java	19 Dec 2007 15:07:39 -0000	1.4
  +++ DefaultWikiTextRenderer.java	30 Dec 2007 02:33:23 -0000	1.5
  @@ -1,7 +1,7 @@
   package org.jboss.seam.wiki.core.engine;
   
   import org.jboss.seam.wiki.util.WikiUtil;
  -import org.jboss.seam.wiki.core.model.WikiMacro;
  +import org.jboss.seam.wiki.core.engine.WikiMacro;
   
   import java.util.List;
   
  @@ -37,12 +37,10 @@
           return "[Embedded Image]";
       }
   
  -    public String renderMacro(String macroName) {
  +    public String renderMacro(WikiMacro macro) {
           return "[Macro]";
       }
   
  -    public void addMacro(WikiMacro macro) {}
  -
       public void setAttachmentLinks(List<WikiLink> attachmentLinks) {}
       public void setExternalLinks(List<WikiLink> externalLinks) {}
   
  
  
  
  1.13      +16 -10    jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiTextParser.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: WikiTextParser.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiTextParser.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -b -r1.12 -r1.13
  --- WikiTextParser.java	19 Dec 2007 15:07:39 -0000	1.12
  +++ WikiTextParser.java	30 Dec 2007 02:33:23 -0000	1.13
  @@ -31,9 +31,12 @@
    */
   public class WikiTextParser extends SeamTextParser {
   
  +    private int macroPosition = 0;
       private int linkCounter = 0;
   
       private WikiTextRenderer renderer;
  +
  +    private boolean resolveLinks;
       private WikiLinkResolver resolver;
       private Long currentAreaNumber;
   
  @@ -42,7 +45,6 @@
       private List<WikiLink> externalLinks = new ArrayList<WikiLink>();
       private Set<String> macroNames = new HashSet<String>();
       private boolean renderDuplicateMacros;
  -    private boolean resolveLinks;
   
       public WikiTextParser(String wikiText, boolean renderDuplicateMacros, boolean resolveLinks) {
           super(new SeamTextLexer(new StringReader(wikiText)));
  @@ -87,9 +89,12 @@
        * @throws ANTLRException if lexer or parser errors occur, see
        */
       public void parse() throws ANTLRException {
  -        if (resolver == null) throw new IllegalStateException("WikiTextParser requires not null setResolver()");
           if (renderer == null) throw new IllegalStateException("WikiTextParser requires not null setRenderer()");
  +
  +        if (resolveLinks) {
  +            if (resolver == null) throw new IllegalStateException("WikiTextParser requires not null setResolver()");
           if (currentAreaNumber == null) throw new IllegalStateException("WikiTextParser requires not null setCurrentAreaNumber()");
  +        }
   
           startRule();
   
  @@ -193,18 +198,19 @@
           return renderer.renderEmphasisCloseTag();
       }
   
  -    protected String macroInclude(SeamTextMacro macro) {
  -        // Filter out any dangerous characters
  -        String filteredName = macro.name.replaceAll("[^\\p{Alnum}]+", "");
  -        if ( (macroNames.contains(filteredName) && renderDuplicateMacros) || !macroNames.contains(filteredName)) {
  -            macroNames.add(filteredName);
  +    protected String macroInclude(Macro macro) {
  +        if (macro.name == null || macro.name.length() == 0) return "";
  +
  +        if ( (macroNames.contains(macro.name) && renderDuplicateMacros) || !macroNames.contains(macro.name)) {
  +            macroNames.add(macro.name);
   
               WikiMacro wikiMacro = new WikiMacro(macro.name);
               wikiMacro.setParams(macro.params);
  -            renderer.addMacro(wikiMacro);
  +            wikiMacro.setPosition(macroPosition++);
   
  -            return renderer.renderMacro(filteredName);
  +            return renderer.renderMacro(wikiMacro);
           } else {
  +            macroPosition++;
               return "[Can't use the same macro twice!]";
           }
       }
  
  
  
  1.1      date: 2007/12/30 02:33:23;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiMacro.java
  
  Index: WikiMacro.java
  ===================================================================
  package org.jboss.seam.wiki.core.engine;
  
  import java.io.Serializable;
  import java.util.SortedMap;
  import java.util.TreeMap;
  
  public class WikiMacro implements Serializable {
  
      /* TODO: Extract metadata and build macro framework
      protected String[] skins = {"d", "m"}
      protected long accessLevel = 0;
  
      protected boolean documentDiscriminator = false;
  
      protected boolean reentrant = true;
      protected boolean renderedOnce = false;
      protected boolean affectsRenderingOnly = true;
  
      protected boolean appliesToHeader = false;
      protected boolean appliesToContent = true;
      protected boolean appliesToFooter = false;
  
      protected boolean displayedInPreview = true;
      */
  
      private Integer position;
      private String clientId;
      private String name;
      private SortedMap<String,String> params = new TreeMap<String,String>();
  
      public WikiMacro(String name) {
          this.name = name;
      }
  
      public Integer getPosition() {
          return position;
      }
  
      public void setPosition(Integer position) {
          this.position = position;
      }
  
      public String getClientId() {
          return clientId;
      }
  
      public void setClientId(String clientId) {
          this.clientId = clientId;
      }
  
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public SortedMap<String, String> getParams() {
          return params;
      }
  
      public void setParams(SortedMap<String, String> params) {
          this.params = params;
      }
  
      public boolean equals(Object o) {
          if (this == o) return true;
          if (o == null || getClass() != o.getClass()) return false;
  
          WikiMacro wikiMacro = (WikiMacro) o;
  
          if (!name.equals(wikiMacro.name)) return false;
          if (position != null ? !position.equals(wikiMacro.position) : wikiMacro.position != null) return false;
  
          return true;
      }
  
      public int hashCode() {
          int result;
          result = (position != null ? position.hashCode() : 0);
          result = 31 * result + name.hashCode();
          return result;
      }
  
      public String toString() {
          return "WikiMacro (" + getPosition() + "): " + getName() + " Params: " + getParams().size();
      }
  }
  
  
  



More information about the jboss-cvs-commits mailing list