private void onTerminated() { if (onComplete != null) { try { onComplete.run(); } catch (Exception e) { LOGGER.warn("Operation " + operationModel.getName() + " from extension " + extensionModel.getName() + " threw exception while executing the onComplete FlowListener", e); } } }
@Override protected void onOperation(OperationModel operationModel) { if (operationModel.getName().equals(moduleOperation)) { this.operationModel = Optional.of(operationModel); stop(); } } }
private void validateForbiddenTypesReturnType(Type returnType, ProblemsReporter problemsReporter, OperationModel operationModel, ExtensionModel extensionModel) { illegalReturnTypes.stream() .filter(returnType::isAssignableTo) .findFirst() .ifPresent(forbiddenType -> problemsReporter.addError(new Problem(operationModel, format( "Operation '%s' in Extension '%s' specifies '%s' as a return type. Operations are " + "not allowed to return objects of that type", operationModel.getName(), extensionModel.getName(), forbiddenType.getName())))); }
@Override protected void onOperation(OperationModel operationModel) { if (operationName.equals(operationModel.getName())) { operation.set(operationModel); stop(); } } };
private IllegalModelDefinitionException missingReturnTypeException(ExtensionModel model, OperationModel operationModel) { throw new IllegalOperationModelDefinitionException(format("Operation '%s' in Extension '%s' is missing a return type", operationModel.getName(), model.getName())); } }
@Override protected void onOperation(HasOperationModels owner, OperationModel model) { if (!model.getName().equals(TRANSFORM_IDENTIFIER)) { declareComponentModel(line, model, extensionElementsDeclarer::newOperation).ifPresent(declarer -> { declarationConsumer.accept((ComponentElementDeclaration) declarer.getDeclaration()); stop(); }); } else { declareTransform(model); } }
private void validateNonBlockingCallback(MethodElement<? extends Type> operationMethod, ProblemsReporter problemsReporter, OperationModel operationModel, ExtensionModel extensionModel) { operationMethod.getParameters().stream() .filter(p -> p.getType().isSameType(CompletionCallback.class)) .findFirst().ifPresent(p -> { if (p.getType().getGenerics().isEmpty()) { problemsReporter.addError(new Problem(p, format(MISSING_GENERICS_ERROR_MESSAGE, operationModel.getName(), extensionModel.getName(), CompletionCallback.class.getName()))); } }); }
private void validateResultReturnType(Type returnType, ProblemsReporter problemsReporter, OperationModel operationModel, ExtensionModel extensionModel) { if (returnType.isAssignableTo(Result.class)) { if (returnType.getGenerics().isEmpty()) { problemsReporter.addError(new Problem(operationModel, format(MISSING_GENERICS_ERROR_MESSAGE, operationModel.getName(), extensionModel.getName(), Result.class))); } } }
@Test public void operationNameClashesWithAnotherOperationName() { exception.expect(IllegalModelDefinitionException.class); OperationModel anotherOperationModel = mock(OperationModel.class); when(anotherOperationModel.getName()).thenReturn(OPERATION_NAME); when(extensionModel.getOperationModels()).thenReturn(asList(operationModel, anotherOperationModel)); validate(); }
@Before public void before() { when(operationModel.getName()).thenReturn(OPERATION_NAME); when(parameterModel.getName()).thenReturn("parameterName"); when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); mockParameters(operationModel, parameterModel); visitableMock(operationModel); }
@Test public void operationClashingWithConfig() { String clashingName = OPERATION_NAME + CONFIG_SUFFIX; when(operationModel.getName()).thenReturn(clashingName); exception.expect(IllegalModelDefinitionException.class); when(configurationModel.getName()).thenReturn(clashingName); validate(); }
@Test public void functionParameterClashesWithOperationName() { when(operationModel.getName()).thenReturn(REPEATED_NAME); ParameterModel param = getParameter(UNIQUE_PARAM_NAME, ChildElementTest.class); when(param.getRole()).thenReturn(BEHAVIOUR); when(functionModel.getAllParameterModels()).thenReturn(asList(param)); mockParameterGroup(functionModel, asList(param)); validate(); }
@Test public void repeatedChildElementSupportAndOperation() { exception.expect(IllegalModelDefinitionException.class); when(operationModel.getName()).thenReturn(REPEATED_NAME); when(operationModel.getAllParameterModels()).thenReturn(emptyList()); ParameterModel param = getParameter(UNIQUE_PARAM_NAME, ChildElementTest.class); when(param.getRole()).thenReturn(BEHAVIOUR); when(constructModel.getAllParameterModels()).thenReturn(asList(param)); mockParameterGroup(constructModel, asList(param)); validate(); }
@Test public void repeatedContentParameterNameAndOperation() { exception.expect(IllegalModelDefinitionException.class); when(operationModel.getName()).thenReturn(REPEATED_NAME); ParameterModel param = getParameter(REPEATED_NAME, ChildObjectTest.class); when(param.getRole()).thenReturn(PRIMARY_CONTENT); when(operationModel.getAllParameterModels()).thenReturn(asList(param)); validate(); }
@Before public void before() { when(extensionModel.getName()).thenReturn(EXTENSION_NAME); when(operationModel.getName()).thenReturn(OPERATION_NAME); when(operationModel.getOutput().getType()).thenReturn(TYPE_LOADER.load(String.class)); when(operationModel.getOutputAttributes().getType()).thenReturn(TYPE_LOADER.load(void.class)); when(goodParameter.getName()).thenReturn("valid"); when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); when(operationModel.getAllParameterModels()).thenReturn(asList(goodParameter)); }
@Test public void listSingularizeClashOnOperation() { exception.expect(IllegalModelDefinitionException.class); when(operationModel.getName()).thenReturn(CHILD_SINGULAR_PARAM_NAME); ParameterModel offending = getParameter(CHILD_PLURAL_PARAM_NAME, childTestList); when(operationModel.getAllParameterModels()).thenReturn(asList(offending)); validate(); }
@Test public void mapSingularizeClashOnOperation() { exception.expect(IllegalModelDefinitionException.class); when(operationModel.getName()).thenReturn(CHILD_SINGULAR_PARAM_NAME); ParameterModel offending = getParameter(CHILD_PLURAL_PARAM_NAME, childTestMap); when(operationModel.getAllParameterModels()).thenReturn(asList(offending)); validate(); }
@Before public void before() { ExtensionOperationDescriptorModelProperty modelProperty = new ExtensionOperationDescriptorModelProperty(operationElement); when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); when(operationModel.getOutput()) .thenReturn(new ImmutableOutputModel("Message.Payload", toMetadataType(String.class), false, emptySet())); when(operationModel.getName()).thenReturn("operation"); when(operationModel.getModelProperty(ExtensionOperationDescriptorModelProperty.class)).thenReturn(Optional.of(modelProperty)); when(operationElement.getReturnType()).thenReturn(new TypeWrapper(String.class, typeLoader)); visitableMock(operationModel); }
@Before public void setUp() { when(extensionModel.getXmlDslModel()).thenReturn(XmlDslModel.builder().setPrefix("test-extension").build()); when(extensionModel.getName()).thenReturn("Test Extension"); when(operationModel.getName()).thenReturn("testOperation"); }
@Test public void operationNameClashesWithParameterTypeName() { exception.expect(IllegalModelDefinitionException.class); ParameterModel offending = getParameter(TOP_LEVEL_SINGULAR_PARAM_NAME, TopLevelTest.class); when(operationModel.getName()).thenReturn(TopLevelTest.class.getSimpleName()); mockParameters(operationModel, topLevelOperationParam, offending); validate(); }