Author: jvanzyl Date: Sun Nov 27 06:46:19 2005 New Revision: 349241 URL: http://svn.apache.org/viewcvs?rev=349241&view=rev Log: o more code submitted by Juan F. Codagnone.
Added: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/AdvicedSink.java (with props) maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/AbstractSinkAdvice.java (with props) maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/HangingElementAdvice.java (with props) maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/MethodBeforeAdvice.java (with props) maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/PrintAdvisor.java (with props) Added: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/AdvicedSink.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/AdvicedSink.java?rev=349241&view=auto ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/AdvicedSink.java (added) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/AdvicedSink.java Sun Nov 27 06:46:19 2005 @@ -0,0 +1,1370 @@ +/* + * Copyright 2005 Juan F. Codagnone <juam at users dot sourceforge dot net> + * + * Licensed 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. + */ +package org.apache.maven.doxia.validation; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import org.apache.maven.doxia.sink.Sink; +import org.apache.maven.doxia.validation.advices.MethodBeforeAdvice; + + +/** + * Sink that can act as proxy of other sinks and run some advices + * <p/> + * This class can be generated on run time, but that would lead to depend on + * more dependencies. + * + * @author Juan F. Codagnone (autogenerated) + * @since Nov 6, 2005 + */ +public class AdvicedSink implements Sink +{ + private final MethodBeforeAdvice [] advices; + private final Sink target; + + public AdvicedSink( final MethodBeforeAdvice [] advices, final Sink target ) + { + if ( advices == null || target == null ) + { + throw new IllegalArgumentException(); + } + for ( int i = 0; i < advices.length; i++ ) + { + if ( advices[i] == null ) + { + throw new IllegalArgumentException( "advices can't be null" ); + } + + } + this.advices = advices; + this.target = target; + } + + private static boolean loaded = false; + + private void load() + { + if ( !loaded ) + { + loaded = true; + try + { + realload(); + } + catch ( Exception e ) + { + throw new RuntimeException( e ); + } + } + } + + + private void advice( final Method method, + final Object[] args, final Object target ) + { + + for ( int i = 0; i < advices.length; i++ ) + { + try + { + advices[i].before( method, args, target ); + } + catch ( RuntimeException e ) + { + throw e; + } + catch ( Throwable e ) + { + throw new RuntimeException( e ); + } + } + try + { + method.invoke( target, args ); + } + catch ( IllegalAccessException e ) + { + throw new RuntimeException( e ); + } + catch ( InvocationTargetException e ) + { + Throwable cause = e.getCause(); + if ( cause != null ) + { + if ( cause instanceof RuntimeException ) + { + throw (RuntimeException) cause; + } + else + { + throw new RuntimeException( cause ); + } + } + throw new RuntimeException( e ); + } + } + + /** + * @see org.apache.maven.doxia.sink.Sink#head() + */ + public final void head() + { + load(); + advice( M_HEAD, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#head_() + */ + public final void head_() + { + load(); + advice( M_HEAD_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#body() + */ + public final void body() + { + load(); + advice( M_BODY, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#body_() + */ + public final void body_() + { + load(); + advice( M_BODY_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#section1() + */ + public final void section1() + { + load(); + advice( M_SECTION1, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#section1_() + */ + public final void section1_() + { + load(); + advice( M_SECTION1_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#section2() + */ + public final void section2() + { + load(); + advice( M_SECTION2, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#section2_() + */ + public final void section2_() + { + load(); + advice( M_SECTION2_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#section3() + */ + public final void section3() + { + load(); + advice( M_SECTION3, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#section3_() + */ + public final void section3_() + { + load(); + advice( M_SECTION3_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#section4() + */ + public final void section4() + { + load(); + advice( M_SECTION4, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#section4_() + */ + public final void section4_() + { + load(); + advice( M_SECTION4_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#section5() + */ + public final void section5() + { + load(); + advice( M_SECTION5, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#section5_() + */ + public final void section5_() + { + load(); + advice( M_SECTION5_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#list() + */ + public final void list() + { + load(); + advice( M_LIST, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#list_() + */ + public final void list_() + { + load(); + advice( M_LIST_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#listItem() + */ + public final void listItem() + { + load(); + advice( M_LISTITEM, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#listItem_() + */ + public final void listItem_() + { + load(); + advice( M_LISTITEM_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#numberedList() + */ + public final void numberedList( int i ) + { + load(); + advice( M_NUMBEREDLIST, new Object[]{new Integer( i )}, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#numberedList_() + */ + public final void numberedList_() + { + load(); + advice( M_NUMBEREDLIST_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#numberedListItem() + */ + public final void numberedListItem() + { + load(); + advice( M_NUMBEREDLISTITEM, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#numberedListItem_() + */ + public final void numberedListItem_() + { + load(); + advice( M_NUMBEREDLISTITEM_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#definitionList() + */ + public final void definitionList() + { + load(); + advice( M_DEFINITIONLIST, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#definitionList_() + */ + public final void definitionList_() + { + load(); + advice( M_DEFINITIONLIST_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#definitionListItem() + */ + public final void definitionListItem() + { + load(); + advice( M_DEFINITIONLISTITEM, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#definitionListItem_() + */ + public final void definitionListItem_() + { + load(); + advice( M_DEFINITIONLISTITEM_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#definition() + */ + public final void definition() + { + load(); + advice( M_DEFINITION, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#definition_() + */ + public final void definition_() + { + load(); + advice( M_DEFINITION_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#figure() + */ + public final void figure() + { + load(); + advice( M_FIGURE, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#figure_() + */ + public final void figure_() + { + load(); + advice( M_FIGURE_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#table() + */ + public final void table() + { + load(); + advice( M_TABLE, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#table_() + */ + public final void table_() + { + load(); + advice( M_TABLE_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableRows() + */ + public final void tableRows( int []a, boolean b ) + { + load(); + advice( M_TABLEROWS, new Object[]{a, new Boolean( b )}, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableRows_() + */ + public final void tableRows_() + { + load(); + advice( M_TABLEROWS_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableRow() + */ + public final void tableRow() + { + load(); + advice( M_TABLEROW, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableRow_() + */ + public final void tableRow_() + { + load(); + advice( M_TABLEROW_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#title() + */ + public final void title() + { + load(); + advice( M_TITLE, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#title_() + */ + public final void title_() + { + load(); + advice( M_TITLE_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#author() + */ + public final void author() + { + load(); + advice( M_AUTHOR, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#author_() + */ + public final void author_() + { + load(); + advice( M_AUTHOR_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#date() + */ + public final void date() + { + load(); + advice( M_DATE, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#date_() + */ + public final void date_() + { + load(); + advice( M_DATE_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle() + */ + public final void sectionTitle() + { + load(); + advice( M_SECTIONTITLE, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle_() + */ + public final void sectionTitle_() + { + load(); + advice( M_SECTIONTITLE_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle1() + */ + public final void sectionTitle1() + { + load(); + advice( M_SECTIONTITLE1, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle1_() + */ + public final void sectionTitle1_() + { + load(); + advice( M_SECTIONTITLE1_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle2() + */ + public final void sectionTitle2() + { + load(); + advice( M_SECTIONTITLE2, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle2_() + */ + public final void sectionTitle2_() + { + load(); + advice( M_SECTIONTITLE2_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle3() + */ + public final void sectionTitle3() + { + load(); + advice( M_SECTIONTITLE3, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle3_() + */ + public final void sectionTitle3_() + { + load(); + advice( M_SECTIONTITLE3_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle4() + */ + public final void sectionTitle4() + { + load(); + advice( M_SECTIONTITLE4, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle4_() + */ + public final void sectionTitle4_() + { + load(); + advice( M_SECTIONTITLE4_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle5() + */ + public final void sectionTitle5() + { + load(); + advice( M_SECTIONTITLE5, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#sectionTitle5_() + */ + public final void sectionTitle5_() + { + load(); + advice( M_SECTIONTITLE5_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#paragraph() + */ + public final void paragraph() + { + load(); + advice( M_PARAGRAPH, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#paragraph_() + */ + public final void paragraph_() + { + load(); + advice( M_PARAGRAPH_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#verbatim() + */ + public final void verbatim( boolean b ) + { + load(); + advice( M_VERBATIM, new Object[]{new Boolean( b )}, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#verbatim_() + */ + public final void verbatim_() + { + load(); + advice( M_VERBATIM_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#definedTerm() + */ + public final void definedTerm() + { + load(); + advice( M_DEFINEDTERM, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#definedTerm_() + */ + public final void definedTerm_() + { + load(); + advice( M_DEFINEDTERM_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#figureCaption() + */ + public final void figureCaption() + { + load(); + advice( M_FIGURECAPTION, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#figureCaption_() + */ + public final void figureCaption_() + { + load(); + advice( M_FIGURECAPTION_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableCell() + */ + public final void tableCell() + { + load(); + advice( M_TABLECELL, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableCell() + */ + public final void tableCell( final String arg0 ) + { + load(); + advice( M_TABLECELL, new Object[]{arg0}, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableCell_() + */ + public final void tableCell_() + { + load(); + advice( M_TABLECELL_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableHeaderCell() + */ + public final void tableHeaderCell() + { + load(); + advice( M_TABLEHEADERCELL, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableHeaderCell() + */ + public void tableHeaderCell( String arg0 ) + { + load(); + advice( M_TABLEHEADERCELL, new Object[]{arg0}, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableHeaderCell_() + */ + public final void tableHeaderCell_() + { + load(); + advice( M_TABLEHEADERCELL_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableCaption() + */ + public final void tableCaption() + { + load(); + advice( M_TABLECAPTION, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#tableCaption_() + */ + public final void tableCaption_() + { + load(); + advice( M_TABLECAPTION_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#figureGraphics() + */ + public final void figureGraphics( final String string ) + { + load(); + advice( M_FIGUREGRAPHICS, new Object[]{string}, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#horizontalRule() + */ + public final void horizontalRule() + { + load(); + advice( M_HORIZONTALRULE, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#pageBreak() + */ + public final void pageBreak() + { + load(); + advice( M_PAGEBREAK, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#anchor() + */ + public final void anchor( final String s ) + { + load(); + advice( M_ANCHOR, new Object[]{s}, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#anchor_() + */ + public final void anchor_() + { + load(); + advice( M_ANCHOR_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#link() + */ + public final void link( final String l ) + { + load(); + advice( M_LINK, new Object[]{l}, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#link_() + */ + public final void link_() + { + load(); + advice( M_LINK_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#italic() + */ + public final void italic() + { + load(); + advice( M_ITALIC, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#italic_() + */ + public final void italic_() + { + load(); + advice( M_ITALIC_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#bold() + */ + public final void bold() + { + load(); + advice( M_BOLD, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#bold_() + */ + public final void bold_() + { + load(); + advice( M_BOLD_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#monospaced() + */ + public final void monospaced() + { + load(); + advice( M_MONOSPACED, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#monospaced_() + */ + public final void monospaced_() + { + load(); + advice( M_MONOSPACED_, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#lineBreak() + */ + public final void lineBreak() + { + load(); + advice( M_LINEBREAK, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#nonBreakingSpace() + */ + public final void nonBreakingSpace() + { + load(); + advice( M_NONBREAKINGSPACE, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#text(String) + */ + public final void text( final String text ) + { + load(); + advice( M_TEXT, new Object[]{text}, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#rawText() + */ + public final void rawText( final String text ) + { + load(); + advice( M_RAWTEXT, new Object[]{text}, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#flush() + */ + public final void flush() + { + load(); + advice( M_FLUSH, null, target ); + } + + /** + * @see org.apache.maven.doxia.sink.Sink#close() + */ + public final void close() + { + load(); + advice( M_CLOSE, null, target ); + } + + + private static Class CLASS = Sink.class; + + private void realload() throws SecurityException, NoSuchMethodException + { + M_HEAD = CLASS.getMethod( "head", null ); + M_HEAD_ = CLASS.getMethod( "head_", null ); + M_BODY = CLASS.getMethod( "body", null ); + M_BODY_ = CLASS.getMethod( "body_", null ); + M_SECTION1 = CLASS.getMethod( "section1", null ); + M_SECTION1_ = CLASS.getMethod( "section1_", null ); + M_SECTION2 = CLASS.getMethod( "section2", null ); + M_SECTION2_ = CLASS.getMethod( "section2_", null ); + M_SECTION3 = CLASS.getMethod( "section3", null ); + M_SECTION3_ = CLASS.getMethod( "section3_", null ); + M_SECTION4 = CLASS.getMethod( "section4", null ); + M_SECTION4_ = CLASS.getMethod( "section4_", null ); + M_SECTION5 = CLASS.getMethod( "section5", null ); + M_SECTION5_ = CLASS.getMethod( "section5_", null ); + M_LIST = CLASS.getMethod( "list", null ); + M_LIST_ = CLASS.getMethod( "list_", null ); + M_LISTITEM = CLASS.getMethod( "listItem", null ); + M_LISTITEM_ = CLASS.getMethod( "listItem_", null ); + M_NUMBEREDLIST = CLASS.getMethod( "numberedList", new Class[]{int.class} ); + M_NUMBEREDLIST_ = CLASS.getMethod( "numberedList_", null ); + M_NUMBEREDLISTITEM = CLASS.getMethod( "numberedListItem", null ); + M_NUMBEREDLISTITEM_ = CLASS.getMethod( "numberedListItem_", null ); + M_DEFINITIONLIST = CLASS.getMethod( "definitionList", null ); + M_DEFINITIONLIST_ = CLASS.getMethod( "definitionList_", null ); + M_DEFINITIONLISTITEM = CLASS.getMethod( "definitionListItem", null ); + M_DEFINITIONLISTITEM_ = CLASS.getMethod( "definitionListItem_", null ); + M_DEFINITION = CLASS.getMethod( "definition", null ); + M_DEFINITION_ = CLASS.getMethod( "definition_", null ); + M_FIGURE = CLASS.getMethod( "figure", null ); + M_FIGURE_ = CLASS.getMethod( "figure_", null ); + M_TABLE = CLASS.getMethod( "table", null ); + M_TABLE_ = CLASS.getMethod( "table_", null ); + M_TABLEROWS = CLASS.getMethod( "tableRows", new Class[]{int[].class, boolean.class} ); + M_TABLEROWS_ = CLASS.getMethod( "tableRows_", null ); + M_TABLEROW = CLASS.getMethod( "tableRow", null ); + M_TABLEROW_ = CLASS.getMethod( "tableRow_", null ); + M_TITLE = CLASS.getMethod( "title", null ); + M_TITLE_ = CLASS.getMethod( "title_", null ); + M_AUTHOR = CLASS.getMethod( "author", null ); + M_AUTHOR_ = CLASS.getMethod( "author_", null ); + M_DATE = CLASS.getMethod( "date", null ); + M_DATE_ = CLASS.getMethod( "date_", null ); + M_SECTIONTITLE = CLASS.getMethod( "sectionTitle", null ); + M_SECTIONTITLE_ = CLASS.getMethod( "sectionTitle_", null ); + M_SECTIONTITLE1 = CLASS.getMethod( "sectionTitle1", null ); + M_SECTIONTITLE1_ = CLASS.getMethod( "sectionTitle1_", null ); + M_SECTIONTITLE2 = CLASS.getMethod( "sectionTitle2", null ); + M_SECTIONTITLE2_ = CLASS.getMethod( "sectionTitle2_", null ); + M_SECTIONTITLE3 = CLASS.getMethod( "sectionTitle3", null ); + M_SECTIONTITLE3_ = CLASS.getMethod( "sectionTitle3_", null ); + M_SECTIONTITLE4 = CLASS.getMethod( "sectionTitle4", null ); + M_SECTIONTITLE4_ = CLASS.getMethod( "sectionTitle4_", null ); + M_SECTIONTITLE5 = CLASS.getMethod( "sectionTitle5", null ); + M_SECTIONTITLE5_ = CLASS.getMethod( "sectionTitle5_", null ); + M_PARAGRAPH = CLASS.getMethod( "paragraph", null ); + M_PARAGRAPH_ = CLASS.getMethod( "paragraph_", null ); + M_VERBATIM = CLASS.getMethod( "verbatim", new Class[]{boolean.class} ); + M_VERBATIM_ = CLASS.getMethod( "verbatim_", null ); + M_DEFINEDTERM = CLASS.getMethod( "definedTerm", null ); + M_DEFINEDTERM_ = CLASS.getMethod( "definedTerm_", null ); + M_FIGURECAPTION = CLASS.getMethod( "figureCaption", null ); + M_FIGURECAPTION_ = CLASS.getMethod( "figureCaption_", null ); + M_TABLECELL = CLASS.getMethod( "tableCell", null ); + M_TABLECELL = CLASS.getMethod( "tableCell", null ); + M_TABLECELL_ = CLASS.getMethod( "tableCell_", null ); + M_TABLEHEADERCELL = CLASS.getMethod( "tableHeaderCell", null ); + M_TABLEHEADERCELL = CLASS.getMethod( "tableHeaderCell", null ); + M_TABLEHEADERCELL_ = CLASS.getMethod( "tableHeaderCell_", null ); + M_TABLECAPTION = CLASS.getMethod( "tableCaption", null ); + M_TABLECAPTION_ = CLASS.getMethod( "tableCaption_", null ); + M_FIGUREGRAPHICS = CLASS.getMethod( "figureGraphics", new Class[]{String.class} ); + M_HORIZONTALRULE = CLASS.getMethod( "horizontalRule", null ); + M_PAGEBREAK = CLASS.getMethod( "pageBreak", null ); + M_ANCHOR = CLASS.getMethod( "anchor", new Class[]{String.class} ); + M_ANCHOR_ = CLASS.getMethod( "anchor_", null ); + M_LINK = CLASS.getMethod( "link", new Class[]{String.class} ); + M_LINK_ = CLASS.getMethod( "link_", null ); + M_ITALIC = CLASS.getMethod( "italic", null ); + M_ITALIC_ = CLASS.getMethod( "italic_", null ); + M_BOLD = CLASS.getMethod( "bold", null ); + M_BOLD_ = CLASS.getMethod( "bold_", null ); + M_MONOSPACED = CLASS.getMethod( "monospaced", null ); + M_MONOSPACED_ = CLASS.getMethod( "monospaced_", null ); + M_LINEBREAK = CLASS.getMethod( "lineBreak", null ); + M_NONBREAKINGSPACE = CLASS.getMethod( "nonBreakingSpace", null ); + M_TEXT = CLASS.getMethod( "text", new Class[]{String.class} ); + M_RAWTEXT = CLASS.getMethod( "rawText", new Class[]{String.class} ); + M_FLUSH = CLASS.getMethod( "flush", null ); + M_CLOSE = CLASS.getMethod( "close", null ); + } + + /** + * method for head + */ + private static Method M_HEAD; + /** + * method for head_ + */ + private static Method M_HEAD_; + /** + * method for body + */ + private static Method M_BODY; + /** + * method for body_ + */ + private static Method M_BODY_; + /** + * method for section1 + */ + private static Method M_SECTION1; + /** + * method for section1_ + */ + private static Method M_SECTION1_; + /** + * method for section2 + */ + private static Method M_SECTION2; + /** + * method for section2_ + */ + private static Method M_SECTION2_; + /** + * method for section3 + */ + private static Method M_SECTION3; + /** + * method for section3_ + */ + private static Method M_SECTION3_; + /** + * method for section4 + */ + private static Method M_SECTION4; + /** + * method for section4_ + */ + private static Method M_SECTION4_; + /** + * method for section5 + */ + private static Method M_SECTION5; + /** + * method for section5_ + */ + private static Method M_SECTION5_; + /** + * method for list + */ + private static Method M_LIST; + /** + * method for list_ + */ + private static Method M_LIST_; + /** + * method for listItem + */ + private static Method M_LISTITEM; + /** + * method for listItem_ + */ + private static Method M_LISTITEM_; + /** + * method for numberedList + */ + private static Method M_NUMBEREDLIST; + /** + * method for numberedList_ + */ + private static Method M_NUMBEREDLIST_; + /** + * method for numberedListItem + */ + private static Method M_NUMBEREDLISTITEM; + /** + * method for numberedListItem_ + */ + private static Method M_NUMBEREDLISTITEM_; + /** + * method for definitionList + */ + private static Method M_DEFINITIONLIST; + /** + * method for definitionList_ + */ + private static Method M_DEFINITIONLIST_; + /** + * method for definitionListItem + */ + private static Method M_DEFINITIONLISTITEM; + /** + * method for definitionListItem_ + */ + private static Method M_DEFINITIONLISTITEM_; + /** + * method for definition + */ + private static Method M_DEFINITION; + /** + * method for definition_ + */ + private static Method M_DEFINITION_; + /** + * method for figure + */ + private static Method M_FIGURE; + /** + * method for figure_ + */ + private static Method M_FIGURE_; + /** + * method for table + */ + private static Method M_TABLE; + /** + * method for table_ + */ + private static Method M_TABLE_; + /** + * method for tableRows + */ + private static Method M_TABLEROWS; + /** + * method for tableRows_ + */ + private static Method M_TABLEROWS_; + /** + * method for tableRow + */ + private static Method M_TABLEROW; + /** + * method for tableRow_ + */ + private static Method M_TABLEROW_; + /** + * method for title + */ + private static Method M_TITLE; + /** + * method for title_ + */ + private static Method M_TITLE_; + /** + * method for author + */ + private static Method M_AUTHOR; + /** + * method for author_ + */ + private static Method M_AUTHOR_; + /** + * method for date + */ + private static Method M_DATE; + /** + * method for date_ + */ + private static Method M_DATE_; + /** + * method for sectionTitle + */ + private static Method M_SECTIONTITLE; + /** + * method for sectionTitle_ + */ + private static Method M_SECTIONTITLE_; + /** + * method for sectionTitle1 + */ + private static Method M_SECTIONTITLE1; + /** + * method for sectionTitle1_ + */ + private static Method M_SECTIONTITLE1_; + /** + * method for sectionTitle2 + */ + private static Method M_SECTIONTITLE2; + /** + * method for sectionTitle2_ + */ + private static Method M_SECTIONTITLE2_; + /** + * method for sectionTitle3 + */ + private static Method M_SECTIONTITLE3; + /** + * method for sectionTitle3_ + */ + private static Method M_SECTIONTITLE3_; + /** + * method for sectionTitle4 + */ + private static Method M_SECTIONTITLE4; + /** + * method for sectionTitle4_ + */ + private static Method M_SECTIONTITLE4_; + /** + * method for sectionTitle5 + */ + private static Method M_SECTIONTITLE5; + /** + * method for sectionTitle5_ + */ + private static Method M_SECTIONTITLE5_; + /** + * method for paragraph + */ + private static Method M_PARAGRAPH; + /** + * method for paragraph_ + */ + private static Method M_PARAGRAPH_; + /** + * method for verbatim + */ + private static Method M_VERBATIM; + /** + * method for verbatim_ + */ + private static Method M_VERBATIM_; + /** + * method for definedTerm + */ + private static Method M_DEFINEDTERM; + /** + * method for definedTerm_ + */ + private static Method M_DEFINEDTERM_; + /** + * method for figureCaption + */ + private static Method M_FIGURECAPTION; + /** + * method for figureCaption_ + */ + private static Method M_FIGURECAPTION_; + /** + * method for tableCell + */ + private static Method M_TABLECELL; + /** + * method for tableCell + */ + private static Method M_TABLECELL_STRING; + /** + * method for tableCell_ + */ + private static Method M_TABLECELL_; + /** + * method for tableHeaderCell + */ + private static Method M_TABLEHEADERCELL; + /** + * method for tableHeaderCell + */ + private static Method M_TABLEHEADERCELL_STRING; + /** + * method for tableHeaderCell_ + */ + private static Method M_TABLEHEADERCELL_; + /** + * method for tableCaption + */ + private static Method M_TABLECAPTION; + /** + * method for tableCaption_ + */ + private static Method M_TABLECAPTION_; + /** + * method for figureGraphics + */ + private static Method M_FIGUREGRAPHICS; + /** + * method for horizontalRule + */ + private static Method M_HORIZONTALRULE; + /** + * method for pageBreak + */ + private static Method M_PAGEBREAK; + /** + * method for anchor + */ + private static Method M_ANCHOR; + /** + * method for anchor_ + */ + private static Method M_ANCHOR_; + /** + * method for link + */ + private static Method M_LINK; + /** + * method for link_ + */ + private static Method M_LINK_; + /** + * method for italic + */ + private static Method M_ITALIC; + /** + * method for italic_ + */ + private static Method M_ITALIC_; + /** + * method for bold + */ + private static Method M_BOLD; + /** + * method for bold_ + */ + private static Method M_BOLD_; + /** + * method for monospaced + */ + private static Method M_MONOSPACED; + /** + * method for monospaced_ + */ + private static Method M_MONOSPACED_; + /** + * method for lineBreak + */ + private static Method M_LINEBREAK; + /** + * method for nonBreakingSpace + */ + private static Method M_NONBREAKINGSPACE; + /** + * method for text + */ + private static Method M_TEXT; + /** + * method for rawText + */ + private static Method M_RAWTEXT; + /** method for flush */ + private static Method M_FLUSH; + /** method for close */ + private static Method M_CLOSE; +} Propchange: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/AdvicedSink.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/AdvicedSink.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/AbstractSinkAdvice.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/AbstractSinkAdvice.java?rev=349241&view=auto ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/AbstractSinkAdvice.java (added) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/AbstractSinkAdvice.java Sun Nov 27 06:46:19 2005 @@ -0,0 +1,96 @@ +/* + * Copyright 2005 Juan F. Codagnone <juam at users dot sourceforge dot net> + * + * Licensed 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. + */ +package org.apache.maven.doxia.validation.advices; + +import java.lang.reflect.Method; + + +/** + * [EMAIL PROTECTED] org.aopalliance.aop.Advice} implementation usefull to do things with + * [EMAIL PROTECTED] org.apache.maven.doxia.sink.Sink}s. + * + * @author Juan F. Codagnone + * @since Nov 6, 2005 + */ +public abstract class AbstractSinkAdvice implements MethodBeforeAdvice +{ + + /** + * @see #before(Method, Object[], Object) + */ + public abstract void doLeaf( final Method method, final Object [] args, + final Object instance ); + + /** + * @see #before(Method, Object[], Object) + */ + public abstract void doStart( final Method method, final Object [] args, + final Object instance ); + + /** + * @see #before(Method, Object[], Object) + */ + public abstract void doEnd( final Method method, final Object [] args, + final Object instance ); + + /** + * @see org.aopalliance.aop.Advice + */ + public final void before( final Method method, final Object [] args, + final Object instance ) throws Throwable + { + String name = method.getName(); + + if ( hasClosing( method ) ) + { + doStart( method, args, instance ); + } + else if ( name.endsWith( "_" ) ) + { + doEnd( method, args, instance ); + } + else + { + doLeaf( method, args, instance ); + } + + } + + /** + * @param m method to test + * @return <code>true</code> if the method has a closing tag + */ + private static boolean hasClosing( final Method m ) + { + boolean ret = false; + + if ( m.getName().endsWith( "-" ) ) + { + ret = false; + } + else + { + final Method[] methods = m.getDeclaringClass().getMethods(); + for ( int i = 0; !ret && i < methods.length; i++ ) + { + ret = methods[i].getName().equals( m.getName() + "_" ); + + } + } + + return ret; + } +} Propchange: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/AbstractSinkAdvice.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/AbstractSinkAdvice.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/HangingElementAdvice.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/HangingElementAdvice.java?rev=349241&view=auto ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/HangingElementAdvice.java (added) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/HangingElementAdvice.java Sun Nov 27 06:46:19 2005 @@ -0,0 +1,71 @@ +/* + * Copyright 2005 Juan F. Codagnone <juam at users dot sourceforge dot net> + * + * Licensed 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. + */ +package org.apache.maven.doxia.validation.advices; + +import java.lang.reflect.Method; +import java.util.Stack; + + +/** + * Advisor that checks for incorrect closing + * + * @author Juan F. Codagnone + * @since Nov 6, 2005 + */ +public class HangingElementAdvice extends AbstractSinkAdvice +{ + /** + * stack used to keep state + */ + private Stack/*<String>*/ stack = new Stack/*<String>*/(); + + /** + * @see AbstractSinkAdvice#doLeaf(Method, Object[], Object) + */ + public final void doLeaf( final Method method, final Object [] args, + final Object instance ) + { + // nothing to do + } + + /** + * @see AbstractSinkAdvice#doStart(Method, Object[], Object) + */ + public final void doStart( final Method method, final Object [] args, + final Object instance ) + { + stack.push( method.getName() ); + } + + /** + * @see AbstractSinkAdvice#doEnd(Method, Object[], Object) + */ + public void doEnd( final Method method, final Object [] args, + final Object instance ) + { + if ( stack.size() == 0 ) + { + throw new IllegalStateException( + "there are more closings that openings" ); + } + String name = (String) stack.pop(); + if ( !( name + "_" ).equals( method.getName() ) ) + { + throw new IllegalStateException( "we are closing: " + + name + " with " + method.getName() ); + } + } +} Propchange: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/HangingElementAdvice.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/HangingElementAdvice.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/MethodBeforeAdvice.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/MethodBeforeAdvice.java?rev=349241&view=auto ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/MethodBeforeAdvice.java (added) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/MethodBeforeAdvice.java Sun Nov 27 06:46:19 2005 @@ -0,0 +1,43 @@ +/* + * Copyright 2002-2005 the original author or authors. + * + * Licensed 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. + */ + +package org.apache.maven.doxia.validation.advices; + +import java.lang.reflect.Method; + +/** + * Advice invoked before a method is invoked. Such advices cannot + * prevent the method call proceeding, unless they throw a Throwable. + * + * @author Rod Johnson + */ +public interface MethodBeforeAdvice /*extends BeforeAdvice*/ +{ + + /** + * Callback before a given method is invoked. + * + * @param method method being invoked + * @param args arguments to the method + * @param target target of the method invocation. May be null. + * @throws Throwable if this object wishes to abort the call. + * Any exception thrown will be returned to the caller if it's + * allowed by the method signature. Otherwise the exception + * will be wrapped as a runtime exception. + */ + void before( Method method, Object[] args, Object target ) throws Throwable; + +} Propchange: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/MethodBeforeAdvice.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/MethodBeforeAdvice.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/PrintAdvisor.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/PrintAdvisor.java?rev=349241&view=auto ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/PrintAdvisor.java (added) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/PrintAdvisor.java Sun Nov 27 06:46:19 2005 @@ -0,0 +1,90 @@ +/* + * Copyright 2005 Juan F. Codagnone <juam at users dot sourceforge dot net> + * + * Licensed 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. + */ +package org.apache.maven.doxia.validation.advices; + +import java.io.PrintStream; +import java.lang.reflect.Method; + + +/** + * Advisor that prints the hierarchy of a document as is beeing generated + * + * @author Juan F. Codagnone + * @since Nov 6, 2005 + */ +public class PrintAdvisor extends AbstractSinkAdvice +{ + /** + * indentation level + */ + private String indent = ""; + /** + * output stream + */ + private PrintStream printStream; + + /** + * indent increment + */ + private static final String INDENT_STEP = " "; + /** + * indent increment lenght + */ + private static final int INDENT_STEP_LEN = INDENT_STEP.length(); + + /** + * Creates the PrintAdvisor. + * + * @param printStream stream printer + */ + public PrintAdvisor( final PrintStream printStream ) + { + if ( printStream == null ) + { + throw new IllegalArgumentException( "argument cant be null" ); + } + this.printStream = printStream; + } + + /** + * @see AbstractSinkAdvice#doLeaf(Method, Object[], Object) + */ + public final void doLeaf( final Method method, final Object [] args, + final Object instance ) + { + printStream.println( indent + method.getName() ); + } + + /** + * @see AbstractSinkAdvice#doStart(Method, Object[], Object) + */ + public final void doStart( final Method method, final Object [] args, + final Object instance ) + { + printStream.println( indent + method.getName() ); + indent += INDENT_STEP; + } + + /** + * @see AbstractSinkAdvice#doEnd(Method, Object[], Object) + */ + public final void doEnd( final Method method, final Object [] args, + final Object instance ) + { + indent = indent.substring( INDENT_STEP_LEN ); + printStream.println( indent + method.getName() ); + } +} Propchange: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/PrintAdvisor.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/validation/advices/PrintAdvisor.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"