001: /**
002: * High Availability Service (HA) for JOnAS
003: *
004: * Copyright (C) 2006 Distributed Systems Lab.
005: * Universidad Polit??cnica de Madrid (Spain)
006: * Contact: http://lsd.ls.fi.upm.es/lsd
007: *
008: * This library is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU Lesser General Public
010: * License as published by the Free Software Foundation; either
011: * version 2.1 of the License, or any later version.
012: *
013: * This library is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
016: * Lesser General Public License for more details.
017: *
018: * You should have received a copy of the GNU Lesser General Public
019: * License along with this library; if not, write to the Free Software
020: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
021: * USA
022: *
023: * --------------------------------------------------------------------------
024: * $Id: HAContext.java 9280 2006-08-01 10:15:24Z japaz $
025: * --------------------------------------------------------------------------
026: */package org.objectweb.jonas.ha.interceptor;
027:
028: import java.util.Iterator;
029: import java.util.Stack;
030:
031: import org.objectweb.carol.cmi.ha.Constants;
032: import org.objectweb.carol.cmi.ha.RequestId;
033: import org.objectweb.carol.cmi.ha.ViewIdWrapper;
034: import org.objectweb.carol.rmi.jrmp.interceptor.JServiceContext;
035:
036: /**
037: * This class holds the required information to pass between client/server
038: * through HA interceptors
039: * @author Francisco Perez-Sorrosal (fpsorrosal@no-spam@fi.upm.es)
040: * @author Alberto Paz-Jimenez (apaz@no-spam@fi.upm.es)
041: */
042: public class HAContext implements JServiceContext {
043:
044: /**
045: *
046: */
047: private static final long serialVersionUID = 1L;
048:
049: /**
050: * Holds request id stack
051: */
052: private Stack requests = new Stack();
053:
054: /**
055: *
056: */
057: private boolean onFailover = false;
058:
059: /**
060: * ViewIdWrapper
061: */
062: private ViewIdWrapper info = null;
063:
064: /**
065: * Constructor
066: */
067: public HAContext() {
068: }
069:
070: /**
071: * Returns the HA context identifier
072: * @return the HA context id
073: */
074: public int getContextId() {
075: return Constants.HA_CTX_ID;
076: }
077:
078: /**
079: * Sets Requests to pass between client and server
080: * @param reqs thre requests
081: */
082: public void setRequests(Stack reqs) {
083: requests = reqs;
084: }
085:
086: /**
087: * Returns the requests
088: * @return the requests
089: */
090: public Stack getRequests() {
091: return requests;
092: }
093:
094: /**
095: * @return Returns the onFailover.
096: */
097: public boolean isOnFailover() {
098: return onFailover;
099: }
100:
101: /**
102: * @param onFailover The onFailover to set.
103: */
104: public void setOnFailover(boolean onFailover) {
105: this .onFailover = onFailover;
106: }
107:
108: /**
109: * Returns a string representation of the object
110: * @return the string representing the HAContext
111: */
112: public String toString() {
113: String ret = "\nHAContext: " + Constants.HA_CTX_ID + "\n";
114:
115: ret += "\tRequests:\n";
116: Iterator it = requests.iterator();
117: while (it.hasNext()) {
118: String request = ((RequestId) it.next()).toString();
119: ret += "\t\t" + request + "\n";
120: }
121: ret += "\tOnFailover:" + onFailover + "\n";
122:
123: return ret;
124:
125: }
126:
127: public ViewIdWrapper getViewIdWrapper() {
128: return info;
129: }
130:
131: public void setViewIdWrapper(ViewIdWrapper info) {
132: this.info = info;
133: }
134: }
|