Skip to content

Commit

Permalink
SHIBUI-701 Added schema and fixed bugs for FileSystemMetadataProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
rmathis committed Nov 5, 2018
1 parent 8f3e0e8 commit 6668431
Show file tree
Hide file tree
Showing 12 changed files with 328 additions and 70 deletions.
5 changes: 5 additions & 0 deletions backend/src/main/resources/i18n/messages_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ value.encryption=Encryption
value.both=Both

value.file-backed-http-metadata-provider=FileBackedHttpMetadataProvider
value.file-system-metadata-provider=FileSystemMetadataProvider
value.local-dynamic-metadata-provider=LocalDynamicMetadataProvider
value.dynamic-http-metadata-provider=DynamicHttpMetadataProvider
value.entity-attributes-filter=EntityAttributes Filter
value.spdescriptor=SPSSODescriptor
value.attr-auth-descriptor=AttributeAuthorityDescriptor
Expand Down Expand Up @@ -293,6 +296,8 @@ label.metadata-provider-status=Metadata Provider Status
label.enable-provider-upon-saving=Enable Metadata Provider upon saving?
label.certificate-type=Type

label.metadata-file=Metadata File

label.enable-filter=Enable Filter?
label.required-valid-until=Required Valid Until Filter
label.max-validity-interval=Max Validity Interval
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { BaseMetadataProvider } from './base-metadata-provider';

export interface FileSystemMetadataProvider extends BaseMetadataProvider {
id: string;
metadataFile: string;
reloadableMetadataResolverAttributes: any;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Component, OnDestroy } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import { withLatestFrom, map, distinctUntilChanged, skipWhile } from 'rxjs/operators';
import { withLatestFrom, map, distinctUntilChanged, skipWhile, filter } from 'rxjs/operators';
import { Store } from '@ngrx/store';

import * as fromProvider from '../reducer';
Expand Down Expand Up @@ -42,7 +42,9 @@ export class ProviderWizardStepComponent implements OnDestroy {
constructor(
private store: Store<fromProvider.ProviderState>,
) {
this.schema$ = this.store.select(fromWizard.getParsedSchema);
this.schema$ = this.store.select(fromWizard.getSchema).pipe(
filter(s => s && Object.keys(s.properties).length > 0)
);
this.definition$ = this.store.select(fromWizard.getWizardDefinition);
this.changes$ = this.store.select(fromProvider.getEntityChanges);

Expand Down
9 changes: 0 additions & 9 deletions ui/src/app/metadata/provider/model/base.provider.form.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Wizard } from '../../../wizard/model';
import { BaseMetadataProvider } from '../../domain/model/providers';
import { UriValidator } from '../../../shared/validation/uri.validator';

export const BaseMetadataProviderEditor: Wizard<BaseMetadataProvider> = {
label: 'BaseMetadataProvider',
Expand Down Expand Up @@ -30,14 +29,6 @@ export const BaseMetadataProviderEditor: Wizard<BaseMetadataProvider> = {
params: [value]
} : null;
return err;
},
'/metadataURL': (value, property, form) => {
return !UriValidator.isUri(value) ? {
code: 'INVALID_URI',
path: `#${property.path}`,
message: 'message.uri-valid-format',
params: [value]
} : null;
}
};
return validators;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Wizard } from '../../../wizard/model';
import { FileBackedHttpMetadataProvider } from '../../domain/model/providers/file-backed-http-metadata-provider';
import { BaseMetadataProviderEditor } from './base.provider.form';
import { UriValidator } from '../../../shared/validation/uri.validator';

