KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > caucho > config > NodePropertyStrategy


1 /*
2  * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
3  *
4  * This file is part of Resin(R) Open Source
5  *
6  * Each copy or derived work must preserve the copyright notice and this
7  * notice unmodified.
8  *
9  * Resin Open Source is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * Resin Open Source is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17  * of NON-INFRINGEMENT. See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with Resin Open Source; if not, write to the
22  * Free SoftwareFoundation, Inc.
23  * 59 Temple Place, Suite 330
24  * Boston, MA 02111-1307 USA
25  *
26  * @author Scott Ferguson
27  */

28
29 package com.caucho.config;
30
31 import com.caucho.util.L10N;
32
33 import org.w3c.dom.Element JavaDoc;
34 import org.w3c.dom.Node JavaDoc;
35
36 import java.lang.reflect.Method JavaDoc;
37
38 /**
39  * TypeBuilder for nodes.
40  */

41 public class NodePropertyStrategy extends AttributeStrategy {
42   static final L10N L = new L10N(NodePropertyStrategy.class);
43
44   private final Method JavaDoc _setter;
45   private String JavaDoc _name;
46   
47   public NodePropertyStrategy(Method JavaDoc setter)
48     throws BeanBuilderException
49   {
50     _setter = setter;
51   }
52
53   public Method JavaDoc getMethod()
54   {
55     return _setter;
56   }
57
58   /*
59   public void setString(Object bean, String value)
60     throws BeanBuilderException
61   {
62     try {
63       if (value == null) {
64         setNull(bean);
65         return;
66       }
67     
68       _setter.invoke(bean, new Object[] { _name, evalString(value) });
69     } catch (Exception e) {
70       throw new BeanBuilderException(e);
71     }
72   }
73   */

74   
75   public void setChild(Object JavaDoc bean, Object JavaDoc value)
76     throws BeanBuilderException
77   {
78     try {
79       Node JavaDoc node = (Node JavaDoc) value;
80
81       if (node == null) {
82     _setter.invoke(bean, new Object JavaDoc[] { null });
83     return;
84       }
85
86       for (Node JavaDoc child = node.getFirstChild();
87        child != null;
88        child = child.getNextSibling()) {
89     if (child instanceof Element JavaDoc) {
90       _setter.invoke(bean, new Object JavaDoc[] { child });
91       return;
92     }
93       }
94       
95       _setter.invoke(bean, new Object JavaDoc[] { node.getFirstChild() });
96     } catch (Exception JavaDoc e) {
97       throw new BeanBuilderException(e);
98     }
99   }
100
101   private void setNull(Object JavaDoc bean)
102     throws Exception JavaDoc
103   {
104     _setter.invoke(bean, new Object JavaDoc[] { null });
105   }
106 }
107
Popular Tags