1
2
3
4 package org.rcfaces.core.internal.renderkit.tools;
5
6 import java.io.IOException;
7 import java.io.Writer;
8
9 import javax.faces.FacesException;
10 import javax.faces.component.UIComponent;
11 import javax.faces.context.FacesContext;
12
13 import org.apache.commons.logging.Log;
14 import org.apache.commons.logging.LogFactory;
15 import org.rcfaces.core.internal.renderkit.WriterException;
16 import org.rcfaces.core.internal.tools.ComponentTools;
17 import org.rcfaces.core.internal.tools.StateFieldMarkerTools;
18
19
20
21
22
23
24 public class DefaultTreeRendererProcessor extends AbstractTreeRendererProcessor {
25
26 private static final String REVISION = "$Revision: 1.5 $";
27
28 private static final Log LOG = LogFactory
29 .getLog(DefaultTreeRendererProcessor.class);
30
31 public DefaultTreeRendererProcessor(FacesContext facesContext) {
32 super(facesContext);
33 }
34
35 public boolean hasSaveStateFieldMarker(String content) {
36
37 String saveStateFieldMarker = StateFieldMarkerTools
38 .getStateFieldMarker(facesContext);
39 if (saveStateFieldMarker == null || saveStateFieldMarker.length() < 1) {
40 return false;
41 }
42
43 if (content.indexOf(saveStateFieldMarker) < 0) {
44 return false;
45 }
46
47 return true;
48 }
49
50 public void writeFilteredContent(Writer writer, String content)
51 throws IOException {
52
53 String saveStateFieldMarker = StateFieldMarkerTools
54 .getStateFieldMarker(facesContext);
55 if (saveStateFieldMarker == null) {
56 throw new FacesException("Save state field marker is null !");
57 }
58
59 String saveValue = StateFieldMarkerTools.getStateValue(facesContext);
60
61 if (LOG.isDebugEnabled()) {
62 LOG.debug("Save value=" + saveValue);
63 }
64
65 for (int start = 0;;) {
66 int offset = content.indexOf(saveStateFieldMarker, start);
67 if (offset < 0) {
68 if (start < content.length()) {
69 writer.write(content.substring(start));
70 }
71 break;
72 }
73 if (offset > start) {
74 writer.write(content.substring(start, offset));
75 }
76 writer.write(saveValue);
77 start = offset + saveStateFieldMarker.length();
78 }
79 }
80
81 public void encodeChildrenRecursive(UIComponent component,
82 String componentId) throws WriterException {
83
84 ComponentTools.encodeChildrenRecursive(facesContext, component);
85 }
86
87 }