Add more warnings source to 1.6) and fix warnings
[jvcard.git] / src / be / nikiroo / jvcard / remote / Server.java
index 962f2d00133069eee26205f97e23205373b86e44..6cba0c33cbb09047ed09f4004f88266e9ee4193d 100644 (file)
@@ -17,9 +17,10 @@ import be.nikiroo.jvcard.Contact;
 import be.nikiroo.jvcard.Data;
 import be.nikiroo.jvcard.parsers.Format;
 import be.nikiroo.jvcard.parsers.Vcard21Parser;
-import be.nikiroo.jvcard.resources.StringUtils;
-import be.nikiroo.jvcard.resources.bundles.RemoteBundle;
-import be.nikiroo.jvcard.resources.enums.RemotingOption;
+import be.nikiroo.jvcard.remote.SimpleSocket.BlockAppendable;
+import be.nikiroo.jvcard.resources.RemoteBundle;
+import be.nikiroo.jvcard.resources.RemotingOption;
+import be.nikiroo.utils.StringUtils;
 
 /**
  * This class implements a small server that can listen for requests to
@@ -33,7 +34,7 @@ import be.nikiroo.jvcard.resources.enums.RemotingOption;
  * </p>
  * 
  * @author niki
- *
+ * 
  */
 public class Server implements Runnable {
        private ServerSocket ss;
@@ -130,8 +131,9 @@ public class Server implements Runnable {
                                                try {
                                                        ss.open(false);
 
-                                                       while (processCmd(ss))
-                                                               ;
+                                                       while (processCmd(ss)) {
+                                                               // nothing to do: process the command
+                                                       }
 
                                                } catch (IOException e) {
                                                        e.printStackTrace();
@@ -236,8 +238,9 @@ public class Server implements Runnable {
                                        try {
                                                s.sendLine(StringUtils.fromTime(file.lastModified()));
 
-                                               while (processLockedCmd(s, name))
-                                                       ;
+                                               while (processLockedCmd(s, name)) {
+                                                       // nothing to do: process the command
+                                               }
                                        } catch (InvalidParameterException e) {
                                                System.err
                                                                .println("Unsupported command received from a client connection, closing it: "
@@ -323,7 +326,7 @@ public class Server implements Runnable {
 
                switch (command) {
                case GET_CARD: {
-                       s.sendBlock(doGetCard(name));
+                       sendCardBlock(s, name);
                        break;
                }
                case POST_CARD: {
@@ -340,8 +343,9 @@ public class Server implements Runnable {
                        } else {
                                Card card = new Card(vcf, Format.VCard21);
                                try {
-                                       while (processContactCmd(s, card))
-                                               ;
+                                       while (processContactCmd(s, card)) {
+                                               // nothing to do: process the command
+                                       }
                                        card.save();
                                        s.sendLine(StringUtils.fromTime(card.getLastModified()));
                                } catch (InvalidParameterException e) {
@@ -405,10 +409,13 @@ public class Server implements Runnable {
                switch (command) {
                case GET_CONTACT: {
                        Contact contact = card.getById(cmd.getParam());
-                       if (contact != null)
-                               s.sendBlock(Vcard21Parser.toStrings(contact, -1));
-                       else
+                       if (contact != null) {
+                               BlockAppendable app = s.createBlockAppendable();
+                               Vcard21Parser.write(app, contact, -1);
+                               app.close();
+                       } else {
                                s.sendBlock();
+                       }
                        break;
                }
                case POST_CONTACT: {
@@ -431,8 +438,9 @@ public class Server implements Runnable {
                                throw new InvalidParameterException(
                                                "Cannot find contact to modify for UID: " + uid);
                        }
-                       while (processDataCmd(s, contact))
-                               ;
+                       while (processDataCmd(s, contact)) {
+                               // nothing to do: process the command
+                       }
                        break;
                }
                case DELETE_CONTACT: {
@@ -516,9 +524,9 @@ public class Server implements Runnable {
                case GET_DATA: {
                        for (Data data : contact) {
                                if (data.getName().equals(cmd.getParam())) {
-                                       for (String line : Vcard21Parser.toStrings(data)) {
-                                               s.send(line);
-                                       }
+                                       BlockAppendable app = s.createBlockAppendable();
+                                       Vcard21Parser.write(app, data);
+                                       // note: we do NOT close 'app', since it would send an EOB
                                }
                        }
                        s.sendBlock();
@@ -602,20 +610,19 @@ public class Server implements Runnable {
         * @throws IOException
         *             in case of error
         */
-       private List<String> doGetCard(String name) throws IOException {
-               List<String> lines = new LinkedList<String>();
-
+       private void sendCardBlock(SimpleSocket s, String name) throws IOException {
                File vcf = getFile(name);
+               BlockAppendable app = s.createBlockAppendable();
 
                if (vcf != null && vcf.exists()) {
                        Card card = new Card(vcf, Format.VCard21);
 
                        // timestamp + data
-                       lines.add(StringUtils.fromTime(card.getLastModified()));
-                       lines.addAll(Vcard21Parser.toStrings(card));
+                       app.append(StringUtils.fromTime(card.getLastModified()) + "\r\n");
+                       Vcard21Parser.write(app, card);
                }
 
-               return lines;
+               app.close();
        }
 
        /**