KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > bsf > util > ObjInfo


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  * Copyright (c) 2002 The Apache Software Foundation. All rights
5  * reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in
16  * the documentation and/or other materials provided with the
17  * distribution.
18  *
19  * 3. The end-user documentation included with the redistribution, if
20  * any, must include the following acknowlegement:
21  * "This product includes software developed by the
22  * Apache Software Foundation (http://www.apache.org/)."
23  * Alternately, this acknowlegement may appear in the software itself,
24  * if and wherever such third-party acknowlegements normally appear.
25  *
26  * 4. The names "Apache BSF", "Apache", and "Apache Software Foundation"
27  * must not be used to endorse or promote products derived from
28  * this software without prior written permission. For written
29  * permission, please contact apache@apache.org.
30  *
31  * 5. Products derived from this software may not be called "Apache"
32  * nor may "Apache" appear in their names without prior written
33  * permission of the Apache Group.
34  *
35  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46  * SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many individuals
50  * on behalf of the Apache Software Foundation and was originally created by
51  * Sanjiva Weerawarana and others at International Business Machines
52  * Corporation. For more information on the Apache Software Foundation,
53  * please see <http://www.apache.org/>.
54  */

55
56 package org.apache.bsf.util;
57
58 /**
59  * An <code>ObjInfo</code> object is used by a compiler to track the name and
60  * type of a bean.
61  *
62  * @author Matthew J. Duftler
63  */

64 public class ObjInfo
65 {
66   static private String JavaDoc QUOTE_CHARS = "\'\"",
67                         EXEC_CHARS = "(=";
68          public String JavaDoc objName;
69          public Class JavaDoc objClass;
70
71   public ObjInfo(Class JavaDoc objClass, String JavaDoc objName)
72   {
73     this.objClass = objClass;
74     this.objName = objName;
75   }
76   public boolean isExecutable()
77   {
78     char[] chars = objName.toCharArray();
79     char openingChar = ' ';
80     boolean inString = false,
81             inEscapeSequence = false;
82
83     for (int i = 0; i < chars.length; i++)
84     {
85       if (inEscapeSequence)
86       {
87         inEscapeSequence = false;
88       }
89       else if (QUOTE_CHARS.indexOf(chars[i]) != -1)
90       {
91         if (!inString)
92         {
93           openingChar = chars[i];
94           inString = true;
95         }
96         else
97         {
98           if (chars[i] == openingChar)
99           {
100             inString = false;
101           }
102         }
103       }
104       else if (EXEC_CHARS.indexOf(chars[i]) != -1)
105       {
106         if (!inString)
107         {
108           return true;
109         }
110       }
111       else if (inString && chars[i] == '\\')
112       {
113         inEscapeSequence = true;
114       }
115     }
116
117     return false;
118   }
119   public boolean isValueReturning()
120   {
121     return (objClass != void.class && objClass != Void JavaDoc.class);
122   }
123   public String JavaDoc toString()
124   {
125     return StringUtils.getClassName(objClass) + " " + objName;
126   }
127 }
128
Popular Tags