2009/05/20 - Apache Shale has been retired.
For more information, please explore the Attic.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.shale.clay.parser.builder.chain;
22
23 import org.apache.commons.chain.Command;
24 import org.apache.commons.chain.Context;
25 import org.apache.shale.clay.parser.Node;
26 import org.apache.shale.clay.parser.builder.Builder;
27 import org.apache.shale.clay.parser.builder.SelectItemBuilder;
28 import org.apache.shale.clay.parser.builder.SelectItemsBuilder;
29
30 /***
31 * <p>
32 * This <code>Command</code> will return either a {@link SelectItemBuilder} or
33 * a {@link SelectItemsBuilder} if the html {@link Node} is an option and the
34 * option has children.
35 * </p>
36 */
37 public class OptionBuilderRule implements Command {
38
39 /***
40 * <p>
41 * Array of {@link Builder}s.
42 * </p>
43 */
44 private static final Builder[] BUILDERS = { new SelectItemBuilder(), new SelectItemsBuilder() };
45
46 /***
47 * <p>Returns a <code>true</code> value if the current html {@link Node} is
48 * an option. A <code>true</code> result means that a rule has been
49 * assigned to the {@link BuilderRuleContext}.
50 * <p>
51 *
52 * @param context chains context
53 * @return <code>true</code> if the chain is done
54 * @exception Exception up the calling chain
55 */
56 public boolean execute(Context context) throws Exception {
57 boolean isFinal = false;
58
59 BuilderRuleContext builderRuleContext = (BuilderRuleContext) context;
60 Node node = builderRuleContext.getNode();
61 if (!node.isComment() && node.getName() != null
62 && node.getName().equalsIgnoreCase("option")) {
63
64 if (node.getChildren().size() > 0) {
65 builderRuleContext.setBuilder(BUILDERS[0]);
66 isFinal = true;
67 } else {
68
69 builderRuleContext.setBuilder(BUILDERS[1]);
70 isFinal = true;
71 }
72
73 }
74
75 return isFinal;
76 }
77
78 }