You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by ot...@apache.org on 2018/11/18 18:15:54 UTC
[41/52] [abbrv] metron git commit: METRON-1834: Migrate Elasticsearch
from TransportClient to new Java REST API (mmiklavc via mmiklavc) closes
apache/metron#1242
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/package.json
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/package.json b/metron-interface/metron-config/package.json
index 6e196d5..ffc92ff 100644
--- a/metron-interface/metron-config/package.json
+++ b/metron-interface/metron-config/package.json
@@ -7,10 +7,11 @@
},
"angular-cli": {},
"scripts": {
- "build": "./node_modules/angular-cli/bin/ng build -prod",
+ "build": "ng build --prod",
"start": "ng serve",
"lint": "tslint \"src/**/*.ts\"",
- "test": "./node_modules/angular-cli/bin/ng test --watch=false",
+ "test": "ng test --browsers=Chrome",
+ "testCI": "ng test --watch=false --browsers=ChromeHeadless",
"pree2e": "webdriver-manager update",
"e2e": "./node_modules/.bin/protractor",
"e2e-all": "./node_modules/.bin/protractor --suite=all",
@@ -20,47 +21,54 @@
},
"private": true,
"dependencies": {
+ "@angular-devkit/schematics": "^0.7.5",
+ "@angular/cli": "^6.2.3",
+ "@angular/common": "^6.1.8",
+ "@angular/compiler": "^6.1.8",
+ "@angular/core": "^6.1.8",
+ "@angular/forms": "^6.1.8",
+ "@angular/http": "^6.1.8",
+ "@angular/platform-browser": "^6.1.8",
+ "@angular/platform-browser-dynamic": "^6.1.8",
+ "@angular/platform-server": "^6.1.8",
+ "@angular/router": "^6.1.8",
"@types/ace": "0.0.32",
- "@types/bootstrap": "^3.3.32",
- "@types/jasmine": "2.2.30",
- "@types/jquery": "^2.0.32",
+ "@types/bootstrap": "^4.1.2",
+ "@types/jasmine": "~2.8.6",
+ "@types/jasminewd2": "~2.0.3",
+ "@types/jquery": "^3.3.6",
+ "@types/node": "^10.9.4",
"@types/tether": "^1.1.27",
- "@angular/common": "2.0.0",
- "@angular/compiler": "2.0.0",
- "@angular/core": "2.0.0",
- "@angular/forms": "2.0.0",
- "@angular/http": "2.0.0",
- "@angular/platform-browser": "2.0.0",
- "@angular/platform-browser-dynamic": "2.0.0",
- "@angular/router": "3.0.0",
"ace-builds": "^1.2.5",
"bootstrap": "4.0.0-alpha.5",
- "core-js": "^2.4.1",
+ "core-js": "^2.5.7",
"font-awesome": "^4.6.3",
"jquery": "^3.3.1",
- "rxjs": "5.0.0-beta.12",
+ "karma-phantomjs-launcher": "^1.0.4",
+ "puppeteer": "^1.8.0",
+ "rxjs": "6.2.2",
"tether": "^1.3.4",
"ts-helpers": "^1.1.1",
- "zone.js": "^0.6.23"
+ "zone.js": "^0.8.26"
},
"devDependencies": {
- "angular-cli": "1.0.0-beta.15",
+ "@angular-devkit/build-angular": "^0.8.3",
+ "@angular/compiler-cli": "^6.1.8",
+ "@types/request": "2.0.3",
"buffer-shims": "^1.0.0",
- "codelyzer": "~0.0.26",
+ "codelyzer": "~4.2.1",
"copy": "^0.3.0",
- "jasmine-core": "2.4.1",
- "jasmine-spec-reporter": "2.5.0",
- "karma": "1.2.0",
- "karma-chrome-launcher": "^2.0.0",
- "karma-cli": "^1.0.1",
- "karma-jasmine": "^1.0.2",
- "karma-phantomjs-launcher": "^1.0.4",
- "karma-remap-istanbul": "0.6.0",
+ "jasmine-core": "~2.99.1",
+ "jasmine-spec-reporter": "~4.2.1",
+ "karma": "^3.0.0",
+ "karma-chrome-launcher": "~2.2.0",
+ "karma-coverage-istanbul-reporter": "~2.0.0",
+ "karma-jasmine": "^1.1.2",
+ "karma-jasmine-html-reporter": "^0.2.2",
"phantomjs-prebuilt": "^2.1.14",
- "protractor": "4.0.5",
- "ts-node": "1.2.1",
- "tslint": "3.13.0",
- "typescript": "~2.0.3",
- "@types/request": "2.0.3"
+ "protractor": "^5.4.1",
+ "ts-node": "~5.0.1",
+ "tslint": "^5.11.0",
+ "typescript": "~2.7.2"
}
}
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/pom.xml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/pom.xml b/metron-interface/metron-config/pom.xml
index fd76447..c6ef5b5 100644
--- a/metron-interface/metron-config/pom.xml
+++ b/metron-interface/metron-config/pom.xml
@@ -63,7 +63,7 @@
</execution>
<execution>
<phase>generate-resources</phase>
- <id>ng build</id>
+ <id>npm run build</id>
<goals>
<goal>npm</goal>
</goals>
@@ -72,13 +72,13 @@
</configuration>
</execution>
<execution>
- <id>npm test</id>
+ <phase>test</phase>
+ <id>npm testCI</id>
<goals>
- <goal>npm</goal>
+ <goal>npm</goal>
</goals>
- <phase>test</phase>
<configuration>
- <arguments>test</arguments>
+ <arguments>run testCI</arguments>
</configuration>
</execution>
</executions>
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/scripts/prepend_license_header.sh
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/scripts/prepend_license_header.sh b/metron-interface/metron-config/scripts/prepend_license_header.sh
index 1957cd6..6bf004f 100755
--- a/metron-interface/metron-config/scripts/prepend_license_header.sh
+++ b/metron-interface/metron-config/scripts/prepend_license_header.sh
@@ -33,7 +33,7 @@ LICENSE_HEADER="/**
* limitations under the License.
*/
"
-for file in ./dist/*.js
+for file in ./dist/*.{js,css}
do
if !(grep -Fxq "$LICENSE_HEADER" $file)
then
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/scripts/start_dev.sh
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/scripts/start_dev.sh b/metron-interface/metron-config/scripts/start_dev.sh
index 05ba601..830c543 100755
--- a/metron-interface/metron-config/scripts/start_dev.sh
+++ b/metron-interface/metron-config/scripts/start_dev.sh
@@ -16,4 +16,4 @@
# limitations under the License.
#
SCRIPTS_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-$SCRIPTS_ROOT/../node_modules/angular-cli/bin/ng serve --proxy-config proxy.conf.json
+$SCRIPTS_ROOT/../node_modules/@angular/cli/bin/ng serve --proxy-config proxy.conf.json --aot
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/_fonts.scss
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/_fonts.scss b/metron-interface/metron-config/src/app/_fonts.scss
new file mode 100644
index 0000000..fdcb87e
--- /dev/null
+++ b/metron-interface/metron-config/src/app/_fonts.scss
@@ -0,0 +1,101 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 100;
+ src: local('Roboto Thin'), local('Roboto-Thin'), url("/assets/fonts/Roboto/Roboto-Thin.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 300;
+ src: local('Roboto Light'), local('Roboto-Light'), url("/assets/fonts/Roboto/Roboto-Light.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto-Regular';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Roboto'), local('Roboto-Regular'), url("/assets/fonts/Roboto/Roboto-Regular.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto-Medium';
+ font-style: normal;
+ font-weight: 500;
+ src: local('Roboto Medium'), local('Roboto-Medium'), url("/assets/fonts/Roboto/Roboto-Medium.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 700;
+ src: local('Roboto Bold'), local('Roboto-Bold'), url("/assets/fonts/Roboto/Roboto-Bold.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 900;
+ src: local('Roboto Black'), local('Roboto-Black'), url("/assets/fonts/Roboto/Roboto-Black.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 100;
+ src: local('Roboto Thin Italic'), local('Roboto-ThinItalic'), url("/assets/fonts/Roboto/Roboto-ThinItalic.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 300;
+ src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url("/assets/fonts/Roboto/Roboto-LightItalic.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 400;
+ src: local('Roboto Italic'), local('Roboto-Italic'), url("/assets/fonts/Roboto/Roboto-Italic.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto-MediumItalic';
+ font-style: italic;
+ font-weight: 500;
+ src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), url("/assets/fonts/Roboto/Roboto-MediumItalic.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 700;
+ src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), url("/assets/fonts/Roboto/Roboto-BoldItalic.ttf");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 900;
+ src: local('Roboto Black Italic'), local('Roboto-BlackItalic'), url("/assets/fonts/Roboto/Roboto-BlackItalic.ttf");
+}
+
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/_main.scss
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/_main.scss b/metron-interface/metron-config/src/app/_main.scss
deleted file mode 100644
index f889c7a..0000000
--- a/metron-interface/metron-config/src/app/_main.scss
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-@font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 100;
- src: local('Roboto Thin'), local('Roboto-Thin'), url("assets/fonts/Roboto/Roboto-Thin.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 300;
- src: local('Roboto Light'), local('Roboto-Light'), url("assets/fonts/Roboto/Roboto-Light.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto-Regular';
- font-style: normal;
- font-weight: 400;
- src: local('Roboto'), local('Roboto-Regular'), url("assets/fonts/Roboto/Roboto-Regular.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto-Medium';
- font-style: normal;
- font-weight: 500;
- src: local('Roboto Medium'), local('Roboto-Medium'), url("assets/fonts/Roboto/Roboto-Medium.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 700;
- src: local('Roboto Bold'), local('Roboto-Bold'), url("assets/fonts/Roboto/Roboto-Bold.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 900;
- src: local('Roboto Black'), local('Roboto-Black'), url("assets/fonts/Roboto/Roboto-Black.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 100;
- src: local('Roboto Thin Italic'), local('Roboto-ThinItalic'), url("assets/fonts/Roboto/Roboto-ThinItalic.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 300;
- src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url("assets/fonts/Roboto/Roboto-LightItalic.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 400;
- src: local('Roboto Italic'), local('Roboto-Italic'), url("assets/fonts/Roboto/Roboto-Italic.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto-MediumItalic';
- font-style: italic;
- font-weight: 500;
- src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), url("assets/fonts/Roboto/Roboto-MediumItalic.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 700;
- src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), url("assets/fonts/Roboto/Roboto-BoldItalic.ttf");
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 900;
- src: local('Roboto Black Italic'), local('Roboto-BlackItalic'), url("assets/fonts/Roboto/Roboto-BlackItalic.ttf");
-}
-
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/app.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/app.component.spec.ts b/metron-interface/metron-config/src/app/app.component.spec.ts
index 6ae511f..4ca1bfa 100644
--- a/metron-interface/metron-config/src/app/app.component.spec.ts
+++ b/metron-interface/metron-config/src/app/app.component.spec.ts
@@ -15,61 +15,58 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {Inject} from '@angular/core';
-import {async, ComponentFixture, TestBed} from '@angular/core/testing';
-import {ResponseOptions, RequestOptions, Response, Http} from '@angular/http';
-import {Router} from '@angular/router';
-import {Observable} from 'rxjs/Observable';
-import {AppComponent} from './app.component';
-import {AuthenticationService} from './service/authentication.service';
-import {AppModule} from './app.module';
-import {APP_CONFIG, METRON_REST_CONFIG} from './app.config';
-import {IAppConfig} from './app.config.interface';
+import { Inject } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { Router } from '@angular/router';
+import { Observable } from 'rxjs';
+import { AppComponent } from './app.component';
+import { AuthenticationService } from './service/authentication.service';
+import { AppModule } from './app.module';
+import { APP_CONFIG, METRON_REST_CONFIG } from './app.config';
+import { IAppConfig } from './app.config.interface';
+import { HttpResponse, HttpClient } from '@angular/common/http';
class MockAuthenticationService extends AuthenticationService {
-
- constructor(private http2: Http, private router2: Router, @Inject(APP_CONFIG) private config2: IAppConfig) {
+ constructor(
+ private http2: HttpClient,
+ private router2: Router,
+ @Inject(APP_CONFIG) private config2: IAppConfig
+ ) {
super(http2, router2, config2);
+ this.onLoginEvent.next(false);
}
- public checkAuthentication() {
- }
+ public checkAuthentication() {}
- public getCurrentUser(options: RequestOptions): Observable<Response> {
+ public getCurrentUser(options): Observable<HttpResponse<{}>> {
return Observable.create(observer => {
- observer.next(new Response(new ResponseOptions({body: 'test'})));
+ observer.next(new HttpResponse({ body: 'test' }));
observer.complete();
});
}
}
class MockRouter {
- navigateByUrl(url: string) {
- }
+ navigateByUrl(url: string) {}
}
describe('App: Static', () => {
-
let comp: AppComponent;
let fixture: ComponentFixture<AppComponent>;
let authenticationService: AuthenticationService;
beforeEach(async(() => {
-
TestBed.configureTestingModule({
imports: [AppModule],
providers: [
- {provide: Http},
- {provide: AuthenticationService, useClass: MockAuthenticationService},
- {provide: Router, useClass: MockRouter},
- {provide: APP_CONFIG, useValue: METRON_REST_CONFIG}
+ { provide: AuthenticationService, useClass: MockAuthenticationService },
+ { provide: Router, useClass: MockRouter },
+ { provide: APP_CONFIG, useValue: METRON_REST_CONFIG }
]
- }).compileComponents()
- .then(() => {
- fixture = TestBed.createComponent(AppComponent);
- comp = fixture.componentInstance;
- authenticationService = fixture.debugElement.injector.get(AuthenticationService);
- });
+ });
+ fixture = TestBed.createComponent(AppComponent);
+ comp = fixture.componentInstance;
+ authenticationService = TestBed.get(AuthenticationService);
}));
it('should create the app', () => {
@@ -77,13 +74,10 @@ describe('App: Static', () => {
});
it('should return true/false from loginevent and loggedIn should be set', () => {
-
expect(comp.loggedIn).toEqual(false);
- authenticationService.onLoginEvent.emit(true);
+ authenticationService.onLoginEvent.next(true);
expect(comp.loggedIn).toEqual(true);
- authenticationService.onLoginEvent.emit(false);
+ authenticationService.onLoginEvent.next(false);
expect(comp.loggedIn).toEqual(false);
-
});
-
});
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/app.component.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/app.component.ts b/metron-interface/metron-config/src/app/app.component.ts
index 9bfe3d2..591f0b0 100644
--- a/metron-interface/metron-config/src/app/app.component.ts
+++ b/metron-interface/metron-config/src/app/app.component.ts
@@ -16,7 +16,6 @@
* limitations under the License.
*/
import {Component} from '@angular/core';
-import './rxjs-operators';
import {AuthenticationService} from './service/authentication.service';
@@ -28,7 +27,7 @@ import {AuthenticationService} from './service/authentication.service';
export class AppComponent {
- loggedIn: boolean = false;
+ loggedIn = false;
constructor(private authService: AuthenticationService) {
this.authService.onLoginEvent.subscribe(result => {
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/app.config.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/app.config.ts b/metron-interface/metron-config/src/app/app.config.ts
index 27f24c4..abd378c 100644
--- a/metron-interface/metron-config/src/app/app.config.ts
+++ b/metron-interface/metron-config/src/app/app.config.ts
@@ -16,10 +16,10 @@
* limitations under the License.
*/
-import { OpaqueToken } from '@angular/core';
+import { InjectionToken } from '@angular/core';
import {IAppConfig} from './app.config.interface';
-export let APP_CONFIG = new OpaqueToken('app.config');
+export let APP_CONFIG = new InjectionToken('app.config');
export const METRON_REST_CONFIG: IAppConfig = {
apiEndpoint: '/api/v1'
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/app.module.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/app.module.ts b/metron-interface/metron-config/src/app/app.module.ts
index 4ac82a2..8df5293 100644
--- a/metron-interface/metron-config/src/app/app.module.ts
+++ b/metron-interface/metron-config/src/app/app.module.ts
@@ -18,7 +18,8 @@
import {NgModule} from '@angular/core';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {BrowserModule} from '@angular/platform-browser';
-import {HttpModule} from '@angular/http';
+import {HttpClientModule, HTTP_INTERCEPTORS} from '@angular/common/http';
+import { Router } from '@angular/router';
import {AppComponent} from './app.component';
import {SensorParserConfigService} from './service/sensor-parser-config.service';
import {KafkaService} from './service/kafka.service';
@@ -27,7 +28,7 @@ import {StellarService} from './service/stellar.service';
import {MetronAlerts} from './shared/metron-alerts';
import {NavbarComponent} from './navbar/navbar.component';
import {VerticalNavbarComponent} from './verticalnavbar/verticalnavbar.component';
-import {routing, appRoutingProviders} from './app.routes';
+import {MetronConfigRoutingModule} from './app.routes';
import {AuthenticationService} from './service/authentication.service';
import {AuthGuard} from './shared/auth-guard';
import {LoginGuard} from './shared/login-guard';
@@ -43,16 +44,20 @@ import {StormService} from './service/storm.service';
import {SensorParserConfigHistoryService} from './service/sensor-parser-config-history.service';
import {SensorIndexingConfigService} from './service/sensor-indexing-config.service';
import {HdfsService} from './service/hdfs.service';
+import { DefaultHeadersInterceptor } from './http-interceptors/default-headers.interceptor';
@NgModule({
- imports: [ BrowserModule, routing, FormsModule, ReactiveFormsModule, HttpModule, SensorParserListModule,
- SensorParserConfigModule, SensorParserConfigReadonlyModule, GeneralSettingsModule ],
+ imports: [ BrowserModule, FormsModule, ReactiveFormsModule, HttpClientModule, SensorParserListModule,
+ SensorParserConfigModule, SensorParserConfigReadonlyModule, GeneralSettingsModule, MetronConfigRoutingModule ],
declarations: [ AppComponent, NavbarComponent, VerticalNavbarComponent ],
providers: [ AuthenticationService, AuthGuard, LoginGuard, SensorParserConfigService,
SensorParserConfigHistoryService, SensorEnrichmentConfigService, SensorIndexingConfigService,
StormService, KafkaService, GrokValidationService, StellarService, HdfsService,
- GlobalConfigService, MetronAlerts, MetronDialogBox, appRoutingProviders, { provide: APP_CONFIG, useValue: METRON_REST_CONFIG }],
+ GlobalConfigService, MetronAlerts, MetronDialogBox, { provide: APP_CONFIG, useValue: METRON_REST_CONFIG },
+ { provide: HTTP_INTERCEPTORS, useClass: DefaultHeadersInterceptor, multi: true }],
bootstrap: [ AppComponent ]
})
-export class AppModule { }
+export class AppModule {
+ constructor(router: Router) {}
+}
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/app.routes.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/app.routes.ts b/metron-interface/metron-config/src/app/app.routes.ts
index 73db2fd..fd3655d 100644
--- a/metron-interface/metron-config/src/app/app.routes.ts
+++ b/metron-interface/metron-config/src/app/app.routes.ts
@@ -15,7 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {ModuleWithProviders} from '@angular/core';
+import { NgModule } from '@angular/core';
import {Routes, RouterModule} from '@angular/router';
import {AuthGuard} from './shared/auth-guard';
import {LoginGuard} from './shared/login-guard';
@@ -30,4 +30,10 @@ export const routes: Routes = [
export const appRoutingProviders: any[] = [
];
-export const routing: ModuleWithProviders = RouterModule.forRoot(routes);
+@NgModule({
+ imports: [RouterModule.forRoot(routes)],
+ exports: [RouterModule],
+ providers: []
+})
+
+export class MetronConfigRoutingModule { }
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/general-settings/general-settings.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/general-settings/general-settings.component.spec.ts b/metron-interface/metron-config/src/app/general-settings/general-settings.component.spec.ts
index 51fc709..b1c5ede 100644
--- a/metron-interface/metron-config/src/app/general-settings/general-settings.component.spec.ts
+++ b/metron-interface/metron-config/src/app/general-settings/general-settings.component.spec.ts
@@ -15,23 +15,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {Inject} from '@angular/core';
-import {async, TestBed, ComponentFixture} from '@angular/core/testing';
-import {Http} from '@angular/http';
-import {GeneralSettingsComponent} from './general-settings.component';
-import {MetronAlerts} from '../shared/metron-alerts';
-import {MetronDialogBox} from '../shared/metron-dialog-box';
-import {GlobalConfigService} from '../service/global-config.service';
-import {GeneralSettingsModule} from './general-settings.module';
-import {Observable} from 'rxjs/Observable';
-import {APP_CONFIG, METRON_REST_CONFIG} from '../app.config';
-import {IAppConfig} from '../app.config.interface';
+import { Inject } from '@angular/core';
+import { async, TestBed, ComponentFixture } from '@angular/core/testing';
+import { HttpClient } from '@angular/common/http';
+import { GeneralSettingsComponent } from './general-settings.component';
+import { MetronAlerts } from '../shared/metron-alerts';
+import { MetronDialogBox } from '../shared/metron-dialog-box';
+import { GlobalConfigService } from '../service/global-config.service';
+import { GeneralSettingsModule } from './general-settings.module';
+import { Observable, throwError } from 'rxjs';
+import { APP_CONFIG, METRON_REST_CONFIG } from '../app.config';
+import { IAppConfig } from '../app.config.interface';
class MockGlobalConfigService extends GlobalConfigService {
_config: any = {};
- _postSuccess: boolean = true;
+ _postSuccess = true;
- constructor(private http2: Http, @Inject(APP_CONFIG) private config2: IAppConfig) {
+ constructor(
+ private http2: HttpClient,
+ @Inject(APP_CONFIG) private config2: IAppConfig
+ ) {
super(http2, config2);
}
@@ -43,7 +46,7 @@ class MockGlobalConfigService extends GlobalConfigService {
});
}
- return Observable.throw('Error');
+ return throwError('Error');
}
public get(): Observable<{}> {
@@ -55,7 +58,6 @@ class MockGlobalConfigService extends GlobalConfigService {
}
describe('GeneralSettingsComponent', () => {
-
let metronAlerts: MetronAlerts;
let metronDialogBox: MetronDialogBox;
let component: GeneralSettingsComponent;
@@ -68,39 +70,38 @@ describe('GeneralSettingsComponent', () => {
'hdfs.boltBatchSize': 5000,
'hdfs.boltFieldDelimiter': '|',
'hdfs.boltFileRotationSize': 5,
- 'hdfs.boltCompressionCodecClass': 'org.apache.hadoop.io.compress.SnappyCodec',
+ 'hdfs.boltCompressionCodecClass':
+ 'org.apache.hadoop.io.compress.SnappyCodec',
'hdfs.indexOutput': '/tmp/metron/enriched',
'kafkaWriter.topic': 'outputTopic',
- 'kafkaWriter.keySerializer': 'org.apache.kafka.common.serialization.StringSerializer',
- 'kafkaWriter.valueSerializer': 'org.apache.kafka.common.serialization.StringSerializer',
+ 'kafkaWriter.keySerializer':
+ 'org.apache.kafka.common.serialization.StringSerializer',
+ 'kafkaWriter.valueSerializer':
+ 'org.apache.kafka.common.serialization.StringSerializer',
'kafkaWriter.requestRequiredAcks': 1,
'solrWriter.indexName': 'alfaalfa',
'solrWriter.shards': 1,
'solrWriter.replicationFactor': 1,
'solrWriter.batchSize': 50,
- 'fieldValidations': {'field': 'validation'}
+ fieldValidations: { field: 'validation' }
};
beforeEach(async(() => {
-
TestBed.configureTestingModule({
imports: [GeneralSettingsModule],
providers: [
- {provide: Http},
+ { provide: HttpClient },
MetronAlerts,
MetronDialogBox,
- {provide: GlobalConfigService, useClass: MockGlobalConfigService},
- {provide: APP_CONFIG, useValue: METRON_REST_CONFIG}
+ { provide: GlobalConfigService, useClass: MockGlobalConfigService },
+ { provide: APP_CONFIG, useValue: METRON_REST_CONFIG }
]
- }).compileComponents()
- .then(() => {
- fixture = TestBed.createComponent(GeneralSettingsComponent);
- component = fixture.componentInstance;
- globalConfigService = fixture.debugElement.injector.get(GlobalConfigService);
- metronAlerts = fixture.debugElement.injector.get(MetronAlerts);
- metronDialogBox = fixture.debugElement.injector.get(MetronDialogBox);
- });
-
+ });
+ fixture = TestBed.createComponent(GeneralSettingsComponent);
+ component = fixture.componentInstance;
+ globalConfigService = TestBed.get(GlobalConfigService);
+ metronAlerts = TestBed.get(MetronAlerts);
+ metronDialogBox = TestBed.get(MetronDialogBox);
}));
it('can instantiate GeneralSettingsComponent', async(() => {
@@ -111,7 +112,7 @@ describe('GeneralSettingsComponent', () => {
globalConfigService._config = config;
component.ngOnInit();
- expect(component.globalConfig).toEqual(globalConfigService._config);
+ expect(component.globalConfig).toEqual(config);
}));
it('should save global config', async(() => {
@@ -122,18 +123,22 @@ describe('GeneralSettingsComponent', () => {
spyOn(metronAlerts, 'showErrorMessage');
component.onSave();
- expect(metronAlerts.showSuccessMessage).toHaveBeenCalledWith('Saved Global Settings');
+ expect(metronAlerts.showSuccessMessage).toHaveBeenCalledWith(
+ 'Saved Global Settings'
+ );
globalConfigService._postSuccess = false;
component.onSave();
- expect(metronAlerts.showErrorMessage).toHaveBeenCalledWith('Unable to save Global Settings: Error');
-
+ expect(metronAlerts.showErrorMessage).toHaveBeenCalledWith(
+ 'Unable to save Global Settings: Error'
+ );
}));
it('should handle onCancel', async(() => {
let dialogReturnTrue = true;
- let confirmationMsg = 'Cancelling will revert all the changes made to the form. Do you wish to continue ?';
+ let confirmationMsg =
+ 'Cancelling will revert all the changes made to the form. Do you wish to continue ?';
spyOn(component, 'ngOnInit');
spyOn(metronDialogBox, 'showConfirmationMessage').and.callFake(function() {
@@ -148,14 +153,14 @@ describe('GeneralSettingsComponent', () => {
expect(component.ngOnInit).toHaveBeenCalled();
expect(component.ngOnInit['calls'].count()).toEqual(1);
expect(metronDialogBox.showConfirmationMessage['calls'].count()).toEqual(1);
- expect(metronDialogBox.showConfirmationMessage).toHaveBeenCalledWith(confirmationMsg);
+ expect(metronDialogBox.showConfirmationMessage).toHaveBeenCalledWith(
+ confirmationMsg
+ );
dialogReturnTrue = false;
component.onCancel();
expect(metronDialogBox.showConfirmationMessage['calls'].count()).toEqual(2);
expect(component.ngOnInit['calls'].count()).toEqual(1);
-
}));
-
});
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/general-settings/general-settings.component.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/general-settings/general-settings.component.ts b/metron-interface/metron-config/src/app/general-settings/general-settings.component.ts
index 11d4cad..494c83c 100644
--- a/metron-interface/metron-config/src/app/general-settings/general-settings.component.ts
+++ b/metron-interface/metron-config/src/app/general-settings/general-settings.component.ts
@@ -16,9 +16,9 @@
* limitations under the License.
*/
import { Component, OnInit } from '@angular/core';
-import {GlobalConfigService} from '../service/global-config.service';
-import {MetronAlerts} from '../shared/metron-alerts';
-import {MetronDialogBox} from '../shared/metron-dialog-box';
+import { GlobalConfigService } from '../service/global-config.service';
+import { MetronAlerts } from '../shared/metron-alerts';
+import { MetronDialogBox } from '../shared/metron-dialog-box';
@Component({
selector: 'metron-config-general-settings',
@@ -26,15 +26,17 @@ import {MetronDialogBox} from '../shared/metron-dialog-box';
styleUrls: ['./general-settings.component.scss']
})
export class GeneralSettingsComponent implements OnInit {
-
globalConfig: {} = {
'es.date.format': '-'
};
- private fieldValidations: string;
+ fieldValidations: string;
- constructor(private globalConfigService: GlobalConfigService, private metronAlerts: MetronAlerts,
- private metronDialog: MetronDialogBox) {}
+ constructor(
+ private globalConfigService: GlobalConfigService,
+ private metronAlerts: MetronAlerts,
+ private metronDialog: MetronDialogBox
+ ) {}
ngOnInit() {
this.globalConfigService.get().subscribe((config: {}) => {
@@ -43,7 +45,11 @@ export class GeneralSettingsComponent implements OnInit {
this.globalConfig['es.date.format'] = '-';
}
if (this.globalConfig['fieldValidations']) {
- this.fieldValidations = JSON.stringify(this.globalConfig['fieldValidations'], null, '\t');
+ this.fieldValidations = JSON.stringify(
+ this.globalConfig['fieldValidations'],
+ null,
+ '\t'
+ );
}
});
}
@@ -52,21 +58,27 @@ export class GeneralSettingsComponent implements OnInit {
if (this.fieldValidations && this.fieldValidations.length > 0) {
this.globalConfig['fieldValidations'] = JSON.parse(this.fieldValidations);
}
- this.globalConfigService.post(this.globalConfig).subscribe(() => {
+ this.globalConfigService.post(this.globalConfig).subscribe(
+ () => {
this.metronAlerts.showSuccessMessage('Saved Global Settings');
},
error => {
- this.metronAlerts.showErrorMessage('Unable to save Global Settings: ' + error);
- });
+ this.metronAlerts.showErrorMessage(
+ 'Unable to save Global Settings: ' + error
+ );
+ }
+ );
}
onCancel() {
- let confirmationMsg = 'Cancelling will revert all the changes made to the form. Do you wish to continue ?';
- this.metronDialog.showConfirmationMessage(confirmationMsg).subscribe((result: boolean) => {
- if (result) {
- this.ngOnInit();
- }
- });
+ let confirmationMsg =
+ 'Cancelling will revert all the changes made to the form. Do you wish to continue ?';
+ this.metronDialog
+ .showConfirmationMessage(confirmationMsg)
+ .subscribe((result: boolean) => {
+ if (result) {
+ this.ngOnInit();
+ }
+ });
}
-
}
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/global.scss
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/global.scss b/metron-interface/metron-config/src/app/global.scss
index 8b64cab..bcce900 100644
--- a/metron-interface/metron-config/src/app/global.scss
+++ b/metron-interface/metron-config/src/app/global.scss
@@ -16,7 +16,7 @@
* limitations under the License.
*/
@import "_variables.scss";
-@import "_main.scss";
+@import "_fonts.scss";
$height: 60px;
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/http-interceptors/default-headers.interceptor.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/http-interceptors/default-headers.interceptor.ts b/metron-interface/metron-config/src/app/http-interceptors/default-headers.interceptor.ts
new file mode 100644
index 0000000..1df12ad
--- /dev/null
+++ b/metron-interface/metron-config/src/app/http-interceptors/default-headers.interceptor.ts
@@ -0,0 +1,32 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { Injectable } from '@angular/core';
+import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest} from '@angular/common/http';
+import { Observable } from 'rxjs';
+
+@Injectable()
+export class DefaultHeadersInterceptor implements HttpInterceptor {
+ intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
+ // Clone the request and replace the original headers with
+ // cloned headers, updated with the authorization.
+ const authReq = req.clone({
+ setHeaders: {'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest'}
+ });
+ return next.handle(authReq);
+ }
+ }
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/login/login.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/login/login.component.spec.ts b/metron-interface/metron-config/src/app/login/login.component.spec.ts
index 5ad285a..eac383c 100644
--- a/metron-interface/metron-config/src/app/login/login.component.spec.ts
+++ b/metron-interface/metron-config/src/app/login/login.component.spec.ts
@@ -15,23 +15,22 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {async, ComponentFixture, TestBed} from '@angular/core/testing';
-import {AuthenticationService} from '../service/authentication.service';
-import {LoginComponent} from './login.component';
-import {Observable} from 'rxjs/Observable';
-import {ActivatedRoute, Params} from '@angular/router';
-import {LoginModule} from './login.module';
-import {APP_CONFIG, METRON_REST_CONFIG} from '../app.config';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { AuthenticationService } from '../service/authentication.service';
+import { LoginComponent } from './login.component';
+import { Observable } from 'rxjs';
+import { ActivatedRoute, Params } from '@angular/router';
+import { LoginModule } from './login.module';
+import { APP_CONFIG, METRON_REST_CONFIG } from '../app.config';
class MockAuthenticationService {
-
public login(username: string, password: string, onError): void {
if (username === 'success') {
- onError({status: 200});
+ onError({ status: 200 });
}
if (username === 'failure') {
- onError({status: 401});
+ onError({ status: 401 });
}
}
}
@@ -43,14 +42,13 @@ class MockActivatedRoute {
setSessionExpired() {
this.queryParams = Observable.create(observer => {
- observer.next({'sessionExpired': 'true'});
+ observer.next({ sessionExpired: 'true' });
observer.complete();
});
}
}
describe('LoginComponent', () => {
-
let component: LoginComponent;
let fixture: ComponentFixture<LoginComponent>;
let activatedRoute: MockActivatedRoute;
@@ -59,17 +57,14 @@ describe('LoginComponent', () => {
TestBed.configureTestingModule({
imports: [LoginModule],
providers: [
- {provide: ActivatedRoute, useClass: MockActivatedRoute},
- {provide: AuthenticationService, useClass: MockAuthenticationService},
- {provide: APP_CONFIG, useValue: METRON_REST_CONFIG}
+ { provide: ActivatedRoute, useClass: MockActivatedRoute },
+ { provide: AuthenticationService, useClass: MockAuthenticationService },
+ { provide: APP_CONFIG, useValue: METRON_REST_CONFIG }
]
- }).compileComponents()
- .then(() => {
- fixture = TestBed.createComponent(LoginComponent);
- component = fixture.componentInstance;
- activatedRoute = fixture.debugElement.injector.get(ActivatedRoute);
});
-
+ fixture = TestBed.createComponent(LoginComponent);
+ component = fixture.componentInstance;
+ activatedRoute = TestBed.get(ActivatedRoute);
}));
it('should create an instance', async(() => {
@@ -86,14 +81,13 @@ describe('LoginComponent', () => {
component.password = 'failure';
component.login();
expect(component.loginFailure).toEqual('Login failed for failure');
-
}));
it('can handle sessionExpired', async(() => {
activatedRoute.setSessionExpired();
- let sessionExpiredComponent = TestBed.createComponent(LoginComponent).componentInstance;
+ let sessionExpiredComponent = TestBed.createComponent(LoginComponent)
+ .componentInstance;
expect(sessionExpiredComponent.loginFailure).toEqual('Session has expired');
}));
-
});
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/model/rest-error.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/rest-error.ts b/metron-interface/metron-config/src/app/model/rest-error.ts
index 5daee25..f000c1f 100644
--- a/metron-interface/metron-config/src/app/model/rest-error.ts
+++ b/metron-interface/metron-config/src/app/model/rest-error.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
export class RestError {
- responseCode: number;
+ status: number;
message: string;
- fullMessage: string;
+ error: string;
}
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/navbar/navbar.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/navbar/navbar.component.spec.ts b/metron-interface/metron-config/src/app/navbar/navbar.component.spec.ts
index d0bd4e0..db7574e 100644
--- a/metron-interface/metron-config/src/app/navbar/navbar.component.spec.ts
+++ b/metron-interface/metron-config/src/app/navbar/navbar.component.spec.ts
@@ -15,11 +15,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {async, TestBed, ComponentFixture} from '@angular/core/testing';
-import {NavbarComponent} from './navbar.component';
-import {AuthenticationService} from '../service/authentication.service';
+import { async, TestBed, ComponentFixture } from '@angular/core/testing';
+import { NavbarComponent } from './navbar.component';
+import { AuthenticationService } from '../service/authentication.service';
+import { of } from 'rxjs';
class MockAuthenticationService {
+ getCurrentUser() {
+ return of('user');
+ }
}
describe('NavbarComponent', () => {
@@ -28,21 +32,18 @@ describe('NavbarComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
- declarations: [ NavbarComponent],
+ declarations: [NavbarComponent],
providers: [
NavbarComponent,
- {provide: AuthenticationService, useClass: MockAuthenticationService}
+ { provide: AuthenticationService, useClass: MockAuthenticationService }
]
});
-
fixture = TestBed.createComponent(NavbarComponent);
navbarComponent = fixture.componentInstance;
-
}));
it('can instantiate SampleDataComponent', async(() => {
expect(navbarComponent instanceof NavbarComponent).toBe(true);
- fixture.destroy();
+ fixture.detectChanges();
}));
-
});
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/navbar/navbar.component.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/navbar/navbar.component.ts b/metron-interface/metron-config/src/app/navbar/navbar.component.ts
index 45c15ef..7861423 100644
--- a/metron-interface/metron-config/src/app/navbar/navbar.component.ts
+++ b/metron-interface/metron-config/src/app/navbar/navbar.component.ts
@@ -15,17 +15,34 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {Component} from '@angular/core';
-import {AuthenticationService} from '../service/authentication.service';
+import { Component, OnInit, OnDestroy } from '@angular/core';
+import { AuthenticationService } from '../service/authentication.service';
+import { Subscription } from 'rxjs';
@Component({
- selector: 'metron-config-navbar',
- templateUrl: 'navbar.html',
- styleUrls: ['navbar.component.scss']
+ selector: 'metron-config-navbar',
+ templateUrl: 'navbar.html',
+ styleUrls: ['navbar.component.scss']
})
+export class NavbarComponent implements OnInit, OnDestroy {
+ currentUser;
+ authService: Subscription;
-export class NavbarComponent {
+ constructor(private authenticationService: AuthenticationService) {}
- constructor(private authenticationService: AuthenticationService) {
+ ngOnInit() {
+ this.authService = this.authenticationService
+ .getCurrentUser({ responseType: 'text' })
+ .subscribe(r => {
+ this.currentUser = r;
+ });
+ }
+
+ logout() {
+ this.authenticationService.logout();
+ }
+
+ ngOnDestroy() {
+ this.authService.unsubscribe();
}
}
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/navbar/navbar.html
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/navbar/navbar.html b/metron-interface/metron-config/src/app/navbar/navbar.html
index 3af1c7c..0e373e1 100644
--- a/metron-interface/metron-config/src/app/navbar/navbar.html
+++ b/metron-interface/metron-config/src/app/navbar/navbar.html
@@ -23,7 +23,7 @@
<div class="form-inline pull-right">
<i class="fa fa-user " style="padding-left: 11px" aria-hidden="true"></i>
- <div *ngIf="authenticationService.currentUser != null" class="fa logout">Logged in as {{authenticationService.currentUser}} - <span class="logout-link" (click)="authenticationService.logout()">Logout</span></div>
+ <div *ngIf="currentUser != null" class="fa logout">Logged in as {{currentUser}} - <span class="logout-link" (click)="logout()">Logout</span></div>
</div>
</nav>
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/rxjs-operators.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/rxjs-operators.ts b/metron-interface/metron-config/src/app/rxjs-operators.ts
deleted file mode 100644
index 11c86fb..0000000
--- a/metron-interface/metron-config/src/app/rxjs-operators.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// import 'rxjs/Rx'; // adds ALL RxJS statics & operators to Observable
-
-// See node_module/rxjs/Rxjs.js
-// Import just the rxjs statics and operators we need for THIS app.
-
-// Statics
-import 'rxjs/add/observable/throw';
-
-// Operators
-import 'rxjs/add/operator/catch';
-import 'rxjs/add/operator/debounceTime';
-import 'rxjs/add/operator/distinctUntilChanged';
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/switchMap';
-import 'rxjs/add/operator/toPromise';
http://git-wip-us.apache.org/repos/asf/metron/blob/8bf3b6ec/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.html
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.html b/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.html
index 18b4b82..1dcc9f1 100644
--- a/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.html
+++ b/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.html
@@ -20,7 +20,7 @@
<form role="form" class="fieldschema-form">
- <metron-config-sample-data [topic]="sensorParserConfig.sensorTopic" (onSampleDataChanged)="onSampleDataChanged($event)" (onSampleDataNotAvailable)="onSampleDataNotAvailable($event)"></metron-config-sample-data>
+ <metron-config-sample-data [topic]="sensorParserConfig.sensorTopic" (onSampleDataChanged)="onSampleDataChanged($event)" (onSampleDataNotAvailable)="onSampleDataNotAvailable()"></metron-config-sample-data>
<br><br>