now making sure that ids re prefixed by the config id.
[xmlrouter] / common / src / main / java / org / wamblee / xmlrouter / common / Id.java
index bc2399985649c2028fb82c218b14dcda642f966c..a50b8f2c7b3dcd8999b641df7b60c9a4fe5a981d 100644 (file)
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 package org.wamblee.xmlrouter.common;
 
-public class Id<T> {
+/**
+ * This class provides a generic typesafe id wrapping a long value.
+ * 
+ * @author Erik Brakkee
+ * 
+ * @param <T>
+ *            Type the id refers to.
+ */
+public class Id<T> implements Comparable<Id<T>> {
 
-    private int id;
+    private String id;
 
-    public Id(int aId) {
+    /**
+     * Constructs the id.
+     * 
+     * @param aId
+     *            Integer id.
+     * @throws NullPointerException
+     *             in case the id is null.
+     */
+    public Id(String aId) {
+        if (aId == null) {
+            throw new NullPointerException("id is null");
+        }
         id = aId;
     }
 
-    public int getId() {
+    /**
+     * @return The underlying id.
+     */
+    public String getId() {
         return id;
     }
 
     @Override
     public int hashCode() {
-        return id;
+        return id.hashCode();
     }
 
     @Override
@@ -40,11 +62,16 @@ public class Id<T> {
         if (!(aObj instanceof Id)) {
             return false;
         }
-        return id == ((Id<T>) aObj).id;
+        return id.equals(((Id<T>) aObj).id);
     }
 
     @Override
     public String toString() {
-        return id + "";
+        return id;
+    }
+
+    @Override
+    public int compareTo(Id<T> aId) {
+        return id.compareTo(aId.getId());
     }
 }