static { delegates.add(new DatatypeStateEntityListener()); logger.info("Adding DatatypeStateEntityListener to NabuccoEntityListener."); delegates.add(new DatatypeLoggingEntityListener()); logger.info("Adding DatatypeLoggingEntityListener to NabuccoEntityListener."); }
/** {@inheritDoc} */ @Override public void visit(Foreach foreach, TestScriptResult argument) throws TestScriptException { getContext().setCurrentTestScriptElement(foreach); Name elementName = foreach.getElementName(); PropertyReference iterableId = foreach.getIterableRef(); Property iterableProperty = getContext().getProperty(iterableId); if (iterableProperty == null) { throw new TestScriptException("Property '" + iterableId + "' not found in context"); } PropertyIterator propertyIterator = new PropertyIterator(iterableProperty); if (getContext().getProperty(elementName) != null) { throw new TestScriptException( "Foreach configuration error -> Property '" + elementName + "' already exists in context"); } logger.info("Starting Foreach-Loop: " + foreach.getId()); Iterator<Property> iterator = propertyIterator.iterator(); Property currentProp = null; while (iterator.hasNext()) { currentProp = iterator.next(); if (logger.isDebugEnabled()) { logger.debug( "Next element: id=" + currentProp.getName().getValue() + ", type=" + currentProp.getType()); } Property currentClone = currentProp.cloneObject(); currentClone.setName(elementName); getContext().put(currentClone); try { super.visit(foreach.getTestScriptElementList(), argument); } catch (BreakLoopException ex) { getContext().remove(currentClone); break; } // remove property with id=elementId from context getContext().remove(currentClone); } }