01: /**
02: * EasyBeans
03: * Copyright (C) 2006 Bull S.A.S.
04: * Contact: easybeans@ow2.org
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2.1 of the License, or any later version.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19: * USA
20: *
21: * --------------------------------------------------------------------------
22: * $Id: AbsCommonEjbVisitor.java 2057 2007-11-21 15:35:32Z benoitf $
23: * --------------------------------------------------------------------------
24: */package org.ow2.easybeans.deployment.annotations.analyzer.classes;
25:
26: import org.ow2.easybeans.deployment.annotations.analyzer.AbsAnnotationVisitor;
27: import org.ow2.easybeans.deployment.annotations.impl.JCommonBean;
28: import org.ow2.easybeans.deployment.annotations.metadata.ClassAnnotationMetadata;
29:
30: /**
31: * This class manages the handling of common annotations used by beans.
32: * @param <T> a class extending JCommonBean.
33: * @author Florent Benoit
34: */
35: public abstract class AbsCommonEjbVisitor<T extends JCommonBean>
36: extends AbsAnnotationVisitor<ClassAnnotationMetadata> {
37:
38: /**
39: * Name attribute of the annotation.
40: */
41: private static final String NAME = "name";
42:
43: /**
44: * mappedName attribute of the annotation.
45: */
46: private static final String MAPPED_NAME = "mappedName";
47:
48: /**
49: * description attribute of the annotation.
50: */
51: private static final String DESCRIPTION = "description";
52:
53: /**
54: * Constructor.
55: * @param classAnnotationMetadata linked to a class metadata
56: */
57: public AbsCommonEjbVisitor(
58: final ClassAnnotationMetadata classAnnotationMetadata) {
59: super (classAnnotationMetadata);
60: }
61:
62: /**
63: * Visits a primitive value of the annotation.<br>
64: * @param name the value name.
65: * @param value the actual value, whose type must be {@link Byte},
66: * {@link Boolean}, {@link Character}, {@link Short},
67: * {@link Integer}, {@link Long}, {@link Float}, {@link Double},
68: * {@link String} or {@link org.ow2.easybeans.asm.Type}.
69: */
70: @Override
71: public void visit(final String name, final Object value) {
72: if (name.equals(NAME)) {
73: getJCommonBean().setName((String) value);
74: } else if (name.equals(MAPPED_NAME)) {
75: getJCommonBean().setMappedName((String) value);
76: } else if (name.equals(DESCRIPTION)) {
77: getJCommonBean().setDescription((String) value);
78: }
79: }
80:
81: /**
82: * Visits the end of the annotation. <br> Creates the object and store it.
83: */
84: @Override
85: public void visitEnd() {
86: getAnnotationMetadata().setJCommonBean(getJCommonBean());
87: }
88:
89: /**
90: * @return the object used by all beans.
91: */
92: public abstract T getJCommonBean();
93:
94: }
|