RobustIdentifiable implemented and tested + test impacts.
[xmlrouter] / impl / src / main / java / org / wamblee / xmlrouter / impl / RobustIdentifiable.java
index 640e37e13385402e9414c6beb2719bb3d6e2d378..6622e3277a85e35ae2dbf527bac761ae07f1d3e9 100644 (file)
  */
 package org.wamblee.xmlrouter.impl;
 
+import static org.wamblee.xmlrouter.impl.MessageUtil.*;
+
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import org.wamblee.xmlrouter.common.Id;
+import org.wamblee.xmlrouter.config.ConfigException;
 import org.wamblee.xmlrouter.config.Identifiable;
 
 /**
@@ -38,26 +41,25 @@ public class RobustIdentifiable<T> implements Identifiable<T> {
     // TODO test that id is constant even though delegated changes its id.
 
     public RobustIdentifiable(String aPrefix, Identifiable<T> aIdentifiable) {
+        notNull("prefix", aPrefix);
+        notNull("identifiable", aIdentifiable);
         // TODO test id is null
         // TODO getId() throws exception
         try {
             id = aIdentifiable.getId();
             if (id == null) {
-                id = new Id<T>(Constants.UNKNOWN_ID.toString());
-                temporarilyThrowException();
-            } else {
-                id = new Id<T>(aPrefix + id.getId());
+                throwConfigException("identifiable.getId() returned null", null);
             }
+            id = new Id<T>(aPrefix + id.getId());
         } catch (Exception e) {
-            LOGGER
-                .log(Level.WARNING, "Identifiable getId() threw exception", e);
+            throwConfigException("identifiable.getId() threw exception", e);
         }
 
     }
 
-    private void temporarilyThrowException() {
-        throw new RuntimeException(
-            "Temporary to catch nulls during refactoring");
+    private void throwConfigException(String aMsg, Exception aException) {
+        LOGGER.log(Level.WARNING, aMsg, aException);
+        throw new ConfigException("id is null");
     }
 
     @Override