1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package javax.faces.view;
20
21 import java.util.Collection;
22 import java.util.Collections;
23 import java.util.Iterator;
24 import java.util.LinkedList;
25
26 import javax.faces.component.UIComponent;
27 import javax.faces.component.UIViewAction;
28 import javax.faces.component.UIViewParameter;
29 import javax.faces.component.UIViewRoot;
30 import javax.faces.context.FacesContext;
31
32
33
34
35 public abstract class ViewMetadata
36 {
37 public abstract UIViewRoot createMetadataView(FacesContext context);
38
39 public abstract String getViewId();
40
41 public static Collection<UIViewParameter> getViewParameters(UIViewRoot root)
42 {
43 LinkedList<UIViewParameter> result = null;
44 UIComponent metadataFacet = root.getFacet (UIViewRoot.METADATA_FACET_NAME);
45 Iterator<UIComponent> children;
46
47 if (metadataFacet == null)
48 {
49
50
51 return Collections.emptyList();
52 }
53
54
55
56 if (metadataFacet.getChildCount() > 0)
57 {
58 children = metadataFacet.getChildren().iterator();
59
60 while (children.hasNext())
61 {
62 UIComponent component = children.next();
63
64 if (result == null)
65 {
66 result = new LinkedList<UIViewParameter>();
67 }
68
69 if (component instanceof UIViewParameter)
70 {
71 result.add ((UIViewParameter) component);
72 }
73 }
74 }
75
76
77
78 if (result == null)
79 {
80 return Collections.emptyList();
81 }
82 else
83 {
84 return Collections.unmodifiableCollection (result);
85 }
86 }
87
88
89
90
91
92
93 public static Collection<UIViewAction> getViewActions(UIViewRoot root)
94 {
95 LinkedList<UIViewAction> result = null;
96 UIComponent metadataFacet = root.getFacet (UIViewRoot.METADATA_FACET_NAME);
97 Iterator<UIComponent> children;
98
99 if (metadataFacet == null)
100 {
101
102
103 return Collections.emptyList();
104 }
105
106
107
108 if (metadataFacet.getChildCount() > 0)
109 {
110 children = metadataFacet.getChildren().iterator();
111
112 while (children.hasNext())
113 {
114 UIComponent component = children.next();
115
116 if (result == null)
117 {
118 result = new LinkedList<UIViewAction>();
119 }
120
121 if (component instanceof UIViewAction)
122 {
123 result.add ((UIViewAction) component);
124 }
125 }
126 }
127
128
129
130 if (result == null)
131 {
132 return Collections.emptyList();
133 }
134 else
135 {
136 return Collections.unmodifiableCollection (result);
137 }
138 }
139
140
141
142
143
144
145 public static boolean hasMetadata(UIViewRoot root)
146 {
147 UIComponent metadataFacet = root.getFacet(UIViewRoot.METADATA_FACET_NAME);
148 return metadataFacet != null ? metadataFacet.getChildCount() > 0 : false;
149 }
150 }