private String getLoaderId(ExtensionModel extensionModel) { Optional<SoapExtensionModelProperty> soapModelProperty = extensionModel.getModelProperty(SoapExtensionModelProperty.class); return soapModelProperty.isPresent() ? SOAP_LOADER_ID : JAVA_LOADER_ID; }
private List<ComponentModel> getModuleGlobalElements() { return extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class) .map(GlobalElementComponentModelModelProperty::getGlobalElements) .orElse(new ArrayList<>()); }
/** * If the {@code extensionModel} contains a {@link ClassLoaderModelProperty}, then it returns the {@link ClassLoader} associated * to such property. Otherwise, it returns the current TCCL * * @param extensionModel a {@link ExtensionModel} * @return a {@link ClassLoader} */ public static ClassLoader getClassLoader(ExtensionModel extensionModel) { return extensionModel.getModelProperty(ClassLoaderModelProperty.class).map(ClassLoaderModelProperty::getClassLoader) .orElse(currentThread().getContextClassLoader()); }
private ClassLoader getExtensionClassLoader() { return extensionModel.getModelProperty(ClassLoaderModelProperty.class).map(ClassLoaderModelProperty::getClassLoader) .orElse(currentThread().getContextClassLoader()); }
private Optional<String> defaultGlobalElementName() { Optional<String> defaultElementName = empty(); if (extensionModel.getConfigurationModels().isEmpty() && extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class).isPresent()) { defaultElementName = extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class) .map(globalElementComponentModelModelProperty -> format( DEFAULT_CONFIG_GLOBAL_ELEMENT_SUFFIX, extensionModel.getName())); } return defaultElementName; }
@Override public void validate(ExtensionModel extensionModel, ProblemsReporter problemsReporter) { boolean isCompileTime = extensionModel.getModelProperty(CompileTimeModelProperty.class).isPresent(); new ExtensionWalker() { @Override protected void onParameterGroup(ParameterizedModel owner, ParameterGroupModel model) { validateIsInstantiable(model, problemsReporter); if (isCompileTime) { validateNonEmptyGroup(model, problemsReporter); } } }.walk(extensionModel); }
private OperationModel getOperationModelOrFail(ExtensionModel extensionModel) { OperationSeeker operationSeeker = new OperationSeeker(); operationSeeker.walk(extensionModel); final OperationModel operationModel = operationSeeker.operationModel .orElseGet( () -> extensionModel.getModelProperty(PrivateOperationsModelProperty.class).get() .getOperationModel(moduleOperation) .orElseThrow(() -> new IllegalArgumentException(format("Could not find any operation under the name of [%s] for the extension [%s]", moduleOperation, moduleName)))); return operationModel; }
@Override public Optional<GeneratedResource> generateResource(ExtensionModel extensionModel) { Set<ImportedTypeModel> importedTypes = extensionModel.getImportedTypes(); DslResolvingContext dslContext = importedTypes.isEmpty() ? new NullDslResolvingContext() : new ClasspathBasedDslContext(extensionModel.getModelProperty(ImplementingTypeModelProperty.class) .map(mp -> mp.getType().getClassLoader()) .orElse(Thread.currentThread().getContextClassLoader())); return generateResource(extensionModel, dslContext); }
private Set<String> getDependenciesOrFail(ExtensionModel extensionModel) { return extensionModel.getModelProperty(XmlExtensionModelProperty.class) .orElseThrow(() -> new IllegalArgumentException(format("The current extension [%s] (namespace [%s]) does not have the macro expansion model property, it should have never reach here.", extensionModel.getName(), extensionModel.getXmlDslModel().getNamespace()))) .getNamespacesDependencies(); }
@Override public void validate(ExtensionModel extensionModel, ProblemsReporter problemsReporter) { extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class).ifPresent(modelProperty -> { final Set<ComponentIdentifier> configurationPropertiesCollection = getConfigurationPropertiesIdentifiers(); modelProperty.getGlobalElements().forEach(globalElementComponentModel -> { if (configurationPropertiesCollection.contains(globalElementComponentModel.getIdentifier())) { problemsReporter.addError(new Problem(extensionModel, format( CONFIGURATION_PROPERTY_NOT_SUPPORTED_FORMAT_MESSAGE, globalElementComponentModel.getIdentifier()))); } }); }); }
private void registerExtensions(ExtensionModel... extensionModels) { Arrays.stream(extensionModels).forEach(extension -> { when(extension.getModelProperty(ClassLoaderModelProperty.class)).thenReturn(empty()); extensionsManager.registerExtension(extension); }); }
private void setCompileTime(boolean compileTime) { when(extensionModel.getModelProperty(CompileTimeModelProperty.class)) .thenReturn(ofNullable(compileTime ? new CompileTimeModelProperty() : null)); }
public static void mockClassLoaderModelProperty(ExtensionModel extensionModel, ClassLoader classLoader) { when(extensionModel.getModelProperty(ClassLoaderModelProperty.class)) .thenReturn(of(new ClassLoaderModelProperty(classLoader))); }
@Before public void setup() { ClassLoaderModelProperty classLoaderModelProperty = new ClassLoaderModelProperty(getClass().getClassLoader()); when(extensionModel.getModelProperty(ClassLoaderModelProperty.class)).thenReturn(of(classLoaderModelProperty)); }
@Before public void before() { when(extensionModel.getModelProperty(CompileTimeModelProperty.class)).thenReturn(of(mock(CompileTimeModelProperty.class))); when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); when(operationModel.getParameterGroupModels()).thenReturn(asList(groupModel)); }
@Test public void testModuleCallingOperationsWithinModule() { String modulePath = "modules/module-calling-operations-within-module.xml"; ExtensionModel extensionModel = getExtensionModelFrom(modulePath); assertThat(extensionModel.getName(), is("module-calling-operations-within-module")); assertThat(extensionModel.getConfigurationModels().size(), is(0)); assertThat(extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class).isPresent(), is(false)); assertThat(extensionModel.getOperationModels().size(), is(11)); }
@Test public void testModuleResources() { String modulePath = "modules/module-resources.xml"; ExtensionModel extensionModel = getExtensionModelFrom(modulePath); assertThat(extensionModel.getName(), is("module-resources")); assertThat(extensionModel.getConfigurationModels().size(), is(0)); assertThat(extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class).isPresent(), is(false)); assertThat(extensionModel.getOperationModels().size(), is(0)); }
@Before public void before() { mockClassLoaderModelProperty(extensionModel, getClass().getClassLoader()); when(extensionModel.getName()).thenReturn("dummyExtension"); visitableMock(operationModel, sourceModel); when(extensionModel.getModelProperty(ExtensionTypeDescriptorModelProperty.class)).thenReturn(of(modelProperty)); when(modelProperty.getType()).thenReturn(type); when(type.getDeclaringClass()).thenReturn(of(this.getClass())); }
@Before public void before() { when(extensionModel.getModelProperty(CompileTimeModelProperty.class)).thenReturn(Optional.of(new CompileTimeModelProperty())); when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); when(parameter.getName()).thenReturn("parameter"); when(parameter.getModelProperty(ExtensionParameterDescriptorModelProperty.class)) .thenReturn(Optional.of(new ExtensionParameterDescriptorModelProperty(extensionParameter))); mockParameters(operationModel, parameter); }
@Test public void skipEmptyGroupValidationInRuntimeMode() { when(extensionModel.getModelProperty(CompileTimeModelProperty.class)).thenReturn(empty()); ParameterGroupDescriptor descriptor = new ParameterGroupDescriptor("name", new TypeWrapper(EmptyGroupPojo.class, typeLoader), null, mock(AnnotatedElement.class), null); when(groupModel.getModelProperty(ParameterGroupModelProperty.class)) .thenReturn(of(new ParameterGroupModelProperty(descriptor))); validate(extensionModel, validator); }