//# 0 errors, 123 messages
//#
/*
    //#TrackbackLinkbackCommentValidator.java:1:1: class: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator
    //#TrackbackLinkbackCommentValidator.java:1:1: method: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator.org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator__static_init
 * Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  The ASF licenses this file to You
 * under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.  For additional information regarding
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */

package org.apache.roller.weblogger.ui.rendering.plugins.comments;

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ResourceBundle;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.WeblogEntryComment;
import org.apache.roller.weblogger.util.LinkbackExtractor;
import org.apache.roller.weblogger.util.RollerMessages;

/**
 * Validates comment if comment's URL links back to the comment's entry,
 * intended for use with trackbacks only.
 */
public class TrackbackLinkbackCommentValidator implements CommentValidator {
    //#TrackbackLinkbackCommentValidator.java:34: method: void org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator.org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator()
    //#input(void org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator()): this
    //#output(void org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator()): this.bundle
    //#post(void org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator()): init'ed(this.bundle)
    
    private ResourceBundle bundle = ResourceBundle.getBundle("ApplicationResources");
    //#TrackbackLinkbackCommentValidator.java:36: end of method: void org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator.org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator()
    
    public String getName() {
        return bundle.getString("comment.validator.trackbackLinkbackName");
    //#TrackbackLinkbackCommentValidator.java:39: method: String org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator.getName()
    //#input(String getName()): this
    //#input(String getName()): this.bundle
    //#output(String getName()): return_value
    //#pre[2] (String getName()): this.bundle != null
    //#post(String getName()): init'ed(return_value)
    //#TrackbackLinkbackCommentValidator.java:39: end of method: String org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator.getName()
    }
    
