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

Christian Bauer christian at hibernate.org
Tue Dec 18 23:29:18 EST 2007


  User: cbauer  
  Date: 07/12/18 23:29:18

  Modified:    examples/wiki/src/main/org/jboss/seam/wiki/core/engine       
                        WikiLink.java DefaultWikiLinkResolver.java
                        NullWikiTextRenderer.java WikiLinkResolver.java
                        WikiTextRenderer.java WikiTextParser.java
  Added:       examples/wiki/src/main/org/jboss/seam/wiki/core/engine       
                        MacroWikiTextRenderer.java
  Log:
  Major rewrite of the most of the application
  
  Revision  Changes    Path
  1.2       +11 -5     jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiLink.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: WikiLink.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiLink.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- WikiLink.java	22 Mar 2007 12:47:50 -0000	1.1
  +++ WikiLink.java	19 Dec 2007 04:29:18 -0000	1.2
  @@ -1,6 +1,6 @@
   package org.jboss.seam.wiki.core.engine;
   
  -import org.jboss.seam.wiki.core.model.Node;
  +import org.jboss.seam.wiki.core.model.WikiFile;
   
   /**
    * Simple value holder for link resolution and rendering.
  @@ -8,7 +8,9 @@
    * @author Christian Bauer
    */
   public class WikiLink {
  -    Node node;
  +
  +    int identifier;
  +    WikiFile file;
       boolean requiresUpdating = false;
       String url;
       String description;
  @@ -19,8 +21,12 @@
           this.broken = broken;
           this.external = external;
       }
  -    public Node getNode() { return node; }
  -    public void setNode(Node node) { this.node = node; }
  +
  +    public int getIdentifier() { return identifier; }
  +    public void setIdentifier(int identifier) { this.identifier = identifier; }
  +
  +    public WikiFile getFile() { return file; }
  +    public void setFile(WikiFile file) { this.file = file; }
   
       public String getUrl() { return url; }
       public void setUrl(String url) { this.url = url; }
  @@ -35,6 +41,6 @@
       public void setRequiresUpdating(boolean requiresUpdating) { this.requiresUpdating = requiresUpdating; }
   
       public String toString() {
  -        return "Node:" + node + " Description: " + description + " URL: " + url;
  +        return "File:" + file + " Description: " + description + " URL: " + url;
       }
   }
  
  
  
  1.5       +36 -33    jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/DefaultWikiLinkResolver.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DefaultWikiLinkResolver.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/DefaultWikiLinkResolver.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- DefaultWikiLinkResolver.java	24 Sep 2007 08:23:22 -0000	1.4
  +++ DefaultWikiLinkResolver.java	19 Dec 2007 04:29:18 -0000	1.5
  @@ -1,16 +1,18 @@
   package org.jboss.seam.wiki.core.engine;
   
  -import org.jboss.seam.annotations.*;
  -import org.jboss.seam.wiki.core.model.Directory;
  -import org.jboss.seam.wiki.core.dao.NodeDAO;
  +import org.jboss.seam.annotations.AutoCreate;
  +import org.jboss.seam.annotations.In;
  +import org.jboss.seam.annotations.Logger;
  +import org.jboss.seam.annotations.Name;
  +import org.jboss.seam.log.Log;
  +import org.jboss.seam.wiki.core.dao.WikiNodeDAO;
   import org.jboss.seam.wiki.core.model.*;
   import org.jboss.seam.wiki.util.WikiUtil;
  -import org.jboss.seam.log.Log;
   
  -
  -import java.util.regex.Pattern;
  -import java.util.regex.Matcher;
   import java.util.Map;
  +import java.util.Set;
  +import java.util.regex.Matcher;
  +import java.util.regex.Pattern;
   
   /**
    * A default implementation of <tt>WikiLinkResolver</tt>.
  @@ -24,16 +26,16 @@
       @Logger static Log log;
   
       // Render these strings whenever [=>wiki://123] needs to be resolved but can't
  -    public static final String BROKENLINK_URL = "PageDoesNotExist";
  +    public static final String BROKENLINK_URL = "FileNotFound";
       public static final String BROKENLINK_DESCRIPTION = "?BROKEN LINK?";
   
       @In
  -    private NodeDAO nodeDAO;
  +    private WikiNodeDAO wikiNodeDAO;
   
       @In
       Map<String, LinkProtocol> linkProtocolMap;
   
  -    public String convertToWikiProtocol(Long currentAreaNumber, String wikiText) {
  +    public String convertToWikiProtocol(Set<WikiFile> linkTargets, Long currentAreaNumber, String wikiText) {
           if (wikiText == null) return null;
   
           StringBuffer replacedWikiText = new StringBuffer(wikiText.length());
  @@ -42,8 +44,11 @@
           // Replace with [Link Text=>wiki://<node id>] or leave as is if not found
           while (matcher.find()) {
               String linkText = matcher.group(2);
  -            Node node = resolveCrossAreaLinkText(currentAreaNumber, linkText);
  -            if (node != null) matcher.appendReplacement(replacedWikiText, "[$1=>wiki://" + node.getId() + "]");
  +            WikiFile file = resolveCrossAreaLinkText(currentAreaNumber, linkText);
  +            if (file != null) {
  +                matcher.appendReplacement(replacedWikiText, "[$1=>wiki://" + file.getId() + "]");
  +                linkTargets.add(file);
  +            }
           }
           matcher.appendTail(replacedWikiText);
           return replacedWikiText.toString();
  @@ -59,16 +64,16 @@
           while (matcher.find()) {
   
               // Find the node by PK
  -            Node node = nodeDAO.findNode(Long.valueOf(matcher.group(2)));
  +            WikiFile file = wikiNodeDAO.findWikiFile(Long.valueOf(matcher.group(2)));
   
               // Node is in current area, just use its name
  -            if (node != null && node.getAreaNumber().equals(currentAreaNumber)) {
  -                matcher.appendReplacement(replacedWikiText, "[$1=>" + node.getName() + "]");
  +            if (file != null && file.getAreaNumber().equals(currentAreaNumber)) {
  +                matcher.appendReplacement(replacedWikiText, "[$1=>" + file.getName() + "]");
   
               // Node is in different area, prepend the area name
  -            } else if (node != null && !node.getAreaNumber().equals(currentAreaNumber)) {
  -                Directory area = nodeDAO.findArea(node.getAreaNumber());
  -                matcher.appendReplacement(replacedWikiText, "[$1=>" + area.getName() + "|" + node.getName() + "]");
  +            } else if (file != null && !file.getAreaNumber().equals(currentAreaNumber)) {
  +                WikiDirectory area = wikiNodeDAO.findArea(file.getAreaNumber());
  +                matcher.appendReplacement(replacedWikiText, "[$1=>" + area.getName() + "|" + file.getName() + "]");
   
               // Couldn't find it anymore, its a broken link
               } else {
  @@ -101,11 +106,11 @@
           } else if (wikiProtocolMatcher.find()) {
   
               // Find the node by PK
  -            Node node = nodeDAO.findNode(Long.valueOf(wikiProtocolMatcher.group(1)));
  -            if (node != null) {
  +            WikiFile file = wikiNodeDAO.findWikiFile(Long.valueOf(wikiProtocolMatcher.group(1)));
  +            if (file != null) {
                   wikiLink = new WikiLink(false, false);
  -                wikiLink.setNode(node);
  -                wikiLink.setDescription(node.getName());
  +                wikiLink.setFile(file);
  +                wikiLink.setDescription(file.getName());
                   log.debug("wiki link resolved to existing node: " + linkText);
               } else {
                   // Can't do anything, [=>wiki://123] no longer exists
  @@ -137,12 +142,12 @@
           } else {
   
               // Try a WikiWord search in the current or named area
  -            Node node = resolveCrossAreaLinkText(currentAreaNumber, linkText);
  -            if (node!=null) {
  +            WikiFile doc = resolveCrossAreaLinkText(currentAreaNumber, linkText);
  +            if (doc!=null) {
   
                   wikiLink = new WikiLink(false, false);
  -                wikiLink.setNode(node);
  -                wikiLink.setDescription(node.getName());
  +                wikiLink.setFile(doc);
  +                wikiLink.setDescription(doc.getName());
                   // Indicate that caller should update the wiki text that contains this link
                   wikiLink.setRequiresUpdating(true);
                   log.debug("resolved wiki word link, this needs updating to the real identifier: " + linkText);
  @@ -168,20 +173,18 @@
           links.put(linkText, wikiLink);
       }
   
  -    private Node resolveCrossAreaLinkText(Long currentAreaNumber, String linkText) {
  +    private WikiFile resolveCrossAreaLinkText(Long currentAreaNumber, String linkText) {
           Matcher crossLinkMatcher = Pattern.compile(REGEX_WIKILINK_CROSSAREA).matcher(linkText);
           if (crossLinkMatcher.find()) {
               // Try to find the node in the referenced area
               String areaName = crossLinkMatcher.group(1);
               String nodeName = crossLinkMatcher.group(2);
  -            Node crossLinkArea = nodeDAO.findArea(WikiUtil.convertToWikiName(areaName));
  -            if ( crossLinkArea != null && (nodeName == null || nodeName.length() == 0) )
  -                return crossLinkArea; // Support [=>This is an Area Link|] syntax
  -            else if (crossLinkArea != null)
  -                return nodeDAO.findNodeInArea(crossLinkArea.getAreaNumber(), WikiUtil.convertToWikiName(nodeName));
  +            WikiNode crossLinkArea = wikiNodeDAO.findArea(WikiUtil.convertToWikiName(areaName));
  +            if (crossLinkArea != null)
  +                return wikiNodeDAO.findWikiFileInArea(crossLinkArea.getAreaNumber(), WikiUtil.convertToWikiName(nodeName));
           } else {
               // Try the current area
  -            return nodeDAO.findNodeInArea(currentAreaNumber, WikiUtil.convertToWikiName(linkText));
  +            return wikiNodeDAO.findWikiFileInArea(currentAreaNumber, WikiUtil.convertToWikiName(linkText));
           }
           return null;
       }
  
  
  
  1.2       +3 -0      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.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- NullWikiTextRenderer.java	12 Nov 2007 11:14:29 -0000	1.1
  +++ NullWikiTextRenderer.java	19 Dec 2007 04:29:18 -0000	1.2
  @@ -1,5 +1,7 @@
   package org.jboss.seam.wiki.core.engine;
   
  +import org.jboss.seam.wiki.core.model.WikiMacro;
  +
   import java.util.List;
   
   /**
  @@ -16,6 +18,7 @@
       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 renderParagraphOpenTag() { return "<p>\n"; }
       public String renderPreformattedOpenTag() { return "<pre>\n"; }
       public String renderBlockquoteOpenTag() { return "<blockquote>\n"; }
  
  
  
  1.5       +5 -1      jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiLinkResolver.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: WikiLinkResolver.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiLinkResolver.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- WikiLinkResolver.java	17 Aug 2007 13:00:32 -0000	1.4
  +++ WikiLinkResolver.java	19 Dec 2007 04:29:18 -0000	1.5
  @@ -6,7 +6,10 @@
    */
   package org.jboss.seam.wiki.core.engine;
   
  +import org.jboss.seam.wiki.core.model.WikiFile;
  +
   import java.util.Map;
  +import java.util.Set;
   import java.util.regex.Pattern;
   
   /**
  @@ -94,11 +97,12 @@
        * }
        * </pre>
        *
  +     * @param linkTargets       This collection will be filled with <tt>WikiFile</tt> instances which are the link targets in the wiki text
        * @param currentAreaNumber The currennt area useable as the namespace for scoped resolving
        * @param wikiText Text with wiki markup containing [=>Target Name] links
        * @return The <tt>wikiText</tt> with all <tt>[=>Target Name]<tt> links replaced with <tt>[=>wiki://id]</tt>
        */
  -    public String convertToWikiProtocol(Long currentAreaNumber, String wikiText);
  +    public String convertToWikiProtocol(Set<WikiFile> linkTargets, Long currentAreaNumber, String wikiText);
   
       /**
        * Replace stored text links such as <tt>[Link description=>wiki://id]</tt> with clear text target names, so
  
  
  
  1.5       +3 -0      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.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- WikiTextRenderer.java	12 Nov 2007 11:14:29 -0000	1.4
  +++ WikiTextRenderer.java	19 Dec 2007 04:29:18 -0000	1.5
  @@ -1,5 +1,7 @@
   package org.jboss.seam.wiki.core.engine;
   
  +import org.jboss.seam.wiki.core.model.WikiMacro;
  +
   import java.util.List;
   
   /**
  @@ -14,6 +16,7 @@
       public String renderThumbnailImageInlineLink(WikiLink inlineLink);
       public String renderFileAttachmentLink(int attachmentNumber, WikiLink attachmentLink);
       public String renderMacro(String macroName);
  +    public void addMacro(WikiMacro macro);
   
       public String renderParagraphOpenTag();
       public String renderPreformattedOpenTag();
  
  
  
  1.11      +42 -67    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.10
  retrieving revision 1.11
  diff -u -b -r1.10 -r1.11
  --- WikiTextParser.java	12 Nov 2007 11:14:29 -0000	1.10
  +++ WikiTextParser.java	19 Dec 2007 04:29:18 -0000	1.11
  @@ -6,22 +6,18 @@
    */
   package org.jboss.seam.wiki.core.engine;
   
  -import org.jboss.seam.text.SeamTextParser;
  -import org.jboss.seam.text.SeamTextLexer;
  -import org.jboss.seam.wiki.core.model.File;
  -import org.jboss.seam.wiki.core.model.Document;
  -import org.jboss.seam.wiki.core.model.Node;
  -import org.jboss.seam.wiki.util.WikiUtil;
   import antlr.ANTLRException;
  +import org.jboss.seam.text.SeamTextLexer;
  +import org.jboss.seam.text.SeamTextParser;
  +import org.jboss.seam.wiki.core.model.*;
   
  -import java.util.*;
   import java.io.StringReader;
  +import java.util.*;
   
   /**
    * Parses SeamText markup and also resolves link and macro tags as wiki links and wiki plugins.
    * <p>
  - * Don't forget to set the resolver and renderer base with <tt>setCurrentDirectory()</tt> and
  - * <tt>setCurrentDocument</tt>.
  + * Don't forget to set the resolver and renderer base with <tt>setCurrentAreaNumber()</tt>!
    * </p><p>
    * Picks the <tt>WikiLinkResolver</tt> present in the contextual variable <tt>wikiLinkResolver</tt>. Calls
    * out to a <tt>WikiTextRender</tt> for the actual in-document rendering of wiki links and wiki plugins. Might update
  @@ -35,10 +31,11 @@
    */
   public class WikiTextParser extends SeamTextParser {
   
  +    private int linkCounter = 0;
  +
       private WikiTextRenderer renderer;
       private WikiLinkResolver resolver;
  -    private Node currentDirectory;
  -    private Document currentDocument;
  +    private Long currentAreaNumber;
   
       private Map<String, WikiLink> resolvedLinks = new HashMap<String, WikiLink>();
       private List<WikiLink> attachments = new ArrayList<WikiLink>();
  @@ -79,53 +76,23 @@
        * The render/link resolving base
        * @return the called instance
        */
  -    public WikiTextParser setCurrentDirectory(Node currentDirectory) {
  -        this.currentDirectory = currentDirectory;
  -        return this;
  -    }
   
  -    /*
  -     * The render/link resolving base
  -     * @return the called instance
  -     */
  -    public WikiTextParser setCurrentDocument(Document currentDocument) {
  -        this.currentDocument = currentDocument;
  -        return this;
  +    public void setCurrentAreaNumber(Long currentAreaNumber) {
  +        this.currentAreaNumber = currentAreaNumber;
       }
   
       /**
        * Start parsing the wiki text and resolve wiki links and wiki plugins.
        * <p>
  -     * If <tt>updateResolvedLinks</tt> is enabled, the <t>currentDocument</tt>'s content will
  -     * be udpated after parsing the wiki text. This only occurs if we hit a link during link
  -     * resolution that needs to be updated. You should flush this modification to the data store.
  -     *
  -     * @param updateResolvedLinks Set updated content on <tt>currentDocument</tt>
        * @throws ANTLRException if lexer or parser errors occur, see
        */
  -    public void parse(boolean updateResolvedLinks) throws ANTLRException {
  -        if (resolver == null) throw new IllegalStateException("WikiTextParser requires setResolver() call");
  -        if (renderer == null) throw new IllegalStateException("WikiTextParser requires setRenderer() call");
  -        if (currentDocument == null) throw new IllegalStateException("WikiTextParser requires setCurrentDocument() call");
  -        if (currentDirectory == null) throw new IllegalStateException("WikiTextParser requires setCurrentDirectory() call");
  +    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 (currentAreaNumber == null) throw new IllegalStateException("WikiTextParser requires not null setCurrentAreaNumber()");
   
           startRule();
   
  -        if (updateResolvedLinks) {
  -            for (Map.Entry<String, WikiLink> entry: resolvedLinks.entrySet()) {
  -                if(entry.getValue().isRequiresUpdating()) {
  -                    // One of the links we parsed and resolved requires updating of the current document, run
  -                    // the protocol converter - which is usally only called when storing a document.
  -                    currentDocument.setContent(
  -                        resolver.convertToWikiProtocol(currentDirectory.getAreaNumber(), currentDocument.getContent())
  -                    );
  -                    // Yes, this might happen during rendering, you should lush() and UPDATE the document!
  -
  -                    break; // One is enough
  -                }
  -            }
  -        }
  -
           renderer.setAttachmentLinks(attachments);
           renderer.setExternalLinks(externalLinks);
       }
  @@ -139,25 +106,27 @@
               return renderer.renderInlineLink(unresolvedLink);
           }
   
  -        resolver.resolveLinkText(currentDirectory.getAreaNumber(), resolvedLinks, linkText);
  +        resolver.resolveLinkText(currentAreaNumber, resolvedLinks, linkText);
           WikiLink link = resolvedLinks.get((linkText));
           if (link == null) return "";
   
  +        // Set an internal identifier, used for attachments and external links we later push into a hashmap into the contexts
  +        link.setIdentifier(linkCounter++);
  +
           // Override the description of the WikiLink with description found in tag
           String finalDescriptionText =
                   (descriptionText!=null && descriptionText.length() > 0 ? descriptionText : link.getDescription());
           link.setDescription(finalDescriptionText);
   
  -        // Link to file (inline or attached)
  -        if (WikiUtil.isFile(link.getNode())) {
  -            File file = (File)link.getNode();
  -
  -            if (file.getImageMetaInfo() == null || 'A' == file.getImageMetaInfo().getThumbnail()) {
  -                // It's an attachment
  -                if (!attachments.contains(link)) attachments.add(link);
  +        // Link to upload (inline or attached)
  +        if (link.getFile() != null && link.getFile().isInstance(WikiUpload.class)) {
  +            WikiUpload upload = (WikiUpload)link.getFile();
  +            if (upload.isAttachedToDocuments()) {
  +                if (!attachments.contains(link)) {
  +                    attachments.add(link);
  +                }
                   return renderer.renderFileAttachmentLink((attachments.indexOf(link)+1), link);
               } else {
  -                // It's an embedded thumbnail
                   return renderer.renderThumbnailImageInlineLink(link);
               }
           }
  @@ -172,17 +141,6 @@
           return renderer.renderInlineLink(link);
       }
   
  -    protected String macroInclude(String macroName) {
  -        // Filter out any dangerous characters
  -        String filteredName = macroName.replaceAll("[^\\p{Alnum}]+", "");
  -        if ( (macroNames.contains(filteredName) && renderDuplicateMacros) || !macroNames.contains(filteredName)) {
  -            macroNames.add(filteredName);
  -            return renderer.renderMacro(filteredName);
  -        } else {
  -            return "[Can't use the same macro twice!]";
  -        }
  -    }
  -
       protected String paragraphOpenTag() {
           return renderer.renderParagraphOpenTag();
       }
  @@ -226,4 +184,21 @@
       protected String unorderedListItemOpenTag() {
           return renderer.renderUnorderedListItemOpenTag();
       }
  +
  +    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);
  +
  +            WikiMacro wikiMacro = new WikiMacro(macro.name);
  +            wikiMacro.setParams(macro.params);
  +            renderer.addMacro(wikiMacro);
  +
  +            return renderer.renderMacro(filteredName);
  +        } else {
  +            return "[Can't use the same macro twice!]";
  +        }
  +    }
  +
   }
  
  
  
  1.1      date: 2007/12/19 04:29:18;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/MacroWikiTextRenderer.java
  
  Index: MacroWikiTextRenderer.java
  ===================================================================
  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;
  
  import antlr.RecognitionException;
  import antlr.ANTLRException;
  
  public class MacroWikiTextRenderer extends NullWikiTextRenderer {
  
      private Set<WikiMacro> macros = new LinkedHashSet<WikiMacro>();
      private StringBuilder macrosString = new StringBuilder();
  
      public void addMacro(WikiMacro macro) {
          macros.add(macro);
          macrosString.append(macro.getName()).append(" ");
      }
  
      public Set<WikiMacro> getMacros() {
          return macros;
      }
  
      public String getMacrosString() {
          return macrosString.toString();
      }
  
      public static MacroWikiTextRenderer renderMacros(Long areaNumber, 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) {
              // All other errors are fatal;
              throw new RuntimeException(ex);
          }
          return renderer;
      }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list