@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); }
public List<GeneratedResource> generateDslResources(File generatedResourcesDirectory, ExtensionModel forExtensionModel) { DslResolvingContext context; if (extensionManager.getExtensions().stream().anyMatch(e -> !e.getImportedTypes().isEmpty())) { HashSet<ExtensionModel> models = new HashSet<>(extensionManager.getExtensions()); models.add(MuleExtensionModelProvider.getExtensionModel()); context = DslResolvingContext.getDefault(models); } else { context = new NullDslResolvingContext(); } ExtensionsTestDslResourcesGenerator dslResourceGenerator = new ExtensionsTestDslResourcesGenerator(getDslResourceFactories(), generatedResourcesDirectory, context); extensionManager.getExtensions().stream() .filter(runtimeExtensionModel -> forExtensionModel != null ? runtimeExtensionModel.equals(forExtensionModel) : true) .forEach(dslResourceGenerator::generateFor); return dslResourceGenerator.dumpAll(); }
@Before public void before() { when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); when(operationModel.getModelProperty(PagedOperationModelProperty.class)) .thenReturn(Optional.of(new PagedOperationModelProperty())); when(extensionModel.getImportedTypes()).thenReturn(emptySet()); }
@Before public void before() { when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); mockParameters(operationModel, parameterModel); when(extensionModel.getImportedTypes()).thenReturn(emptySet()); }
@Test public void objectStoreParameters() { OperationModel operationModel = heisenbergExtension.getOperationModel("storeMoney").get(); ParameterModel parameter = operationModel.getAllParameterModels().stream().filter(p -> "objectStore".equals(p.getName())).findFirst().get(); StereotypeModel stereotype = parameter.getAllowedStereotypes().stream() .filter(s -> s.getType().equals(OBJECT_STORE.getType())) .findFirst() .get(); assertThat(stereotype.getNamespace(), equalTo(OBJECT_STORE.getNamespace())); Optional<ImportedTypeModel> typeImport = heisenbergExtension.getImportedTypes().stream() .filter(i -> getTypeId(i.getImportedType()).map(id -> ObjectStore.class.getName().equals(id)).orElse(false)) .findFirst(); assertThat(typeImport.isPresent(), is(true)); }
@Test(expected = IllegalModelDefinitionException.class) public void invalidAbstractSubtypes() { Set<SubTypesModel> subTypes = new LinkedHashSet<>(); subTypes.add(new SubTypesModel(toMetadataType(BaseAbstractPojo.class), singleton(toMetadataType(AbstractPojo.class)))); subTypes.add(new SubTypesModel(toMetadataType(BaseCustomInterface.class), singleton(toMetadataType(CustomInterface.class)))); when(extensionModel.getSubTypes()).thenReturn(subTypes); when(extensionModel.getImportedTypes()).thenReturn(emptySet()); validate(extensionModel, new JavaSubtypesModelValidator()); }
@Test(expected = IllegalModelDefinitionException.class) public void invalidNotSubtypesOfBaseType() { mockSubTypes(extensionModel, new SubTypesModel(toMetadataType(BaseCustomInterface.class), ImmutableSet.of(toMetadataType(AbstractPojo.class), toMetadataType(CustomInterface.class)))); when(extensionModel.getImportedTypes()).thenReturn(emptySet()); validate(extensionModel, validator); }
@Test public void validSubtypes() { mockSubTypes(extensionModel, new SubTypesModel(toMetadataType(BaseAbstractPojo.class), singleton(toMetadataType(Pojo.class))), new SubTypesModel(toMetadataType(BaseCustomInterface.class), singleton(toMetadataType(Pojo.class)))); when(extensionModel.getImportedTypes()).thenReturn(emptySet()); validate(extensionModel, validator); }
@Before public void before() { when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); mockSubTypes(extensionModel); when(extensionModel.getName()).thenReturn("extensionModel"); when(extensionModel.getImportedTypes()).thenReturn(emptySet()); when(extensionModel.getXmlDslModel()) .thenReturn(XmlDslModel.builder().setPrefix("ns").setNamespace("http://www.mulesoft.org/schema/mule/ns") .setSchemaLocation("http://www.mulesoft.org/schema/mule/heisenberg/current/mule-ns.xsd").build()); when(operationModel.getName()).thenReturn("dummyOperation"); when(validParameterModel.getModelProperty(ParameterGroupModelProperty.class)).thenReturn(Optional.empty()); when(validParameterModel.getModelProperty(QNameModelProperty.class)).thenReturn(Optional.empty()); when(validParameterModel.getModelProperty(InfrastructureParameterModelProperty.class)).thenReturn(Optional.empty()); when(validParameterModel.getModelProperty(OAuthParameterModelProperty.class)).thenReturn(Optional.empty()); when(validParameterModel.getDslConfiguration()).thenReturn(ParameterDslConfiguration.getDefaultInstance()); when(validParameterModel.getRole()).thenReturn(BEHAVIOUR); when(validParameterModel.getLayoutModel()).thenReturn(Optional.empty()); when(invalidParameterModel.getModelProperty(ParameterGroupModelProperty.class)).thenReturn(Optional.empty()); when(invalidParameterModel.getModelProperty(QNameModelProperty.class)).thenReturn(Optional.empty()); when(invalidParameterModel.getModelProperty(InfrastructureParameterModelProperty.class)).thenReturn(Optional.empty()); when(invalidParameterModel.getModelProperty(OAuthParameterModelProperty.class)).thenReturn(Optional.empty()); when(invalidParameterModel.getDslConfiguration()).thenReturn(ParameterDslConfiguration.getDefaultInstance()); when(invalidParameterModel.getRole()).thenReturn(BEHAVIOUR); when(invalidParameterModel.getLayoutModel()).thenReturn(Optional.empty()); when(invalidParameterModel.getExpressionSupport()).thenReturn(SUPPORTED); }
mockSubTypes(extensionModel); when(extensionModel.getName()).thenReturn("extensionModel"); when(extensionModel.getImportedTypes()).thenReturn(emptySet()); when(extensionModel.getXmlDslModel()) .thenReturn(XmlDslModel.builder().setPrefix("ns").setNamespace("http://www.mulesoft.org/schema/mule/ns")
public static SchemaBuilder newSchema(ExtensionModel extensionModel, XmlDslModel xmlDslModel, DslResolvingContext dslContext) { SchemaBuilder builder = new SchemaBuilder(); builder.extensionModel = extensionModel; builder.schema = new Schema(); builder.schema.setTargetNamespace(xmlDslModel.getNamespace()); builder.schema.setElementFormDefault(FormChoice.QUALIFIED); builder.schema.setAttributeFormDefault(FormChoice.UNQUALIFIED); builder.withDslSyntaxResolver(extensionModel, dslContext) .importXmlNamespace() .importSpringFrameworkNamespace() .importMuleNamespace(); builder.initialiseDelegates(); builder.withImportedTypes(extensionModel.getImportedTypes()); builder.withTypeMapping(extensionModel); builder.withTypes(extensionModel.getTypes()); return builder; }
assertThat(coreExtensionModel.getImportedTypes(), empty()); assertThat(coreExtensionModel.getConfigurationModels(), empty()); assertThat(coreExtensionModel.getOperationModels(), hasSize(8));
/** * Serializes an {@link ExtensionModel} into JSON * * @param extensionModel {@link ExtensionModel} to be serialized * @return {@link String} JSON representation of the {@link ExtensionModel} */ public String serialize(ExtensionModel extensionModel) { registeredTypes = extensionModel.getTypes(); importedTypes = extensionModel.getImportedTypes().stream() .map(ImportedTypeModel::getImportedType) .collect(Collectors.toSet()); return buildGson().toJson(extensionModel); }
@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); }
public List<GeneratedResource> generateDslResources(File generatedResourcesDirectory, ExtensionModel forExtensionModel) { DslResolvingContext context; if (extensionManager.getExtensions().stream().anyMatch(e -> !e.getImportedTypes().isEmpty())) { HashSet<ExtensionModel> models = new HashSet<>(extensionManager.getExtensions()); models.add(MuleExtensionModelProvider.getExtensionModel()); context = DslResolvingContext.getDefault(models); } else { context = new NullDslResolvingContext(); } ExtensionsTestDslResourcesGenerator dslResourceGenerator = new ExtensionsTestDslResourcesGenerator(getDslResourceFactories(), generatedResourcesDirectory, context); extensionManager.getExtensions().stream() .filter(runtimeExtensionModel -> forExtensionModel != null ? runtimeExtensionModel.equals(forExtensionModel) : true) .forEach(dslResourceGenerator::generateFor); return dslResourceGenerator.dumpAll(); }
@Override public void write(JsonWriter out, ExtensionModel model) throws IOException { out.beginObject(); out.name(NAME).value(model.getName()); out.name(DESCRIPTION).value(model.getDescription()); out.name(VERSION).value(model.getVersion()); out.name(VENDOR).value(model.getVendor()); writeWithDelegate(model.getCategory(), CATEGORY, out, new TypeToken<Category>() {}); writeWithDelegate(model.getXmlDslModel(), XML_DSL, out, new TypeToken<XmlDslModel>() {}); writeWithDelegate(model.getResources(), RESOURCES, out, new TypeToken<Set<String>>() {}); writeWithDelegate(model.getSubTypes(), SUB_TYPES, out, new TypeToken<Set<SubTypesModel>>() {}); writeWithDelegate(model.getPrivilegedPackages(), PRIVILEGED_PACKAGES, out, new TypeToken<Set<String>>() {}); writeWithDelegate(model.getPrivilegedArtifacts(), PRIVILEGED_ARTIFACTS, out, new TypeToken<Set<String>>() {}); writeWithDelegate(model.getExternalLibraryModels(), EXTERNAL_LIBRARIES, out, new TypeToken<Set<ExternalLibraryModel>>() {}); writeImportedTypes(out, model.getImportedTypes()); writeWithDelegate(model.getDisplayModel().orElse(null), DISPLAY_MODEL, out, new TypeToken<DisplayModel>() {}); writeWithDelegate(model.getConfigurationModels(), CONFIGURATIONS, out, new TypeToken<List<ConfigurationModel>>() {}); writeWithDelegate(model.getOperationModels(), OPERATIONS, out, new TypeToken<List<OperationModel>>() {}); writeWithDelegate(model.getFunctionModels(), FUNCTIONS, out, new TypeToken<List<FunctionModel>>() {}); writeWithDelegate(model.getConstructModels(), CONSTRUCTS, out, new TypeToken<List<ConstructModel>>() {}); writeWithDelegate(model.getConnectionProviders(), CONNECTION_PROVIDERS, out, new TypeToken<List<ConnectionProviderModel>>() {}); writeWithDelegate(model.getSourceModels(), MESSAGE_SOURCES, out, new TypeToken<List<SourceModel>>() {}); notificationModelDelegate.writeNotifications(model.getNotificationModels(), out); errorModelDelegate.writeErrors(model.getErrorModels(), out); writeExtensionLevelModelProperties(out, model); writeTypes(TYPES, out, model.getTypes()); out.endObject(); }
public static SchemaBuilder newSchema(ExtensionModel extensionModel, XmlDslModel xmlDslModel, DslResolvingContext dslContext) { SchemaBuilder builder = new SchemaBuilder(); builder.extensionModel = extensionModel; builder.schema = new Schema(); builder.schema.setTargetNamespace(xmlDslModel.getNamespace()); builder.schema.setElementFormDefault(FormChoice.QUALIFIED); builder.schema.setAttributeFormDefault(FormChoice.UNQUALIFIED); builder.withDslSyntaxResolver(extensionModel, dslContext) .importXmlNamespace() .importSpringFrameworkNamespace() .importMuleNamespace(); builder.initialiseDelegates(); builder.withImportedTypes(extensionModel.getImportedTypes()); builder.withTypeMapping(extensionModel); builder.withTypes(extensionModel.getTypes()); return builder; }
assertThat(coreExtensionModel.getImportedTypes(), empty()); assertThat(coreExtensionModel.getConfigurationModels(), empty()); assertThat(coreExtensionModel.getOperationModels(), hasSize(8));