/** * @return The {@link Set} of artifact IDs that the extension should grant access to the privileged API. Each artifact is * defined using Maven's groupId:artifactId */ public Set<String> getPrivilegedArtifacts() { privilegedArtifacts.addAll(extensionModel.getPrivilegedArtifacts()); return privilegedArtifacts; }
@Override public void validate(ExtensionModel model, ProblemsReporter problemsReporter) throws IllegalModelDefinitionException { final boolean hasPrivilegedPackages = model.getPrivilegedPackages() != null && !model.getPrivilegedPackages().isEmpty(); final boolean hasPrivilegedArtifacts = model.getPrivilegedArtifacts() != null && !model.getPrivilegedArtifacts().isEmpty(); if (hasPrivilegedPackages != hasPrivilegedArtifacts) { if (hasPrivilegedPackages) { problemsReporter.addError(new Problem(model, NO_PRIVILEGED_ARTIFACTS_ERROR)); } else { problemsReporter.addError(new Problem(model, NO_PRIVILEGED_PACKAGES_ERROR)); } } } }
@Test public void valid() { when(extensionModel.getPrivilegedArtifacts()).thenReturn(singleton("org.mule.test:foo")); when(extensionModel.getPrivilegedPackages()).thenReturn(singleton("org.foo")); validate(extensionModel, validator); }
@Test public void noPrivilegedApi() throws Exception { when(extensionModel.getPrivilegedPackages()).thenReturn(emptySet()); when(extensionModel.getPrivilegedArtifacts()).thenReturn(emptySet()); validate(extensionModel, validator); } }
@Test public void noPrivilegedExportedPackages() { when(extensionModel.getPrivilegedPackages()).thenReturn(emptySet()); when(extensionModel.getPrivilegedArtifacts()).thenReturn(singleton("org.mule.test:foo")); expectedException.expect(IllegalModelDefinitionException.class); expectedException.expectMessage(containsString(NO_PRIVILEGED_PACKAGES_ERROR)); validate(extensionModel, validator); }
@Test public void noPrivilegedArtifacts() { when(extensionModel.getPrivilegedPackages()).thenReturn(singleton("org.foo")); when(extensionModel.getPrivilegedArtifacts()).thenReturn(emptySet()); expectedException.expect(IllegalModelDefinitionException.class); expectedException.expectMessage(containsString(NO_PRIVILEGED_ARTIFACTS_ERROR)); validate(extensionModel, validator); }
/** * @return The {@link Set} of artifact IDs that the extension should grant access to the privileged API. Each artifact is * defined using Maven's groupId:artifactId */ public Set<String> getPrivilegedArtifacts() { privilegedArtifacts.addAll(extensionModel.getPrivilegedArtifacts()); return privilegedArtifacts; }
@Override public void validate(ExtensionModel model, ProblemsReporter problemsReporter) throws IllegalModelDefinitionException { final boolean hasPrivilegedPackages = model.getPrivilegedPackages() != null && !model.getPrivilegedPackages().isEmpty(); final boolean hasPrivilegedArtifacts = model.getPrivilegedArtifacts() != null && !model.getPrivilegedArtifacts().isEmpty(); if (hasPrivilegedPackages != hasPrivilegedArtifacts) { if (hasPrivilegedPackages) { problemsReporter.addError(new Problem(model, NO_PRIVILEGED_ARTIFACTS_ERROR)); } else { problemsReporter.addError(new Problem(model, NO_PRIVILEGED_PACKAGES_ERROR)); } } } }
@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(); }