[jboss-dev-forums] [Design the new POJO MicroContainer] - Those terrible error messages

david.lloyd@jboss.com do-not-reply at jboss.com
Wed Jan 28 10:22:24 EST 2009


One of the most off-putting things about JBossMC is the confusing, non-human error messages it produces when a deployment fails.  Carlo's thread gave me the notion to try and fix this.  Here's the patch to AbstractKernelDeployer which humanizes the error message.  What do you think?  Should I commit it?


  | Index: kernel/src/main/java/org/jboss/kernel/plugins/deployment/AbstractKernelDeployer.java
  | ===================================================================
  | --- kernel/src/main/java/org/jboss/kernel/plugins/deployment/AbstractKernelDeployer.java
  | +++ kernel/src/main/java/org/jboss/kernel/plugins/deployment/AbstractKernelDeployer.java
  | @@ -217,22 +217,21 @@
  |              buffer.append("Incompletely deployed:\n");
  |              if (errors.size() != 0)
  |              {
  | -               buffer.append("\n*** DEPLOYMENTS IN ERROR: Name -> Error\n");
  | +               buffer.append("\nDEPLOYMENTS IN ERROR:\n");
  |                 for (ControllerContext ctx : errors)
  |                 {
  | -                  buffer.append(ctx.getName()).append(" -> ").append(ctx.getError().toString()).append('\n');
  | +                  buffer.append(String.format("  Deployment \"%s\" is in error due to: %s\n", ctx.getName(), ctx.getError()));
  |                 }
  |              }
  |              if (incomplete.size() != 0)
  |              {
  | -               buffer.append("\n*** DEPLOYMENTS MISSING DEPENDENCIES: Name -> Dependency{Required State:Actual State}\n");
  | +               buffer.append("\nDEPLOYMENTS MISSING DEPENDENCIES:\n");
  |                 for (ControllerContext ctx : incomplete)
  |                 {
  |                    Object name = ctx.getName();
  | -                  buffer.append(name).append(" -> ");
  | +                  buffer.append(String.format("  Deployment \"%s\" is missing the following dependencies:\n", name));
  |                    DependencyInfo dependsInfo = ctx.getDependencyInfo();
  |                    Set<DependencyItem> depends = dependsInfo.getIDependOn(null);
  | -                  boolean first = true;
  |                    for (DependencyItem item : depends)
  |                    {
  |                       ControllerState dependentState = item.getDependentState();
  | @@ -262,29 +261,18 @@
  |  
  |                          if (print)
  |                          {
  | -                           if (first)
  | -                              first = false;
  | -                           else
  | -                              buffer.append(", ");
  | -
  | -                           buffer.append(iDependOn).append('{').append(dependentState.getStateString());
  | -                           buffer.append(':');
  | -                           if (iDependOn == null)
  | -                           {
  | -                              buffer.append("** UNRESOLVED " + item.toHumanReadableString() + " **");
  | -                           }
  | -                           else
  | -                           {
  | -                              if (other == null)
  | -                                 buffer.append("** NOT FOUND **");
  | -                              else
  | -                                 buffer.append(otherState.getStateString());
  | -                           }
  | -                           buffer.append('}');
  | +                           buffer.append(String.format("    Dependency \"%s\" (should be in state \"%s\", but is actually %s)\n",
  | +                                   iDependOn,
  | +                                   dependentState.getStateString(),
  | +                                   iDependOn == null ?
  | +                                           String.format("unresolved (%s)",
  | +                                           item.toHumanReadableString()) :
  | +                                           other == null ?
  | +                                                   "not found" :
  | +                                                   String.format("in state \"%s\"", otherState.getStateString())));
  |                          }
  |                       }
  |                    }
  | -                  buffer.append('\n');
  |                 }
  |              }
  |              throw new IllegalStateException(buffer.toString());
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4205283#4205283

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4205283



More information about the jboss-dev-forums mailing list