Leftover follow-up commit for "1c8f47754241fea8b9c1463c08539ec31638a5de":

    * Use the "@JsonProperty()" annotation to serialize/deserialize
      objects that don't require any specialized processing.
      Use "@JsonSerialize" and "@JsonDeserialize" only for objects
      that need more specialized processing.

    * Remove FooSerializer JSON classes that are not used/needed anymore.

    * Update the implementation of remaining FooSerializer classes,
      and associated Foo classes.
diff --git a/src/main/java/net/floodlightcontroller/util/IPv4.java b/src/main/java/net/floodlightcontroller/util/IPv4.java
index 3f4f350..ef3a1e5 100644
--- a/src/main/java/net/floodlightcontroller/util/IPv4.java
+++ b/src/main/java/net/floodlightcontroller/util/IPv4.java
@@ -1,13 +1,16 @@
 package net.floodlightcontroller.util;
 
+import net.floodlightcontroller.util.serializers.IPv4Deserializer;
 import net.floodlightcontroller.util.serializers.IPv4Serializer;
 
 import org.codehaus.jackson.annotate.JsonProperty;
+import org.codehaus.jackson.map.annotate.JsonDeserialize;
 import org.codehaus.jackson.map.annotate.JsonSerialize;
 
 /**
  * The class representing an IPv4 address.
  */
+@JsonDeserialize(using=IPv4Deserializer.class)
 @JsonSerialize(using=IPv4Serializer.class)
 public class IPv4 {
     private int value;
@@ -29,6 +32,24 @@
     }
 
     /**
+     * Constructor from a string.
+     *
+     * @param value the value to use.
+     */
+    public IPv4(String value) {
+        String[] splits = value.split("\\.");
+        if (splits.length != 4)
+            throw new IllegalArgumentException("Specified IPv4 address must contain four " +
+					       "numerical digits separated by '.'");
+
+        int result = 0;
+        for (int i = 0; i < 4; ++i) {
+            result |= Integer.valueOf(splits[i]) << ((3-i)*8);
+        }
+	this.value = result;
+    }
+
+    /**
      * Get the value of the IPv4 address.
      *
      * @return the value of the IPv4 address.