@Override public ActionResponse execute( TestContext context, PropertyList propertyList, List<Metadata> metadataList, SubEngineActionType actionType) throws SubEngineException { Metadata metadata = null; try { // Validation this.validateArguments(context, propertyList, metadataList, actionType); SwingActionType swingAction = (SwingActionType) actionType; // Init result metadata = metadataList.get(metadataList.size() - 1); this.initResult(context, metadata, actionType); // this.validateComponent(propertyList, swingAction); // Execute Command ExecutionCommand command = createCommand(propertyList, metadata, swingAction); Integer timeout = getTimeout(metadata, swingAction); Property reply = executeCommand(context, command, timeout); if (reply != null) { PropertyList returnList = PropertyHelper.createPropertyList("Return"); PropertyHelper.add(reply, returnList); result.setReturnProperties(returnList); } } catch (SwingValidationException e) { logger.error(e, "Error validating Swing component."); failResult(metadata, actionType, e.getMessage()); } catch (Exception e) { logger.error(e, "Error during Swing component execution."); failResult(metadata, actionType); } return result; }
@Override public void relateAfter(ServiceMessage requestMessage, ServiceMessage responseMessage) throws RelatingException { if (responseMessage == null) { return; } try { ComponentRelationRelatingVisitor visitor = new ComponentRelationRelatingVisitor(super.getContext()); responseMessage.accept(visitor); } catch (Exception e) { logger.error( e, "Error maintaining component relations for '" + requestMessage.getClass().getName() + "'."); } }