001: /*
002: ItsNat Java Web Application Framework
003: Copyright (C) 2007 Innowhere Software Services S.L., Spanish Company
004: Author: Jose Maria Arranz Santamaria
005:
006: This program is free software: you can redistribute it and/or modify
007: it under the terms of the GNU Affero General Public License as published by
008: the Free Software Foundation, either version 3 of the License, or
009: (at your option) any later version. See the GNU Affero General Public
010: License for more details. See the copy of the GNU Affero General Public License
011: included in this program. If not, see <http://www.gnu.org/licenses/>.
012: */
013:
014: package org.itsnat.core;
015:
016: import org.xml.sax.InputSource;
017:
018: /**
019: * Represents a generic markup template.
020: *
021: * <p>A markup template can be a document (page) or a fragment (to insert into documents)
022: * and is obtained from an {@link ItsNatServlet} where it was previously registered.</p>
023: *
024: * @author Jose Maria Arranz Santamaria
025: */
026: public interface MarkupTemplate extends ItsNatUserData {
027: /**
028: * Returns the ItsNat servlet where the template was registered.
029: *
030: * @return the ItsNat servlet wrapper.
031: */
032: public ItsNatServlet getItsNatServlet();
033:
034: /**
035: * Returns the used name to register the template.
036: *
037: * @return the template name.
038: */
039: public String getName();
040:
041: /**
042: * Returns the source used to load the template.
043: *
044: * <p>Current implementation only supports local files,
045: * <code>InputSource.getSystemId()</code> returns the file path with URL format.</p>
046: *
047: * @return the template source.
048: */
049: public InputSource getInputSource();
050:
051: /**
052: * Returns the template MIME type. This MIME is the value used to render
053: * to text and in the header sent to clients.
054: *
055: * @return the MIME type.
056: */
057: public String getMIME();
058:
059: /**
060: * Returns the encoding used. This encoding is used to render
061: * to text and in the header sent to clients.
062: *
063: * <p>The default value is defined by {@link ItsNatServletConfig#getDefaultEncoding()}</p>
064: *
065: * @return the encoding.
066: * @see #setEncoding(String)
067: */
068: public String getEncoding();
069:
070: /**
071: * Sets the encoding used.
072: *
073: * @param encoding the new encoding.
074: * @see #getEncoding()
075: */
076: public void setEncoding(String encoding);
077:
078: /**
079: * Informs whether static nodes are serialized as text and globally cached when
080: * the template is loaded to save memory (it improves the performance too).
081: *
082: * <p>The default value is defined by {@link ItsNatServletConfig#isOnLoadCacheStaticNodes(String)}
083: * using the mime type of this template.</p>
084: *
085: * @return true if caching is enabled.
086: * @see #setOnLoadCacheStaticNodes(boolean)
087: */
088: public boolean isOnLoadCacheStaticNodes();
089:
090: /**
091: * Sets if static nodes are serialized as text and globally cached when
092: * the template is loaded to save memory (it improves the performance too).
093: *
094: * @param cache true to enable the static node cache.
095: * @see #isOnLoadCacheStaticNodes()
096: */
097: public void setOnLoadCacheStaticNodes(boolean cache);
098:
099: /**
100: * Informs whether the debug mode is enabled.
101: *
102: * <p>The default value is defined by {@link ItsNatServletConfig#isDebugMode()}</p>
103: *
104: * @return true if debug is enabled.
105: */
106: public boolean isDebugMode();
107:
108: /**
109: * Sets the debug mode.
110: *
111: * @param debugMode true to set debug mode.
112: */
113: public void setDebugMode(boolean debugMode);
114:
115: /**
116: * Returns the default client error mode.
117: *
118: * <p>The default value is defined by {@link ItsNatServletConfig#getClientErrorMode()}</p>
119: *
120: * @return the default client error mode.
121: * @see #setClientErrorMode(int)
122: */
123: public int getClientErrorMode();
124:
125: /**
126: * Sets the default client error mode.
127: *
128: * @param mode the default client error mode.
129: * @see #getClientErrorMode()
130: */
131: public void setClientErrorMode(int mode);
132: }
|