-/* EMBL - The European Bioinformatics institute
-* MSD Group
+/*
+ *
* VAMSAS Project
-*
-* Copyright (c) 2005-2006 Thr European Bioinformatics Institute. All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions
-* are met:
-*
-* 1. Redistributions of source code must retain the above copyright
-* notice, this list of conditions and the following disclaimer.
-*
-* 2. Redistributions in binary form must reproduce the above copyright
-* notice, this list of conditions and the following disclaimer in
-* the documentation and/or other materials provided with the
-* distribution.
-*
-* 3. The name MSD must not be used to endorse or promote products
-* derived from this software without prior written permission. For
-* written permission, please contact msd-help@ebi.ac.uk
-*
-* 4. Products derived from this software may not be called "MSD"
-* nor may "MSD" appear in their names without prior written
-* permission of the MSD developers.
-*
-* 5. Redistributions of any form whatsoever must retain the following
-* acknowledgment:
-* "This product includes software developed by MSD
-* (http://www.ebi.ac.uk/)"
-*
-* THIS SOFTWARE IS PROVIDED BY THE MSD GROUP ``AS IS'' AND ANY
-* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ENSEMBL GROUP OR
-* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-* OF THE POSSIBILITY OF SUCH DAMAGE.
-*
-* The European Bioinformatics Institute may publish revised and/or new
-* versions of this license with new releases of VAMSAS software.
-*==============================================================================
-*
-* @author <a href="mailto:pierre@ebi.ac.uk">Pierre MARGUERITE</a>
*
-* Dec 13, 2006 - VamsasClientV4
+* Dec 13, 2006 - VamsasClient
*
*/
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.vamsas.client.SessionHandle;
+
+import uk.ac.vamsas.client.SessionHandle;
/**
* @author <a href="mailto:pierre@ebi.ac.uk">Pierre MARGUERITE</a>
private SessionHandle[] retrieveSessionHandles() {
if (lockFile()) {
try {
- SessionHandle[] clients=null;
+ SessionHandle[] sessions =null;
if (this.fileLock.length()>0) {
ObjectInputStream is = new ObjectInputStream(this.fileLock.getBufferedInputStream(true));
o=is.readObject();
if (o!=null) {
try {
- clients = (SessionHandle[]) o;
+ sessions = (SessionHandle[]) o;
}
catch (Exception e) {
log.error("Garbage in the clientHandle list "+this.sessionFile,e);
}
}
+ // is.close();
}
- return clients;
+ return sessions;
} catch (FileNotFoundException e) {
// e.printStackTrace(System.err);
log.error(e);
}
/**
- * get list from the locked ClientList.
+ * get list from the locked SessionsList.
* @param extantlock
- * @return clientList or null if lock failed (or file was empty)
+ * @return sessionList or null if lock failed (or file was empty)
*/
public SessionHandle[] retrieveSessionsList(Lock extantlock) {
if (lockFile(extantlock)) {
- SessionHandle[] clients = retrieveSessionHandles();
+ SessionHandle[] sessions = retrieveSessionHandles();
unlockFile();
- return clients;
+ return sessions;
}
return null;
}
/**
- * adds clientHandle me to the clientList under an existing lock extantLock.
- * @param me
+ * adds SessionHandle me to the sessionList under an existing lock extantLock.
+ * @param newSession
* @param extantLock
- * @return client index in list or 0 if lock was invalid or addClient operation failed.
+ * @return session index in list or 0 if lock was invalid or addSession operation failed.
*/
- public int addSession(SessionHandle me, Lock extantLock) {
- return addSession(me, true, extantLock);
+ public int addSession(SessionHandle newSession, Lock extantLock) {
+ return addSession(newSession, true, extantLock);
}
/**
* adds SessionsHandle me to the sessionsList under an existing lock.
- * @param me - sessionsHandle
- * @param disambig - if true then add will fail if an identical clientHandle already exists
+ * @param newSession - sessionsHandle
+ * @param disambig - if true then add will fail if an identical sessionHandle already exists
* @param extantLock - existing lock
- * @return client index in list or 0 if addClient (or the lock) failed.
+ * @return client index in list or 0 if addSession (or the lock) failed.
*/
- public int addSession(SessionHandle session, boolean disambig, Lock extantLock) {
+ public int addSession(SessionHandle newSession, boolean disambig, Lock extantLock) {
if (lockFile(extantLock)) {
- this.syncnum = addSession(session, disambig);
+ this.syncnum = addSession(newSession, disambig);
unlockFile();
return this.syncnum;
}
/**
* removes the current session from the SessionsList without complaint if the session isn't in the sessionsList already.
- * @param me client handle to be removed
- * @param clientlock existing lock passed from watcher.
+ * @param session session handle to be removed
+ * @param sessionlock existing lock passed from watcher.
*/
- public void removeSession(SessionHandle session, Lock clientlock) {
+ public void removeSession(SessionHandle session, Lock sessionlock) {
int mynum =-1;
- if (lockFile(clientlock)) {
+ if (lockFile(sessionlock)) {
+
SessionHandle[] sessions = retrieveSessionHandles();
if (sessions != null) {
- if ((this.syncnum<=0 || this.syncnum>sessions.length) || sessions[this.syncnum-1]!=session) {
- for (int i = 0, j = sessions.length; i < j; i++)
- if (sessions[i].equals(session)) {
+ if ((this.syncnum<=0 || this.syncnum>sessions.length) || !sessions[this.syncnum-1].equals(session)) {
+ for (int i = 0, j = sessions.length; i < j; i++)
+ { if (sessions[i].equals(session)) {
mynum=i;
break;
}
+ }
} else {
mynum=this.syncnum-1;
}
+
if (mynum>-1) {
SessionHandle[] newlist = new SessionHandle[sessions.length - 1];
for (int k=0,i = 0, j = sessions.length; i < j; i++)
}
unlockFile();
} else {
- throw new Error("Couldn't get lock for "+((sessionFile==null) ? "Unitialised sessionFile in SessionsFile" : this.sessionFile.getAbsolutePath()));
+ throw new Error("Couldn't get lock for "+((this.sessionFile==null) ? "Unitialised sessionFile in SessionsFile" : this.sessionFile.getAbsolutePath()));
}
}
/**
* Adds a SessionHandle to the SessionList file - optionally disambiguating
* the SessionHandle (modifes the URN).
* Note: Caller is left to release the lock on the SessionList.
- * @param me
+ * @param session
* @param disambiguate -
* flag indicating if the URN for me should be disambiguated to
* differentiate between sessions.
new ObjectOutputStream(this.fileLock.getBufferedOutputStream(true));
log.debug("About to write "+clients.length+" sessionHandles to output stream.");
os.writeObject(clients);
+ // os.flush();
os.close();
// All done - remove the backup.
if (this.backup)