private void parseLayout(ExtensionParameter extensionParameter, ParameterDeclarer parameter) { parseLayoutAnnotations(extensionParameter, LayoutModel.builder()) .ifPresent(parameter::withLayout); }
private int addMissingParameterOrders(List<AbstractParameterDeclaration> declarations) { AtomicInteger minOrder = new AtomicInteger(INITIAL_ORDER); Set<Integer> takenOrders = new HashSet<>(); List<AbstractParameterDeclaration> nonOrderedParams = new ArrayList<>(); declarations.forEach(param -> { LayoutModel layoutModel = param.getLayoutModel(); if (layoutModel != null && layoutModel.getOrder().isPresent()) { takenOrders.add(layoutModel.getOrder().get()); minOrder.set(min(layoutModel.getOrder().get(), minOrder.get())); } else { nonOrderedParams.add(param); } }); AtomicInteger currentOrder = new AtomicInteger(INITIAL_ORDER); nonOrderedParams.forEach(param -> param.setLayoutModel( builderFrom(param.getLayoutModel()) .order(getNextOrder(currentOrder, takenOrders)) .build())); return minOrder.get(); }
assertThat(configurationParameterModels.get(1).getDescription(), is("Documentation for the hidden property")); assertThat(configurationParameterModels.get(1).getLayoutModel().isPresent(), is(true)); assertThat(configurationParameterModels.get(1).getLayoutModel().get().isPassword(), is(true)); assertThat(configurationParameterModels.get(3).getDescription(), is("")); assertThat(configurationParameterModels.get(3).getLayoutModel().isPresent(), is(true)); assertThat(configurationParameterModels.get(3).getLayoutModel().get().getTabName().get(), is("Not General Property")); assertThat(configurationParameterModels.get(3).getLayoutModel().get().getOrder().get(), is(42)); assertThat(allParameterModels.get(0).getLayoutModel().get().getTabName().get(), is(Placement.DEFAULT_TAB)); assertThat(allParameterModels.get(0).getLayoutModel().get().getOrder().isPresent(), is(false)); is("Documentation for the hidden parameter")); assertThat(allParameterModels.get(1).getLayoutModel().isPresent(), is(true)); assertThat(allParameterModels.get(1).getLayoutModel().get().isPassword(), is(true)); assertThat(allParameterModels.get(3).getDescription(), is("")); assertThat(allParameterModels.get(3).getLayoutModel().isPresent(), is(true)); assertThat(allParameterModels.get(3).getLayoutModel().get().getTabName().get(), is("Not General Parameter")); assertThat(allParameterModels.get(3).getLayoutModel().get().getOrder().get(), is(17));
private void assertParameterPlacement(ParameterDeclaration param, Integer order) { LayoutModel layout = param.getLayoutModel(); assertThat(layout, is(notNullValue())); assertThat(layout.getOrder(), equalTo(ofNullable(order))); } }
@Test public void groupLayout() { OperationDeclaration operation = getOperation(extensionDeclaration, "convinceAnimalKiller"); assertThat(operation.getParameterGroups(), hasSize(2)); ParameterGroupDeclaration group = operation.getParameterGroups().get(0); assertThat(group.getLayoutModel().getTabName().get(), is(ARGUMENTS_TAB)); }
private void updateGeneralGroupOrder(ParameterizedDeclaration declaration, int minGroupOrder) { Optional<ParameterGroupDeclaration> general = declaration.getParameterGroups().stream() .filter(pg -> ((ParameterGroupDeclaration) pg).getName().equals(DEFAULT_GROUP_NAME)).findFirst(); general.map(ParameterGroupDeclaration::getLayoutModel).flatMap(LayoutModel::getOrder).filter(order -> order > minGroupOrder) .ifPresent(order -> general.get() .setLayoutModel(builderFrom(general.get().getLayoutModel()).order(minGroupOrder - 1).build())); }
static void assertLayoutModel(String parameterName, int expectedOrder, Optional<LayoutModel> layoutModel) { assertThat(layoutModel.isPresent(), is(true)); LayoutModel layoutModel1 = layoutModel.get(); Integer order = layoutModel1.getOrder().orElse(null); assertThat("expecting parameter [" + parameterName + "] at position [" + expectedOrder + "] but was at [" + order + "]", order, is(expectedOrder)); }
private void addQueryModelProperties(OperationDeclaration declaration, Query query) { ParameterDeclaration parameterDeclaration = declaration.getAllParameters() .stream() .filter(p -> p.getModelProperty(ImplementingParameterModelProperty.class).isPresent()) .filter(p -> p.getModelProperty(ImplementingParameterModelProperty.class).get() .getParameter().isAnnotationPresent(MetadataKeyId.class)) .findFirst() .orElseThrow(() -> new IllegalParameterModelDefinitionException( "Query operation must have a parameter annotated with @MetadataKeyId")); parameterDeclaration.addModelProperty(new QueryParameterModelProperty(query.translator())); parameterDeclaration.setLayoutModel(builderFrom(parameterDeclaration.getLayoutModel()).asQuery().build()); }
public static Optional<LayoutModel> parseLayoutAnnotations(AnnotatedElement annotatedElement) { return parseLayoutAnnotations(annotatedElement, LayoutModel.builder()); }
private int addMissingParameterOrders(List<AbstractParameterDeclaration> declarations) { AtomicInteger minOrder = new AtomicInteger(INITIAL_ORDER); Set<Integer> takenOrders = new HashSet<>(); List<AbstractParameterDeclaration> nonOrderedParams = new ArrayList<>(); declarations.forEach(param -> { LayoutModel layoutModel = param.getLayoutModel(); if (layoutModel != null && layoutModel.getOrder().isPresent()) { takenOrders.add(layoutModel.getOrder().get()); minOrder.set(min(layoutModel.getOrder().get(), minOrder.get())); } else { nonOrderedParams.add(param); } }); AtomicInteger currentOrder = new AtomicInteger(INITIAL_ORDER); nonOrderedParams.forEach(param -> param.setLayoutModel( builderFrom(param.getLayoutModel()) .order(getNextOrder(currentOrder, takenOrders)) .build())); return minOrder.get(); }
private void updateGeneralGroupOrder(ParameterizedDeclaration declaration, int minGroupOrder) { Optional<ParameterGroupDeclaration> general = declaration.getParameterGroups().stream() .filter(pg -> ((ParameterGroupDeclaration) pg).getName().equals(DEFAULT_GROUP_NAME)).findFirst(); general.map(ParameterGroupDeclaration::getLayoutModel).flatMap(LayoutModel::getOrder).filter(order -> order > minGroupOrder) .ifPresent(order -> general.get() .setLayoutModel(builderFrom(general.get().getLayoutModel()).order(minGroupOrder - 1).build())); }
public static Optional<LayoutModel> parseLayoutAnnotations(WithAnnotations annotatedElement) { return parseLayoutAnnotations(annotatedElement, LayoutModel.builder()); }
private void addQueryModelProperties(OperationDeclaration declaration, Query query) { ParameterDeclaration parameterDeclaration = declaration.getAllParameters() .stream() .filter(p -> p.getModelProperty(ImplementingParameterModelProperty.class).isPresent()) .filter(p -> p.getModelProperty(ImplementingParameterModelProperty.class).get() .getParameter().isAnnotationPresent(MetadataKeyId.class)) .findFirst() .orElseThrow(() -> new IllegalParameterModelDefinitionException( "Query operation must have a parameter annotated with @MetadataKeyId")); parameterDeclaration.addModelProperty(new QueryParameterModelProperty(query.translator())); parameterDeclaration.setLayoutModel(builderFrom(parameterDeclaration.getLayoutModel()).asQuery().build()); }
private LayoutModel getLayout(int order) { return LayoutModel.builder().order(order).build(); } }
private void extractParameter(ParameterizedDeclarer parameterizedDeclarer, ComponentModel param, ParameterRole role) { Map<String, String> parameters = param.getParameters(); String receivedInputType = parameters.get(TYPE_ATTRIBUTE); final LayoutModel.LayoutModelBuilder layoutModelBuilder = builder(); if (parseBoolean(parameters.get(PASSWORD))) { layoutModelBuilder.asPassword(); } layoutModelBuilder.order(getOrder(parameters.get(ORDER_ATTRIBUTE))); layoutModelBuilder.tabName(getTab(parameters.get(TAB_ATTRIBUTE))); final DisplayModel displayModel = getDisplayModel(param); MetadataType parameterType = extractType(receivedInputType); ParameterDeclarer parameterDeclarer = getParameterDeclarer(parameterizedDeclarer, parameters); parameterDeclarer.describedAs(getDescription(param)) .withLayout(layoutModelBuilder.build()) .withDisplayModel(displayModel) .withRole(role) .ofType(parameterType); }
@Test public void invalidLayoutPasswordForComponentId() { expectedException.expect(IllegalModelDefinitionException.class); expectedException.expectMessage(COMPONENT_ID_ERROR_PREFIX + "is also declared as 'Password'"); when(invalidParameterModel.isComponentId()).thenReturn(true); when(invalidParameterModel.getLayoutModel()).thenReturn(Optional.of(LayoutModel.builder().asPassword().build())); mockParameters(operationModel, invalidParameterModel); validate(extensionModel, validator); }
@Test public void invalidLayoutQueryForComponentId() { expectedException.expect(IllegalModelDefinitionException.class); expectedException.expectMessage(COMPONENT_ID_ERROR_PREFIX + "is also declared as 'Query'"); when(invalidParameterModel.isComponentId()).thenReturn(true); when(invalidParameterModel.getLayoutModel()).thenReturn(Optional.of(LayoutModel.builder().asQuery().build())); mockParameters(operationModel, invalidParameterModel); validate(extensionModel, validator); }
@Test public void invalidLayoutTextForComponentId() { expectedException.expect(IllegalModelDefinitionException.class); expectedException.expectMessage(COMPONENT_ID_ERROR_PREFIX + "is also declared as 'Text'"); when(invalidParameterModel.isComponentId()).thenReturn(true); when(invalidParameterModel.getLayoutModel()).thenReturn(Optional.of(LayoutModel.builder().asText().build())); mockParameters(operationModel, invalidParameterModel); validate(extensionModel, validator); }
.ifPresent(displayName -> declarer.withDisplayModel(DisplayModel.builder().displayName(displayName.value()).build())); parseLayoutAnnotations(groupParameter, LayoutModel.builder()).ifPresent(declarer::withLayout);
private void addBackPressureParameter(ExtensionDeclaration extensionDeclaration, SourceDeclaration sourceDeclaration, BackPressureStrategyModelProperty property) { ParameterDeclaration parameter = new ParameterDeclaration(BACK_PRESSURE_STRATEGY_PARAMETER_NAME); parameter.setDescription(BACK_PRESSURE_STRATEGY_PARAMETER_DESCRIPTION); parameter.setRequired(false); parameter.setDefaultValue(property.getDefaultMode()); parameter.setExpressionSupport(NOT_SUPPORTED); parameter.setLayoutModel(LayoutModel.builder().tabName(ADVANCED_TAB).build()); MetadataType type = BaseTypeBuilder.create(JAVA).stringType() .id(format("%s-%s-backPressureStrategy", extensionDeclaration.getName(), sourceDeclaration.getName())) .with(new EnumAnnotation<>(property.getSupportedModes().stream().map(BackPressureMode::name).toArray(String[]::new))) .build(); parameter.setType(type, false); sourceDeclaration.getParameterGroup(DEFAULT_GROUP_NAME).addParameter(parameter); }