01: /*
02: ItsNat Java Web Application Framework
03: Copyright (C) 2007 Innowhere Software Services S.L., Spanish Company
04: Author: Jose Maria Arranz Santamaria
05:
06: This program is free software: you can redistribute it and/or modify
07: it under the terms of the GNU Affero General Public License as published by
08: the Free Software Foundation, either version 3 of the License, or
09: (at your option) any later version. See the GNU Affero General Public
10: License for more details. See the copy of the GNU Affero General Public License
11: included in this program. If not, see <http://www.gnu.org/licenses/>.
12: */
13:
14: package org.itsnat.core;
15:
16: import javax.servlet.Servlet;
17: import org.itsnat.impl.core.http.ItsNatImpl;
18:
19: /**
20: * Is the root class of the ItsNat infrastructure. It works as a root factory
21: * because almost every ItsNat object is created directed or indirectly using this
22: * class.
23: *
24: * <p>The feature registry, ({@link #getFeature(String)} and {@link #setFeature(String,Object)})
25: * may be used to setup ItsNat. Current implementation
26: * does not define any default configurable feature.</p>
27: *
28: * @author Jose Maria Arranz Santamaria
29: */
30: public abstract class ItsNat implements ItsNatUserData {
31: /**
32: * Creates a new instance of ItsNat
33: */
34: public ItsNat() {
35: }
36:
37: /**
38: * Returns the default instance (a singleton) of the default implementation.
39: *
40: * @return the singleton instance.
41: */
42: public static ItsNat get() {
43: return ItsNatImpl.get();
44: }
45:
46: /*
47: public static ItsNat newInstance()
48: {
49: return ItsNatImpl.newInstance();
50: }
51: */
52: /**
53: * Returns the feature value of given name.
54: *
55: * @param name the feature name to search.
56: * @return the feature value, null if not found.
57: */
58: public abstract Object getFeature(String name);
59:
60: /**
61: * Sets the feature value of given name.
62: *
63: * @param name the feature name.
64: * @param value the feature value.
65: * @return the previous feature value if defined or null.
66: */
67: public abstract Object setFeature(String name, Object value);
68:
69: /**
70: * Creates a new ItsNat servlet wrapping the specified servlet object.
71: *
72: * <p>Current implementation only supports <code>javax.servlet.http.HttpServlet</code> servlets,
73: * and returns {@link org.itsnat.core.http.ItsNatHttpServlet} objects.</p>
74: *
75: * @param servlet the servlet to wrap.
76: * @return a new ItsNat servlet wrapping the standard servlet.
77: * @see org.itsnat.core.http.HttpServletWrapper#init(javax.servlet.ServletConfig)
78: */
79: public abstract ItsNatServlet createItsNatServlet(Servlet servlet);
80: }
|