Clover coverage report - Code Coverage for tapestry-annotations release 4.0-beta-6
Coverage timestamp: Wed Sep 7 2005 18:47:10 EDT
file stats: LOC: 67   Methods: 1
NCLOC: 30   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
BeanAnnotationWorker.java 100% 100% 100% 100%
coverage
 1    // Copyright 2005 The Apache Software Foundation
 2    //
 3    // Licensed under the Apache License, Version 2.0 (the "License");
 4    // you may not use this file except in compliance with the License.
 5    // You may obtain a copy of the License at
 6    //
 7    // http://www.apache.org/licenses/LICENSE-2.0
 8    //
 9    // Unless required by applicable law or agreed to in writing, software
 10    // distributed under the License is distributed on an "AS IS" BASIS,
 11    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12    // See the License for the specific language governing permissions and
 13    // limitations under the License.
 14   
 15    package org.apache.tapestry.annotations;
 16   
 17    import java.lang.reflect.Method;
 18   
 19    import org.apache.hivemind.HiveMind;
 20    import org.apache.hivemind.Location;
 21    import org.apache.tapestry.bean.LightweightBeanInitializer;
 22    import org.apache.tapestry.enhance.EnhancementOperation;
 23    import org.apache.tapestry.spec.BeanSpecification;
 24    import org.apache.tapestry.spec.IBeanSpecification;
 25    import org.apache.tapestry.spec.IComponentSpecification;
 26   
 27    /**
 28    * Creates a {@link org.apache.tapestry.spec.IBeanSpecification} from the
 29    * {@link org.apache.tapestry.annotations.Bean} annotation.
 30    *
 31    * @author Howard M. Lewis Ship
 32    * @since 4.0
 33    */
 34    public class BeanAnnotationWorker implements MethodAnnotationEnhancementWorker
 35    {
 36  4 public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
 37    Method method, Location location)
 38    {
 39  4 Bean bean = method.getAnnotation(Bean.class);
 40  4 String propertyName = AnnotationUtils.getPropertyName(method);
 41   
 42  4 Class beanClass = bean.value();
 43  4 if (beanClass.equals(Object.class))
 44  2 beanClass = op.getPropertyType(propertyName);
 45   
 46  4 IBeanSpecification bs = new BeanSpecification();
 47   
 48    // A shame to convert it to a string then back to
 49    // a class later, but ...
 50   
 51  4 bs.setClassName(beanClass.getName());
 52  4 bs.setPropertyName(propertyName);
 53  4 bs.setLocation(location);
 54   
 55    // Starting to like enums!
 56   
 57  4 bs.setLifecycle(bean.lifecycle().getBeanLifecycle());
 58   
 59  4 String initializer = bean.initializer();
 60   
 61  4 if (HiveMind.isNonBlank(initializer))
 62  1 bs.addInitializer(new LightweightBeanInitializer(initializer));
 63   
 64  4 spec.addBeanSpecification(propertyName, bs);
 65    }
 66   
 67    }