1/*
2 * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package com.sun.org.apache.xalan.internal;
27
28import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
29
30/**
31 * Commonly used constants.
32 *
33 * @author Huizhe Wang, Oracle
34 *
35 */
36public final class XalanConstants {
37
38    //
39    // Constants
40    //
41    //Xerces security manager
42    public static final String SECURITY_MANAGER =
43            "http://apache.org/xml/properties/security-manager";
44
45    //
46    // Implementation limits: API properties
47    //
48    /** Oracle JAXP property prefix ("http://www.oracle.com/xml/jaxp/properties/"). */
49    public static final String ORACLE_JAXP_PROPERTY_PREFIX =
50        "http://www.oracle.com/xml/jaxp/properties/";
51    /**
52     * JDK entity expansion limit; Note that the existing system property
53     * "entityExpansionLimit" with no prefix is still observed
54     */
55    public static final String JDK_ENTITY_EXPANSION_LIMIT =
56            ORACLE_JAXP_PROPERTY_PREFIX + "entityExpansionLimit";
57
58    /**
59     * JDK element attribute limit; Note that the existing system property
60     * "elementAttributeLimit" with no prefix is still observed
61     */
62    public static final String JDK_ELEMENT_ATTRIBUTE_LIMIT =
63            ORACLE_JAXP_PROPERTY_PREFIX + "elementAttributeLimit";
64
65    /**
66     * JDK maxOccur limit; Note that the existing system property
67     * "maxOccurLimit" with no prefix is still observed
68     */
69    public static final String JDK_MAX_OCCUR_LIMIT =
70            ORACLE_JAXP_PROPERTY_PREFIX + "maxOccurLimit";
71
72    /**
73     * JDK total entity size limit
74     */
75    public static final String JDK_TOTAL_ENTITY_SIZE_LIMIT =
76            ORACLE_JAXP_PROPERTY_PREFIX + "totalEntitySizeLimit";
77
78    /**
79     * JDK maximum general entity size limit
80     */
81    public static final String JDK_GENERAL_ENTITY_SIZE_LIMIT =
82            ORACLE_JAXP_PROPERTY_PREFIX + "maxGeneralEntitySizeLimit";
83
84    /**
85     * JDK node count limit in entities that limits the total number of nodes
86     * in all of entity references.
87     */
88    public static final String JDK_ENTITY_REPLACEMENT_LIMIT =
89            ORACLE_JAXP_PROPERTY_PREFIX + "entityReplacementLimit";
90
91    /**
92     * JDK maximum parameter entity size limit
93     */
94    public static final String JDK_PARAMETER_ENTITY_SIZE_LIMIT =
95            ORACLE_JAXP_PROPERTY_PREFIX + "maxParameterEntitySizeLimit";
96    /**
97     * JDK maximum XML name limit
98     */
99    public static final String JDK_XML_NAME_LIMIT =
100            ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit";
101
102    /**
103     * JDK maxElementDepth limit
104     */
105    public static final String JDK_MAX_ELEMENT_DEPTH =
106            ORACLE_JAXP_PROPERTY_PREFIX + "maxElementDepth";
107
108    /**
109     * JDK property indicating whether the parser shall print out entity
110     * count information
111     * Value: a string "yes" means print, "no" or any other string means not.
112     */
113    public static final String JDK_ENTITY_COUNT_INFO =
114            ORACLE_JAXP_PROPERTY_PREFIX + "getEntityCountInfo";
115
116    //
117    // Implementation limits: corresponding System Properties of the above
118    // API properties
119    //
120    /**
121     * JDK entity expansion limit; Note that the existing system property
122     * "entityExpansionLimit" with no prefix is still observed
123     */
124    public static final String SP_ENTITY_EXPANSION_LIMIT = "jdk.xml.entityExpansionLimit";
125
126    /**
127     * JDK element attribute limit; Note that the existing system property
128     * "elementAttributeLimit" with no prefix is still observed
129     */
130    public static final String SP_ELEMENT_ATTRIBUTE_LIMIT =  "jdk.xml.elementAttributeLimit";
131
132    /**
133     * JDK maxOccur limit; Note that the existing system property
134     * "maxOccurLimit" with no prefix is still observed
135     */
136    public static final String SP_MAX_OCCUR_LIMIT = "jdk.xml.maxOccurLimit";
137
138    /**
139     * JDK total entity size limit
140     */
141    public static final String SP_TOTAL_ENTITY_SIZE_LIMIT = "jdk.xml.totalEntitySizeLimit";
142
143    /**
144     * JDK maximum general entity size limit
145     */
146    public static final String SP_GENERAL_ENTITY_SIZE_LIMIT = "jdk.xml.maxGeneralEntitySizeLimit";
147
148    /**
149     * JDK node count limit in entities that limits the total number of nodes
150     * in all of entity references.
151     */
152    public static final String SP_ENTITY_REPLACEMENT_LIMIT = "jdk.xml.entityReplacementLimit";
153
154    /**
155     * JDK maximum parameter entity size limit
156     */
157    public static final String SP_PARAMETER_ENTITY_SIZE_LIMIT = "jdk.xml.maxParameterEntitySizeLimit";
158    /**
159     * JDK maximum XML name limit
160     */
161    public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit";
162
163    /**
164     * JDK maxElementDepth limit
165     */
166    public static final String SP_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth";
167
168    /**
169     * JDK TransformerFactory and Transformer attribute that specifies a class
170     * loader that will be used for extension functions class loading
171     * Value: a "null", the default value, means that the default EF class loading
172     * path will be used.
173     * Instance of ClassLoader: the specified instance of ClassLoader will be used
174     * for extension functions loading during translation process
175     */
176    public static final String JDK_EXTENSION_CLASSLOADER = "jdk.xml.transform.extensionClassLoader";
177
178    //legacy System Properties
179    public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit";
180    public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ;
181    public final static String MAX_OCCUR_LIMIT = "maxOccurLimit";
182
183    /**
184     * A string "yes" that can be used for properties such as getEntityCountInfo
185     */
186    public static final String JDK_YES = "yes";
187
188    // Oracle Feature:
189    /**
190     * <p>Use Service Mechanism</p>
191     *
192     * <ul>
193     *   <li>
194         * {@code true} instruct an object to use service mechanism to
195         * find a service implementation. This is the default behavior.
196         *   </li>
197         *   <li>
198         * {@code false} instruct an object to skip service mechanism and
199         * use the default implementation for that service.
200         *   </li>
201         * </ul>
202         */
203    public static final String ORACLE_FEATURE_SERVICE_MECHANISM = "http://www.oracle.com/feature/use-service-mechanism";
204
205
206    //System Properties corresponding to ACCESS_EXTERNAL_* properties
207    public static final String SP_ACCESS_EXTERNAL_STYLESHEET = "javax.xml.accessExternalStylesheet";
208    public static final String SP_ACCESS_EXTERNAL_DTD = "javax.xml.accessExternalDTD";
209
210    //all access keyword
211    public static final String ACCESS_EXTERNAL_ALL = "all";
212
213    /**
214     * Default value when FEATURE_SECURE_PROCESSING (FSP) is set to true
215     */
216    public static final String EXTERNAL_ACCESS_DEFAULT_FSP = "";
217
218    /**
219     * FEATURE_SECURE_PROCESSING (FSP) is false by default
220     */
221    public static final String EXTERNAL_ACCESS_DEFAULT = ACCESS_EXTERNAL_ALL;
222
223    public static final String XML_SECURITY_PROPERTY_MANAGER =
224            ORACLE_JAXP_PROPERTY_PREFIX + "xmlSecurityPropertyManager";
225
226
227    /**
228     * Values for a feature
229     */
230    public static final String FEATURE_TRUE = "true";
231    public static final String FEATURE_FALSE = "false";
232
233} // class Constants
234