001: /*
002: * This file is part of PFIXCORE.
003: *
004: * PFIXCORE is free software; you can redistribute it and/or modify
005: * it under the terms of the GNU Lesser General Public License as published by
006: * the Free Software Foundation; either version 2 of the License, or
007: * (at your option) any later version.
008: *
009: * PFIXCORE is distributed in the hope that it will be useful,
010: * but WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012: * GNU Lesser General Public License for more details.
013: *
014: * You should have received a copy of the GNU Lesser General Public License
015: * along with PFIXCORE; if not, write to the Free Software
016: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017: */
018:
019: package de.schlund.pfixxml.config;
020:
021: import java.util.Map;
022: import java.util.Properties;
023:
024: import de.schlund.pfixcore.auth.AuthConstraint;
025: import de.schlund.pfixcore.generator.IWrapper;
026: import de.schlund.pfixcore.workflow.ContextResource;
027: import de.schlund.pfixcore.workflow.State;
028: import de.schlund.pfixcore.workflow.app.ResdocFinalizer;
029:
030: /**
031: * Provides configuration for a specific page.
032: *
033: * @author Sebastian Marsching <sebastian.marsching@1und1.de>
034: */
035: public interface PageRequestConfig {
036:
037: /**
038: * Enum type for activity handling policy. The policy will not be applied
039: * on handlers with activeignore set to true.
040: */
041: public enum Policy {
042: /**
043: * Signal isActive() for the state if any handler is active.
044: */
045: ANY,
046: /**
047: * Signal isActive() for the state only if all handlers are active.
048: */
049: ALL,
050: /**
051: * Signal isActive() even if none of the handlers is active.
052: */
053: NONE
054: }
055:
056: /**
057: * Returns the name of the page. This name includes the variant
058: * string if applicable. The page name has to be unique for a servlet
059: * and should be unique for the whole project.
060: *
061: * @return name of the page
062: */
063: String getPageName();
064:
065: // /**
066: // * Whether to store the XML tree returned by the state. If <code>true</code>
067: // * the XML tree is stored. In most cases, there is no need to explicitly
068: // * store the XML tree.
069: // *
070: // * @return flag indicating wheter to store the XML tree
071: // * @see de.schlund.pfixxml.SPDocument
072: // */
073: // boolean isStoreXML();
074:
075: /**
076: * If <code>true</code> a SSL connection is forced when this page
077: * is requested.
078: *
079: * @return flag indicating whether to use a secure connection for this page
080: */
081: boolean isSSL();
082:
083: /**
084: * Returns the class that is used to construct the state that
085: * serves this page.
086: *
087: * @return class of the state for this page
088: */
089: Class<? extends State> getState();
090:
091: /**
092: * Returns the policy for the <code>isActive()</code> method.
093: *
094: * @return policy for isActive() check
095: */
096: Policy getIWrapperPolicy();
097:
098: /**
099: * Returns the class of the finalizer for the page (use with caution).
100: *
101: * @return finalizer class or <code>null</code> if there is no finalizer
102: */
103: Class<? extends ResdocFinalizer> getFinalizer();
104:
105: /**
106: * Returns the list of IWrappers for this page. IWrappers are used
107: * for input handling. The map returned has the form prefix => IWrapperConfig.
108: *
109: * @return list of IWrappers
110: */
111: Map<String, ? extends IWrapperConfig> getIWrappers();
112:
113: /**
114: * Returns the lis of auxiliary IWrappers for the page. They are only
115: * used on an authentication page to supply additinal information. These
116: * wrappers are used on each request - not only on explicit authentication
117: * requests, so extreme care should be taken when choosing prefixes, as they
118: * are global.
119: *
120: * @return map containinge prefix to authwrapper mappings
121: */
122: Map<String, Class<? extends IWrapper>> getAuxWrappers();
123:
124: /**
125: * Returns context resources defined for this page. The map has the form
126: * tagname => context resource class. Each context resource specified here
127: * will be included in the result XML tree.
128: *
129: * @return mapping of tagname to context resource class
130: */
131: Map<String, Class<? extends ContextResource>> getContextResources();
132:
133: /**
134: * Returns properties defined for this page.
135: *
136: * @return properties for this page
137: */
138: Properties getProperties();
139:
140: /**
141: * Return prefix of the auth wrapper. This is only valid for an
142: * authentication page.
143: *
144: * @return prefix for the auth wrapper or <code>null</code> if this
145: * is not an auth page
146: */
147: String getAuthWrapperPrefix();
148:
149: /**
150: * Return class of the auth wrapper. This is only valid for an
151: * authentication page.
152: *
153: * @return class of the auth wrapper or <code>null</code> if this
154: * is not an auth page
155: */
156: Class<? extends IWrapper> getAuthWrapperClass();
157:
158: boolean requiresToken();
159:
160: AuthConstraint getAuthConstraint();
161:
162: public String getDefaultFlow();
163: }
|