1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.view.facelets.compiler;
20
21 import java.io.IOException;
22 import javax.el.ELContext;
23 import javax.el.ExpressionFactory;
24 import javax.faces.context.FacesContext;
25
26
27
28
29
30 public class DoctypeInstruction implements Instruction
31 {
32 private final String name;
33
34 private final String publicId;
35
36 private final String systemId;
37
38 private final boolean html5Doctype;
39
40 public DoctypeInstruction(String name, String publicId, String systemId, boolean html5Doctype)
41 {
42 this.name = name;
43 this.publicId = publicId;
44 this.systemId = systemId;
45 this.html5Doctype = html5Doctype;
46 }
47
48 public void write(FacesContext context) throws IOException
49 {
50 StringBuilder sb = new StringBuilder(64);
51 if (html5Doctype)
52 {
53 sb.append("<!DOCTYPE html>\n");
54 }
55 else
56 {
57 sb.append("<!DOCTYPE ").append(name);
58 if (publicId != null)
59 {
60 sb.append(" PUBLIC \"").append(publicId).append("\"");
61 if (systemId != null)
62 {
63 sb.append(" \"").append(systemId).append("\"");
64 }
65 }
66 else if (systemId != null)
67 {
68 sb.append(" SYSTEM \"").append(systemId).append("\"");
69 }
70 sb.append(" >\n");
71 }
72 context.getResponseWriter().writeDoctype(sb.toString());
73 }
74
75 public Instruction apply(ExpressionFactory factory, ELContext ctx)
76 {
77 return this;
78 }
79
80 public boolean isLiteral()
81 {
82 return true;
83 }
84 }