1 /*
2 * JBoss, the OpenSource J2EE webOS
3 *
4 * Distributable under LGPL license.
5 * See terms of license at gnu.org.
6 */
7 package javax.management;
8
9 import java.io.Serializable;
10
11 /**
12 * An Any Substring Query Expression.<p>
13 *
14 * Returns true when an attribute value contains the string expression.
15 *
16 * <p><b>Revisions:</b>
17 * <p><b>20020317 Adrian Brock:</b>
18 * <ul>
19 * <li>Make queries thread safe
20 * </ul>
21 *
22 * @author <a href="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
23 * @version $Revision: 1.2 $
24 */
25 /*package*/ class AnySubStringQueryExp
26 extends QueryExpSupport
27 {
28 // Constants ---------------------------------------------------
29
30 // Attributes --------------------------------------------------
31
32 /**
33 * The attribute to test
34 */
35 AttributeValueExp attr;
36
37 /**
38 * The string to test
39 */
40 StringValueExp string;
41
42 // Static ------------------------------------------------------
43
44 // Constructors ------------------------------------------------
45
46 /**
47 * Construct a new Any Substring query expression
48 *
49 * @param attr the attribute to test
50 * @param string the string to test
51 */
52 public AnySubStringQueryExp(AttributeValueExp attr, StringValueExp string)
53 {
54 this.attr = attr;
55 this.string = string;
56 }
57
58 // Public ------------------------------------------------------
59
60 // QueryExp implementation -------------------------------------
61
62 public boolean apply(ObjectName name)
63 throws BadStringOperationException,
64 BadBinaryOpValueExpException,
65 BadAttributeValueExpException,
66 InvalidApplicationException
67 {
68 ValueExp calcAttr = attr.apply(name);
69 ValueExp calcString = string.apply(name);
70 if (calcAttr instanceof StringValueExp)
71 {
72 return ((StringValueExp)calcAttr).toString().indexOf(
73 ((StringValueExp)calcString).toString()) != -1;
74 }
75 // REVIEW: correct?
76 return false;
77 }
78
79 // Object overrides --------------------------------------------
80
81 public String toString()
82 {
83 return new String("(" + attr.toString() + " anySubString " +
84 string.toString() + ")");
85 }
86
87 // Protected ---------------------------------------------------
88
89 // Private -----------------------------------------------------
90
91 // Inner classes -----------------------------------------------
92 }