export const FileBackedHttpMetadataProviderWizard: Wizard<FileBackedHttpMetadataProvider> = {
...BaseMetadataProviderEditor,
Expand All @@ -17,6 +18,14 @@ export const FileBackedHttpMetadataProviderWizard: Wizard<FileBackedHttpMetadata
} : null;
return err;
};
validators['/metadataURL'] = (value, property, form) => {
return !UriValidator.isUri(value) ? {
code: 'INVALID_URI',
path: `#${property.path}`,
message: 'message.uri-valid-format',
params: [value]
} : null;
};
return validators;
},
steps: [
Expand Down
112 changes: 112 additions & 0 deletions ui/src/app/metadata/provider/model/file-system.provider.form.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import { Wizard } from '../../../wizard/model';
import { FileSystemMetadataProvider } from '../../domain/model/providers/file-system-metadata-provider';
import { BaseMetadataProviderEditor } from './base.provider.form';

export const FileSystemMetadataProviderWizard: Wizard<FileSystemMetadataProvider> = {
...BaseMetadataProviderEditor,
label: 'FileSystemMetadataProvider',
type: 'FileSystemMetadataResolver',
getValidators(namesList: string[] = [], xmlIdList: string[] = []): any {
const validators = BaseMetadataProviderEditor.getValidators(namesList);
validators['/xmlId'] = (value, property, form) => {
const err = xmlIdList.indexOf(value) > -1 ? {
code: 'INVALID_ID',
path: `#${property.path}`,
message: 'message.id-unique',
params: [value]
} : null;
return err;
};
return validators;
},
steps: [
{
id: 'common',
label: 'label.common-attributes',
index: 2,
initialValues: [],
schema: 'assets/schema/provider/file-system.schema.json',
fields: [
'xmlId',
'metadataFile'
],
fieldsets: [
{
type: 'group-lg',
class: ['col-12'],
fields: [
'xmlId',
'metadataFile'
]
}
]
},
{
id: 'reloading',
label: 'label.reloading-attributes',
index: 3,
initialValues: [],
schema: 'assets/schema/provider/file-system.schema.json',
fields: [
'reloadableMetadataResolverAttributes'
],
fieldsets: [
{
type: 'group-lg',
class: ['col-12'],
fields: [
'reloadableMetadataResolverAttributes'
]
}
]
},
{
id: 'summary',
label: 'label.finished',
index: 4,
initialValues: [],
schema: 'assets/schema/provider/file-system.schema.json',
fields: [
'enabled'
],
fieldsets: [
{
type: 'group-lg',
class: ['col-12'],
fields: [
'enabled'
]
}
]
}
]
};


export const FileSystemMetadataProviderEditor: Wizard<FileSystemMetadataProvider> = {
...FileSystemMetadataProviderWizard,
steps: [
{
id: 'common',
label: 'label.common-attributes',
index: 1,
initialValues: [],
schema: 'assets/schema/provider/filebacked-http-common.editor.schema.json',
fields: [
'enabled',
'xmlId',
'metadataFile'
]
},
{
id: 'reloading',
label: 'label.reloading-attributes',
index: 2,
initialValues: [],
schema: 'assets/schema/provider/filebacked-http-reloading.schema.json',
fields: [
'reloadableMetadataResolverAttributes'
]
}
]
};
7 changes: 5 additions & 2 deletions ui/src/app/metadata/provider/model/index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import { FileBackedHttpMetadataProviderWizard } from './file-backed-http.provider.form';
import { FileBackedHttpMetadataProviderEditor } from './file-backed-http.provider.form';
import { FileSystemMetadataProviderWizard, FileSystemMetadataProviderEditor } from './file-system.provider.form';

export const MetadataProviderWizardTypes = [
FileBackedHttpMetadataProviderWizard
FileBackedHttpMetadataProviderWizard,
FileSystemMetadataProviderWizard
];

export const MetadataProviderEditorTypes = [
FileBackedHttpMetadataProviderEditor
FileBackedHttpMetadataProviderEditor,
FileSystemMetadataProviderEditor
];

export * from './file-backed-http.provider.form';
Expand Down
13 changes: 11 additions & 2 deletions ui/src/app/metadata/provider/model/provider.form.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Wizard, WizardStep } from '../../../wizard/model';
import { MetadataProvider } from '../../domain/model';
import { Metadata } from '../../domain/domain.type';
import { BaseMetadataProviderEditor } from './base.provider.form';

export const MetadataProviderWizard: Wizard<MetadataProvider> = {
Expand All @@ -17,7 +16,17 @@ export const MetadataProviderWizard: Wizard<MetadataProvider> = {
fields: [
'name',
'@type'
],
fieldsets: [
{
type: 'section',
class: ['col-12'],
fields: [
'name',
'@type'
]
}
]
}
] as WizardStep[]
] as WizardStep[],
};
4 changes: 3 additions & 1 deletion ui/src/app/wizard/reducer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,14 @@ export const getSplitSchema = (schema: any, step: WizardStep) => {
const required = (schema.required || []).filter(val => keys.indexOf(val) > -1);
let s: any = {
type: schema.type,
definitions: schema.definitions,
properties: {
...keys.reduce( (properties, key) => ({ ...properties, [key]: schema.properties[key] }) , {})
}
};

if (schema.definitions) {
s.definitions = schema.definitions;
}
if (required && required.length) {
s.required = required;
}
Expand Down
Loading

0 comments on commit 6668431

Please sign in to comment.