Author: jflesch
Date: 2007-05-03 22:16:01 +0000 (Thu, 03 May 2007)
New Revision: 13139

Modified:
   trunk/apps/Thaw/src/thaw/core/QueueKeeper.java
Log:
Add a synchronized() to the saveQueue() function of the QueueKeeper

Modified: trunk/apps/Thaw/src/thaw/core/QueueKeeper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/QueueKeeper.java      2007-05-03 22:03:21 UTC 
(rev 13138)
+++ trunk/apps/Thaw/src/thaw/core/QueueKeeper.java      2007-05-03 22:16:01 UTC 
(rev 13139)
@@ -180,103 +180,106 @@
        public static boolean saveQueue(final FCPQueueManager queueManager, 
final String fileName) {
                final Vector[] pendingQueues = queueManager.getPendingQueues();

-               boolean needed = false;
+               synchronized(pendingQueues) {

-               for(int i = 0 ; i < pendingQueues.length ; i++) {
-                       if(pendingQueues[i].size() > 0) {
-                               needed = true;
-                               break;
+                       boolean needed = false;
+
+                       for(int i = 0 ; i < pendingQueues.length ; i++) {
+                               if(pendingQueues[i].size() > 0) {
+                                       needed = true;
+                                       break;
+                               }
                        }
-               }

-               if(!needed) {
-                       Logger.info(new QueueKeeper(), "Nothing in the pending 
queue to save.");
+                       if(!needed) {
+                               Logger.info(new QueueKeeper(), "Nothing in the 
pending queue to save.");
+                               final File file = new File(fileName);
+                               file.delete(); // Else we may reload something 
that we shouldn't when restarting
+                               return true;
+                       }
+
                        final File file = new File(fileName);
-                       file.delete(); // Else we may reload something that we 
shouldn't when restarting
-                       return true;
-               }
+                       StreamResult fileOut;

-               final File file = new File(fileName);
-               StreamResult fileOut;
-
-               try {
-                       if( (!file.exists() && !file.createNewFile())
-                           || !file.canWrite()) {
-                               Logger.warning(new QueueKeeper(), "Unable to 
write config file '"+file.getPath()+"' (can't write)");
-                               return false;
+                       try {
+                               if( (!file.exists() && !file.createNewFile())
+                                   || !file.canWrite()) {
+                                       Logger.warning(new QueueKeeper(), 
"Unable to write config file '"+file.getPath()+"' (can't write)");
+                                       return false;
+                               }
+                       } catch(final java.io.IOException e) {
+                               Logger.warning(new QueueKeeper(), "Error while 
checking perms to save config: "+e);
                        }
-               } catch(final java.io.IOException e) {
-                       Logger.warning(new QueueKeeper(), "Error while checking 
perms to save config: "+e);
-               }


-               fileOut = new StreamResult(file);
+                       fileOut = new StreamResult(file);

-               Document xmlDoc = null;
-               DocumentBuilderFactory xmlFactory = null;
-               DocumentBuilder xmlBuilder = null;
-               DOMImplementation impl = null;
+                       Document xmlDoc = null;
+                       DocumentBuilderFactory xmlFactory = null;
+                       DocumentBuilder xmlBuilder = null;
+                       DOMImplementation impl = null;

-               Element rootEl = null;
+                       Element rootEl = null;

-               xmlFactory = DocumentBuilderFactory.newInstance();
+                       xmlFactory = DocumentBuilderFactory.newInstance();

-               try {
-                       xmlBuilder = xmlFactory.newDocumentBuilder();
-               } catch(final javax.xml.parsers.ParserConfigurationException e) 
{
-                       Logger.error(new QueueKeeper(), "Unable to save queue 
because: "+e.toString());
-                       return false;
-               }
+                       try {
+                               xmlBuilder = xmlFactory.newDocumentBuilder();
+                       } catch(final 
javax.xml.parsers.ParserConfigurationException e) {
+                               Logger.error(new QueueKeeper(), "Unable to save 
queue because: "+e.toString());
+                               return false;
+                       }


-               impl = xmlBuilder.getDOMImplementation();
+                       impl = xmlBuilder.getDOMImplementation();

-               xmlDoc = impl.createDocument(null, "queue", null);
+                       xmlDoc = impl.createDocument(null, "queue", null);

-               rootEl = xmlDoc.getDocumentElement();
+                       rootEl = xmlDoc.getDocumentElement();

-               final Element pendingQueueEl = 
xmlDoc.createElement("pendingQueue");
+                       final Element pendingQueueEl = 
xmlDoc.createElement("pendingQueue");

-               for(int i = 0 ; i <= QueueKeeper.MIN_PRIORITY ; i++) {
+                       for(int i = 0 ; i <= QueueKeeper.MIN_PRIORITY ; i++) {

-                       for(final Iterator runIt = pendingQueues[i].iterator() ;
-                           runIt.hasNext(); ) {
+                               for(final Iterator runIt = 
pendingQueues[i].iterator() ;
+                                   runIt.hasNext(); ) {

-                               final FCPTransferQuery query = 
(FCPTransferQuery)runIt.next();
+                                       final FCPTransferQuery query = 
(FCPTransferQuery)runIt.next();

-                               final Element toSave = 
QueueKeeper.saveQuery(query, xmlDoc);
+                                       final Element toSave = 
QueueKeeper.saveQuery(query, xmlDoc);

-                               if(toSave != null)
-                                       pendingQueueEl.appendChild(toSave);
+                                       if(toSave != null)
+                                               
pendingQueueEl.appendChild(toSave);

+                               }
+
                        }

-               }
+                       rootEl.appendChild(pendingQueueEl);

-               rootEl.appendChild(pendingQueueEl);
+                       /* Serialization */
+                       final DOMSource domSource = new DOMSource(xmlDoc);
+                       final TransformerFactory transformFactory = 
TransformerFactory.newInstance();

-               /* Serialization */
-               final DOMSource domSource = new DOMSource(xmlDoc);
-               final TransformerFactory transformFactory = 
TransformerFactory.newInstance();
+                       Transformer serializer;

-               Transformer serializer;
+                       try {
+                               serializer = transformFactory.newTransformer();
+                       } catch(final 
javax.xml.transform.TransformerConfigurationException e) {
+                               Logger.error(new QueueKeeper(), "Unable to save 
queue because: "+e.toString());
+                               return false;
+                       }

-               try {
-                       serializer = transformFactory.newTransformer();
-               } catch(final 
javax.xml.transform.TransformerConfigurationException e) {
-                       Logger.error(new QueueKeeper(), "Unable to save queue 
because: "+e.toString());
-                       return false;
-               }
+                       
serializer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
+                       serializer.setOutputProperty(OutputKeys.INDENT,"yes");

-               serializer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
-               serializer.setOutputProperty(OutputKeys.INDENT,"yes");
-
-               /* final step */
-               try {
-                       serializer.transform(domSource, fileOut);
-               } catch(final javax.xml.transform.TransformerException e) {
-                       Logger.error(new QueueKeeper(), "Unable to save queue 
because: "+e.toString());
-                       return false;
+                       /* final step */
+                       try {
+                               serializer.transform(domSource, fileOut);
+                       } catch(final javax.xml.transform.TransformerException 
e) {
+                               Logger.error(new QueueKeeper(), "Unable to save 
queue because: "+e.toString());
+                               return false;
+                       }
                }

                return true;


Reply via email to