diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts
index 85dd5a6..9dd4972 100644
--- a/e2e/src/app.e2e-spec.ts
+++ b/e2e/src/app.e2e-spec.ts
@@ -9,6 +9,7 @@ describe('Strongbox', () => {
});
it('should display boot splash screen', () => {
+ browser.waitForAngularEnabled(false);
page.navigateTo('/');
browser.sleep(2000);
expect(page.getBootsplashScreen().getText()).toBe('Strongbox');
diff --git a/src/app/modules/storage-management/pages/manage-repository/manage-repository.component.html b/src/app/modules/storage-management/pages/manage-repository/manage-repository.component.html
index 90ef49e..87db357 100644
--- a/src/app/modules/storage-management/pages/manage-repository/manage-repository.component.html
+++ b/src/app/modules/storage-management/pages/manage-repository/manage-repository.component.html
@@ -56,6 +56,21 @@
+
+
+ Override checksum digest algorithms
+
+
+
+
+ {{ algorithm }}
+
+
+
+
+
Enable trash
diff --git a/src/app/modules/storage-management/pages/manage-repository/manage-repository.component.ts b/src/app/modules/storage-management/pages/manage-repository/manage-repository.component.ts
index c404f8b..5249647 100644
--- a/src/app/modules/storage-management/pages/manage-repository/manage-repository.component.ts
+++ b/src/app/modules/storage-management/pages/manage-repository/manage-repository.component.ts
@@ -12,6 +12,7 @@ import {CdkDragDrop, moveItemInArray, transferArrayItem} from '@angular/cdk/drag
import {Breadcrumb} from '../../../../shared/layout/components/breadcrumb/breadcrumb.model';
import {StorageManagerService} from '../../services/storage-manager.service';
import {
+ CustomRepositoryConfiguration,
RemoteRepositoryChecksumPolicyEnum,
RemoteRepositoryConfiguration,
Repository,
@@ -42,6 +43,8 @@ export class ManageRepositoryComponent implements OnInit {
activeGroupRepositories: string[] = [];
availableGroupRepositories: string[] = [];
+ availableDigestAlgorithmSet = this.formDataService.getAvailableDigestAlgorithmSet();
+ overrideAlgorithmConfig = false;
form: FormGroup;
@@ -54,6 +57,12 @@ export class ManageRepositoryComponent implements OnInit {
}
generateCommonFormFields(type: RepositoryTypeEnum, repo: Repository) {
+ let repositoryConfiguration;
+ if (repo.layout === RepositoryLayoutEnum.MAVEN2) {
+ repositoryConfiguration = new FormGroup({ ...this.generateMavenRepositoryFormFields(repo.repositoryConfiguration) });
+ } else {
+ repositoryConfiguration = new FormControl(null);
+ }
let fields = {
type: new FormControl(type, [Validators.required]),
id: new FormControl(repo.id),
@@ -74,7 +83,7 @@ export class ManageRepositoryComponent implements OnInit {
proxyConfiguration: new FormControl(null),
remoteRepository: new FormControl(null),
httpConnectionPool: new FormControl(null),
- repositoryConfiguration: new FormControl(null),
+ repositoryConfiguration: repositoryConfiguration,
groupRepositories: new FormControl(null),
artifactCoordinateValidators: new FormControl(null),
};
@@ -89,6 +98,22 @@ export class ManageRepositoryComponent implements OnInit {
return fields;
}
+ generateMavenRepositoryFormFields(repositoryConfiguration: CustomRepositoryConfiguration) {
+ if (repositoryConfiguration['digestAlgorithmSet']
+ && repositoryConfiguration['digestAlgorithmSet'].length > 0) {
+ this.overrideAlgorithmConfig = true;
+ }
+ return {
+ layout: new FormControl(RepositoryLayoutEnum.MAVEN2),
+ indexingEnabled: new FormControl(repositoryConfiguration['indexingEnabled']),
+ indexingClassNamesEnabled: new FormControl(repositoryConfiguration['indexingClassNamesEnabled']),
+ cronExpression: new FormControl(repositoryConfiguration['cronExpression']),
+ metadataExpirationStrategy: new FormControl(repositoryConfiguration['metadataExpirationStrategy']),
+ digestAlgorithmSet: new FormControl(repositoryConfiguration['digestAlgorithmSet'],
+ this.overrideAlgorithmConfig ? Validators.required : null)
+ };
+ }
+
isHostedRepository() {
return this.type$.getValue() === RepositoryTypeEnum.HOSTED;
}
@@ -186,13 +211,19 @@ export class ManageRepositoryComponent implements OnInit {
submit() {
if (this.form.valid) {
this.loading$.next(true);
-
const repository: Repository = plainToClass(Repository, this.form.getRawValue(), {groups: ['submit']}) as any;
if (this.isGroupRepository()) {
repository.groupRepositories = this.activeGroupRepositories;
}
+ if (!this.isMavenLayout()) {
+ repository.repositoryConfiguration = null;
+ }
+ else if (!this.overrideAlgorithmConfig) {
+ repository.repositoryConfiguration['digestAlgorithmSet'] = [];
+ }
+
this.service
.saveRepository(this.storageId$.getValue(), repository)
.pipe(catchError(err => handleFormError(err, this.form, this.loading$)))
@@ -289,6 +320,16 @@ export class ManageRepositoryComponent implements OnInit {
});
}
+ onOverrideAlgorithmConfigChange() {
+ this.overrideAlgorithmConfig = !this.overrideAlgorithmConfig;
+ if (this.overrideAlgorithmConfig) {
+ this.form.get('repositoryConfiguration.digestAlgorithmSet').setValidators([Validators.required]);
+ } else {
+ this.form.get('repositoryConfiguration.digestAlgorithmSet').clearValidators();
+ }
+ this.form.get('repositoryConfiguration.digestAlgorithmSet').updateValueAndValidity();
+ }
+
getRepositoryEnumType(repository: Repository | string): RepositoryTypeEnum {
if (repository instanceof Repository) {
return RepositoryTypeEnum[repository.type.toLocaleUpperCase()];
@@ -304,4 +345,8 @@ export class ManageRepositoryComponent implements OnInit {
&& Object.values(RepositoryTypeEnum).map(v => v.toLocaleUpperCase()).includes(repositoryType.toLocaleUpperCase());
}
+ isMavenLayout() {
+ return this.form.get('layout').value === RepositoryLayoutEnum.MAVEN2;
+ }
+
}
diff --git a/src/app/modules/storage-management/repository.model.ts b/src/app/modules/storage-management/repository.model.ts
index fdd1161..0032632 100644
--- a/src/app/modules/storage-management/repository.model.ts
+++ b/src/app/modules/storage-management/repository.model.ts
@@ -116,6 +116,7 @@ export class Repository {
constructor(type: RepositoryTypeEnum = null) {
this.type = type;
+ this.repositoryConfiguration = new CustomRepositoryConfiguration();
if (type === RepositoryTypeEnum.PROXY) {
this.proxyConfiguration = new ProxyConfiguration();
diff --git a/src/app/shared/form/services/form-data.service.ts b/src/app/shared/form/services/form-data.service.ts
index 74a549f..0952dcc 100644
--- a/src/app/shared/form/services/form-data.service.ts
+++ b/src/app/shared/form/services/form-data.service.ts
@@ -119,6 +119,10 @@ export class FormDataService {
private sanitize(str) {
return str === null || str === '' ? '' : str;
}
+
+ getAvailableDigestAlgorithmSet(): string[] {
+ return ['MD5', 'SHA-1', 'SHA-256', 'SHA-512'];
+ }
}
export function mapFormValueData() {