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.impl.core.event.client2serv;
015:
016: import java.util.EventObject;
017: import java.util.HashMap;
018: import java.util.Map;
019: import javax.servlet.ServletRequest;
020: import org.itsnat.core.ClientDocument;
021: import org.itsnat.core.ItsNatDocument;
022: import org.itsnat.core.ItsNatServletRequest;
023: import org.itsnat.core.ItsNatServletResponse;
024: import org.itsnat.core.event.ItsNatEvent;
025: import org.itsnat.impl.core.ItsNatDocumentImpl;
026: import org.itsnat.impl.core.ItsNatServletRequestImpl;
027: import org.itsnat.impl.core.ItsNatServletResponseImpl;
028: import org.itsnat.impl.core.listener.EventListenerWrapperImpl;
029: import org.itsnat.impl.core.util.UserDataImpl;
030: import org.w3c.dom.Document;
031: import org.w3c.dom.views.AbstractView;
032:
033: /**
034: *
035: * @author jmarranz
036: */
037: public abstract class ItsNatEventImpl extends EventObject implements
038: ItsNatEvent {
039: protected UserDataImpl userData; // No hace falta sincronizar, deberá accederse en monohilo
040: protected EventListenerWrapperImpl listenerWrapper;
041: protected ItsNatServletRequestImpl request;
042: protected Map localExtraParams;
043:
044: /** Creates a new instance of ItsNatEventImpl */
045: public ItsNatEventImpl(EventListenerWrapperImpl listenerWrapper,
046: ItsNatServletRequestImpl request) {
047: super (request.getItsNatDocumentImpl());
048:
049: this .listenerWrapper = listenerWrapper;
050: this .request = request;
051: }
052:
053: public ClientDocument getClientDocument() {
054: return getItsNatServletRequestImpl().getClientDocument();
055: }
056:
057: public ItsNatDocument getItsNatDocument() {
058: return getItsNatDocumentImpl();
059: }
060:
061: public ItsNatDocumentImpl getItsNatDocumentImpl() {
062: return getItsNatServletRequestImpl().getItsNatDocumentImpl();
063: }
064:
065: public ServletRequest getServletRequest() {
066: return getItsNatServletRequestImpl().getServletRequest();
067: }
068:
069: public ItsNatServletRequest getItsNatServletRequest() {
070: return getItsNatServletRequestImpl();
071: }
072:
073: public ItsNatServletRequestImpl getItsNatServletRequestImpl() {
074: return (ItsNatServletRequestImpl) request;
075: }
076:
077: public ItsNatServletResponse getItsNatServletResponse() {
078: return getItsNatServletResponseImpl();
079: }
080:
081: public ItsNatServletResponseImpl getItsNatServletResponseImpl() {
082: return getItsNatServletRequestImpl()
083: .getItsNatServletResponseImpl();
084: }
085:
086: public UserDataImpl getUserData() {
087: if (userData == null)
088: this .userData = new UserDataImpl(); // Para ahorrar memoria si no se usa. No es necesario sincronizar pues el evento es manejado por un unico hilo
089: return userData;
090: }
091:
092: public boolean containsUserValueName(String name) {
093: return getUserData().containsName(name);
094: }
095:
096: public String[] getUserValueNames() {
097: return getUserData().getUserDataNames();
098: }
099:
100: public Object getUserValue(String name) {
101: return getUserData().getUserData(name);
102: }
103:
104: public Object setUserValue(String name, Object value) {
105: return getUserData().setUserData(name, value);
106: }
107:
108: public Object removeUserValue(String name) {
109: return getUserData().removeUserData(name);
110: }
111:
112: public Document getDocument() {
113: return getItsNatDocumentImpl().getDocument();
114: }
115:
116: public AbstractView getAbstractView() {
117: return getItsNatDocumentImpl().getDefaultView();
118: }
119:
120: public boolean hasLocalExtraParams() {
121: if (localExtraParams == null)
122: return false;
123: return !localExtraParams.isEmpty();
124: }
125:
126: public Map getLocalExtraParamMap() {
127: if (localExtraParams == null)
128: this .localExtraParams = new HashMap();
129: return localExtraParams;
130: }
131:
132: public Object getExtraParam(String name) {
133: if (hasLocalExtraParams()) {
134: Object value = getLocalExtraParamMap().get(name);
135: if (value != null)
136: return value;
137: }
138: return getItsNatServletRequestImpl().getParameterOrAttribute(
139: name);
140: }
141:
142: public void setExtraParam(String name, Object value) {
143: getLocalExtraParamMap().put(name, value);
144: }
145: }
|