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.MorphBuilder;
28
29 /***
30 * <p>
31 * This <code>Command</code> rule matches a html span {@link Node} to a
32 * {@link MorphBuilder}. This rule is different in that <code>jsfid</code> is
33 * used to find the target componentType to replace the html span tag. If a
34 * <code>jsfid</code> is not found as an attribute in the html {@link Node},
35 * no match is made.
36 * <p>
37 */
38 public class SpanBuilderRule implements Command {
39
40 /***
41 * <p>
42 * Instance of the {@link MorphBuilder} that can become any type of
43 * component.
44 * </p>
45 */
46 private static final Builder BUILDER = new MorphBuilder();
47
48 /***
49 * <p>
50 * Returns a <code>true</code> value, ending the chain execution if the
51 * html {@link Node} has a <code>jsfid</code> html attribute and is a span
52 * HTML element.
53 * </p>
54 *
55 * @param context commons chains
56 * @return <code>true</code> if final
57 * @exception Exception propagated to the top chain
58 */
59 public boolean execute(Context context) throws Exception {
60 boolean isFinal = false;
61
62 BuilderRuleContext builderRuleContext = (BuilderRuleContext) context;
63 Node node = builderRuleContext.getNode();
64 if (!node.isComment() && node.getName() != null
65 && node.getName().equals("span")
66 && node.getAttributes().containsKey("jsfid")) {
67
68 builderRuleContext.setBuilder(BUILDER);
69 isFinal = true;
70 }
71
72 return isFinal;
73 }
74
75 }