1 package org.apache.commons.digester3.examples.api.documentmarkup; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one or more 5 * contributor license agreements. See the NOTICE file distributed with 6 * this work for additional information regarding copyright ownership. 7 * The ASF licenses this file to You under the Apache License, Version 2.0 8 * (the "License"); you may not use this file except in compliance with 9 * the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 20 import org.apache.commons.beanutils.MethodUtils; 21 import org.apache.commons.digester3.Rule; 22 23 /** 24 * When a text segment is discovered, it calls a specific method on the top 25 * object on the stack. 26 */ 27 public class SetTextSegmentRule 28 extends Rule 29 implements TextSegmentHandler 30 { 31 32 // ----------------------------------------------------------- Constructors 33 34 public SetTextSegmentRule( String methodName ) 35 { 36 this.methodName = methodName; 37 } 38 39 // ----------------------------------------------------- Instance Variables 40 41 /** 42 * The method name to call on the parent object. 43 */ 44 protected String methodName = null; 45 46 // --------------------------------------------------------- Public Methods 47 48 /** 49 * Process the end of this element. 50 */ 51 public void textSegment( String text ) 52 throws Exception 53 { 54 Object target = getDigester().peek( 0 ); 55 56 // Call the specified method 57 Class<?> paramTypes[] = new Class[] { String.class }; 58 MethodUtils.invokeMethod( target, methodName, new Object[] { text }, paramTypes ); 59 } 60 61 }