    public int validate(WeblogEntryComment comment, RollerMessages messages) {
        
        // linkback validation can be toggled at runtime, so check if it's enabled
        // if it's disabled then just return a score of 100
        if(!WebloggerRuntimeConfig.getBooleanProperty("site.trackbackVerification.enabled")) {
    //#TrackbackLinkbackCommentValidator.java:46: method: int org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator.validate(WeblogEntryComment, RollerMessages)
    //#TrackbackLinkbackCommentValidator.java:46: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator
    //#    method: int validate(WeblogEntryComment, RollerMessages)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(String)
    //#input(int validate(WeblogEntryComment, RollerMessages)): " "._tainted
    //#input(int validate(WeblogEntryComment, RollerMessages)): " articles, found linkback="._tainted
    //#input(int validate(WeblogEntryComment, RollerMessages)): ""._tainted
    //#input(int validate(WeblogEntryComment, RollerMessages)): "..."._tainted
    //#input(int validate(WeblogEntryComment, RollerMessages)): ": "._tainted
    //#input(int validate(WeblogEntryComment, RollerMessages)): "Feed parsed, title: "._tainted
    //#input(int validate(WeblogEntryComment, RollerMessages)): "Parsed "._tainted
    //#input(int validate(WeblogEntryComment, RollerMessages)): "http:.."._tainted
    //#input(int validate(WeblogEntryComment, RollerMessages)): "http:..www."._tainted
    //#input(int validate(WeblogEntryComment, RollerMessages)): comment
    //#input(int validate(WeblogEntryComment, RollerMessages)): messages
    //#input(int validate(WeblogEntryComment, RollerMessages)): messages.__Tag
    //#input(int validate(WeblogEntryComment, RollerMessages)): messages.mErrors
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$1.__Descendant_Table[org/apache/roller/weblogger/util/LinkbackExtractor$1]
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$1.__Dispatch_Table.getParser()Ljavax/swing/text/html/HTMLEditorKit$Parser;
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.BLOCKQUOTE
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.BR
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.DIV
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H1
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H2
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H3
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H4
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H5
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H6
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.HR
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.LI
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.P
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.PRE
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.SPAN
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.TD
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor.__Descendant_Table[org/apache/roller/weblogger/util/LinkbackExtractor]
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/LinkbackExtractor.mLogger
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/RollerMessages.__Descendant_Table[org/apache/roller/weblogger/util/RollerMessages]
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/RollerMessages.__Descendant_Table[others]
    //#input(int validate(WeblogEntryComment, RollerMessages)): org/apache/roller/weblogger/util/RollerMessages.__Dispatch_Table.addError(Ljava/lang/String;)V
    //#output(int validate(WeblogEntryComment, RollerMessages)): return_value
    //#pre[1] (int validate(WeblogEntryComment, RollerMessages)): (soft) comment != null
    //#pre[2] (int validate(WeblogEntryComment, RollerMessages)): (soft) messages != null
    //#pre[3] (int validate(WeblogEntryComment, RollerMessages)): (soft) messages.__Tag == org/apache/roller/weblogger/util/RollerMessages
    //#pre[4] (int validate(WeblogEntryComment, RollerMessages)): (soft) messages.mErrors != null
    //#pre[5] (int validate(WeblogEntryComment, RollerMessages)): (soft) org/apache/roller/weblogger/util/LinkbackExtractor.mLogger != null
    //#presumption(int validate(WeblogEntryComment, RollerMessages)): org.apache.roller.weblogger.business.URLStrategy:getWeblogEntryURL(...)@53 != null
    //#presumption(int validate(WeblogEntryComment, RollerMessages)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@53 != null
    //#presumption(int validate(WeblogEntryComment, RollerMessages)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@53 != null
    //#presumption(int validate(WeblogEntryComment, RollerMessages)): org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry(...)@53 != null
    //#presumption(int validate(WeblogEntryComment, RollerMessages)): org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry(...)@53 != null
    //#post(int validate(WeblogEntryComment, RollerMessages)): return_value in {0, 100}
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:com.sun.syndication.io.SyndFeedInput
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.net.URL
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.net.URL:openStream
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.io.InputStreamReader
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:com.sun.syndication.io.SyndFeedInput:build
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:com.sun.syndication.feed.synd.SyndFeed:getEntries
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:com.sun.syndication.feed.synd.SyndFeed:getTitle
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:com.sun.syndication.feed.synd.SyndEntry:getDescription
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:com.sun.syndication.feed.synd.SyndContent:getValue
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:com.sun.syndication.feed.synd.SyndEntry:getLink
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.String:toString
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:com.sun.syndication.feed.synd.SyndEntry:getTitle
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit:getParser
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.io.BufferedReader
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.io.BufferedReader:readLine
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.io.BufferedReader:close
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.io.StringReader
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit$ParserCallback
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.util.Arrays:asList
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit$Parser:parse
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:org.apache.roller.weblogger.util.RollerMessages$RollerMessage
    //#unanalyzed(int validate(WeblogEntryComment, RollerMessages)): Effects-of-calling:java.util.List:add
    //#test_vector(int validate(WeblogEntryComment, RollerMessages)): org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(...)@46: {1}, {0}
            return 100;
        }
        
        int ret = 0;
        LinkbackExtractor linkback = null;
        try {
            linkback = new LinkbackExtractor(
    //#TrackbackLinkbackCommentValidator.java:53: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getUrl()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator
    //#    method: int validate(WeblogEntryComment, RollerMessages)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getUrl()
    //#TrackbackLinkbackCommentValidator.java:53: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator
    //#    method: int validate(WeblogEntryComment, RollerMessages)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#TrackbackLinkbackCommentValidator.java:53: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator
    //#    method: int validate(WeblogEntryComment, RollerMessages)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#TrackbackLinkbackCommentValidator.java:53: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator
    //#    method: int validate(WeblogEntryComment, RollerMessages)
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry()
    //#TrackbackLinkbackCommentValidator.java:53: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator
    //#    method: int validate(WeblogEntryComment, RollerMessages)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#TrackbackLinkbackCommentValidator.java:53: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator
    //#    method: int validate(WeblogEntryComment, RollerMessages)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#TrackbackLinkbackCommentValidator.java:53: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogEntryURL(Weblog, String, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator
    //#    method: int validate(WeblogEntryComment, RollerMessages)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogEntryURL(Weblog, String, String, bool)
                    comment.getUrl(),
                    WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogEntryURL(
                    comment.getWeblogEntry().getWebsite(),
                    null,
                    comment.getWeblogEntry().getAnchor(),
                    true));
        } catch (MalformedURLException ignored1) {
        } catch (IOException ignored2) {}
        
        if (linkback != null && linkback.getExcerpt() != null) {
            ret = 100;
        } else {
            messages.addError("comment.validator.trackbackLinkbackMessage");
        }
        return ret;
    //#TrackbackLinkbackCommentValidator.java:68: end of method: int org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator.validate(WeblogEntryComment, RollerMessages)
    }
    
}
    //#output(org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/plugins/comments/TrackbackLinkbackCommentValidator]
    //#output(org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator__static_init): __Dispatch_Table.getName()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator__static_init): __Dispatch_Table.validate(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;Lorg/apache/roller/weblogger/util/RollerMessages;)I
    //#output(org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator__static_init): org/apache/roller/weblogger/ui/rendering/plugins/comments/CommentValidator.__Descendant_Table[org/apache/roller/weblogger/ui/rendering/plugins/comments/TrackbackLinkbackCommentValidator]
    //#post(org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/plugins/comments/TrackbackLinkbackCommentValidator] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator__static_init): org/apache/roller/weblogger/ui/rendering/plugins/comments/CommentValidator.__Descendant_Table[org/apache/roller/weblogger/ui/rendering/plugins/comments/TrackbackLinkbackCommentValidator] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator__static_init): __Dispatch_Table.getName()Ljava/lang/String; == &getName
    //#post(org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator__static_init): __Dispatch_Table.validate(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;Lorg/apache/roller/weblogger/util/RollerMessages;)I == &validate
    //#TrackbackLinkbackCommentValidator.java:: end of method: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator.org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator__static_init
    //#TrackbackLinkbackCommentValidator.java:: end of class: org.apache.roller.weblogger.ui.rendering.plugins.comments.TrackbackLinkbackCommentValidator
