" at "+dfPlugin.getMyOrganization()+" - Asset has a quantity of zero");
" at "+dfPlugin.getMyOrganization()+" - Asset has a quantity of zero. Bug #3467");
  public void expandDetermineRequirements(Task detReqTask, Collection assets) {    if ((assets == null) || (assets.isEmpty())) {      disposeOfTask(detReqTask);      return;    }    ArrayList gpTasks = new ArrayList();    Iterator assetIT = assets.iterator();    while (assetIT.hasNext()) {      Asset consumer = (Asset) assetIT.next();      if (getAssetUtils().getQuantity(consumer) > 0) {        NewTask gpTask = createGPTask(detReqTask, consumer);        gpTasks.add(gpTask);      } else {        if (logger.isWarnEnabled()) {          Asset asset;          if (consumer instanceof AggregateAsset) {            asset = ((AggregateAsset)consumer).getAsset();          } else {            // Not expecting this case, only AggregateAssets can have a zero quantity            asset = consumer.getPrototype();          }          logger.warn("Ignoring Asset: "+getAssetUtils().getAssetIdentifier(asset)+                      " at "+dfPlugin.getMyOrganization()+" - Asset has a quantity of zero");        }      }    }    if (gpTasks.isEmpty()) {      logger.warn("Cannot expand - no subtasks for determine requirements task "                  + getTaskUtils().taskDesc(detReqTask));    } else {      PlanElement pe = detReqTask.getPlanElement();      if ((pe != null) && (pe instanceof Disposition)) {        dfPlugin.publishRemove(pe);        pe = null;      }      // First time through build a fresh expansion      if (pe == null) {        createAndPublishExpansion(detReqTask, gpTasks);      }      // There are new assets to add to the expansion      else if (pe instanceof Expansion) {        addToAndPublishExpansion(detReqTask, gpTasks);      } else {        logger.error("Unhandled plan element type on DetermineRequirementsTask :" + pe.getClass().getName());      }    }  }