Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/sun/facelets/el/TagMethodExpression.java


1   /**
2    * Licensed under the Common Development and Distribution License,
3    * you may not use this file except in compliance with the License.
4    * You may obtain a copy of the License at
5    * 
6    *   http://www.sun.com/cddl/
7    *   
8    * Unless required by applicable law or agreed to in writing, software
9    * distributed under the License is distributed on an "AS IS" BASIS,
10   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
11   * implied. See the License for the specific language governing
12   * permissions and limitations under the License.
13   */
14  
15  package com.sun.facelets.el;
16  
17  import java.io.Externalizable;
18  import java.io.IOException;
19  import java.io.ObjectInput;
20  import java.io.ObjectOutput;
21  
22  import javax.el.ELContext;
23  import javax.el.ELException;
24  import javax.el.MethodExpression;
25  import javax.el.MethodInfo;
26  import javax.el.MethodNotFoundException;
27  import javax.el.PropertyNotFoundException;
28  
29  import com.sun.facelets.tag.TagAttribute;
30  
31  /**
32   * 
33   * 
34   * @author Jacob Hookom
35   * @version $Id: TagMethodExpression.java,v 1.6 2005/08/24 04:38:57 jhook Exp $
36   */
37  public final class TagMethodExpression extends MethodExpression implements
38          Externalizable {
39      
40      private static final long serialVersionUID = 1L;
41      
42      private String attr;
43      private MethodExpression orig;
44  
45      public TagMethodExpression() {
46          super();
47      }
48      
49      public TagMethodExpression(TagAttribute attr, MethodExpression orig) {
50          this.attr = attr.toString();
51          this.orig = orig;
52      }
53  
54      public MethodInfo getMethodInfo(ELContext context) {
55          try {
56              return this.orig.getMethodInfo(context);
57          } catch (PropertyNotFoundException pnfe) {
58              throw new PropertyNotFoundException(this.attr + ": " + pnfe.getMessage(), pnfe.getCause());
59          } catch (MethodNotFoundException mnfe) {
60              throw new MethodNotFoundException(this.attr + ": " + mnfe.getMessage(), mnfe.getCause());
61          } catch (ELException e) {
62              throw new ELException(this.attr + ": " + e.getMessage(), e.getCause());
63          }
64      }
65  
66      public Object invoke(ELContext context, Object[] params) {
67          try {
68              return this.orig.invoke(context, params);
69          } catch (PropertyNotFoundException pnfe) {
70              throw new PropertyNotFoundException(this.attr + ": " + pnfe.getMessage(), pnfe.getCause());
71          } catch (MethodNotFoundException mnfe) {
72              throw new MethodNotFoundException(this.attr + ": " + mnfe.getMessage(), mnfe.getCause());
73          } catch (ELException e) {
74              throw new ELException(this.attr + ": " + e.getMessage(), e.getCause());
75          }
76      }
77  
78      public String getExpressionString() {
79          return this.orig.getExpressionString();
80      }
81  
82      public boolean equals(Object obj) {
83          return this.orig.equals(obj);
84      }
85  
86      public int hashCode() {
87          return this.orig.hashCode();
88      }
89  
90      public boolean isLiteralText() {
91          return this.orig.isLiteralText();
92      }
93  
94      public void writeExternal(ObjectOutput out) throws IOException {
95          out.writeObject(this.orig);
96          out.writeUTF(this.attr);
97      }
98  
99      public void readExternal(ObjectInput in) throws IOException,
100             ClassNotFoundException {
101         this.orig = (MethodExpression) in.readObject();
102         this.attr = in.readUTF();
103     }
104 
105     public String toString() {
106         return this.attr + ": " + this.orig;
107     }
108 }