KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nextapp > echo2 > app > componentxml > propertypeer > IntegerPeer


1 /*
2  * This file is part of the Echo Web Application Framework (hereinafter "Echo").
3  * Copyright (C) 2002-2005 NextApp, Inc.
4  *
5  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6  *
7  * The contents of this file are subject to the Mozilla Public License Version
8  * 1.1 (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  * http://www.mozilla.org/MPL/
11  *
12  * Software distributed under the License is distributed on an "AS IS" basis,
13  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14  * for the specific language governing rights and limitations under the
15  * License.
16  *
17  * Alternatively, the contents of this file may be used under the terms of
18  * either the GNU General Public License Version 2 or later (the "GPL"), or
19  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
20  * in which case the provisions of the GPL or the LGPL are applicable instead
21  * of those above. If you wish to allow use of your version of this file only
22  * under the terms of either the GPL or the LGPL, and not to allow others to
23  * use your version of this file under the terms of the MPL, indicate your
24  * decision by deleting the provisions above and replace them with the notice
25  * and other provisions required by the GPL or the LGPL. If you do not delete
26  * the provisions above, a recipient may use your version of this file under
27  * the terms of any one of the MPL, the GPL or the LGPL.
28  */

29
30 package nextapp.echo2.app.componentxml.propertypeer;
31
32 import org.w3c.dom.Element JavaDoc;
33
34 import nextapp.echo2.app.componentxml.ComponentIntrospector;
35 import nextapp.echo2.app.componentxml.InvalidPropertyException;
36 import nextapp.echo2.app.componentxml.PropertyXmlPeer;
37
38 /**
39  * <code>PropertyXmlPeer</code> implementation for
40  * <code>java.lang.Integer</code> properties.
41  */

42 public class IntegerPeer
43 implements PropertyXmlPeer {
44
45     /**
46      * @see nextapp.echo2.app.componentxml.PropertyXmlPeer#getValue(java.lang.ClassLoader,
47      * java.lang.Class, org.w3c.dom.Element)
48      */

49     public Object JavaDoc getValue(ClassLoader JavaDoc classLoader, Class JavaDoc objectClass, Element JavaDoc propertyElement)
50     throws InvalidPropertyException {
51         String JavaDoc stringValue = propertyElement.getAttribute("value");
52         try {
53             return new Integer JavaDoc(stringValue);
54         } catch (NumberFormatException JavaDoc ex) {
55             return introspectConstantValue(classLoader, objectClass, stringValue);
56         }
57     }
58     
59     /**
60      * @param classLoader the <code>ClassLoader</code> to use for introspection
61      * @param objectClass the <code>Class</code> of object containing candidate
62      * constant values
63      * @param value the name of the constant value
64      * @return an integer representing the constant value, or null if the
65      * constant is not found.
66      */

67     public Integer JavaDoc introspectConstantValue(ClassLoader JavaDoc classLoader, Class JavaDoc objectClass, String JavaDoc value)
68     throws InvalidPropertyException {
69         try {
70             ComponentIntrospector ci = ComponentIntrospector.forName(objectClass.getName(), classLoader);
71             if (value.startsWith(objectClass.getName())) {
72                 // Remove class name if required.
73
value = value.substring(objectClass.getName().length() + 1);
74             }
75             Object JavaDoc constantValue = ci.getConstantValue(value);
76             if (constantValue instanceof Integer JavaDoc) {
77                 return (Integer JavaDoc) constantValue;
78             } else {
79                 return null;
80             }
81         } catch (ClassNotFoundException JavaDoc ex) {
82             // Should not occur.
83
throw new InvalidPropertyException("Object class not found.", ex);
84         }
85     }
86 }
87
Popular Tags