X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fuk%2Fac%2Fvamsas%2Fclient%2Fsimpleclient%2FSimpleClientAppdata.java;h=7ea7ddafa807e73208b69d2b6a41b4b0f588b057;hb=1e940bf58bbd9f228ff991b5ee6e5b38c36a78fe;hp=ececd9edfe34610adfda330371b1ae51895569f2;hpb=917d7bbb140b99761a96008a44910bb2a10022f1;p=vamsas.git diff --git a/src/uk/ac/vamsas/client/simpleclient/SimpleClientAppdata.java b/src/uk/ac/vamsas/client/simpleclient/SimpleClientAppdata.java index ececd9e..7ea7dda 100644 --- a/src/uk/ac/vamsas/client/simpleclient/SimpleClientAppdata.java +++ b/src/uk/ac/vamsas/client/simpleclient/SimpleClientAppdata.java @@ -86,10 +86,19 @@ public class SimpleClientAppdata implements IClientAppdata { this.clientdoc = clientdoc; } /** + * ensures that the appData information for this client + * instance has been extracted from the vamsas document provided by clientdoc. + */ + private void extractAppData() + { + if (!accessedDocument) + _extractAppData(clientdoc.getVamsasDocument()); + } + /** * gets appropriate app data for the application, if it exists in this dataset * Called by every accessor to ensure data has been retrieved from document. */ - private void extractAppData(uk.ac.vamsas.objects.core.VamsasDocument doc) { + private void _extractAppData(uk.ac.vamsas.objects.core.VamsasDocument doc) { if (doc==null) { log.debug("extractAppData called for null document object"); return; @@ -238,7 +247,7 @@ public class SimpleClientAppdata implements IClientAppdata { appdName = "User's Appdata"; } log.debug("getting "+appdName+" as a byte array"); - extractAppData(clientdoc.getVamsasDocument()); + extractAppData(); AppData object; if (!clientOrUser) { object = appsGlobal; @@ -271,7 +280,7 @@ public class SimpleClientAppdata implements IClientAppdata { } if (log.isDebugEnabled()) log.debug("getting "+appdName+" as an input stream."); - extractAppData(clientdoc.getVamsasDocument()); + extractAppData(); AppData object; if (!clientOrUser) { object = appsGlobal; @@ -315,6 +324,8 @@ public class SimpleClientAppdata implements IClientAppdata { * methods for writing new AppData entries. */ private AppDataOutputStream _getAppdataOutputStream(boolean clientOrUser) { + // Must access document to get any existing references + extractAppData(); String apdname; SessionFile apdfile=null; if (!clientOrUser) { @@ -432,7 +443,7 @@ public class SimpleClientAppdata implements IClientAppdata { public boolean hasClientAppdata() { if (clientdoc==null) throw new Error("Implementation error, Improperly initialized SimpleClientAppdata."); - extractAppData(clientdoc.getVamsasDocument()); + extractAppData(); // LATER - check validity of a DataReference before we return true // TODO: return true if usersData is null but we have already written a new data stream if ((appsGlobal!=null) && (appsGlobal.getDataReference()!=null || appsGlobal.getData()!=null)) @@ -446,7 +457,7 @@ public class SimpleClientAppdata implements IClientAppdata { public boolean hasUserAppdata() { if (clientdoc==null) throw new Error("Implementation error, Improperly initialized SimpleClientAppdata."); - extractAppData(clientdoc.getVamsasDocument()); + extractAppData(); // LATER - check validity of a DataReference before we return true // TODO: return true if usersData is null but we have already written a new data stream if ((usersData!=null) && (usersData.getDataReference()!=null || usersData.getData()!=null))