You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2018/12/19 20:24:24 UTC
[01/52] [abbrv] ignite git commit: IGNITE-10239 Update navigation and
top menu. - Fixes #5630.
Repository: ignite
Updated Branches:
refs/heads/ignite-627 f9c06b853 -> 404a9f3ba
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/branding/header-logo.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/branding/header-logo.pug b/modules/web-console/frontend/app/modules/branding/header-logo.pug
deleted file mode 100644
index f0453d3..0000000
--- a/modules/web-console/frontend/app/modules/branding/header-logo.pug
+++ /dev/null
@@ -1,18 +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.
-
-a(ui-sref='signin')
- img.navbar-brand(ng-src='{{logo.url}}')
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/branding/header-title.directive.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/branding/header-title.directive.js b/modules/web-console/frontend/app/modules/branding/header-title.directive.js
deleted file mode 100644
index f67439c..0000000
--- a/modules/web-console/frontend/app/modules/branding/header-title.directive.js
+++ /dev/null
@@ -1,44 +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.
- */
-
-const template = `
- <h1
- style="margin: 0;font-size: 1.4em;"
- >{{::title.text}}</h1>
-`;
-
-/**
- * @param {import('./branding.service').default} branding
- */
-export default function factory(branding) {
- function controller() {
- const ctrl = this;
-
- ctrl.text = branding.headerText;
- }
-
- return {
- restrict: 'E',
- template,
- controller,
- controllerAs: 'title',
- replace: true
- };
-}
-
-factory.$inject = ['IgniteBranding'];
-
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/branding/powered-by-apache.directive.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/branding/powered-by-apache.directive.js b/modules/web-console/frontend/app/modules/branding/powered-by-apache.directive.js
deleted file mode 100644
index 3f8b3de..0000000
--- a/modules/web-console/frontend/app/modules/branding/powered-by-apache.directive.js
+++ /dev/null
@@ -1,39 +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 template from './powered-by-apache.pug';
-
-/**
- * @param {import('./branding.service').default} branding
- */
-export default function factory(branding) {
- function controller() {
- const ctrl = this;
-
- ctrl.show = branding.showIgniteLogo;
- }
-
- return {
- restrict: 'E',
- template,
- controller,
- controllerAs: 'poweredBy'
- };
-}
-
-factory.$inject = ['IgniteBranding'];
-
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/branding/powered-by-apache.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/branding/powered-by-apache.pug b/modules/web-console/frontend/app/modules/branding/powered-by-apache.pug
deleted file mode 100644
index 6031235..0000000
--- a/modules/web-console/frontend/app/modules/branding/powered-by-apache.pug
+++ /dev/null
@@ -1,18 +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.
-
-a(ng-if='poweredBy.show' href='//ignite.apache.org' target='_blank')
- img(ng-src='/images/pb-ignite.png')
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/demo/Demo.module.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/demo/Demo.module.js b/modules/web-console/frontend/app/modules/demo/Demo.module.js
index 6c14e4a..9416bca 100644
--- a/modules/web-console/frontend/app/modules/demo/Demo.module.js
+++ b/modules/web-console/frontend/app/modules/demo/Demo.module.js
@@ -71,34 +71,7 @@ function demoInterceptor(Demo) {
demoInterceptor.$inject = ['Demo'];
-/**
- * @param {ng.IScope} $scope
- * @param {import('@uirouter/angularjs').StateService} $state
- * @param {ng.IWindowService} $window
- * @param {ReturnType<typeof import('app/services/Confirm.service').default>} Confirm
- */
-function demoController($scope, $state, $window, Confirm) {
- const _openTab = (stateName) => $window.open($state.href(stateName), '_blank');
-
- $scope.startDemo = () => {
- if (!$scope.user.demoCreated)
- return _openTab('demo.reset');
-
- Confirm.confirm('Would you like to continue with previous demo session?', true, false)
- .then((resume) => {
- if (resume)
- return _openTab('demo.resume');
-
- _openTab('demo.reset');
- });
- };
-
- $scope.closeDemo = () => {
- $window.close();
- };
-}
-demoController.$inject = ['$scope', '$state', '$window', 'IgniteConfirm'];
function igniteDemoInfoProvider() {
const items = DEMO_INFO;
@@ -211,6 +184,5 @@ angular
.config(config)
.provider('Demo', DemoProvider)
.factory('demoInterceptor', demoInterceptor)
-.controller('demoController', demoController)
.provider('igniteDemoInfo', igniteDemoInfoProvider)
.service('DemoInfo', DemoInfo);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/navbar/Navbar.provider.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/navbar/Navbar.provider.js b/modules/web-console/frontend/app/modules/navbar/Navbar.provider.js
deleted file mode 100644
index 9b905d7..0000000
--- a/modules/web-console/frontend/app/modules/navbar/Navbar.provider.js
+++ /dev/null
@@ -1,30 +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.
- */
-
-export default function() {
- const items = [];
-
- this.push = function(data) {
- items.push(data);
- };
-
- this.$get = function() {
- return items;
- };
-
- return this;
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/navbar/navbar.directive.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/navbar/navbar.directive.js b/modules/web-console/frontend/app/modules/navbar/navbar.directive.js
deleted file mode 100644
index e400cf7..0000000
--- a/modules/web-console/frontend/app/modules/navbar/navbar.directive.js
+++ /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.
- */
-
-export default function factory(IgniteNavbar) {
- function controller() {
- const ctrl = this;
-
- ctrl.items = IgniteNavbar;
- }
-
- return {
- restrict: 'A',
- controller,
- controllerAs: 'navbar'
- };
-}
-
-factory.$inject = ['IgniteNavbar'];
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/navbar/navbar.module.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/navbar/navbar.module.js b/modules/web-console/frontend/app/modules/navbar/navbar.module.js
index 63588c7..e2a4f83 100644
--- a/modules/web-console/frontend/app/modules/navbar/navbar.module.js
+++ b/modules/web-console/frontend/app/modules/navbar/navbar.module.js
@@ -17,17 +17,10 @@
import angular from 'angular';
-import IgniteNavbar from './Navbar.provider';
import IgniteUserbar from './Userbar.provider';
-import igniteNavbar from './navbar.directive';
-import igniteUserbar from './userbar.directive';
-
angular
.module('ignite-console.navbar', [
])
-.provider('IgniteNavbar', IgniteNavbar)
-.provider('IgniteUserbar', IgniteUserbar)
-.directive('igniteNavbar', igniteNavbar)
-.directive('igniteUserbar', igniteUserbar);
+.provider('IgniteUserbar', IgniteUserbar);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/navbar/userbar.directive.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/navbar/userbar.directive.js b/modules/web-console/frontend/app/modules/navbar/userbar.directive.js
deleted file mode 100644
index b636a34..0000000
--- a/modules/web-console/frontend/app/modules/navbar/userbar.directive.js
+++ /dev/null
@@ -1,59 +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.
- */
-
-/**
- * @param {ng.IRootScopeService} $root
- * @param {unknown} IgniteUserbar
- * @param {unknown} AclService
- */
-function controller($root, IgniteUserbar, AclService) {
- const ctrl = this;
-
- this.$onInit = () => {
- ctrl.items = [
- {text: 'Profile', sref: 'base.settings.profile'},
- {text: 'Getting started', click: 'gettingStarted.tryShow(true)'}
- ];
-
- const _rebuildSettings = () => {
- ctrl.items.splice(2);
-
- if (AclService.can('admin_page'))
- ctrl.items.push({text: 'Admin panel', sref: 'base.settings.admin'});
-
- ctrl.items.push(...IgniteUserbar);
-
- if (AclService.can('logout'))
- ctrl.items.push({text: 'Log out', sref: 'logout'});
- };
-
- if ($root.user)
- _rebuildSettings(null, $root.user);
-
- $root.$on('user', _rebuildSettings);
- };
-}
-
-controller.$inject = ['$rootScope', 'IgniteUserbar', 'AclService'];
-
-export default function() {
- return {
- restrict: 'A',
- controller,
- controllerAs: 'userbar'
- };
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/services/store.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/store.ts b/modules/web-console/frontend/app/services/store.ts
new file mode 100644
index 0000000..19dde69
--- /dev/null
+++ b/modules/web-console/frontend/app/services/store.ts
@@ -0,0 +1,75 @@
+/*
+ * 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 {BehaviorSubject} from 'rxjs/BehaviorSubject';
+import {Subject} from 'rxjs/Subject';
+import {scan, tap} from 'rxjs/operators';
+import {merge} from 'rxjs/observable/merge';
+
+interface Reducer<State, Actions> {
+ (state: State, action: Actions): State
+}
+
+export class Store<Actions, State> {
+ static $inject = ['$injector'];
+
+ actions$: Subject<Actions>
+ state$: BehaviorSubject<State>
+ private _reducers: Array<Reducer<State, Actions>>
+
+ constructor(private $injector: ng.auto.IInjectorService) {
+ this.$injector = $injector;
+
+ this.actions$ = new Subject();
+ this.state$ = new BehaviorSubject({});
+ this.actions$.pipe(
+ scan((state, action) => this._reducers.reduce((state, reducer) => reducer(state, action), state), void 0),
+ tap((state) => this.state$.next(state))
+ ).subscribe();
+ this._reducers = [(state) => state];
+ }
+
+ dispatch(action: Actions) {
+ this.actions$.next(action);
+ }
+
+ addReducer<T extends keyof State, U = State[T]>(path: T, reducer: Reducer<U, Actions>): void
+ addReducer(reducer: Reducer<State, Actions>): void
+ addReducer(...args) {
+ if (typeof args[0] === 'string') {
+ const [path, reducer] = args;
+ this._reducers = [
+ ...this._reducers,
+ (state = {}, action) => {
+ const pathState = reducer(state[path], action);
+ // Don't update root state if child state changes
+ return state[path] !== pathState ? {...state, [path]: pathState} : state;
+ }
+ ];
+ } else {
+ const [reducer] = args;
+ this._reducers = [...this._reducers, reducer];
+ }
+ }
+
+ addEffects(EffectsClass) {
+ const instance = this.$injector.instantiate(EffectsClass);
+ return merge(
+ ...Object.keys(instance).filter((k) => k.endsWith('Effect$')).map((k) => instance[k]),
+ ).pipe(tap((a) => this.dispatch(a))).subscribe();
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/store/actions/ui.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/store/actions/ui.ts b/modules/web-console/frontend/app/store/actions/ui.ts
new file mode 100644
index 0000000..25d9ba0
--- /dev/null
+++ b/modules/web-console/frontend/app/store/actions/ui.ts
@@ -0,0 +1,36 @@
+/*
+ * 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 {NavigationMenuItem} from '../../types';
+
+export const TOGGLE_SIDEBAR: 'TOGGLE_SIDEBAR' = 'TOGGLE_SIDEBAR';
+export const toggleSidebar = () => ({type: TOGGLE_SIDEBAR});
+
+export const NAVIGATION_MENU_ITEM: 'NAVIGATION_MENU_ITEM' = 'NAVIGATION_MENU_ITEM';
+export const navigationMenuItem = (menuItem: NavigationMenuItem) => ({type: NAVIGATION_MENU_ITEM, menuItem});
+
+export const HIDE_NAVIGATION_MENU_ITEM: 'HIDE_NAVIGATION_MENU_ITEM' = 'HIDE_NAVIGATION_MENU_ITEM';
+export const hideNavigationMenuItem = (label: NavigationMenuItem['label']) => ({type: HIDE_NAVIGATION_MENU_ITEM, label});
+
+export const SHOW_NAVIGATION_MENU_ITEM: 'SHOW_NAVIGATION_MENU_ITEM' = 'SHOW_NAVIGATION_MENU_ITEM';
+export const showNavigationMenuItem = (label: NavigationMenuItem['label']) => ({type: SHOW_NAVIGATION_MENU_ITEM, label});
+
+export type UIActions =
+ | ReturnType<typeof toggleSidebar>
+ | ReturnType<typeof navigationMenuItem>
+ | ReturnType<typeof hideNavigationMenuItem>
+ | ReturnType<typeof showNavigationMenuItem>;
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/store/actions/user.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/store/actions/user.ts b/modules/web-console/frontend/app/store/actions/user.ts
new file mode 100644
index 0000000..34c8d20
--- /dev/null
+++ b/modules/web-console/frontend/app/store/actions/user.ts
@@ -0,0 +1,24 @@
+/*
+ * 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 {User} from '../../types';
+
+export const USER: 'USER' = 'USER';
+export const user = (user: User) => ({type: USER, user});
+
+export type UserActions =
+ | ReturnType<typeof user>;
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/store/effects/ui.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/store/effects/ui.ts b/modules/web-console/frontend/app/store/effects/ui.ts
new file mode 100644
index 0000000..2a635d6
--- /dev/null
+++ b/modules/web-console/frontend/app/store/effects/ui.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 {AppStore, USER, ofType, hideNavigationMenuItem, showNavigationMenuItem} from '..';
+import {map} from 'rxjs/operators';
+
+export class UIEffects {
+ static $inject = ['Store']
+ constructor(private store: AppStore) {}
+
+ toggleQueriesNavItemEffect$ = this.store.actions$.pipe(
+ ofType(USER),
+ map((action) => {
+ const QUERY_LABEL = 'Queries';
+ return action.user.becomeUsed ? hideNavigationMenuItem(QUERY_LABEL) : showNavigationMenuItem(QUERY_LABEL);
+ })
+ )
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/store/index.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/store/index.ts b/modules/web-console/frontend/app/store/index.ts
new file mode 100644
index 0000000..fa4a878
--- /dev/null
+++ b/modules/web-console/frontend/app/store/index.ts
@@ -0,0 +1,48 @@
+/*
+ * 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 {Store} from '../services/store';
+
+import {UIState, uiReducer} from './reducers/ui';
+import {UIActions} from './actions/ui';
+import {UIEffects} from './effects/ui';
+
+import {UserActions} from './actions/user';
+
+export * from './actions/ui';
+export * from './reducers/ui';
+export * from './selectors/ui';
+
+export * from './actions/user';
+
+export {ofType} from './ofType';
+
+export type State = {
+ ui: UIState,
+};
+
+export type Actions =
+ | UserActions
+ | UIActions;
+
+export type AppStore = Store<Actions, State>;
+
+register.$inject = ['Store'];
+export function register(store: AppStore) {
+ store.addReducer('ui', uiReducer);
+ store.addEffects(UIEffects);
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/store/ofType.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/store/ofType.ts b/modules/web-console/frontend/app/store/ofType.ts
new file mode 100644
index 0000000..3d3bd8e
--- /dev/null
+++ b/modules/web-console/frontend/app/store/ofType.ts
@@ -0,0 +1,26 @@
+/*
+ * 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 {OperatorFunction} from 'rxjs/interfaces';
+import {filter} from 'rxjs/operators';
+
+type Action = {type: string};
+export function ofType<T extends string, U extends Action, V extends Extract<U, {type: T}>>(type: T): OperatorFunction<U, V>
+export function ofType<U extends Action>(type): OperatorFunction<U, U> {
+ return filter((action: U): boolean => type === action.type);
+}
+
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/store/reducers/ui.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/store/reducers/ui.ts b/modules/web-console/frontend/app/store/reducers/ui.ts
new file mode 100644
index 0000000..6f2859d
--- /dev/null
+++ b/modules/web-console/frontend/app/store/reducers/ui.ts
@@ -0,0 +1,50 @@
+/*
+ * 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 {NavigationMenu} from '../../types';
+import {UIActions, TOGGLE_SIDEBAR, NAVIGATION_MENU_ITEM, HIDE_NAVIGATION_MENU_ITEM, SHOW_NAVIGATION_MENU_ITEM} from '..';
+
+export type UIState = {
+ sidebarOpened: boolean,
+ navigationMenu: NavigationMenu
+};
+
+const defaults: UIState = {
+ sidebarOpened: false,
+ navigationMenu: []
+};
+
+export function uiReducer(state: UIState = defaults, action: UIActions): UIState {
+ switch (action.type) {
+ case TOGGLE_SIDEBAR:
+ return {...state, sidebarOpened: !state.sidebarOpened};
+ case NAVIGATION_MENU_ITEM:
+ return {...state, navigationMenu: [...state.navigationMenu, action.menuItem]};
+ case HIDE_NAVIGATION_MENU_ITEM:
+ return {
+ ...state,
+ navigationMenu: state.navigationMenu.map((i) => i.label === action.label ? {...i, hidden: true} : i)
+ };
+ case SHOW_NAVIGATION_MENU_ITEM:
+ return {
+ ...state,
+ navigationMenu: state.navigationMenu.map((i) => i.label === action.label ? {...i, hidden: false} : i)
+ };
+ default:
+ return state;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/store/reduxDebug.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/store/reduxDebug.ts b/modules/web-console/frontend/app/store/reduxDebug.ts
new file mode 100644
index 0000000..d7b1474
--- /dev/null
+++ b/modules/web-console/frontend/app/store/reduxDebug.ts
@@ -0,0 +1,45 @@
+/*
+ * 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 {reducer, devTools} from '../components/page-configure/reduxDevtoolsIntegration';
+import {AppStore} from '.';
+import {filter, withLatestFrom, tap} from 'rxjs/operators';
+
+run.$inject = ['Store'];
+
+export function run(store: AppStore) {
+ if (devTools) {
+ devTools.subscribe((e) => {
+ if (e.type === 'DISPATCH' && e.state) store.dispatch(e);
+ });
+
+ const ignoredActions = new Set([
+ ]);
+
+ store.actions$.pipe(
+ filter((e) => e.type !== 'DISPATCH'),
+ withLatestFrom(store.state$.skip(1)),
+ tap(([action, state]) => {
+ if (ignoredActions.has(action.type)) return;
+ devTools.send(action, state);
+ console.log(action);
+ })
+ ).subscribe();
+
+ store.addReducer(reducer);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/store/selectors/ui.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/store/selectors/ui.ts b/modules/web-console/frontend/app/store/selectors/ui.ts
new file mode 100644
index 0000000..0bd2fa9
--- /dev/null
+++ b/modules/web-console/frontend/app/store/selectors/ui.ts
@@ -0,0 +1,29 @@
+/*
+ * 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 {State, AppStore} from '..';
+import {pluck, map} from 'rxjs/operators';
+import {pipe} from 'rxjs';
+import {memoize, orderBy} from 'lodash';
+
+const orderMenu = <T extends {order: number}>(menu: Array<T>) => orderBy(menu, 'order');
+
+export const selectSidebarOpened = () => pluck<State, State['ui']['sidebarOpened']>('ui', 'sidebarOpened');
+export const selectNavigationMenu = () => pipe(
+ pluck<State, State['ui']['navigationMenu']>('ui', 'navigationMenu'),
+ map(orderMenu)
+);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/types/index.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/types/index.ts b/modules/web-console/frontend/app/types/index.ts
index df6a169..ad40c15 100644
--- a/modules/web-console/frontend/app/types/index.ts
+++ b/modules/web-console/frontend/app/types/index.ts
@@ -32,3 +32,33 @@ export interface IIgniteNg1StateDeclaration extends Ng1StateDeclaration {
tfMetaTags: ITfMetatagsConfig,
permission?: string
}
+
+export type User = {
+ _id: string,
+ firstName: string,
+ lastName: string,
+ email: string,
+ phone?: string,
+ company: string,
+ country: string,
+ registered: string,
+ lastLogin: string,
+ lastActivity: string,
+ admin: boolean,
+ token: string,
+ resetPasswordToken: string,
+ // Assigned in UI
+ becomeUsed?: boolean
+};
+
+export type NavigationMenuItem = {
+ label: string,
+ icon: string,
+ order: number,
+ hidden?: boolean
+} & (
+ {sref: string, activeSref: string} |
+ {href: string}
+);
+
+export type NavigationMenu = Array<NavigationMenuItem>;
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/public/images/icons/cluster.icon.svg
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/icons/cluster.icon.svg b/modules/web-console/frontend/public/images/icons/cluster.icon.svg
new file mode 100644
index 0000000..7576049
--- /dev/null
+++ b/modules/web-console/frontend/public/images/icons/cluster.icon.svg
@@ -0,0 +1,10 @@
+<svg version="1.1" viewBox="0 0 20 17" xmlns="http://www.w3.org/2000/svg">
+ <g fill="none" fill-rule="evenodd" stroke="currentColor" stroke-width="2">
+ <rect x="8.5" y="1" width="3" height="3" rx="1"/>
+ <rect x="8.5" y="12.25" width="3" height="3" rx="1"/>
+ <rect x="16" y="12.25" width="3" height="3" rx="1"/>
+ <rect x="1" y="12.25" width="3" height="3" rx="1"/>
+ <path d="M10 5v2.5l7.656.05v4.206" stroke-linecap="square" stroke-linejoin="round"/>
+ <path d="M10.156 5v6.756V7.5L2.5 7.55v4.206" stroke-linecap="round" stroke-linejoin="round"/>
+ </g>
+</svg>
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/public/images/icons/connectedClusters.icon.svg
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/icons/connectedClusters.icon.svg b/modules/web-console/frontend/public/images/icons/connectedClusters.icon.svg
deleted file mode 100644
index f405317..0000000
--- a/modules/web-console/frontend/public/images/icons/connectedClusters.icon.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 13"><g fill="none" fill-rule="evenodd"><path fill="currentColor" d="M6 0h4v4H6zm0 9h4v4H6zm6 0h4v4h-4zM0 9h4v4H0z"/><path stroke="currentColor" stroke-linecap="square" d="M8 4v2l6.125.04v3.365"/><path stroke="currentColor" stroke-linecap="square" d="M8.125 4v5.405V6L2 6.04v3.365"/></g></svg>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/public/images/icons/downloadAgent.icon.svg
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/icons/downloadAgent.icon.svg b/modules/web-console/frontend/public/images/icons/downloadAgent.icon.svg
new file mode 100644
index 0000000..afb51ee
--- /dev/null
+++ b/modules/web-console/frontend/public/images/icons/downloadAgent.icon.svg
@@ -0,0 +1,16 @@
+<svg version="1.1" viewBox="0 0 20 18" xmlns="http://www.w3.org/2000/svg">
+ <g fill="none" fill-rule="evenodd">
+ <g transform="translate(-263 -1597)" fill="currentColor">
+ <g transform="translate(235 1485)">
+ <g transform="translate(28 112)">
+ <path d="m-8.7041e-14 9.0435v7.1788c0 0.97787 0.81811 1.7778 1.8182 1.7778h16.364c0.99966 0 1.8178-0.79991 1.8178-1.7778v-7.1788h-20zm1.7103 0h16.472v7.1876h-16.364l-0.10794-7.1876z"/>
+ <g stroke="currentColor" stroke-width=".5">
+ <polygon points="14.7 8.635 14.131 8.0659 10.757 11.44 10.757 5 9.9435 5 9.9435 11.44 6.5692 8.0659 6 8.635 10.35 12.985"/>
+ <polygon points="10.757 3.719 10.757 3 9.9435 3 9.9435 3.719"/>
+ <polygon points="10.757 1.719 10.757 1 9.9435 1 9.9435 1.719"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/public/images/icons/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/icons/index.js b/modules/web-console/frontend/public/images/icons/index.js
index 0951d32..2e41085 100644
--- a/modules/web-console/frontend/public/images/icons/index.js
+++ b/modules/web-console/frontend/public/images/icons/index.js
@@ -21,7 +21,6 @@ export {default as check} from './check.icon.svg';
export {default as checkmark} from './checkmark.icon.svg';
export {default as clock} from './clock.icon.svg';
export {default as collapse} from './collapse.icon.svg';
-export {default as connectedClusters} from './connectedClusters.icon.svg';
export {default as copy} from './copy.icon.svg';
export {default as cross} from './cross.icon.svg';
export {default as csv} from './csv.icon.svg';
@@ -43,3 +42,7 @@ export {default as refresh} from './refresh.icon.svg';
export {default as search} from './search.icon.svg';
export {default as sort} from './sort.icon.svg';
export {default as structure} from './structure.icon.svg';
+export {default as cluster} from './cluster.icon.svg';
+export {default as sql} from './sql.icon.svg';
+export {default as menu} from './menu.icon.svg';
+export {default as downloadAgent} from './downloadAgent.icon.svg';
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/public/images/icons/menu.icon.svg
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/icons/menu.icon.svg b/modules/web-console/frontend/public/images/icons/menu.icon.svg
new file mode 100644
index 0000000..392d42e
--- /dev/null
+++ b/modules/web-console/frontend/public/images/icons/menu.icon.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333332 4.2333332" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(0 -292.77)" fill="currentColor">
+ <rect y="295.95" width="4.2333" height=".52917" style="paint-order:markers fill stroke"/>
+ <rect x="1.1126e-7" y="294.62" width="4.2333" height=".52917" style="paint-order:markers fill stroke"/>
+ <rect y="293.3" width="4.2333" height=".52917" style="paint-order:markers fill stroke"/>
+ </g>
+</svg>
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/public/images/icons/sql.icon.svg
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/icons/sql.icon.svg b/modules/web-console/frontend/public/images/icons/sql.icon.svg
new file mode 100644
index 0000000..bd54eee
--- /dev/null
+++ b/modules/web-console/frontend/public/images/icons/sql.icon.svg
@@ -0,0 +1,3 @@
+<svg version="1.1" viewBox="0 0 20 16" xmlns="http://www.w3.org/2000/svg">
+ <path d="M6.454 9.208c0-.2-.07-.353-.211-.46-.141-.107-.395-.22-.762-.338a5.4 5.4 0 0 1-.871-.351c-.583-.315-.875-.74-.875-1.273 0-.278.079-.525.235-.743a1.53 1.53 0 0 1 .673-.51c.293-.121.622-.183.986-.183.367 0 .694.067.98.2.287.133.51.32.669.562.158.242.238.517.238.825H6.458c0-.235-.074-.417-.222-.548-.148-.13-.357-.196-.625-.196-.258 0-.46.055-.603.164a.517.517 0 0 0-.215.432c0 .167.084.307.252.42.169.113.416.219.743.317.602.181 1.04.406 1.315.674.275.268.413.602.413 1.001 0 .445-.168.793-.505 1.046-.336.253-.788.38-1.357.38-.395 0-.755-.073-1.08-.218a1.708 1.708 0 0 1-.742-.594 1.522 1.522 0 0 1-.255-.875h1.061c0 .567.339.85 1.016.85.251 0 .448-.05.589-.153a.5.5 0 0 0 .211-.429zm5.988-1.103c0 .48-.077.896-.233 1.25-.155.354-.37.637-.645.851l.854.67-.674.596-1.093-.878a2.314 2.314 0 0 1-.388.032c-.426 0-.805-.102-1.14-.307a2.038 2.038 0 0 1-.775-.876c-.183-.38-.276-.816-.279-1.31v-.254c0-.506.091-.95.274-1.335.182-.384.44-.68.772-.885a2.124 2.124 0 0 1 1.14-.309c.429 0 .809.103
1.142.309.332.206.59.5.772.885.182.385.273.828.273 1.331v.23zm-1.072-.233c0-.538-.096-.948-.289-1.227-.193-.28-.468-.42-.825-.42-.355 0-.63.138-.822.414-.193.277-.29.682-.293 1.215v.25c0 .525.097.932.29 1.22.192.29.47.435.832.435.355 0 .628-.14.818-.418.19-.279.287-.685.29-1.219v-.25zm2.906 1.834h2.246v.85h-3.304V5.42h1.058v4.285zM18.182 0H1.818C.818 0 0 .8 0 1.778v12.444C0 15.2.818 16 1.818 16h16.364c1 0 1.818-.8 1.818-1.778V1.778C20 .8 19.182 0 18.182 0zM1.818 1.769h16.364V14.23H1.818V1.77z" fill="currentColor" fill-rule="evenodd"/>
+</svg>
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/public/stylesheets/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/stylesheets/style.scss b/modules/web-console/frontend/public/stylesheets/style.scss
index ce14e45..3f601be 100644
--- a/modules/web-console/frontend/public/stylesheets/style.scss
+++ b/modules/web-console/frontend/public/stylesheets/style.scss
@@ -255,17 +255,70 @@ body {
flex-direction: column;
}
-body > .wrapper,
- // Nested ui-view, like on password reset state
-body > .wrapper > ui-view {
- display: flex;
- flex-direction: column;
+:root {
+ --page-side-padding: 30px;
+}
+
+.wrapper {
+ --header-height: 62px;
+
min-height: 100vh;
+ display: grid;
+ grid-template-columns: auto 1fr;
+ grid-template-rows: auto var(--header-height) 1fr;
+ grid-template-areas: 'notifications notifications' 'header header' 'sidebar content';
+
+ permanent-notifications {
+ grid-area: notifications;
+ }
+
+ web-console-header {
+ grid-area: header;
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 10;
+ transform: translateZ(1px);
+ }
+
+ web-console-sidebar {
+ grid-area: sidebar;
+ transform: translateZ(1px);
+ }
+
+ &>.content {
+ grid-area: content;
+ padding-left: var(--page-side-padding);
+ padding-right: var(--page-side-padding);
+ padding-bottom: var(--page-side-padding);
+ display: flex;
+ flex-direction: column;
+
+ &>ui-view {
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+ }
+ }
+
+ &.wrapper-public {
+ grid-template-columns: 1fr;
+ grid-template-rows: auto var(--header-height) 1fr auto;
+ grid-template-areas: 'notifications' 'header' 'content' 'footer';
+ }
+}
+
+.public-page {
+ margin-left: auto;
+ margin-right: auto;
flex: 1 0 auto;
+ width: 100%;
+ max-width: 530px;
- .body-container {
- flex: 1 0 auto;
- padding-bottom: 30px;
+ .public-page__title {
+ font-size: 38px;
+ font-weight: 300;
+ margin: 30px 0 30px;
}
}
@@ -374,7 +427,6 @@ i.btn {
h1,
h2,
h3 {
- user-select: none;
font-weight: normal;
/* Makes the vertical size of the text the same for all fonts. */
line-height: 1;
@@ -2004,10 +2056,6 @@ html, body {
position: absolute !important;
}
-.demo-mode {
- padding-top: 30px;
-}
-
// Fix for injecting svg icon into BS btn
.btn--with-icon {
display: flex;
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/views/base.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/base.pug b/modules/web-console/frontend/views/base.pug
index 967d469..b14cdac 100644
--- a/modules/web-console/frontend/views/base.pug
+++ b/modules/web-console/frontend/views/base.pug
@@ -14,13 +14,10 @@
See the License for the specific language governing permissions and
limitations under the License.
+permanent-notifications
web-console-header
- web-console-header-left
- include ./includes/header-left
- web-console-header-right
- include ./includes/header-right
+ web-console-header-content
-.container--responsive.body-container.flex-full-height
- div(ui-view='').flex-full-height
+web-console-sidebar
-web-console-footer
+ui-view.content
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/views/includes/header-left.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/includes/header-left.pug b/modules/web-console/frontend/views/includes/header-left.pug
deleted file mode 100644
index 03e0616..0000000
--- a/modules/web-console/frontend/views/includes/header-left.pug
+++ /dev/null
@@ -1,42 +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.
-
-a.wch-nav-item(
- ui-sref='base.configuration.overview'
- ui-sref-active='{active: "base.configuration"}'
-)
- | Configure
-
-.wch-nav-item(ng-if='!$root.user.becomeUsed')
- a(ui-sref='base.sql.tabs.notebooks-list' ui-sref-active='active')
- | Queries
-
-.wch-additional-nav-items(ignite-navbar)
- .wch-nav-item(ng-repeat='item in navbar.items')
- div(ng-if='$root.user.becomeUsed ? item.canBecomed : item.children' ng-click='$event.stopPropagation()'
- ng-class='{active: $state.includes(item.sref)}'
- bs-dropdown='item.children'
- data-placement='bottom-left'
- data-trigger='hover focus'
- data-container='self'
- aria-haspopup='true'
- aria-expanded='false'
- )
- span {{::item.text}}
- span.caret
-
- a(ng-if='$root.user.becomeUsed ? item.canBecomed : !item.children' ui-sref='{{item.sref}}' ui-sref-active='active')
- | {{::item.text}}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/views/includes/header-right.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/includes/header-right.pug b/modules/web-console/frontend/views/includes/header-right.pug
deleted file mode 100644
index d2d89aa..0000000
--- a/modules/web-console/frontend/views/includes/header-right.pug
+++ /dev/null
@@ -1,35 +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.
-
-.wch-demo-toggle(ng-if='!$root.user.becomeUsed' ng-controller='demoController')
- button.btn-ignite.btn-ignite--success(
- ng-if='!IgniteDemoMode'
- ng-click='startDemo()'
- ) Start Demo
-
-web-console-header-extension
-
-.wch-nav-item(ignite-userbar)
- .user-name-wrapper(
- ng-class='{active: $state.includes("base.settings")}'
- ng-click='$event.stopPropagation()'
- bs-dropdown='userbar.items'
- data-placement='bottom-right'
- data-trigger='hover focus'
- data-container='self'
- )
- span {{$root.user.firstName}} {{$root.user.lastName}}
- span.caret
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/views/public.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/public.pug b/modules/web-console/frontend/views/public.pug
new file mode 100644
index 0000000..934ac56
--- /dev/null
+++ b/modules/web-console/frontend/views/public.pug
@@ -0,0 +1,20 @@
+//-
+ 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.
+
+web-console-header(hide-menu-button='true')
+ .web-console-header-content__title Management console for Apache Ignite
+.content(ui-view='page')
+web-console-footer.web-console-footer__page-bottom
\ No newline at end of file
[47/52] [abbrv] ignite git commit: IGNITE-9893 IGNITE-1757
IGNITE-10723 Adding hibernate-5.3 module
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
new file mode 100644
index 0000000..5f54ad0
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
@@ -0,0 +1,441 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import java.util.Map;
+import javax.persistence.Cacheable;
+import javax.persistence.Id;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCompute;
+import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.lang.IgniteRunnable;
+import org.apache.ignite.resources.IgniteInstanceResource;
+import org.apache.ignite.resources.LoggerResource;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+import org.hibernate.boot.MetadataSources;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
+import static org.apache.ignite.cache.hibernate.HibernateL2CacheSelfTest.CONNECTION_URL;
+import static org.apache.ignite.cache.hibernate.HibernateL2CacheSelfTest.hibernateProperties;
+import static org.hibernate.cache.spi.RegionFactory.DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME;
+import static org.hibernate.cache.spi.access.AccessType.NONSTRICT_READ_WRITE;
+
+/**
+ *
+ */
+@RunWith(JUnit4.class)
+public class HibernateL2CacheMultiJvmTest extends GridCommonAbstractTest {
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ if (!getTestIgniteInstanceName(0).equals(igniteInstanceName))
+ cfg.setClientMode(true);
+
+ cfg.setCacheConfiguration(
+ cacheConfiguration(DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME),
+ cacheConfiguration(Entity1.class.getName()),
+ cacheConfiguration(Entity2.class.getName()),
+ cacheConfiguration(Entity3.class.getName())
+ );
+
+ cfg.setMarshaller(new BinaryMarshaller());
+
+ cfg.setPeerClassLoadingEnabled(false);
+
+ return cfg;
+ }
+
+ private CacheConfiguration cacheConfiguration(String cacheName) {
+ CacheConfiguration cfg = new CacheConfiguration();
+ cfg.setName(cacheName);
+ cfg.setCacheMode(PARTITIONED);
+ cfg.setAtomicityMode(ATOMIC);
+ cfg.setWriteSynchronizationMode(FULL_SYNC);
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected boolean isMultiJvm() {
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ startGrid(0);
+
+ startGrid(1);
+ startGrid(2);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ stopAllGrids();
+
+ super.afterTestsStopped();
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testL2Cache() throws Exception {
+ Ignite srv = ignite(0);
+
+ {
+ IgniteCompute client1Compute =
+ srv.compute(srv.cluster().forNodeId(ignite(1).cluster().localNode().id()));
+
+ client1Compute.run(new HibernateInsertRunnable());
+ }
+
+ {
+ IgniteCompute client2Compute =
+ srv.compute(srv.cluster().forNodeId(ignite(2).cluster().localNode().id()));
+
+ client2Compute.run(new HibernateLoadRunnable());
+ }
+
+ {
+ IgniteCompute srvCompute = srv.compute(srv.cluster().forLocal());
+
+ srvCompute.run(new HibernateLoadRunnable());
+ }
+ }
+
+ /**
+ *
+ */
+ private static class HibernateInsertRunnable extends HibernateBaseRunnable {
+ /** {@inheritDoc} */
+ @Override public void run() {
+ SessionFactory sesFactory = startHibernate(ignite.name());
+
+ Session ses = sesFactory.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ for (int i = 0; i < 1; i++) {
+ {
+ Entity1 e = new Entity1();
+ e.setId(i);
+ e.setName("name-" + i);
+
+ ses.save(e);
+ }
+
+ {
+ Entity2 e = new Entity2();
+ e.setId(String.valueOf(i));
+ e.setName("name-" + i);
+
+ ses.save(e);
+ }
+
+ {
+ Entity3 e = new Entity3();
+ e.setId(i);
+ e.setName("name-" + i);
+
+ ses.save(e);
+ }
+ }
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+ }
+ }
+
+ /**
+ *
+ */
+ private static class HibernateLoadRunnable extends HibernateBaseRunnable {
+ /** {@inheritDoc} */
+ @Override public void run() {
+ SessionFactory sesFactory = startHibernate(ignite.name());
+
+ Session ses = sesFactory.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ for (int i = 0; i < 1; i++) {
+ {
+ Entity1 e = (Entity1)ses.load(Entity1.class, i);
+
+ log.info("Found: " + e.getName());
+ }
+ {
+ Entity2 e = (Entity2)ses.load(Entity2.class, String.valueOf(i));
+
+ log.info("Found: " + e.getName());
+ }
+ {
+ Entity3 e = (Entity3)ses.load(Entity3.class, (double)i);
+
+ log.info("Found: " + e.getName());
+ }
+ }
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+ }
+ }
+
+ /**
+ *
+ */
+ private abstract static class HibernateBaseRunnable implements IgniteRunnable {
+ /** */
+ @IgniteInstanceResource
+ protected Ignite ignite;
+
+ /** */
+ @LoggerResource
+ IgniteLogger log;
+
+ /**
+ * @param nodeName Name of the grid providing caches.
+ * @return Session factory.
+ */
+ SessionFactory startHibernate(String nodeName) {
+ log.info("Start hibernate on node: " + nodeName);
+
+ StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
+
+ for (Map.Entry<String, String> e : hibernateProperties(nodeName, NONSTRICT_READ_WRITE.name()).entrySet())
+ builder.applySetting(e.getKey(), e.getValue());
+
+ builder.applySetting("hibernate.connection.url", CONNECTION_URL);
+
+ MetadataSources metadataSources = new MetadataSources(builder.build());
+
+ metadataSources.addAnnotatedClass(Entity1.class);
+ metadataSources.addAnnotatedClass(Entity2.class);
+ metadataSources.addAnnotatedClass(Entity3.class);
+
+ return metadataSources.buildMetadata().buildSessionFactory();
+ }
+ }
+
+ /**
+ * Test Hibernate entity1.
+ */
+ @javax.persistence.Entity
+ @Cacheable
+ @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
+ public static class Entity1 {
+ /** */
+ @Id
+ private int id;
+
+ /** */
+ private String name;
+
+ /**
+ * @return ID.
+ */
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ Entity1 entity1 = (Entity1)o;
+
+ return id == entity1.id;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return id;
+ }
+ }
+
+ /**
+ * Test Hibernate entity1.
+ */
+ @javax.persistence.Entity
+ @Cacheable
+ @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
+ public static class Entity2 {
+ /** */
+ @Id
+ private String id;
+
+ /** */
+ private String name;
+
+ /**
+ * @return ID.
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ Entity2 entity2 = (Entity2)o;
+
+ return id.equals(entity2.id);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return id.hashCode();
+ }
+ }
+
+ /**
+ * Test Hibernate entity1.
+ */
+ @javax.persistence.Entity
+ @Cacheable
+ @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
+ public static class Entity3 {
+ /** */
+ @Id
+ private double id;
+
+ /** */
+ private String name;
+
+ /**
+ * @return ID.
+ */
+ public double getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(double id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ Entity3 entity3 = (Entity3)o;
+
+ return Double.compare(entity3.id, id) == 0;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ long temp = Double.doubleToLongBits(id);
+ return (int)(temp ^ (temp >>> 32));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheSelfTest.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheSelfTest.java
new file mode 100644
index 0000000..ea43ea7
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheSelfTest.java
@@ -0,0 +1,1991 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.OptimisticLockException;
+import javax.persistence.PersistenceException;
+import javax.persistence.SharedCacheMode;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.processors.cache.IgniteCacheProxy;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.hibernate.ObjectNotFoundException;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.annotations.NaturalId;
+import org.hibernate.annotations.NaturalIdCache;
+import org.hibernate.boot.Metadata;
+import org.hibernate.boot.MetadataSources;
+import org.hibernate.boot.registry.StandardServiceRegistry;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.hibernate.cache.spi.access.AccessType;
+import org.hibernate.exception.ConstraintViolationException;
+import org.hibernate.mapping.PersistentClass;
+import org.hibernate.mapping.RootClass;
+import org.hibernate.query.Query;
+import org.hibernate.stat.CacheRegionStatistics;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
+import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.DFLT_ACCESS_TYPE_PROPERTY;
+import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.IGNITE_INSTANCE_NAME_PROPERTY;
+import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.REGION_CACHE_PROPERTY;
+import static org.hibernate.cache.spi.RegionFactory.DEFAULT_QUERY_RESULTS_REGION_UNQUALIFIED_NAME;
+import static org.hibernate.cache.spi.RegionFactory.DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME;
+import static org.hibernate.cfg.AvailableSettings.JPA_SHARED_CACHE_MODE;
+import static org.hibernate.cfg.Environment.CACHE_REGION_FACTORY;
+import static org.hibernate.cfg.Environment.GENERATE_STATISTICS;
+import static org.hibernate.cfg.Environment.HBM2DDL_AUTO;
+import static org.hibernate.cfg.Environment.RELEASE_CONNECTIONS;
+import static org.hibernate.cfg.Environment.USE_QUERY_CACHE;
+import static org.hibernate.cfg.Environment.USE_SECOND_LEVEL_CACHE;
+
+/**
+ *
+ * Tests Hibernate L2 cache.
+ */
+@RunWith(JUnit4.class)
+public class HibernateL2CacheSelfTest extends GridCommonAbstractTest {
+ /** */
+ private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
+
+ /** */
+ public static final String CONNECTION_URL = "jdbc:h2:mem:example;DB_CLOSE_DELAY=-1";
+
+ /** */
+ public static final String ENTITY_NAME = Entity.class.getName();
+
+ /** */
+ public static final String ENTITY2_NAME = Entity2.class.getName();
+
+ /** */
+ public static final String VERSIONED_ENTITY_NAME = VersionedEntity.class.getName();
+
+ /** */
+ public static final String CHILD_ENTITY_NAME = ChildEntity.class.getName();
+
+ /** */
+ public static final String PARENT_ENTITY_NAME = ParentEntity.class.getName();
+
+ /** */
+ public static final String CHILD_COLLECTION_REGION = ENTITY_NAME + ".children";
+
+ /** */
+ public static final String NATURAL_ID_REGION =
+ "org.apache.ignite.cache.hibernate.HibernateL2CacheSelfTest$Entity##NaturalId";
+
+ /** */
+ public static final String NATURAL_ID_REGION2 =
+ "org.apache.ignite.cache.hibernate.HibernateL2CacheSelfTest$Entity2##NaturalId";
+
+ /** */
+ private SessionFactory sesFactory1;
+
+ /** */
+ private SessionFactory sesFactory2;
+
+ /**
+ * First Hibernate test entity.
+ */
+ @javax.persistence.Entity
+ @NaturalIdCache
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ public static class Entity {
+ /** */
+ private int id;
+
+ /** */
+ private String name;
+
+ /** */
+ private Collection<ChildEntity> children;
+
+ /**
+ * Default constructor required by Hibernate.
+ */
+ public Entity() {
+ // No-op.
+ }
+
+ /**
+ * @param id ID.
+ * @param name Name.
+ */
+ public Entity(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ /**
+ * @return ID.
+ */
+ @Id
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Name.
+ */
+ @NaturalId(mutable = true)
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return Children.
+ */
+ @OneToMany(cascade=javax.persistence.CascadeType.ALL, fetch=FetchType.LAZY)
+ @JoinColumn(name="ENTITY_ID")
+ public Collection<ChildEntity> getChildren() {
+ return children;
+ }
+
+ /**
+ * @param children Children.
+ */
+ public void setChildren(Collection<ChildEntity> children) {
+ this.children = children;
+ }
+ }
+
+ /**
+ * Second Hibernate test entity.
+ */
+ @javax.persistence.Entity
+ @NaturalIdCache
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ public static class Entity2 {
+ /** */
+ private int id;
+
+ /** */
+ private String name;
+
+ /** */
+ private Collection<ChildEntity> children;
+
+ /**
+ * Default constructor required by Hibernate.
+ */
+ public Entity2() {
+ // No-op.
+ }
+
+ /**
+ * @param id ID.
+ * @param name Name.
+ */
+ public Entity2(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ /**
+ * @return ID.
+ */
+ @Id
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Name.
+ */
+ @NaturalId(mutable = true)
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ /**
+ * Hibernate child entity referenced by {@link Entity}.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings("PublicInnerClass")
+ public static class ChildEntity {
+ /** */
+ private int id;
+
+ /**
+ * Default constructor required by Hibernate.
+ */
+ public ChildEntity() {
+ // No-op.
+ }
+
+ /**
+ * @param id ID.
+ */
+ public ChildEntity(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return ID.
+ */
+ @Id
+ @GeneratedValue
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+ }
+
+ /**
+ * Hibernate entity referencing {@link Entity}.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings("PublicInnerClass")
+ public static class ParentEntity {
+ /** */
+ private int id;
+
+ /** */
+ private Entity entity;
+
+ /**
+ * Default constructor required by Hibernate.
+ */
+ public ParentEntity() {
+ // No-op.
+ }
+
+ /**
+ * @param id ID.
+ * @param entity Referenced entity.
+ */
+ public ParentEntity(int id, Entity entity) {
+ this.id = id;
+ this.entity = entity;
+ }
+
+ /**
+ * @return ID.
+ */
+ @Id
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Referenced entity.
+ */
+ @OneToOne
+ public Entity getEntity() {
+ return entity;
+ }
+
+ /**
+ * @param entity Referenced entity.
+ */
+ public void setEntity(Entity entity) {
+ this.entity = entity;
+ }
+ }
+
+ /**
+ * Hibernate entity.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ public static class VersionedEntity {
+ /** */
+ private int id;
+
+ /** */
+ private long ver;
+
+ /**
+ * Default constructor required by Hibernate.
+ */
+ public VersionedEntity() {
+ }
+
+ /**
+ * @param id ID.
+ */
+ public VersionedEntity(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return ID.
+ */
+ @Id
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Version.
+ */
+ @javax.persistence.Version
+ public long getVersion() {
+ return ver;
+ }
+
+ /**
+ * @param ver Version.
+ */
+ public void setVersion(long ver) {
+ this.ver = ver;
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
+
+ discoSpi.setIpFinder(IP_FINDER);
+
+ cfg.setDiscoverySpi(discoSpi);
+
+ cfg.setCacheConfiguration(generalRegionConfiguration(DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME),
+ generalRegionConfiguration(DEFAULT_QUERY_RESULTS_REGION_UNQUALIFIED_NAME),
+ transactionalRegionConfiguration(ENTITY_NAME),
+ transactionalRegionConfiguration(ENTITY2_NAME),
+ transactionalRegionConfiguration(VERSIONED_ENTITY_NAME),
+ transactionalRegionConfiguration(PARENT_ENTITY_NAME),
+ transactionalRegionConfiguration(CHILD_ENTITY_NAME),
+ transactionalRegionConfiguration(CHILD_COLLECTION_REGION),
+ transactionalRegionConfiguration(NATURAL_ID_REGION),
+ transactionalRegionConfiguration(NATURAL_ID_REGION2));
+
+ return cfg;
+ }
+
+ /**
+ * @param regionName Region name.
+ * @return Cache configuration for {@link IgniteGeneralDataRegion}.
+ */
+ private CacheConfiguration generalRegionConfiguration(String regionName) {
+ CacheConfiguration cfg = new CacheConfiguration();
+
+ cfg.setName(regionName);
+
+ cfg.setCacheMode(PARTITIONED);
+
+ cfg.setAtomicityMode(ATOMIC);
+
+ cfg.setWriteSynchronizationMode(FULL_SYNC);
+
+ cfg.setBackups(1);
+
+ cfg.setStatisticsEnabled(true);
+
+ //cfg.setAffinity(new RendezvousAffinityFunction(false, 10));
+
+ return cfg;
+ }
+
+ /**
+ * @param regionName Region name.
+ * @return Transactional Cache configuration
+ */
+ protected CacheConfiguration transactionalRegionConfiguration(String regionName) {
+ CacheConfiguration cfg = new CacheConfiguration();
+
+ cfg.setName(regionName);
+
+ cfg.setCacheMode(PARTITIONED);
+
+ cfg.setAtomicityMode(TRANSACTIONAL);
+
+ cfg.setWriteSynchronizationMode(FULL_SYNC);
+
+ cfg.setBackups(1);
+
+ cfg.setStatisticsEnabled(true);
+
+ cfg.setAffinity(new RendezvousAffinityFunction(false, 10));
+
+ return cfg;
+ }
+
+ /**
+ * @return Hibernate registry builder.
+ */
+ protected StandardServiceRegistryBuilder registryBuilder() {
+ StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
+
+ builder.applySetting("hibernate.connection.url", CONNECTION_URL);
+
+ return builder;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ startGrids(2);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ stopAllGrids();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ cleanup();
+ }
+
+ /**
+ * @return Hibernate L2 cache access types to test.
+ */
+ protected AccessType[] accessTypes() {
+ return new AccessType[]{AccessType.READ_ONLY, AccessType.NONSTRICT_READ_WRITE, AccessType.READ_WRITE};
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testCollectionCache() throws Exception {
+ for (AccessType accessType : accessTypes())
+ testCollectionCache(accessType);
+ }
+
+ /**
+ * @param accessType Cache access type.
+ * @throws Exception If failed.
+ */
+ @SuppressWarnings("unchecked")
+ private void testCollectionCache(AccessType accessType) throws Exception {
+ createSessionFactories(accessType);
+
+ Map<Integer, Integer> idToChildCnt = new HashMap<>();
+
+ try {
+ Session ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ for (int i = 0; i < 3; i++) {
+ Entity e = new Entity(i, "name-" + i);
+
+ Collection<ChildEntity> children = new ArrayList<>();
+
+ for (int j = 0; j < 3; j++)
+ children.add(new ChildEntity());
+
+ e.setChildren(children);
+
+ idToChildCnt.put(e.getId(), e.getChildren().size());
+
+ ses.save(e);
+ }
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ // Load children, this should populate cache.
+
+ ses = sesFactory1.openSession();
+
+ try {
+ List<Entity> list = ses.createCriteria(ENTITY_NAME).list();
+
+ assertEquals(idToChildCnt.size(), list.size());
+
+ for (Entity e : list)
+ assertEquals((int) idToChildCnt.get(e.getId()), e.getChildren().size());
+ }
+ finally {
+ ses.close();
+ }
+
+ assertCollectionCache(sesFactory2, idToChildCnt, 3, 0);
+ assertCollectionCache(sesFactory1, idToChildCnt, 3, 0);
+
+ if (accessType == AccessType.READ_ONLY)
+ return;
+
+ // Update children for one entity.
+
+ ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ Entity e1 = (Entity)ses.load(Entity.class, 1);
+
+ e1.getChildren().remove(e1.getChildren().iterator().next());
+
+ ses.update(e1);
+
+ idToChildCnt.put(e1.getId(), e1.getChildren().size());
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertCollectionCache(sesFactory2, idToChildCnt, 2, 1); // After update collection cache entry is removed.
+ assertCollectionCache(sesFactory1, idToChildCnt, 3, 0); // 'assertCollectionCache' loads children in cache.
+
+ // Update children for the same entity using another SessionFactory.
+
+ ses = sesFactory2.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ Entity e1 = (Entity)ses.load(Entity.class, 1);
+
+ e1.getChildren().remove(e1.getChildren().iterator().next());
+
+ ses.update(e1);
+
+ idToChildCnt.put(e1.getId(), e1.getChildren().size());
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertCollectionCache(sesFactory2, idToChildCnt, 2, 1); // After update collection cache entry is removed.
+ assertCollectionCache(sesFactory1, idToChildCnt, 3, 0); // 'assertCollectionCache' loads children in cache.
+ }
+ finally {
+ cleanup();
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testEntityCache() throws Exception {
+ for (AccessType accessType : accessTypes())
+ testEntityCache(accessType);
+ }
+
+ /**
+ * @param accessType Cache access type.
+ * @throws Exception If failed.
+ */
+ private void testEntityCache(AccessType accessType) throws Exception {
+ createSessionFactories(accessType);
+
+ Map<Integer, String> idToName = new HashMap<>();
+
+ try {
+ Session ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ for (int i = 0; i < 2; i++) {
+ String name = "name-" + i;
+
+ ses.save(new Entity(i, name));
+
+ idToName.put(i, name);
+ }
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName, 100);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName, 100);
+
+ if (accessType == AccessType.READ_ONLY)
+ return;
+
+ ses = sesFactory1.openSession();
+
+ try {
+ // Updates and inserts in single transaction.
+
+ Transaction tx = ses.beginTransaction();
+
+ Entity e0 = (Entity)ses.load(Entity.class, 0);
+
+ e0.setName("name-0-changed1");
+
+ ses.update(e0);
+
+ idToName.put(0, e0.getName());
+
+ ses.save(new Entity(2, "name-2"));
+
+ idToName.put(2, "name-2");
+
+ Entity e1 = (Entity)ses.load(Entity.class, 1);
+
+ e1.setName("name-1-changed1");
+
+ ses.update(e1);
+
+ idToName.put(1, e1.getName());
+
+ ses.save(new Entity(3, "name-3"));
+
+ idToName.put(3, "name-3");
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName);
+
+ ses = sesFactory1.openSession();
+
+ try {
+ // Updates, inserts and deletes in single transaction.
+
+ Transaction tx = ses.beginTransaction();
+
+ ses.save(new Entity(4, "name-4"));
+
+ idToName.put(4, "name-4");
+
+ Entity e0 = (Entity)ses.load(Entity.class, 0);
+
+ e0.setName("name-0-changed2");
+
+ ses.update(e0);
+
+ idToName.put(e0.getId(), e0.getName());
+
+ ses.delete(ses.load(Entity.class, 1));
+
+ idToName.remove(1);
+
+ Entity e2 = (Entity)ses.load(Entity.class, 2);
+
+ e2.setName("name-2-changed1");
+
+ ses.update(e2);
+
+ idToName.put(e2.getId(), e2.getName());
+
+ ses.delete(ses.load(Entity.class, 3));
+
+ idToName.remove(3);
+
+ ses.save(new Entity(5, "name-5"));
+
+ idToName.put(5, "name-5");
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName, 1, 3);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName, 1, 3);
+
+ // Try to update the same entity using another SessionFactory.
+
+ ses = sesFactory2.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ Entity e0 = (Entity)ses.load(Entity.class, 0);
+
+ e0.setName("name-0-changed3");
+
+ ses.update(e0);
+
+ idToName.put(e0.getId(), e0.getName());
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName);
+ }
+ finally {
+ cleanup();
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testTwoEntitiesSameCache() throws Exception {
+ for (AccessType accessType : accessTypes())
+ testTwoEntitiesSameCache(accessType);
+ }
+
+ /**
+ * @param accessType Cache access type.
+ * @throws Exception If failed.
+ */
+ private void testTwoEntitiesSameCache(AccessType accessType) throws Exception {
+ createSessionFactories(accessType);
+
+ try {
+ Session ses = sesFactory1.openSession();
+
+ Map<Integer, String> idToName1 = new HashMap<>();
+ Map<Integer, String> idToName2 = new HashMap<>();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ for (int i = 0; i < 2; i++) {
+ String name = "name-" + i;
+
+ ses.save(new Entity(i, name));
+ ses.save(new Entity2(i, name));
+
+ idToName1.put(i, name);
+ idToName2.put(i, name);
+ }
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName1, 100);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName1, 100);
+
+ assertEntityCache(ENTITY2_NAME, sesFactory2, idToName2, 100);
+ assertEntityCache(ENTITY2_NAME, sesFactory1, idToName2, 100);
+
+ if (accessType == AccessType.READ_ONLY)
+ return;
+
+ ses = sesFactory1.openSession();
+
+ try {
+ // Updates both entities in single transaction.
+
+ Transaction tx = ses.beginTransaction();
+
+ Entity e = (Entity)ses.load(Entity.class, 0);
+
+ e.setName("name-0-changed1");
+
+ ses.update(e);
+
+ Entity2 e2 = (Entity2)ses.load(Entity2.class, 0);
+
+ e2.setName("name-e2-0-changed1");
+
+ ses.update(e2);
+
+ idToName1.put(0, e.getName());
+ idToName2.put(0, e2.getName());
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName1, 100);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName1, 100);
+
+ assertEntityCache(ENTITY2_NAME, sesFactory2, idToName2, 100);
+ assertEntityCache(ENTITY2_NAME, sesFactory1, idToName2, 100);
+
+ ses = sesFactory1.openSession();
+
+ try {
+ // Remove entity1 and insert entity2 in single transaction.
+
+ Transaction tx = ses.beginTransaction();
+
+ Entity e = (Entity)ses.load(Entity.class, 0);
+
+ ses.delete(e);
+
+ Entity2 e2 = new Entity2(2, "name-2");
+
+ ses.save(e2);
+
+ idToName1.remove(0);
+ idToName2.put(2, e2.getName());
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName1, 0, 100);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName1, 0, 100);
+
+ assertEntityCache(ENTITY2_NAME, sesFactory2, idToName2, 100);
+ assertEntityCache(ENTITY2_NAME, sesFactory1, idToName2, 100);
+
+ ses = sesFactory1.openSession();
+
+ Transaction tx = ses.beginTransaction();
+
+ try {
+ // Update, remove, insert in single transaction, transaction fails.
+
+ Entity e = (Entity)ses.load(Entity.class, 1);
+
+ e.setName("name-1-changed1");
+
+ ses.update(e); // Valid update.
+
+ ses.save(new Entity(2, "name-2")); // Valid insert.
+
+ ses.delete(ses.load(Entity2.class, 0)); // Valid delete.
+
+ Entity2 e2 = (Entity2)ses.load(Entity2.class, 1);
+
+ e2.setName("name-2"); // Invalid update, not-unique name.
+
+ ses.update(e2);
+
+ tx.commit();
+
+ fail("Commit must fail.");
+ }
+ catch (PersistenceException e) {
+ assertEquals(ConstraintViolationException.class, e.getCause().getClass());
+ log.info("Expected exception: " + e);
+
+ tx.rollback();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName1, 0, 2, 100);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName1, 0, 2, 100);
+
+ assertEntityCache(ENTITY2_NAME, sesFactory2, idToName2, 100);
+ assertEntityCache(ENTITY2_NAME, sesFactory1, idToName2, 100);
+
+ ses = sesFactory2.openSession();
+
+ try {
+ // Update, remove, insert in single transaction.
+
+ tx = ses.beginTransaction();
+
+ Entity e = (Entity)ses.load(Entity.class, 1);
+
+ e.setName("name-1-changed1");
+
+ ses.update(e);
+
+ idToName1.put(1, e.getName());
+
+ ses.save(new Entity(2, "name-2"));
+
+ idToName1.put(2, "name-2");
+
+ ses.delete(ses.load(Entity2.class, 0));
+
+ idToName2.remove(0);
+
+ Entity2 e2 = (Entity2)ses.load(Entity2.class, 1);
+
+ e2.setName("name-e2-2-changed");
+
+ ses.update(e2);
+
+ idToName2.put(1, e2.getName());
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName1, 0, 100);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName1, 0, 100);
+
+ assertEntityCache(ENTITY2_NAME, sesFactory2, idToName2, 0, 100);
+ assertEntityCache(ENTITY2_NAME, sesFactory1, idToName2, 0, 100);
+ }
+ finally {
+ cleanup();
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testVersionedEntity() throws Exception {
+ for (AccessType accessType : accessTypes())
+ testVersionedEntity(accessType);
+ }
+
+ /**
+ * @param accessType Cache access type.
+ * @throws Exception If failed.
+ */
+ private void testVersionedEntity(AccessType accessType) throws Exception {
+ createSessionFactories(accessType);
+
+ try {
+ Session ses = sesFactory1.openSession();
+
+ VersionedEntity e0 = new VersionedEntity(0);
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ ses.save(e0);
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ ses = sesFactory1.openSession();
+
+ long ver;
+
+ try {
+ ver = ((VersionedEntity)ses.load(VersionedEntity.class, 0)).getVersion();
+ }
+ finally {
+ ses.close();
+ }
+
+ CacheRegionStatistics stats1 =
+ sesFactory1.getStatistics().getCacheRegionStatistics(VERSIONED_ENTITY_NAME);
+ CacheRegionStatistics stats2 =
+ sesFactory2.getStatistics().getCacheRegionStatistics(VERSIONED_ENTITY_NAME);
+
+ assertEquals(1, stats1.getElementCountInMemory());
+ assertEquals(1, stats2.getElementCountInMemory());
+
+ ses = sesFactory2.openSession();
+
+ try {
+ assertEquals(ver, ((VersionedEntity)ses.load(VersionedEntity.class, 0)).getVersion());
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEquals(1, stats2.getElementCountInMemory());
+ assertEquals(1, stats2.getHitCount());
+
+ if (accessType == AccessType.READ_ONLY)
+ return;
+
+ e0.setVersion(ver - 1);
+
+ ses = sesFactory1.openSession();
+
+ Transaction tx = ses.beginTransaction();
+
+ try {
+ ses.update(e0);
+
+ tx.commit();
+
+ fail("Commit must fail.");
+ }
+ catch (OptimisticLockException e) {
+ log.info("Expected exception: " + e);
+ }
+ finally {
+ tx.rollback();
+
+ ses.close();
+ }
+
+ sesFactory1.getStatistics().clear();
+
+ stats1 = sesFactory1.getStatistics().getCacheRegionStatistics(VERSIONED_ENTITY_NAME);
+
+ ses = sesFactory1.openSession();
+
+ try {
+ assertEquals(ver, ((VersionedEntity)ses.load(VersionedEntity.class, 0)).getVersion());
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEquals(1, stats1.getElementCountInMemory());
+ assertEquals(1, stats1.getHitCount());
+ assertEquals(1, stats2.getElementCountInMemory());
+ assertEquals(1, stats2.getHitCount());
+ }
+ finally {
+ cleanup();
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testNaturalIdCache() throws Exception {
+ for (AccessType accessType : accessTypes())
+ testNaturalIdCache(accessType);
+ }
+
+ /**
+ * @param accessType Cache access type.
+ * @throws Exception If failed.
+ */
+ private void testNaturalIdCache(AccessType accessType) throws Exception {
+ createSessionFactories(accessType);
+
+ Map<String, Integer> nameToId = new HashMap<>();
+
+ try {
+ Session ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ for (int i = 0; i < 3; i++) {
+ String name = "name-" + i;
+
+ ses.save(new Entity(i, name));
+
+ nameToId.put(name, i);
+ }
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ ses = sesFactory1.openSession();
+
+ try {
+ for (Map.Entry<String, Integer> e : nameToId.entrySet())
+ ((Entity) ses.bySimpleNaturalId(Entity.class).load(e.getKey())).getId();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertNaturalIdCache(sesFactory2, nameToId, "name-100");
+ assertNaturalIdCache(sesFactory1, nameToId, "name-100");
+
+ if (accessType == AccessType.READ_ONLY)
+ return;
+
+ // Update naturalId.
+
+ ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ Entity e1 = (Entity)ses.load(Entity.class, 1);
+
+ nameToId.remove(e1.getName());
+
+ e1.setName("name-1-changed1");
+
+ nameToId.put(e1.getName(), e1.getId());
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertNaturalIdCache(sesFactory2, nameToId, "name-1");
+ assertNaturalIdCache(sesFactory1, nameToId, "name-1");
+
+ // Update entity using another SessionFactory.
+
+ ses = sesFactory2.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ Entity e1 = (Entity)ses.load(Entity.class, 1);
+
+ nameToId.remove(e1.getName());
+
+ e1.setName("name-1-changed2");
+
+ nameToId.put(e1.getName(), e1.getId());
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertNaturalIdCache(sesFactory2, nameToId, "name-1-changed1");
+ assertNaturalIdCache(sesFactory1, nameToId, "name-1-changed1");
+
+ // Try invalid NaturalId update.
+
+ ses = sesFactory1.openSession();
+
+ Transaction tx = ses.beginTransaction();
+
+ try {
+ Entity e1 = (Entity)ses.load(Entity.class, 1);
+
+ e1.setName("name-0"); // Invalid update (duplicated name).
+
+ tx.commit();
+
+ fail("Commit must fail.");
+ }
+ catch (PersistenceException e) {
+ assertEquals(ConstraintViolationException.class, e.getCause().getClass());
+ log.info("Expected exception: " + e);
+
+ tx.rollback();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertNaturalIdCache(sesFactory2, nameToId);
+ assertNaturalIdCache(sesFactory1, nameToId);
+
+ // Delete entity.
+
+ ses = sesFactory2.openSession();
+
+ try {
+ tx = ses.beginTransaction();
+
+ Entity e2 = (Entity)ses.load(Entity.class, 2);
+
+ ses.delete(e2);
+
+ nameToId.remove(e2.getName());
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertNaturalIdCache(sesFactory2, nameToId, "name-2");
+ }
+ finally {
+ cleanup();
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testEntityCacheTransactionFails() throws Exception {
+ for (AccessType accessType : accessTypes())
+ testEntityCacheTransactionFails(accessType);
+ }
+
+ /**
+ * @param accessType Cache access type.
+ * @throws Exception If failed.
+ */
+ private void testEntityCacheTransactionFails(AccessType accessType) throws Exception {
+ createSessionFactories(accessType);
+
+ Map<Integer, String> idToName = new HashMap<>();
+
+ try {
+ Session ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ for (int i = 0; i < 3; i++) {
+ String name = "name-" + i;
+
+ ses.save(new Entity(i, name));
+
+ idToName.put(i, name);
+ }
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName, 100);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName, 100);
+
+ ses = sesFactory1.openSession();
+
+ Transaction tx = ses.beginTransaction();
+
+ try {
+ ses.save(new Entity(3, "name-3")); // Valid insert.
+
+ ses.save(new Entity(0, "name-0")); // Invalid insert (duplicated ID).
+
+ tx.commit();
+
+ fail("Commit must fail.");
+ }
+ catch (PersistenceException e) {
+ assertEquals(ConstraintViolationException.class, e.getCause().getClass());
+ log.info("Expected exception: " + e);
+
+ tx.rollback();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName, 3);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName, 3);
+
+ if (accessType == AccessType.READ_ONLY)
+ return;
+
+ ses = sesFactory1.openSession();
+
+ tx = ses.beginTransaction();
+
+ try {
+ Entity e0 = (Entity)ses.load(Entity.class, 0);
+ Entity e1 = (Entity)ses.load(Entity.class, 1);
+
+ e0.setName("name-10"); // Valid update.
+ e1.setName("name-2"); // Invalid update (violates unique constraint).
+
+ ses.update(e0);
+ ses.update(e1);
+
+ tx.commit();
+
+ fail("Commit must fail.");
+ }
+ catch (PersistenceException e) {
+ assertEquals(ConstraintViolationException.class, e.getCause().getClass());
+ log.info("Expected exception: " + e);
+
+ tx.rollback();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName);
+
+ ses = sesFactory1.openSession();
+
+ try {
+ // Create parent entity referencing Entity with ID = 0.
+
+ tx = ses.beginTransaction();
+
+ ses.save(new ParentEntity(0, (Entity) ses.load(Entity.class, 0)));
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ ses = sesFactory1.openSession();
+
+ tx = ses.beginTransaction();
+
+ try {
+ ses.save(new Entity(3, "name-3")); // Valid insert.
+
+ Entity e1 = (Entity)ses.load(Entity.class, 1);
+
+ e1.setName("name-10"); // Valid update.
+
+ ses.delete(ses.load(Entity.class, 0)); // Invalid delete (there is a parent entity referencing it).
+
+ tx.commit();
+
+ fail("Commit must fail.");
+ }
+ catch (PersistenceException e) {
+ assertEquals(ConstraintViolationException.class, e.getCause().getClass());
+ log.info("Expected exception: " + e);
+
+ tx.rollback();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName, 3);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName, 3);
+
+ ses = sesFactory1.openSession();
+
+ tx = ses.beginTransaction();
+
+ try {
+ ses.delete(ses.load(Entity.class, 1)); // Valid delete.
+
+ idToName.remove(1);
+
+ ses.delete(ses.load(Entity.class, 0)); // Invalid delete (there is a parent entity referencing it).
+
+ tx.commit();
+
+ fail("Commit must fail.");
+ }
+ catch (PersistenceException e) {
+ assertEquals(ConstraintViolationException.class, e.getCause().getClass());
+ log.info("Expected exception: " + e);
+
+ tx.rollback();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEntityCache(ENTITY_NAME, sesFactory2, idToName);
+ assertEntityCache(ENTITY_NAME, sesFactory1, idToName);
+ }
+ finally {
+ cleanup();
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testQueryCache() throws Exception {
+ for (AccessType accessType : accessTypes())
+ testQueryCache(accessType);
+ }
+
+ /**
+ * @param accessType Cache access type.
+ * @throws Exception If failed.
+ */
+ private void testQueryCache(AccessType accessType) throws Exception {
+ createSessionFactories(accessType);
+
+ try {
+ Session ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ for (int i = 0; i < 5; i++)
+ ses.save(new Entity(i, "name-" + i));
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ // This sleep is needed in the case that the transaction above completes and the next transaction
+ // starts in less than 1 ms, meaning the transaction timestamps are the same.
+ // In this scenario the entity update time == query cache update time since the times are stored
+ // using the transaction start time. If those values are equal then the query cache will not be
+ // used in the third transaction and the failure will manifest itself in this assertion
+ // 'assertEquals(2, sesFactory2.getStatistics().getQueryCacheHitCount());'
+ // This behavior is in TimestampsCacheEnabledImpl.isUpToDate() line: if ( lastUpdate >= timestamp ) {...}
+ // It is not a hibernate bug, ms just doesn't have the best time resolution.
+ // The way to fix it may be to update the HibernateRegionFactory.nextTimestamp()
+ // to return a microsecond timestamp. This may be doable in java 9.
+ Thread.sleep(1);
+
+ // Run some queries.
+
+ ses = sesFactory1.openSession();
+
+ try {
+ Query qry1 = ses.createQuery("from " + ENTITY_NAME + " where id > 2");
+
+ qry1.setCacheable(true);
+
+ assertEquals(2, qry1.list().size());
+
+ Query qry2 = ses.createQuery("from " + ENTITY_NAME + " where name = 'name-0'");
+
+ qry2.setCacheable(true);
+
+ assertEquals(1, qry2.list().size());
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEquals(0, sesFactory1.getStatistics().getQueryCacheHitCount());
+ assertEquals(2, sesFactory1.getStatistics().getQueryCacheMissCount());
+ assertEquals(2, sesFactory1.getStatistics().getQueryCachePutCount());
+
+ // Run queries using another SessionFactory. The first two queries should now be cached
+
+ ses = sesFactory2.openSession();
+
+ try {
+ Query qry1 = ses.createQuery("from " + ENTITY_NAME + " where id > 2");
+
+ qry1.setCacheable(true);
+
+ assertEquals(2, qry1.list().size());
+
+ Query qry2 = ses.createQuery("from " + ENTITY_NAME + " where name = 'name-0'");
+
+ qry2.setCacheable(true);
+
+ assertEquals(1, qry2.list().size());
+
+ Query qry3 = ses.createQuery("from " + ENTITY_NAME + " where id > 1");
+
+ qry3.setCacheable(true);
+
+ assertEquals(3, qry3.list().size());
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEquals(2, sesFactory2.getStatistics().getQueryCacheHitCount());
+ assertEquals(1, sesFactory2.getStatistics().getQueryCacheMissCount());
+ assertEquals(1, sesFactory2.getStatistics().getQueryCachePutCount());
+
+ // Update entity, it should invalidate query cache.
+
+ ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ ses.save(new Entity(5, "name-5"));
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ // Run queries.
+
+ ses = sesFactory1.openSession();
+
+ sesFactory1.getStatistics().clear();
+
+ try {
+ Query qry1 = ses.createQuery("from " + ENTITY_NAME + " where id > 2");
+
+ qry1.setCacheable(true);
+
+ assertEquals(3, qry1.list().size());
+
+ Query qry2 = ses.createQuery("from " + ENTITY_NAME + " where name = 'name-0'");
+
+ qry2.setCacheable(true);
+
+ assertEquals(1, qry2.list().size());
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEquals(0, sesFactory1.getStatistics().getQueryCacheHitCount());
+ assertEquals(2, sesFactory1.getStatistics().getQueryCacheMissCount());
+ assertEquals(2, sesFactory1.getStatistics().getQueryCachePutCount());
+
+ // Clear query cache using another SessionFactory.
+
+ sesFactory2.getCache().evictDefaultQueryRegion();
+
+ ses = sesFactory1.openSession();
+
+ // Run queries again.
+
+ sesFactory1.getStatistics().clear();
+
+ try {
+ Query qry1 = ses.createQuery("from " + ENTITY_NAME + " where id > 2");
+
+ qry1.setCacheable(true);
+
+ assertEquals(3, qry1.list().size());
+
+ Query qry2 = ses.createQuery("from " + ENTITY_NAME + " where name = 'name-0'");
+
+ qry2.setCacheable(true);
+
+ assertEquals(1, qry2.list().size());
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEquals(0, sesFactory1.getStatistics().getQueryCacheHitCount());
+ assertEquals(2, sesFactory1.getStatistics().getQueryCacheMissCount());
+ assertEquals(2, sesFactory1.getStatistics().getQueryCachePutCount());
+ }
+ finally {
+ cleanup();
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testRegionClear() throws Exception {
+ for (AccessType accessType : accessTypes())
+ testRegionClear(accessType);
+ }
+
+ /**
+ * @param accessType Cache access type.
+ * @throws Exception If failed.
+ */
+ private void testRegionClear(AccessType accessType) throws Exception {
+ createSessionFactories(accessType);
+
+ try {
+ final int ENTITY_CNT = 100;
+
+ Session ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ for (int i = 0; i < ENTITY_CNT; i++) {
+ Entity e = new Entity(i, "name-" + i);
+
+ Collection<ChildEntity> children = new ArrayList<>();
+
+ for (int j = 0; j < 3; j++)
+ children.add(new ChildEntity());
+
+ e.setChildren(children);
+
+ ses.save(e);
+ }
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ loadEntities(sesFactory2, ENTITY_CNT);
+
+ CacheRegionStatistics stats1 = sesFactory1.getStatistics().getCacheRegionStatistics(ENTITY_NAME);
+ CacheRegionStatistics stats2 = sesFactory2.getStatistics().getCacheRegionStatistics(ENTITY_NAME);
+
+ CacheRegionStatistics idStats1 =
+ sesFactory1.getStatistics().getCacheRegionStatistics(NATURAL_ID_REGION);
+ CacheRegionStatistics idStats2 =
+ sesFactory2.getStatistics().getCacheRegionStatistics(NATURAL_ID_REGION);
+
+ CacheRegionStatistics colStats1 =
+ sesFactory1.getStatistics().getDomainDataRegionStatistics(CHILD_COLLECTION_REGION);
+ CacheRegionStatistics colStats2 =
+ sesFactory2.getStatistics().getDomainDataRegionStatistics(CHILD_COLLECTION_REGION);
+
+ assertEquals(ENTITY_CNT, stats1.getElementCountInMemory());
+ assertEquals(ENTITY_CNT, stats2.getElementCountInMemory());
+
+ assertEquals(ENTITY_CNT, idStats1.getElementCountInMemory());
+ assertEquals(ENTITY_CNT, idStats2.getElementCountInMemory());
+
+ assertEquals(ENTITY_CNT, colStats1.getElementCountInMemory());
+ assertEquals(ENTITY_CNT, colStats2.getElementCountInMemory());
+
+ // Test cache is cleared after update query.
+
+ ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ ses.createQuery("delete from " + ENTITY_NAME + " where name='no such name'").executeUpdate();
+
+ ses.createQuery("delete from " + ChildEntity.class.getName() + " where id=-1").executeUpdate();
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ assertEquals(0, stats1.getElementCountInMemory());
+ assertEquals(0, stats2.getElementCountInMemory());
+
+ assertEquals(0, idStats1.getElementCountInMemory());
+ assertEquals(0, idStats2.getElementCountInMemory());
+
+ assertEquals(0, colStats1.getElementCountInMemory());
+ assertEquals(0, colStats2.getElementCountInMemory());
+
+ // Load some data in cache.
+
+ loadEntities(sesFactory1, 10);
+
+ assertEquals(10, stats1.getElementCountInMemory());
+ assertEquals(10, stats2.getElementCountInMemory());
+ assertEquals(10, idStats1.getElementCountInMemory());
+ assertEquals(10, idStats2.getElementCountInMemory());
+
+ // Test evictAll method.
+
+ sesFactory2.getCache().evictEntityRegion(ENTITY_NAME);
+
+ assertEquals(0, stats1.getElementCountInMemory());
+ assertEquals(0, stats2.getElementCountInMemory());
+
+ sesFactory2.getCache().evictNaturalIdRegion(ENTITY_NAME);
+
+ assertEquals(0, idStats1.getElementCountInMemory());
+ assertEquals(0, idStats2.getElementCountInMemory());
+
+ sesFactory2.getCache().evictCollectionRegion(CHILD_COLLECTION_REGION);
+
+ assertEquals(0, colStats1.getElementCountInMemory());
+ assertEquals(0, colStats2.getElementCountInMemory());
+ }
+ finally {
+ cleanup();
+ }
+ }
+
+ /**
+ * @param sesFactory Session factory.
+ * @param nameToId Name-ID mapping.
+ * @param absentNames Absent entities' names.
+ */
+ private void assertNaturalIdCache(SessionFactory sesFactory, Map<String, Integer> nameToId, String... absentNames) {
+ sesFactory.getStatistics().clear();
+
+ CacheRegionStatistics stats = sesFactory.getStatistics().getCacheRegionStatistics(NATURAL_ID_REGION);
+
+ long hitBefore = stats.getHitCount();
+
+ long missBefore = stats.getMissCount();
+
+ final Session ses = sesFactory.openSession();
+
+ try {
+ for (Map.Entry<String, Integer> e : nameToId.entrySet())
+ assertEquals((int) e.getValue(), ((Entity) ses.bySimpleNaturalId(Entity.class).load(e.getKey())).getId());
+
+ for (String name : absentNames)
+ assertNull((ses.bySimpleNaturalId(Entity.class).load(name)));
+
+ assertEquals(nameToId.size() + hitBefore, stats.getHitCount());
+
+ assertEquals(absentNames.length + missBefore, stats.getMissCount());
+ }
+ finally {
+ ses.close();
+ }
+ }
+
+ /**
+ * @param sesFactory Session factory.
+ * @param idToChildCnt Number of children per entity.
+ * @param expHit Expected cache hits.
+ * @param expMiss Expected cache misses.
+ */
+ @SuppressWarnings("unchecked")
+ private void assertCollectionCache(SessionFactory sesFactory, Map<Integer, Integer> idToChildCnt, int expHit,
+ int expMiss) {
+ sesFactory.getStatistics().clear();
+
+ Session ses = sesFactory.openSession();
+
+ try {
+ for(Map.Entry<Integer, Integer> e : idToChildCnt.entrySet()) {
+ Entity entity = (Entity)ses.load(Entity.class, e.getKey());
+
+ assertEquals((int)e.getValue(), entity.getChildren().size());
+ }
+ }
+ finally {
+ ses.close();
+ }
+
+ CacheRegionStatistics stats = sesFactory.getStatistics().getCacheRegionStatistics(CHILD_COLLECTION_REGION);
+
+ assertEquals(expHit, stats.getHitCount());
+
+ assertEquals(expMiss, stats.getMissCount());
+ }
+
+ /**
+ * @param sesFactory Session factory.
+ * @param cnt Number of entities to load.
+ */
+ private void loadEntities(SessionFactory sesFactory, int cnt) {
+ Session ses = sesFactory.openSession();
+
+ try {
+ for (int i = 0; i < cnt; i++) {
+ Entity e = (Entity)ses.load(Entity.class, i);
+
+ assertEquals("name-" + i, e.getName());
+
+ assertFalse(e.getChildren().isEmpty());
+
+ ses.bySimpleNaturalId(Entity.class).load(e.getName());
+ }
+ }
+ finally {
+ ses.close();
+ }
+ }
+
+ /**
+ * @param entityName Entity name.
+ * @param sesFactory Session factory.
+ * @param idToName ID to name mapping.
+ * @param absentIds Absent entities' IDs.
+ */
+ private void assertEntityCache(String entityName, SessionFactory sesFactory, Map<Integer, String> idToName,
+ Integer... absentIds) {
+ assert entityName.equals(ENTITY_NAME) || entityName.equals(ENTITY2_NAME) : entityName;
+
+ sesFactory.getStatistics().clear();
+
+ final Session ses = sesFactory.openSession();
+
+ final boolean entity1 = entityName.equals(ENTITY_NAME);
+
+ try {
+ if (entity1) {
+ for (Map.Entry<Integer, String> e : idToName.entrySet())
+ assertEquals(e.getValue(), ((Entity) ses.load(Entity.class, e.getKey())).getName());
+ }
+ else {
+ for (Map.Entry<Integer, String> e : idToName.entrySet())
+ assertEquals(e.getValue(), ((Entity2) ses.load(Entity2.class, e.getKey())).getName());
+ }
+
+ for (final int id : absentIds) {
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ if (entity1)
+ ((Entity) ses.load(Entity.class, id)).getName();
+ else
+ ((Entity2) ses.load(Entity2.class, id)).getName();
+
+ return null;
+ }
+ }, ObjectNotFoundException.class, null);
+ }
+
+ CacheRegionStatistics stats = sesFactory.getStatistics().getCacheRegionStatistics(entityName);
+ assertEquals(idToName.size(), stats.getHitCount());
+
+ assertEquals(absentIds.length, stats.getMissCount());
+ }
+ finally {
+ ses.close();
+ }
+ }
+
+ /**
+ * Creates session factories.
+ *
+ * @param accessType Cache access type.
+ */
+ private void createSessionFactories(AccessType accessType) {
+ sesFactory1 = startHibernate(accessType, getTestIgniteInstanceName(0));
+
+ sesFactory2 = startHibernate(accessType, getTestIgniteInstanceName(1));
+ }
+
+ /**
+ * Starts Hibernate.
+ *
+ * @param accessType Cache access type.
+ * @param igniteInstanceName Ignite instance name.
+ * @return Session factory.
+ */
+ private SessionFactory startHibernate(org.hibernate.cache.spi.access.AccessType accessType, String igniteInstanceName) {
+ StandardServiceRegistryBuilder builder = registryBuilder();
+
+ for (Map.Entry<String, String> e : hibernateProperties(igniteInstanceName, accessType.name()).entrySet())
+ builder.applySetting(e.getKey(), e.getValue());
+
+ // Use the same cache for Entity and Entity2.
+ builder.applySetting(REGION_CACHE_PROPERTY + ENTITY2_NAME, ENTITY_NAME);
+
+ StandardServiceRegistry srvcRegistry = builder.build();
+
+ MetadataSources metadataSources = new MetadataSources(srvcRegistry);
+
+ for (Class entityClass : getAnnotatedClasses())
+ metadataSources.addAnnotatedClass(entityClass);
+
+ Metadata metadata = metadataSources.buildMetadata();
+
+ for (PersistentClass entityBinding : metadata.getEntityBindings()) {
+ if (!entityBinding.isInherited())
+ ((RootClass) entityBinding).setCacheConcurrencyStrategy(accessType.getExternalName());
+ }
+
+ for (org.hibernate.mapping.Collection collectionBinding : metadata.getCollectionBindings())
+ collectionBinding.setCacheConcurrencyStrategy(accessType.getExternalName());
+
+ return metadata.buildSessionFactory();
+ }
+
+ /**
+ * @return Entities classes.
+ */
+ private Class[] getAnnotatedClasses() {
+ return new Class[]{Entity.class, Entity2.class, VersionedEntity.class, ChildEntity.class, ParentEntity.class};
+ }
+
+ /**
+ * Closes session factories and clears data from caches.
+ *
+ * @throws Exception If failed.
+ */
+ private void cleanup() throws Exception {
+ if (sesFactory1 != null)
+ sesFactory1.close();
+
+ sesFactory1 = null;
+
+ if (sesFactory2 != null)
+ sesFactory2.close();
+
+ sesFactory2 = null;
+
+ for (IgniteCacheProxy<?, ?> cache : ((IgniteKernal)grid(0)).caches())
+ cache.clear();
+ }
+
+ /**
+ * @param igniteInstanceName Node name.
+ * @param dfltAccessType Default cache access type.
+ * @return Properties map.
+ */
+ static Map<String, String> hibernateProperties(String igniteInstanceName, String dfltAccessType) {
+ Map<String, String> map = new HashMap<>();
+
+ map.put(HBM2DDL_AUTO, "create");
+ map.put(JPA_SHARED_CACHE_MODE, SharedCacheMode.ALL.name());
+ map.put(GENERATE_STATISTICS, "true");
+ map.put(USE_SECOND_LEVEL_CACHE, "true");
+ map.put(USE_QUERY_CACHE, "true");
+ map.put(CACHE_REGION_FACTORY, HibernateRegionFactory.class.getName());
+ map.put(RELEASE_CONNECTIONS, "on_close");
+ map.put(IGNITE_INSTANCE_NAME_PROPERTY, igniteInstanceName);
+ map.put(DFLT_ACCESS_TYPE_PROPERTY, dfltAccessType);
+
+ return map;
+ }
+}
[28/52] [abbrv] ignite git commit: IGNITE-10289: [ML] Import models
from XGBoost
Posted by sb...@apache.org.
IGNITE-10289: [ML] Import models from XGBoost
This closes #5533
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4ae29fca
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4ae29fca
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4ae29fca
Branch: refs/heads/ignite-627
Commit: 4ae29fca74e814321c8448e00e9d3fdcd54733aa
Parents: ece5869
Author: Anton Dmitriev <dm...@gmail.com>
Authored: Tue Dec 18 18:31:26 2018 +0300
Committer: Yury Babak <yb...@gridgain.com>
Committed: Tue Dec 18 18:31:26 2018 +0300
----------------------------------------------------------------------
examples/pom.xml | 6 +
.../TensorFlowDistributedInferenceExample.java | 2 +-
.../TensorFlowLocalInferenceExample.java | 2 +-
.../TensorFlowThreadedInferenceExample.java | 2 +-
.../ml/xgboost/XGBoostModelParserExample.java | 99 ++
.../examples/ml/xgboost/package-info.java | 22 +
.../resources/datasets/agaricus-test-data.txt | 1611 ++++++++++++++++++
.../datasets/agaricus-test-expected-results.txt | 1611 ++++++++++++++++++
.../resources/ml/mnist_tf_model/saved_model.pb | Bin 37185 -> 0 bytes
.../variables/variables.data-00000-of-00001 | Bin 13098544 -> 0 bytes
.../ml/mnist_tf_model/variables/variables.index | Bin 410 -> 0 bytes
.../models/mnist_tf_model/saved_model.pb | Bin 0 -> 37185 bytes
.../variables/variables.data-00000-of-00001 | Bin 0 -> 13098544 bytes
.../mnist_tf_model/variables/variables.index | Bin 0 -> 410 bytes
.../resources/models/xgboost/agaricus-model.txt | 714 ++++++++
.../IgniteDistributedInfModelBuilder.java | 7 +-
modules/ml/xgboost-model-parser/pom.xml | 55 +
.../ignite/ml/xgboost/MapBasedXGObject.java | 61 +
.../apache/ignite/ml/xgboost/XGLeafNode.java | 38 +
.../org/apache/ignite/ml/xgboost/XGModel.java | 53 +
.../org/apache/ignite/ml/xgboost/XGNode.java | 29 +
.../org/apache/ignite/ml/xgboost/XGObject.java | 33 +
.../apache/ignite/ml/xgboost/XGSplitNode.java | 74 +
.../apache/ignite/ml/xgboost/package-info.java | 22 +
.../xgboost/parser/XGBoostModelBaseVisitor.java | 78 +
.../ml/xgboost/parser/XGBoostModelLexer.java | 210 +++
.../ml/xgboost/parser/XGBoostModelListener.java | 98 ++
.../ml/xgboost/parser/XGBoostModelParser.java | 966 +++++++++++
.../ml/xgboost/parser/XGBoostModelVisitor.java | 71 +
.../ignite/ml/xgboost/parser/XGModelParser.java | 87 +
.../ignite/ml/xgboost/parser/package-info.java | 22 +
.../xgboost/parser/visitor/XGModelVisitor.java | 43 +
.../xgboost/parser/visitor/XGTreeVisitor.java | 82 +
.../ml/xgboost/parser/visitor/package-info.java | 22 +
.../ml/xgboost/IgniteMLXGBoostTestSuite.java | 31 +
.../xgboost/parser/XGBoostModelParserTest.java | 85 +
.../test/resources/datasets/agaricus-model.txt | 714 ++++++++
.../resources/datasets/agaricus-test-data.txt | 1611 ++++++++++++++++++
.../datasets/agaricus-test-expected-results.txt | 1611 ++++++++++++++++++
parent/pom.xml | 2 +-
pom.xml | 1 +
41 files changed, 10168 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/pom.xml
----------------------------------------------------------------------
diff --git a/examples/pom.xml b/examples/pom.xml
index c6b0a5f..44dab95 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -84,6 +84,12 @@
</dependency>
<dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-ml-xgboost-model-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.2</version>
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowDistributedInferenceExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowDistributedInferenceExample.java b/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowDistributedInferenceExample.java
index ec8cac6..48e8df1 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowDistributedInferenceExample.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowDistributedInferenceExample.java
@@ -44,7 +44,7 @@ import org.tensorflow.Tensor;
*/
public class TensorFlowDistributedInferenceExample {
/** Path to the directory with saved TensorFlow model. */
- private static final String MODEL_PATH = "examples/src/main/resources/ml/mnist_tf_model";
+ private static final String MODEL_PATH = "examples/src/main/resources/models/mnist_tf_model";
/** Path to the MNIST images data. */
private static final String MNIST_IMG_PATH = "examples/src/main/resources/datasets/t10k-images-idx3-ubyte";
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowLocalInferenceExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowLocalInferenceExample.java b/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowLocalInferenceExample.java
index 0e79856..c907778 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowLocalInferenceExample.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowLocalInferenceExample.java
@@ -38,7 +38,7 @@ import org.tensorflow.Tensor;
*/
public class TensorFlowLocalInferenceExample {
/** Path to the directory with saved TensorFlow model. */
- private static final String MODEL_PATH = "examples/src/main/resources/ml/mnist_tf_model";
+ private static final String MODEL_PATH = "examples/src/main/resources/models/mnist_tf_model";
/** Path to the MNIST images data. */
private static final String MNIST_IMG_PATH = "examples/src/main/resources/datasets/t10k-images-idx3-ubyte";
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowThreadedInferenceExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowThreadedInferenceExample.java b/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowThreadedInferenceExample.java
index 002e5ae..93dadea 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowThreadedInferenceExample.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/inference/TensorFlowThreadedInferenceExample.java
@@ -42,7 +42,7 @@ import org.tensorflow.Tensor;
*/
public class TensorFlowThreadedInferenceExample {
/** Path to the directory with saved TensorFlow model. */
- private static final String MODEL_PATH = "examples/src/main/resources/ml/mnist_tf_model";
+ private static final String MODEL_PATH = "examples/src/main/resources/models/mnist_tf_model";
/** Path to the MNIST images data. */
private static final String MNIST_IMG_PATH = "examples/src/main/resources/datasets/t10k-images-idx3-ubyte";
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/java/org/apache/ignite/examples/ml/xgboost/XGBoostModelParserExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/xgboost/XGBoostModelParserExample.java b/examples/src/main/java/org/apache/ignite/examples/ml/xgboost/XGBoostModelParserExample.java
new file mode 100644
index 0000000..40f10d8
--- /dev/null
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/xgboost/XGBoostModelParserExample.java
@@ -0,0 +1,99 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.examples.ml.xgboost;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.Scanner;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.internal.util.IgniteUtils;
+import org.apache.ignite.ml.inference.InfModel;
+import org.apache.ignite.ml.inference.builder.AsyncInfModelBuilder;
+import org.apache.ignite.ml.inference.builder.IgniteDistributedInfModelBuilder;
+import org.apache.ignite.ml.inference.reader.FileSystemInfModelReader;
+import org.apache.ignite.ml.inference.reader.InfModelReader;
+import org.apache.ignite.ml.xgboost.MapBasedXGObject;
+import org.apache.ignite.ml.xgboost.XGObject;
+import org.apache.ignite.ml.xgboost.parser.XGModelParser;
+
+/**
+ * This example demonstrates how to import XGBoost model and use imported model for distributed inference in Apache
+ * Ignite.
+ */
+public class XGBoostModelParserExample {
+ /** Test model resource name. */
+ private static final String TEST_MODEL_RES = "examples/src/main/resources/models/xgboost/agaricus-model.txt";
+
+ /** Test data. */
+ private static final String TEST_DATA_RES = "examples/src/main/resources/datasets/agaricus-test-data.txt";
+
+ /** Test expected results. */
+ private static final String TEST_ER_RES = "examples/src/main/resources/datasets/agaricus-test-expected-results.txt";
+
+ /** Parser. */
+ private static final XGModelParser parser = new XGModelParser();
+
+ /** Run example. */
+ public static void main(String... args) throws ExecutionException, InterruptedException, FileNotFoundException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ File mdlRsrc = IgniteUtils.resolveIgnitePath(TEST_MODEL_RES);
+ if (mdlRsrc == null)
+ throw new IllegalArgumentException("File not found [resource_path=" + TEST_MODEL_RES + "]");
+
+ InfModelReader reader = new FileSystemInfModelReader(mdlRsrc.getPath());
+
+ AsyncInfModelBuilder mdlBuilder = new IgniteDistributedInfModelBuilder(ignite, 4, 4);
+
+ File testData = IgniteUtils.resolveIgnitePath(TEST_DATA_RES);
+ if (testData == null)
+ throw new IllegalArgumentException("File not found [resource_path=" + TEST_DATA_RES + "]");
+
+ File testExpRes = IgniteUtils.resolveIgnitePath(TEST_ER_RES);
+ if (testExpRes == null)
+ throw new IllegalArgumentException("File not found [resource_path=" + TEST_ER_RES + "]");
+
+ try (InfModel<XGObject, Future<Double>> mdl = mdlBuilder.build(reader, parser);
+ Scanner testDataScanner = new Scanner(testData);
+ Scanner testExpResultsScanner = new Scanner(testExpRes)) {
+
+ while (testDataScanner.hasNextLine()) {
+ String testDataStr = testDataScanner.nextLine();
+ String testExpResultsStr = testExpResultsScanner.nextLine();
+
+ MapBasedXGObject testObj = new MapBasedXGObject();
+
+ for (String keyValueString : testDataStr.split(" ")) {
+ String[] keyVal = keyValueString.split(":");
+
+ if (keyVal.length == 2)
+ testObj.put("f" + keyVal[0], Double.parseDouble(keyVal[1]));
+ }
+
+ double prediction = mdl.predict(testObj).get();
+
+ double expPrediction = Double.parseDouble(testExpResultsStr);
+
+ System.out.println("Expected: " + expPrediction + ", prediction: " + prediction);
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/java/org/apache/ignite/examples/ml/xgboost/package-info.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/xgboost/package-info.java b/examples/src/main/java/org/apache/ignite/examples/ml/xgboost/package-info.java
new file mode 100644
index 0000000..3f14631
--- /dev/null
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/xgboost/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+/**
+ * <!-- Package description. -->
+ * XGBoost model inference examples.
+ */
+package org.apache.ignite.examples.ml.xgboost;
\ No newline at end of file
[08/52] [abbrv] ignite git commit: IGNITE-845 Removing test
Posted by sb...@apache.org.
IGNITE-845 Removing test
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8cb502bc
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8cb502bc
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8cb502bc
Branch: refs/heads/ignite-627
Commit: 8cb502bc9da52aca39d4dc067a6b36a298c6b376
Parents: 91a82a5
Author: Dmitriy Pavlov <dp...@apache.org>
Authored: Mon Dec 17 18:30:39 2018 +0300
Committer: Dmitriy Pavlov <dp...@apache.org>
Committed: Mon Dec 17 18:31:33 2018 +0300
----------------------------------------------------------------------
.../cloud/TcpDiscoveryCloudIpFinderSelfTest.java | 11 -----------
1 file changed, 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/8cb502bc/modules/cloud/src/test/java/org/apache/ignite/spi/discovery/tcp/ipfinder/cloud/TcpDiscoveryCloudIpFinderSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/cloud/src/test/java/org/apache/ignite/spi/discovery/tcp/ipfinder/cloud/TcpDiscoveryCloudIpFinderSelfTest.java b/modules/cloud/src/test/java/org/apache/ignite/spi/discovery/tcp/ipfinder/cloud/TcpDiscoveryCloudIpFinderSelfTest.java
index e4cef65..89744a2 100644
--- a/modules/cloud/src/test/java/org/apache/ignite/spi/discovery/tcp/ipfinder/cloud/TcpDiscoveryCloudIpFinderSelfTest.java
+++ b/modules/cloud/src/test/java/org/apache/ignite/spi/discovery/tcp/ipfinder/cloud/TcpDiscoveryCloudIpFinderSelfTest.java
@@ -61,17 +61,6 @@ public class TcpDiscoveryCloudIpFinderSelfTest extends
}
/**
- * Tests AWS.
- *
- * @throws Exception If any error occurs.
- */
- @IgniteIgnore("https://issues.apache.org/jira/browse/IGNITE-845")
- @Test
- public void testAmazonWebServices() throws Exception {
- testCloudProvider("aws-ec2");
- }
-
- /**
* Tests GCE.
*
* @throws Exception If any error occurs.
[14/52] [abbrv] ignite git commit: IGNITE-10643: SQL: Unified
affinity key column resolution for queries. This closes #5641. This closes
#5649.
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Utils.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Utils.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Utils.java
index 90a3cc6..c542758 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Utils.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Utils.java
@@ -388,12 +388,10 @@ public class H2Utils {
* @param tbl Table to check on not started cache.
* @return {@code true} in case not started and has been started.
*/
- public static boolean checkAndStartNotStartedCache(GridH2Table tbl) {
+ public static boolean checkAndStartNotStartedCache(GridKernalContext ctx, GridH2Table tbl) {
if (tbl != null && tbl.isCacheLazy()) {
String cacheName = tbl.cacheInfo().config().getName();
- GridKernalContext ctx = tbl.cacheInfo().context();
-
try {
Boolean res = ctx.cache().dynamicStartCache(null, cacheName, null, false, true, true).get();
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index f9f0ce4..c2f3f89 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -435,7 +435,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
H2RowCache cache = rowCache.forGroup(cacheInfo.groupId());
return new H2TreeIndex(
- cacheInfo.gridCacheContext(),
+ cacheInfo.cacheContext(),
cache,
tbl,
name,
@@ -2611,7 +2611,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
GridH2Table tbl = schemaMgr.dataTable(tblKey.schema(), tblKey.table());
if (tbl != null) {
- H2Utils.checkAndStartNotStartedCache(tbl);
+ H2Utils.checkAndStartNotStartedCache(ctx, tbl);
int cacheId = tbl.cacheId();
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionExtractor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionExtractor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionExtractor.java
index c57b011..cf27d90 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionExtractor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionExtractor.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.processors.query.h2.affinity;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.query.GridCacheSqlQuery;
import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
-import org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
import org.apache.ignite.internal.processors.query.h2.sql.GridSqlAlias;
import org.apache.ignite.internal.processors.query.h2.sql.GridSqlAst;
@@ -35,15 +34,12 @@ import org.apache.ignite.internal.processors.query.h2.sql.GridSqlSelect;
import org.apache.ignite.internal.processors.query.h2.sql.GridSqlTable;
import org.apache.ignite.internal.util.typedef.F;
import org.h2.table.Column;
-import org.h2.table.IndexColumn;
import org.jetbrains.annotations.Nullable;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import static org.apache.ignite.internal.processors.query.h2.opt.GridH2KeyValueRowOnheap.DEFAULT_COLUMNS_COUNT;
-
/**
* Partition tree extractor.
*/
@@ -102,6 +98,7 @@ public class PartitionExtractor {
* @param qrys Queries.
* @return Partition result or {@code null} if nothing is resolved.
*/
+ @SuppressWarnings("IfMayBeConditional")
public PartitionResult merge(List<GridCacheSqlQuery> qrys) {
// Check if merge is possible.
PartitionTableDescriptor desc = null;
@@ -149,7 +146,7 @@ public class PartitionExtractor {
* @param from From.
* @return Table or {@code null} if not a table.
*/
- @Nullable private static GridSqlTable unwrapTable(GridSqlAst from) {
+ @Nullable private static GridSqlTable unwrapTable(GridSqlAst from) {
if (from instanceof GridSqlAlias)
from = from.child();
@@ -165,6 +162,7 @@ public class PartitionExtractor {
* @param expr Expression.
* @return Partition tree.
*/
+ @SuppressWarnings("EnumSwitchStatementWhichMissesCases")
private PartitionNode extractFromExpression(GridSqlAst expr) throws IgniteCheckedException {
PartitionNode res = PartitionAllNode.INSTANCE;
@@ -343,7 +341,7 @@ public class PartitionExtractor {
GridH2Table tbl = (GridH2Table)leftCol.getTable();
- if (!isAffinityKey(leftCol.getColumnId(), tbl))
+ if (!tbl.isColumnForPartitionPruning(leftCol))
return null;
PartitionTableDescriptor tblDesc = descriptor(tbl);
@@ -360,32 +358,6 @@ public class PartitionExtractor {
}
/**
- *
- * @param colId Column ID to check
- * @param tbl H2 Table
- * @return is affinity key or not
- */
- private static boolean isAffinityKey(int colId, GridH2Table tbl) {
- GridH2RowDescriptor desc = tbl.rowDescriptor();
-
- if (desc.isKeyColumn(colId))
- return true;
-
- IndexColumn affKeyCol = tbl.getAffinityKeyColumn();
-
- try {
- return
- affKeyCol != null &&
- colId >= DEFAULT_COLUMNS_COUNT &&
- desc.isColumnKeyProperty(colId - DEFAULT_COLUMNS_COUNT) &&
- colId == affKeyCol.column.getColumnId();
- }
- catch (IllegalStateException e) {
- return false;
- }
- }
-
- /**
* Get descriptor from table.
*
* @param tbl Table.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java
index f1826a1..efccb6c 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java
@@ -113,7 +113,7 @@ public final class UpdatePlanBuilder {
boolean mvccEnabled = false;
for (GridH2Table h2tbl : tbls) {
- H2Utils.checkAndStartNotStartedCache(h2tbl);
+ H2Utils.checkAndStartNotStartedCache(idx.kernalContext(), h2tbl);
if (prevCctx == null) {
prevCctx = h2tbl.cacheContext();
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2CollocationModel.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2CollocationModel.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2CollocationModel.java
index 5e574e4..2a92511 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2CollocationModel.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2CollocationModel.java
@@ -375,7 +375,7 @@ public final class GridH2CollocationModel {
GridH2Table tbl = (GridH2Table)tf.getTable();
if (validate) {
- if (tbl.rowDescriptor().context().customAffinityMapper())
+ if (tbl.isCustomAffinityMapper())
throw customAffinityError(tbl.cacheName());
if (F.isEmpty(tf.getIndexConditions())) {
@@ -472,10 +472,12 @@ public final class GridH2CollocationModel {
}
if (t instanceof GridH2Table) {
- if (validate && ((GridH2Table)t).rowDescriptor().context().customAffinityMapper())
- throw customAffinityError(((GridH2Table)t).cacheName());
+ GridH2Table t0 = (GridH2Table)t;
- IndexColumn affCol = ((GridH2Table)t).getAffinityKeyColumn();
+ if (validate && t0.isCustomAffinityMapper())
+ throw customAffinityError((t0).cacheName());
+
+ IndexColumn affCol = t0.getAffinityKeyColumn();
return affCol != null && col.getColumnId() == affCol.column.getColumnId();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
index 6fd11c1..6c45c29 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
@@ -87,6 +87,7 @@ import static org.apache.ignite.internal.processors.query.h2.opt.GridH2Collocati
import static org.apache.ignite.internal.processors.query.h2.opt.GridH2KeyValueRowOnheap.KEY_COL;
import static org.apache.ignite.internal.processors.query.h2.opt.GridH2QueryType.MAP;
import static org.apache.ignite.internal.processors.query.h2.opt.GridH2QueryType.PREPARE;
+import static org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor.COL_NOT_EXISTS;
import static org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2IndexRangeResponse.STATUS_ERROR;
import static org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2IndexRangeResponse.STATUS_NOT_FOUND;
import static org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2IndexRangeResponse.STATUS_OK;
@@ -1048,6 +1049,9 @@ public abstract class GridH2IndexBase extends BaseIndex {
* @return Affinity key or {@code null}.
*/
private Object getAffinityKey(SearchRow firstRow, SearchRow lastRow) {
+ if (affColId == COL_NOT_EXISTS)
+ return null;
+
if (firstRow == null || lastRow == null)
return null;
@@ -1109,7 +1113,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
rangeStreams = new HashMap<>();
}
- Object affKey = affColId == -1 ? null : getAffinityKey(firstRow, lastRow);
+ Object affKey = getAffinityKey(firstRow, lastRow);
boolean locQry = localQuery();
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2RowDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2RowDescriptor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2RowDescriptor.java
index 3853b57..4ba8229 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2RowDescriptor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2RowDescriptor.java
@@ -44,6 +44,9 @@ import static org.apache.ignite.internal.processors.query.h2.opt.GridH2KeyValueR
* Row descriptor.
*/
public class GridH2RowDescriptor {
+ /** Non existent column. */
+ public static final int COL_NOT_EXISTS = -1;
+
/** Table descriptor. */
private final H2TableDescriptor tbl;
@@ -119,11 +122,11 @@ public class GridH2RowDescriptor {
List<String> fieldsList = Arrays.asList(fields);
- keyAliasColId =
- (type.keyFieldName() != null) ? DEFAULT_COLUMNS_COUNT + fieldsList.indexOf(type.keyFieldAlias()) : -1;
+ keyAliasColId = (type.keyFieldName() != null) ?
+ DEFAULT_COLUMNS_COUNT + fieldsList.indexOf(type.keyFieldAlias()) : COL_NOT_EXISTS;
- valAliasColId =
- (type.valueFieldName() != null) ? DEFAULT_COLUMNS_COUNT + fieldsList.indexOf(type.valueFieldAlias()) : -1;
+ valAliasColId = (type.valueFieldName() != null) ?
+ DEFAULT_COLUMNS_COUNT + fieldsList.indexOf(type.valueFieldAlias()) : COL_NOT_EXISTS;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
index 59597be..b69a011 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
@@ -62,7 +62,7 @@ import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.internal.processors.query.h2.opt.GridH2KeyValueRowOnheap.DEFAULT_COLUMNS_COUNT;
-import static org.apache.ignite.internal.processors.query.h2.opt.GridH2KeyValueRowOnheap.KEY_COL;
+import static org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor.COL_NOT_EXISTS;
/**
* H2 Table implementation.
@@ -99,7 +99,10 @@ public class GridH2Table extends TableBase {
private final ConcurrentMap<Session, Boolean> sessions = new ConcurrentHashMap<>();
/** */
- private IndexColumn affKeyCol;
+ private final IndexColumn affKeyCol;
+
+ /** */
+ private final int affKeyColId;
/** */
private final LongAdder size = new LongAdder();
@@ -138,32 +141,36 @@ public class GridH2Table extends TableBase {
this.desc = desc;
this.cacheInfo = cacheInfo;
- if (desc.context() != null && !desc.context().customAffinityMapper()) {
- boolean affinityColExists = true;
-
- String affKey = desc.type().affinityKey();
+ if (!desc.type().customAffinityKeyMapper()) {
+ String affKeyFieldName = desc.type().affinityKey();
- int affKeyColId = -1;
+ if (affKeyFieldName != null) {
+ if (doesColumnExist(affKeyFieldName)) {
+ int colId = getColumn(affKeyFieldName).getColumnId();
- if (affKey != null) {
- if (doesColumnExist(affKey)) {
- affKeyColId = getColumn(affKey).getColumnId();
-
- if (desc.isKeyColumn(affKeyColId))
- affKeyColId = KEY_COL;
+ if (desc.isKeyColumn(colId)) {
+ affKeyCol = indexColumn(GridH2KeyValueRowOnheap.KEY_COL, SortOrder.ASCENDING);
+ affKeyColId = GridH2KeyValueRowOnheap.KEY_COL;
+ }
+ else {
+ affKeyCol = indexColumn(colId, SortOrder.ASCENDING);
+ affKeyColId = colId;
+ }
+ }
+ else {
+ affKeyCol = null;
+ affKeyColId = COL_NOT_EXISTS;
}
- else
- affinityColExists = false;
}
- else
- affKeyColId = KEY_COL;
-
- if (affinityColExists) {
- affKeyCol = indexColumn(affKeyColId, SortOrder.ASCENDING);
-
- assert affKeyCol != null;
+ else {
+ affKeyCol = indexColumn(GridH2KeyValueRowOnheap.KEY_COL, SortOrder.ASCENDING);
+ affKeyColId = GridH2KeyValueRowOnheap.KEY_COL;
}
}
+ else {
+ affKeyCol = null;
+ affKeyColId = COL_NOT_EXISTS;
+ }
this.rowFactory = rowFactory;
@@ -216,6 +223,25 @@ public class GridH2Table extends TableBase {
return affKeyCol;
}
+ /**
+ * Check whether passed column can be used for partition pruning.
+ *
+ * @param col Column.
+ * @return {@code True} if affinity key column.
+ */
+ public boolean isColumnForPartitionPruning(Column col) {
+ int colId = col.getColumnId();
+
+ return colId == affKeyColId || desc.isKeyColumn(colId);
+ }
+
+ /**
+ * @return Whether custom affintiy mapper is used.
+ */
+ public boolean isCustomAffinityMapper() {
+ return desc.type().customAffinityKeyMapper();
+ }
+
/** {@inheritDoc} */
@Override public long getDiskSpaceUsed() {
return 0;
@@ -253,14 +279,14 @@ public class GridH2Table extends TableBase {
* @return {@code true} If Cache is lazy (not full inited).
*/
public boolean isCacheLazy() {
- return cacheInfo.gridCacheContext() == null;
+ return cacheInfo.cacheContext() == null;
}
/**
* @return Cache context.
*/
@Nullable public GridCacheContext cacheContext() {
- return cacheInfo.gridCacheContext();
+ return cacheInfo.cacheContext();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/AffinityKeyNameAndValueFieldNameConflictTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/AffinityKeyNameAndValueFieldNameConflictTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/AffinityKeyNameAndValueFieldNameConflictTest.java
index ff147e7..23e71e2 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/AffinityKeyNameAndValueFieldNameConflictTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/AffinityKeyNameAndValueFieldNameConflictTest.java
@@ -93,6 +93,11 @@ public class AffinityKeyNameAndValueFieldNameConflictTest extends GridCommonAbst
return cfg;
}
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ stopAllGrids();
+ }
+
/**
* @throws Exception If failed.
*/
@@ -123,6 +128,7 @@ public class AffinityKeyNameAndValueFieldNameConflictTest extends GridCommonAbst
public void testAnnotationConfig() throws Exception {
keyCls = PersonKey1.class;
keyProducer = PersonKey1::new;
+
checkQuery();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDistributedJoinCollocatedAndNotTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDistributedJoinCollocatedAndNotTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDistributedJoinCollocatedAndNotTest.java
index 80923a7..1036cce 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDistributedJoinCollocatedAndNotTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDistributedJoinCollocatedAndNotTest.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.cache;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.ignite.Ignite;
@@ -89,6 +90,7 @@ public class IgniteCacheDistributedJoinCollocatedAndNotTest extends GridCommonAb
entity.addQueryField("id", Integer.class.getName(), null);
entity.addQueryField("affKey", Integer.class.getName(), null);
entity.addQueryField("name", String.class.getName(), null);
+ entity.setKeyFields(Collections.singleton("affKey"));
ccfg.setQueryEntities(F.asList(entity));
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/AndOperationExtractPartitionSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/AndOperationExtractPartitionSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/AndOperationExtractPartitionSelfTest.java
index a94910e..a3fae72 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/AndOperationExtractPartitionSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/AndOperationExtractPartitionSelfTest.java
@@ -81,7 +81,7 @@ public class AndOperationExtractPartitionSelfTest extends GridCommonAbstractTest
orgCache = ignite(0).getOrCreateCache(new CacheConfiguration<String, JoinSqlTestHelper.Organization>(ORG)
.setCacheMode(CacheMode.PARTITIONED)
- .setIndexedTypes(String.class, JoinSqlTestHelper.Organization.class)
+ .setQueryEntities(JoinSqlTestHelper.organizationQueryEntity())
);
awaitPartitionMapExchange();
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/DisappearedCacheCauseRetryMessageSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/DisappearedCacheCauseRetryMessageSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/DisappearedCacheCauseRetryMessageSelfTest.java
index b9c846a..7d13503 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/DisappearedCacheCauseRetryMessageSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/DisappearedCacheCauseRetryMessageSelfTest.java
@@ -97,7 +97,7 @@ public class DisappearedCacheCauseRetryMessageSelfTest extends GridCommonAbstrac
if (reqId == req.queryRequestId())
orgCache = DisappearedCacheCauseRetryMessageSelfTest.this.ignite(0).getOrCreateCache(new CacheConfiguration<String, Organization>(ORG)
.setCacheMode(CacheMode.REPLICATED)
- .setIndexedTypes(String.class, JoinSqlTestHelper.Organization.class)
+ .setQueryEntities(JoinSqlTestHelper.organizationQueryEntity())
);
}
@@ -117,12 +117,12 @@ public class DisappearedCacheCauseRetryMessageSelfTest extends GridCommonAbstrac
startGridsMultiThreaded(NODES_COUNT, false);
personCache = ignite(0).getOrCreateCache(new CacheConfiguration<String, Person>("pers")
- .setIndexedTypes(String.class, JoinSqlTestHelper.Person.class)
+ .setQueryEntities(JoinSqlTestHelper.personQueryEntity())
);
orgCache = ignite(0).getOrCreateCache(new CacheConfiguration<String, Organization>(ORG)
.setCacheMode(CacheMode.REPLICATED)
- .setIndexedTypes(String.class, JoinSqlTestHelper.Organization.class)
+ .setQueryEntities(JoinSqlTestHelper.organizationQueryEntity())
);
awaitPartitionMapExchange();
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/DisappearedCacheWasNotFoundMessageSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/DisappearedCacheWasNotFoundMessageSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/DisappearedCacheWasNotFoundMessageSelfTest.java
index 08a7973..dfc8bb6 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/DisappearedCacheWasNotFoundMessageSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/DisappearedCacheWasNotFoundMessageSelfTest.java
@@ -111,12 +111,12 @@ public class DisappearedCacheWasNotFoundMessageSelfTest extends GridCommonAbstra
startGridsMultiThreaded(NODES_COUNT, false);
personCache = ignite(0).getOrCreateCache(new CacheConfiguration<String, Person>("pers")
- .setIndexedTypes(String.class, JoinSqlTestHelper.Person.class)
+ .setQueryEntities(JoinSqlTestHelper.personQueryEntity())
);
orgCache = ignite(0).getOrCreateCache(new CacheConfiguration<String, Organization>(ORG)
.setCacheMode(CacheMode.REPLICATED)
- .setIndexedTypes(String.class, Organization.class)
+ .setQueryEntities(JoinSqlTestHelper.organizationQueryEntity())
);
awaitPartitionMapExchange();
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/InOperationExtractPartitionSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/InOperationExtractPartitionSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/InOperationExtractPartitionSelfTest.java
index 7978943..c3222de 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/InOperationExtractPartitionSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/InOperationExtractPartitionSelfTest.java
@@ -24,6 +24,7 @@ import java.util.concurrent.atomic.LongAdder;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.QueryEntity;
import org.apache.ignite.cache.query.FieldsQueryCursor;
import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.cluster.ClusterNode;
@@ -83,7 +84,7 @@ public class InOperationExtractPartitionSelfTest extends GridCommonAbstractTest
orgCache = ignite(0).getOrCreateCache(new CacheConfiguration<String, JoinSqlTestHelper.Organization>(ORG)
.setCacheMode(CacheMode.PARTITIONED)
- .setIndexedTypes(String.class, JoinSqlTestHelper.Organization.class)
+ .setQueryEntities(JoinSqlTestHelper.organizationQueryEntity())
);
awaitPartitionMapExchange();
@@ -191,7 +192,7 @@ public class InOperationExtractPartitionSelfTest extends GridCommonAbstractTest
private void testInOperator(List<String> cnst, Object[] args, long expRes, int maxReq) {
int curIdx = cnt.intValue();
- String toIn = cnst.size() == 0 ? "" : String.valueOf("'" + String.join("','", cnst) + "'")
+ String toIn = cnst.isEmpty() ? "" : String.valueOf("'" + String.join("','", cnst) + "'")
.replace("'?'", "?");
try (FieldsQueryCursor<List<?>> cur = orgCache.query(new SqlFieldsQuery(
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/JoinSqlTestHelper.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/JoinSqlTestHelper.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/JoinSqlTestHelper.java
index 3c9509d..5eaf147 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/JoinSqlTestHelper.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/JoinSqlTestHelper.java
@@ -18,8 +18,12 @@
package org.apache.ignite.internal.processors.query.h2.twostep;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.QueryEntity;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
+import java.util.Collection;
+import java.util.Collections;
+
/**
* Join sql test helper
*/
@@ -39,6 +43,30 @@ public class JoinSqlTestHelper {
"and lower(org.name) = lower(?)";
/**
+ * @return Query entity for Organization.
+ */
+ static Collection<QueryEntity> organizationQueryEntity() {
+ QueryEntity entity = new QueryEntity(String.class, Organization.class);
+
+ entity.setKeyFieldName("ID");
+ entity.getFields().put("ID", String.class.getName());
+
+ return Collections.singletonList(entity);
+ }
+
+ /**
+ * @return Query entity for Organization.
+ */
+ static Collection<QueryEntity> personQueryEntity() {
+ QueryEntity entity = new QueryEntity(String.class, Person.class);
+
+ entity.setKeyFieldName("ID");
+ entity.getFields().put("ID", String.class.getName());
+
+ return Collections.singletonList(entity);
+ }
+
+ /**
* Populate organization cache with test data
* @param cache @{IgniteCache}
*/
@@ -46,11 +74,9 @@ public class JoinSqlTestHelper {
for (int i = 0; i < ORG_COUNT; i++) {
Organization org = new Organization();
- org.setId(ORG + i);
-
org.setName("Organization #" + i);
- cache.put(org.getId(), org);
+ cache.put(ORG + i, org);
}
}
@@ -62,22 +88,16 @@ public class JoinSqlTestHelper {
int personId = 0;
for (int i = 0; i < ORG_COUNT; i++) {
- Organization org = new Organization();
-
- org.setId(ORG + i);
-
- org.setName("Organization #" + i);
+ String orgId = ORG + i;
for (int j = 0; j < PERSON_PER_ORG_COUNT; j++) {
Person prsn = new Person();
- prsn.setId("pers" + personId);
-
- prsn.setOrgId(org.getId());
+ prsn.setOrgId(orgId);
prsn.setName("Person name #" + personId);
- cache.put(prsn.getId(), prsn);
+ cache.put("pers" + personId, prsn);
personId++;
}
@@ -90,10 +110,6 @@ public class JoinSqlTestHelper {
public static class Person {
/** */
@QuerySqlField(index = true)
- private String id;
-
- /** */
- @QuerySqlField(index = true)
private String orgId;
/** */
@@ -101,16 +117,6 @@ public class JoinSqlTestHelper {
private String name;
/** */
- public String getId() {
- return id;
- }
-
- /** */
- public void setId(String id) {
- this.id = id;
- }
-
- /** */
public String getOrgId() {
return orgId;
}
@@ -137,23 +143,9 @@ public class JoinSqlTestHelper {
public static class Organization {
/** */
@QuerySqlField(index = true)
- private String id;
-
- /** */
- @QuerySqlField(index = true)
private String name;
/** */
- public void setId(String id) {
- this.id = id;
- }
-
- /** */
- public String getId() {
- return id;
- }
-
- /** */
public String getName() {
return name;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/NonCollocatedRetryMessageSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/NonCollocatedRetryMessageSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/NonCollocatedRetryMessageSelfTest.java
index a1abb23..fb64c7f 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/NonCollocatedRetryMessageSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/NonCollocatedRetryMessageSelfTest.java
@@ -99,14 +99,14 @@ public class NonCollocatedRetryMessageSelfTest extends GridCommonAbstractTest {
CacheConfiguration<String, JoinSqlTestHelper.Person> ccfg1 = new CacheConfiguration<>("pers");
ccfg1.setBackups(1);
- ccfg1.setIndexedTypes(String.class, JoinSqlTestHelper.Person.class);
+ ccfg1.setQueryEntities(JoinSqlTestHelper.personQueryEntity());
personCache = ignite(0).getOrCreateCache(ccfg1);
CacheConfiguration<String, JoinSqlTestHelper.Organization> ccfg2 = new CacheConfiguration<>(ORG);
ccfg2.setBackups(1);
- ccfg2.setIndexedTypes(String.class, JoinSqlTestHelper.Organization.class);
+ ccfg2.setQueryEntities(JoinSqlTestHelper.organizationQueryEntity());
IgniteCache<String, JoinSqlTestHelper.Organization> orgCache = ignite(0).getOrCreateCache(ccfg2);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/RetryCauseMessageSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/RetryCauseMessageSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/RetryCauseMessageSelfTest.java
index b3fb7bc..87cf353 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/RetryCauseMessageSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/RetryCauseMessageSelfTest.java
@@ -346,12 +346,12 @@ public class RetryCauseMessageSelfTest extends GridCommonAbstractTest {
h2Idx = GridTestUtils.getFieldValue(qryProc, GridQueryProcessor.class, "idx");
personCache = ignite(0).getOrCreateCache(new CacheConfiguration<String, Person>("pers")
- .setIndexedTypes(String.class, Person.class)
+ .setQueryEntities(JoinSqlTestHelper.personQueryEntity())
);
orgCache = ignite(0).getOrCreateCache(new CacheConfiguration<String, Organization>(ORG)
.setCacheMode(CacheMode.REPLICATED)
- .setIndexedTypes(String.class, Organization.class)
+ .setQueryEntities(JoinSqlTestHelper.organizationQueryEntity())
);
awaitPartitionMapExchange();
[32/52] [abbrv] ignite git commit: IGNITE-10709 New inspections
introduced in 2018+ IntelliJ IDEA version were disabled on TC configuration,
unused Suppress removal. - Fixes #5680.
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
index 7210dfe..072918e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
@@ -70,15 +70,12 @@ public class GridNearAtomicUpdateFuture extends GridNearAtomicAbstractUpdateFutu
private Collection<?> keys;
/** Values. */
- @SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized"})
private Collection<?> vals;
/** Conflict put values. */
- @SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized"})
private Collection<GridCacheDrInfo> conflictPutVals;
/** Conflict remove values. */
- @SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized"})
private Collection<GridCacheVersion> conflictRmvVals;
/** Mappings if operations is mapped to more than one node. */
@@ -347,7 +344,6 @@ public class GridNearAtomicUpdateFuture extends GridNearAtomicAbstractUpdateFutu
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void onPrimaryResponse(UUID nodeId, GridNearAtomicUpdateResponse res, boolean nodeErr) {
GridNearAtomicAbstractUpdateRequest req;
@@ -915,7 +911,6 @@ public class GridNearAtomicUpdateFuture extends GridNearAtomicAbstractUpdateFutu
* @return Mapping.
* @throws Exception If failed.
*/
- @SuppressWarnings("ForLoopReplaceableByForEach")
private Map<UUID, PrimaryRequestState> mapUpdate(Collection<ClusterNode> topNodes,
AffinityTopologyVersion topVer,
Long futId,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
index 8fc353c..a6ac902 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
@@ -210,7 +210,6 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
needVer);
return fut.chain(new CX1<IgniteInternalFuture<Map<Object, Object>>, V>() {
- @SuppressWarnings("unchecked")
@Override public V applyx(IgniteInternalFuture<Map<Object, Object>> e)
throws IgniteCheckedException {
Map<Object, Object> map = e.get();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
index 323fe75..9d6c8fc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
@@ -166,7 +166,6 @@ public final class GridDhtForceKeysFuture<K, V> extends GridCompoundFuture<Objec
/**
* @param evt Discovery event.
*/
- @SuppressWarnings( {"unchecked"})
public void onDiscoveryEvent(DiscoveryEvent evt) {
topCntr.incrementAndGet();
@@ -192,7 +191,6 @@ public final class GridDhtForceKeysFuture<K, V> extends GridCompoundFuture<Objec
/**
* @param res Response.
*/
- @SuppressWarnings( {"unchecked"})
public void onResult(GridDhtForceKeysResponse res) {
for (IgniteInternalFuture<Object> f : futures())
if (isMini(f)) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplier.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplier.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplier.java
index 9254766..d26d68f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplier.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplier.java
@@ -178,7 +178,6 @@ class GridDhtPartitionSupplier {
* @param nodeId Id of the node which sent the demand message.
* @param demandMsg Demand message.
*/
- @SuppressWarnings("unchecked")
public void handleDemandMessage(int topicId, UUID nodeId, GridDhtPartitionDemandMessage demandMsg) {
assert demandMsg != null;
assert nodeId != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsSingleMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsSingleMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsSingleMessage.java
index 8db7176..403b862 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsSingleMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsSingleMessage.java
@@ -210,7 +210,6 @@ public class GridDhtPartitionsSingleMessage extends GridDhtPartitionsAbstractMes
* @param partsCnt Total cache partitions.
* @return Partition update counters.
*/
- @SuppressWarnings("unchecked")
public CachePartitionPartialCountersMap partitionUpdateCounters(int grpId, int partsCnt) {
Object res = partCntrs == null ? null : partCntrs.get(grpId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridClientPartitionTopology.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridClientPartitionTopology.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridClientPartitionTopology.java
index 9fb6825..a6c17c0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridClientPartitionTopology.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridClientPartitionTopology.java
@@ -170,7 +170,6 @@ public class GridClientPartitionTopology implements GridDhtPartitionTopology {
/**
* @return Full map string representation.
*/
- @SuppressWarnings({"ConstantConditions"})
private String fullMapString() {
return node2part == null ? "null" : FULL_MAP_DEBUG ? node2part.toFullString() : node2part.toString();
}
@@ -179,7 +178,6 @@ public class GridClientPartitionTopology implements GridDhtPartitionTopology {
* @param map Map to get string for.
* @return Full map string representation.
*/
- @SuppressWarnings({"ConstantConditions"})
private String mapString(GridDhtPartitionMap map) {
return map == null ? "null" : FULL_MAP_DEBUG ? map.toFullString() : map.toString();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java
index c90d40f..bb62d64 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java
@@ -217,7 +217,6 @@ public class GridDhtPartitionTopologyImpl implements GridDhtPartitionTopology {
/**
* @return Full map string representation.
*/
- @SuppressWarnings({"ConstantConditions"})
private String fullMapString() {
return node2part == null ? "null" : FULL_MAP_DEBUG ? node2part.toFullString() : node2part.toString();
}
@@ -226,7 +225,6 @@ public class GridDhtPartitionTopologyImpl implements GridDhtPartitionTopology {
* @param map Map to get string for.
* @return Full map string representation.
*/
- @SuppressWarnings({"ConstantConditions"})
private String mapString(GridDhtPartitionMap map) {
return map == null ? "null" : FULL_MAP_DEBUG ? map.toFullString() : map.toString();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
index 503c324..998dcf9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
@@ -447,13 +447,11 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public IgniteInternalFuture<V> getAndPutAsync0(K key, V val, @Nullable CacheEntryPredicate filter) {
return dht.getAndPutAsync0(key, val, filter);
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public IgniteInternalFuture<Boolean> putAsync0(K key, V val, @Nullable CacheEntryPredicate filter) {
return dht.putAsync0(key, val, filter);
}
@@ -533,7 +531,6 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public IgniteInternalFuture<V> getAndRemoveAsync(K key) {
return dht.getAndRemoveAsync(key);
}
@@ -555,7 +552,6 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public IgniteInternalFuture<Boolean> removeAsync(K key, @Nullable CacheEntryPredicate filter) {
return dht.removeAsync(key, filter);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
index 09445f7..40dbf6a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
@@ -570,7 +570,6 @@ public final class GridNearGetFuture<K, V> extends CacheDistributedGetFutureAdap
* @param v Value.
* @param ver Version.
*/
- @SuppressWarnings("unchecked")
private void addResult(KeyCacheObject key, CacheObject v, GridCacheVersion ver) {
if (keepCacheObjects) {
K key0 = (K)key;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
index 0863f6e..3691250 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
@@ -151,7 +151,6 @@ public final class GridNearLockFuture extends GridCacheCompoundIdentityFuture<Bo
private volatile int done;
/** Keys locked so far. */
- @SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized"})
@GridToStringExclude
private List<GridDistributedCacheEntry> entries;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
index 20d9e50..ca9e1bf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
@@ -147,7 +147,6 @@ public final class GridNearTxFinishFuture<K, V> extends GridCacheCompoundIdentit
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public boolean onNodeLeft(UUID nodeId) {
boolean found = false;
@@ -841,7 +840,6 @@ public final class GridNearTxFinishFuture<K, V> extends GridCacheCompoundIdentit
/** {@inheritDoc} */
@Override public String toString() {
Collection<String> futs = F.viewReadOnly(futures(), new C1<IgniteInternalFuture<?>, String>() {
- @SuppressWarnings("unchecked")
@Override public String apply(IgniteInternalFuture<?> f) {
if (f.getClass() == FinishMiniFuture.class) {
FinishMiniFuture fut = (FinishMiniFuture)f;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index ef74de4..fb2f8e3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -412,7 +412,6 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou
* @param retval Flag indicating whether a value should be returned.
* @return Future for put operation.
*/
- @SuppressWarnings("unchecked")
public <K, V> IgniteInternalFuture<GridCacheReturn> putAllAsync(
GridCacheContext cacheCtx,
@Nullable AffinityTopologyVersion entryTopVer,
@@ -481,7 +480,6 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou
* @param invokeArgs Optional arguments for entry processor.
* @return Operation future.
*/
- @SuppressWarnings("unchecked")
public <K, V, T> IgniteInternalFuture<GridCacheReturn> invokeAsync(
GridCacheContext cacheCtx,
@Nullable AffinityTopologyVersion entryTopVer,
@@ -3990,7 +3988,6 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou
* @param req Prepare request.
* @return Future that will be completed when locks are acquired.
*/
- @SuppressWarnings("TypeMayBeWeakened")
public IgniteInternalFuture<GridNearTxPrepareResponse> prepareAsyncLocal(GridNearTxPrepareRequest req) {
long timeout = remainingTime();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
index 919f6d2..dc7e3ec 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
@@ -122,7 +122,6 @@ public class GridLocalAtomicCache<K, V> extends GridLocalCache<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected V getAndPut0(K key, V val, @Nullable CacheEntryPredicate filter) throws IgniteCheckedException {
CacheOperationContext opCtx = ctx.operationContextPerCall();
@@ -233,7 +232,6 @@ public class GridLocalAtomicCache<K, V> extends GridLocalCache<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void removeAll0(Collection<? extends K> keys) throws IgniteCheckedException {
CacheOperationContext opCtx = ctx.operationContextPerCall();
@@ -256,7 +254,6 @@ public class GridLocalAtomicCache<K, V> extends GridLocalCache<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public boolean remove0(K key, final CacheEntryPredicate filter) throws IgniteCheckedException {
CacheOperationContext opCtx = ctx.operationContextPerCall();
@@ -295,7 +292,6 @@ public class GridLocalAtomicCache<K, V> extends GridLocalCache<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected V get0(
final K key,
String taskName,
@@ -314,7 +310,6 @@ public class GridLocalAtomicCache<K, V> extends GridLocalCache<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public final Map<K, V> getAll0(Collection<? extends K> keys, boolean deserializeBinary, boolean needVer)
throws IgniteCheckedException {
A.notNull(keys, "keys");
@@ -675,7 +670,6 @@ public class GridLocalAtomicCache<K, V> extends GridLocalCache<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> Map<K, EntryProcessorResult<T>> invokeAll(
Map<? extends K, ? extends EntryProcessor<K, V, T>> map,
Object... args) throws IgniteCheckedException {
@@ -1556,7 +1550,6 @@ public class GridLocalAtomicCache<K, V> extends GridLocalCache<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public IgniteInternalFuture<Boolean> lockAllAsync(@Nullable Collection<? extends K> keys,
long timeout) {
return new GridFinishedFuture<>(new UnsupportedOperationException("Locks are not supported for " +
@@ -1564,7 +1557,6 @@ public class GridLocalAtomicCache<K, V> extends GridLocalCache<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void unlockAll(@Nullable Collection<? extends K> keys) throws IgniteCheckedException {
throw new UnsupportedOperationException("Locks are not supported for " +
"CacheAtomicityMode.ATOMIC mode (use CacheAtomicityMode.TRANSACTIONAL instead)");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
index b840206..c448620 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
@@ -2041,7 +2041,6 @@ public class MvccProcessorImpl extends GridProcessorAdapter implements MvccProce
}
/** */
- @SuppressWarnings("unchecked")
private static class CompoundWaiter implements Waiter {
/** */
private final Object inner;
@@ -2406,7 +2405,6 @@ public class MvccProcessorImpl extends GridProcessorAdapter implements MvccProce
* @param metrics Vacuum metrics.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
private void cleanup(GridDhtLocalPartition part, KeyCacheObject key, List<MvccLinkAwareSearchRow> cleanupRows,
Object rest, GridCacheContext cctx, VacuumMetrics metrics) throws IgniteCheckedException {
assert key != null && cctx != null && (!F.isEmpty(cleanupRows) || rest != null);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java
index ed55854..5f16ce8 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java
@@ -1079,7 +1079,6 @@ public class PageMemoryImpl implements PageMemoryEx {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked", "TooBroadScope"})
@Override public void finishCheckpoint() {
if (segments == null)
return;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
index 7b07dcf..e9b7248 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
@@ -361,7 +361,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
*/
public class Replace extends GetPageHandler<Put> {
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public Result run0(long pageId, long page, long pageAddr, BPlusIO<L> io, Put p, int lvl)
throws IgniteCheckedException {
// Check the triangle invariant.
@@ -1192,7 +1191,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public T findLast() throws IgniteCheckedException {
return findLast(null);
}
@@ -1242,7 +1240,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
* @return Found result or {@code null}.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
public final <R> R findOne(L row, TreeRowClosure<L, T> c, Object x) throws IgniteCheckedException {
checkDestroyed();
@@ -1269,7 +1266,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
* @return Found row.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
@Override public final T findOne(L row) throws IgniteCheckedException {
return findOne(row, null, null);
}
@@ -2898,7 +2894,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override boolean found(BPlusIO<L> io, long pageAddr, int idx, int lvl) throws IgniteCheckedException {
// Check if we are on an inner page and can't get row from it.
if (lvl != 0 && !canGetRowFromInner)
@@ -3042,7 +3037,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
* @param cnt Number of rows in the buffer.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
private void visit(long pageAddr, BPlusIO<L> io, int startIdx, int cnt)
throws IgniteCheckedException {
assert io.isLeaf() : io;
@@ -3983,7 +3977,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public long pollFreePage() {
if (freePages == null)
return 0L;
@@ -4002,7 +3995,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void addFreePage(long pageId) {
assert pageId != 0L;
@@ -4410,7 +4402,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
* @param idx Index to remove.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
private void removeDataRowFromLeaf(long pageId, long page, long pageAddr, Boolean walPlc, BPlusIO<L> io, int cnt,
int idx)
throws IgniteCheckedException {
@@ -4642,7 +4633,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
/**
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
private void reuseFreePages() throws IgniteCheckedException {
// If we have a bag, then it will be processed at the upper level.
if (reuseList != null && freePages != null)
@@ -5178,7 +5168,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
/**
*
*/
- @SuppressWarnings("unchecked")
private abstract class AbstractForwardCursor {
/** */
long nextPageId;
@@ -5310,7 +5299,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
* @return {@code true} If we were able to fetch rows from this page.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
private boolean fillFromBuffer(long pageAddr, BPlusIO<L> io, int startIdx, int cnt)
throws IgniteCheckedException {
assert io.isLeaf() : io;
@@ -5406,7 +5394,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
/**
* Closure cursor.
*/
- @SuppressWarnings("unchecked")
private final class ClosureCursor extends AbstractForwardCursor {
/** */
private final TreeRowClosure<L, T> p;
@@ -5502,7 +5489,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
/**
* Forward cursor.
*/
- @SuppressWarnings("unchecked")
private final class ForwardCursor extends AbstractForwardCursor implements GridCursor<T> {
/** */
final Object x;
@@ -5592,7 +5578,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
}
/** {@inheritDoc} */
- @SuppressWarnings("SimplifiableIfStatement")
@Override public boolean next() throws IgniteCheckedException {
if (rows == null)
return false;
@@ -5643,7 +5628,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
*/
private abstract class GetPageHandler<G extends Get> extends PageHandler<G, Result> {
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public Result run(int cacheId, long pageId, long page, long pageAddr, PageIO iox, Boolean walPlc,
G g, int lvl, IoStatisticsHolder statHolder) throws IgniteCheckedException {
assert PageIO.getPageId(pageAddr) == pageId;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/PageIO.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/PageIO.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/PageIO.java
index 56ebb0f..423be3d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/PageIO.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/PageIO.java
@@ -616,7 +616,6 @@ public abstract class PageIO {
* @return Page IO.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
public static <Q extends PageIO> Q getPageIO(int type, int ver) throws IgniteCheckedException {
switch (type) {
case T_DATA:
@@ -674,7 +673,6 @@ public abstract class PageIO {
* @return IO for either inner or leaf B+Tree page.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
public static <Q extends BPlusIO<?>> Q getBPlusIO(int type, int ver) throws IgniteCheckedException {
if (type >= T_H2_EX_REF_LEAF_START && type <= T_H2_EX_REF_LEAF_END)
return (Q)h2ExtraLeafIOs.get(type - T_H2_EX_REF_LEAF_START).forVersion(ver);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryFuture.java
index 241a1e6..1380772 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryFuture.java
@@ -58,7 +58,6 @@ public class GridCacheDistributedQueryFuture<K, V, R> extends GridCacheQueryFutu
* @param qry Query.
* @param nodes Nodes.
*/
- @SuppressWarnings("unchecked")
protected GridCacheDistributedQueryFuture(GridCacheContext<K, V> ctx, long reqId, GridCacheQueryBean qry,
Iterable<ClusterNode> nodes) {
super(ctx, qry, false);
@@ -195,7 +194,6 @@ public class GridCacheDistributedQueryFuture<K, V, R> extends GridCacheQueryFutu
}
/** {@inheritDoc} */
- @SuppressWarnings("NonPrivateFieldAccessedInSynchronizedContext")
@Override protected void loadPage() {
assert !Thread.holdsLock(this);
@@ -214,7 +212,6 @@ public class GridCacheDistributedQueryFuture<K, V, R> extends GridCacheQueryFutu
}
/** {@inheritDoc} */
- @SuppressWarnings("NonPrivateFieldAccessedInSynchronizedContext")
@Override protected void loadAllPages() throws IgniteInterruptedCheckedException {
assert !Thread.holdsLock(this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
index c5f64c9..0f9ee28 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
@@ -194,7 +194,6 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
* @param sndId Sender node id.
* @param req Query request.
*/
- @SuppressWarnings("unchecked")
@Override void processQueryRequest(UUID sndId, GridCacheQueryRequest req) {
assert req.mvccSnapshot() != null || !cctx.mvccEnabled() || req.cancel() ||
(req.type() == null && !req.fields()) : req; // Last assertion means next page request.
@@ -722,7 +721,6 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public CacheQueryFuture<?> queryFieldsDistributed(GridCacheQueryBean qry,
Collection<ClusterNode> nodes) {
assert cctx.config().getCacheMode() != LOCAL;
@@ -790,7 +788,6 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
* @param nodes Nodes.
* @throws IgniteCheckedException In case of error.
*/
- @SuppressWarnings("unchecked")
private void sendRequest(
final GridCacheDistributedQueryFuture<?, ?, ?> fut,
final GridCacheQueryRequest req,
@@ -892,7 +889,6 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public boolean equals(Object obj) {
if (obj == this)
return true;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
index 6f3772c..0dbdef1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
@@ -424,7 +424,6 @@ public class GridCacheQueryAdapter<T> implements CacheQuery<T> {
/**
* @return Key-value filter.
*/
- @SuppressWarnings("unchecked")
@Nullable public <K, V> IgniteBiPredicate<K, V> scanFilter() {
return (IgniteBiPredicate<K, V>)filter;
}
@@ -432,7 +431,6 @@ public class GridCacheQueryAdapter<T> implements CacheQuery<T> {
/**
* @return Transformer.
*/
- @SuppressWarnings("unchecked")
@Nullable public <K, V> IgniteClosure<Map.Entry<K, V>, Object> transform() {
return (IgniteClosure<Map.Entry<K, V>, Object>)transform;
}
@@ -477,7 +475,7 @@ public class GridCacheQueryAdapter<T> implements CacheQuery<T> {
* @param args Arguments.
* @return Future.
*/
- @SuppressWarnings({"IfMayBeConditional", "unchecked"})
+ @SuppressWarnings({"IfMayBeConditional"})
private <R> CacheQueryFuture<R> execute0(@Nullable IgniteReducer<T, R> rmtReducer, @Nullable Object... args) {
assert type != SCAN : this;
@@ -528,7 +526,6 @@ public class GridCacheQueryAdapter<T> implements CacheQuery<T> {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public GridCloseableIterator executeScanQuery() throws IgniteCheckedException {
assert type == SCAN : "Wrong processing of query: " + type;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
index 140966e..4330cd0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
@@ -324,7 +324,6 @@ public abstract class GridCacheQueryFutureAdapter<K, V, R> extends GridFutureAda
/**
* @param col Collection.
*/
- @SuppressWarnings({"unchecked"})
protected void enqueue(Collection<?> col) {
assert Thread.holdsLock(this);
@@ -338,7 +337,6 @@ public abstract class GridCacheQueryFutureAdapter<K, V, R> extends GridFutureAda
* @return If dedup flag is {@code true} deduplicated collection (considering keys),
* otherwise passed in collection without any modifications.
*/
- @SuppressWarnings({"unchecked"})
private Collection<?> dedupIfRequired(Collection<?> col) {
if (!qry.query().enableDedup())
return col;
@@ -360,7 +358,6 @@ public abstract class GridCacheQueryFutureAdapter<K, V, R> extends GridFutureAda
* @param err Error (if was).
* @param finished Finished or not.
*/
- @SuppressWarnings({"unchecked"})
public void onPage(@Nullable UUID nodeId, @Nullable Collection<?> data, @Nullable Throwable err, boolean finished) {
if (isCancelled())
return;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
index f42164e..8949a2f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
@@ -1340,7 +1340,7 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
* @param qry Query.
* @param updateStatistics Update statistics flag.
*/
- @SuppressWarnings({"unchecked", "serial"})
+ @SuppressWarnings({"unchecked"})
protected GridCloseableIterator scanQueryLocal(final GridCacheQueryAdapter qry,
boolean updateStatistics) throws IgniteCheckedException {
if (!enterBusy())
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java
index a1650be..8e05c02 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java
@@ -234,7 +234,6 @@ public class GridCacheQueryResponse extends GridCacheIdMessage implements GridCa
/**
* @param data Query data.
*/
- @SuppressWarnings("unchecked")
public void data(Collection<?> data) {
this.data = (Collection<Object>)data;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponseEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponseEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponseEntry.java
index 650f0c0..5c63eaa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponseEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponseEntry.java
@@ -87,7 +87,6 @@ public class GridCacheQueryResponseEntry<K, V> implements Map.Entry<K, V>, Exter
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
key = (K)in.readObject();
val = (V)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBuffer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBuffer.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBuffer.java
index 2fc6993..c707c72 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBuffer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBuffer.java
@@ -421,7 +421,6 @@ public class CacheContinuousQueryEventBuffer {
* @param backup Backup entry flag.
* @return New result.
*/
- @SuppressWarnings("unchecked")
@Nullable private Object processEntry0(
@Nullable Object res,
long cntr,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java
index ade360a..503a514 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java
@@ -1211,7 +1211,6 @@ public class CacheContinuousQueryHandler<K, V> implements GridContinuousHandler
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
cacheName = U.readString(in);
topic = in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandlerV3.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandlerV3.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandlerV3.java
index 14d5605..78228f3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandlerV3.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandlerV3.java
@@ -156,7 +156,6 @@ public class CacheContinuousQueryHandlerV3<K, V> extends CacheContinuousQueryHan
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void writeExternal(ObjectOutput out) throws IOException {
super.writeExternal(out);
@@ -171,7 +170,6 @@ public class CacheContinuousQueryHandlerV3<K, V> extends CacheContinuousQueryHan
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
super.readExternal(in);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java
index 4c399bf..d688a52 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java
@@ -1216,7 +1216,6 @@ public class CacheContinuousQueryManager extends GridCacheManagerAdapter {
* @param evt Event.
* @return Singleton iterable.
*/
- @SuppressWarnings("unchecked")
private Iterable<CacheEntryEvent<? extends K, ? extends V>> singleton(
CacheEntryEvent<? extends K, ? extends V> evt) {
assert evt instanceof CacheContinuousQueryEvent;
@@ -1296,7 +1295,6 @@ public class CacheContinuousQueryManager extends GridCacheManagerAdapter {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
impl = (CacheEntryEventFilter)in.readObject();
types = in.readByte();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheWriteBehindStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheWriteBehindStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheWriteBehindStore.java
index 82ff3aa..fdf3649 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheWriteBehindStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheWriteBehindStore.java
@@ -531,7 +531,6 @@ public class GridCacheWriteBehindStore<K, V> implements CacheStore<K, V>, Lifecy
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void delete(Object key) {
try {
if (log.isDebugEnabled())
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
index 47a0276..8be90dd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
@@ -1764,7 +1764,7 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
* @throws IgniteCheckedException In case of eny exception.
* @throws GridCacheEntryRemovedException If entry got removed.
*/
- @SuppressWarnings({"unchecked", "ConstantConditions"})
+ @SuppressWarnings({"unchecked"})
protected IgniteBiTuple<GridCacheOperation, GridCacheVersionConflictContext> conflictResolve(
GridCacheOperation op,
IgniteTxEntry txEntry,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index df43615..c829d45 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -1177,7 +1177,6 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
* @param computeInvoke If {@code true} computes return value for invoke operation.
* @throws IgniteCheckedException If error.
*/
- @SuppressWarnings("unchecked")
protected final void postLockWrite(
GridCacheContext cacheCtx,
Iterable<KeyCacheObject> keys,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
index a8b594b..ce914e8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
@@ -737,7 +737,6 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
/**
* @return Transaction for current thread.
*/
- @SuppressWarnings({"unchecked"})
public <T> T tx() {
IgniteInternalTx tx = txContext();
@@ -845,7 +844,6 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
* @param threadId Id of thread for transaction.
* @return Transaction for thread with given ID.
*/
- @SuppressWarnings({"unchecked"})
private <T> T tx(GridCacheContext cctx, long threadId) {
if (cctx == null || !cctx.systemTx())
return (T)threadMap.get(threadId);
@@ -866,7 +864,6 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
* @param txId Transaction ID.
* @return Transaction with given ID.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public <T extends IgniteInternalTx> T tx(GridCacheVersion txId) {
return (T)idMap.get(txId);
}
@@ -875,7 +872,6 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
* @param txId Transaction ID.
* @return Transaction with given ID.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public <T extends IgniteInternalTx> T nearTx(GridCacheVersion txId) {
return (T)nearIdMap.get(txId);
}
@@ -1771,7 +1767,6 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
/**
* @return Currently committing transaction.
*/
- @SuppressWarnings({"unchecked"})
private IgniteInternalTx txContext() {
return threadCtx.get();
}
@@ -2332,7 +2327,6 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
/**
* @return Collection of active transaction deadlock detection futures.
*/
- @SuppressWarnings("unchecked")
public Collection<IgniteInternalFuture<?>> deadlockDetectionFutures() {
Collection<? extends IgniteInternalFuture<?>> values = deadlockDetectFuts.values();
@@ -2756,7 +2750,6 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
*/
private class DeadlockDetectionListener implements GridMessageListener {
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void onMessage(UUID nodeId, Object msg, byte plc) {
GridCacheMessage cacheMsg = (GridCacheMessage)msg;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetection.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetection.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetection.java
index 1cf7809..a904e5b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetection.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetection.java
@@ -220,7 +220,6 @@ public class TxDeadlockDetection {
* @param topVer Transaction topology version.
* @param keys Keys.
*/
- @SuppressWarnings("unchecked")
private TxDeadlockFuture(GridCacheSharedContext cctx,
GridCacheVersion txId,
AffinityTopologyVersion topVer,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java
index 0fa2f7e..84dfae1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java
@@ -98,7 +98,6 @@ public class GridCacheLazyPlainVersionedEntry<K, V> extends GridCachePlainVersio
* @param keepBinary Flag to keep binary if needed.
* @return the value corresponding to this entry
*/
- @SuppressWarnings("unchecked")
public V value(boolean keepBinary) {
if (val == null)
val = (V)cctx.unwrapBinaryIfNeeded(valObj, keepBinary, true);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
index 48c0299..6d0710b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
@@ -332,7 +332,6 @@ public class ClusterProcessor extends GridProcessorAdapter {
/**
* @param vals collection to seek through.
*/
- @SuppressWarnings("unchecked")
private Boolean findLastFlag(Collection<Serializable> vals) {
Boolean flag = null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousMessage.java
index 5e7cc9d..cdfb2a4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousMessage.java
@@ -118,7 +118,6 @@ public class GridContinuousMessage implements Message {
/**
* @return Message data.
*/
- @SuppressWarnings("unchecked")
public <T> T data() {
return msgs != null ? (T)msgs : (T)data;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index 4569f65..22d6997 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -811,7 +811,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
* @param prjPred Projection predicate.
* @return Future.
*/
- @SuppressWarnings("TooBroadScope")
public IgniteInternalFuture<UUID> startRoutine(GridContinuousHandler hnd,
boolean locOnly,
int bufSize,
@@ -1712,7 +1711,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
if (interval > 0) {
IgniteThread checker = new IgniteThread(new GridWorker(ctx.igniteInstanceName(), "continuous-buffer-checker", log) {
- @SuppressWarnings("ConstantConditions")
@Override protected void body() {
long interval0 = interval;
@@ -2371,7 +2369,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
routineId = U.readUuid(in);
prjPred = (IgnitePredicate<ClusterNode>)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRequestData.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRequestData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRequestData.java
index 2314f29..4035cdb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRequestData.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRequestData.java
@@ -245,7 +245,6 @@ class StartRequestData implements Externalizable {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
boolean b = in.readBoolean();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
index 4253fb2..76cb899 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
@@ -1230,7 +1230,6 @@ public class DataStreamerImpl<K, V> implements IgniteDataStreamer<K, V>, Delayed
}
/** {@inheritDoc} */
- @SuppressWarnings("ForLoopReplaceableByForEach")
@Override public void flush() throws CacheException {
lock(true);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
index 92671e0..ea78f6c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
@@ -181,7 +181,6 @@ public final class DataStructuresProcessor extends GridProcessorAdapter implemen
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void onKernalStart(boolean active) {
if (ctx.config().isDaemon() || !active)
return;
@@ -837,7 +836,6 @@ public final class DataStructuresProcessor extends GridProcessorAdapter implemen
* @return Instance of queue.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
public final <T> IgniteQueue<T> queue(final String name, @Nullable final String grpName, int cap,
@Nullable final CollectionConfiguration cfg)
throws IgniteCheckedException {
@@ -1550,7 +1548,6 @@ public final class DataStructuresProcessor extends GridProcessorAdapter implemen
* @return Set instance.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
@Nullable public <T> IgniteSet<T> set(final String name, @Nullable final String grpName, @Nullable final CollectionConfiguration cfg)
throws IgniteCheckedException {
A.notNull(name, "name");
@@ -1615,7 +1612,6 @@ public final class DataStructuresProcessor extends GridProcessorAdapter implemen
* @return Object has casted to expected type.
* @throws IgniteCheckedException If {@code obj} has different to {@code cls} type.
*/
- @SuppressWarnings("unchecked")
@Nullable private <R> R cast(@Nullable Object obj, Class<R> cls) throws IgniteCheckedException {
if (obj == null)
return null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicReferenceValue.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicReferenceValue.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicReferenceValue.java
index b3a2243..32b8b31 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicReferenceValue.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicReferenceValue.java
@@ -75,7 +75,6 @@ public final class GridCacheAtomicReferenceValue<T> extends AtomicDataStructureV
}
/** {@inheritDoc} */
- @SuppressWarnings( {"unchecked"})
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
val = (T)in.readObject();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicStampedValue.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicStampedValue.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicStampedValue.java
index 89f83c1..a328fb1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicStampedValue.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicStampedValue.java
@@ -100,7 +100,6 @@ public final class GridCacheAtomicStampedValue<T, S> extends AtomicDataStructure
}
/** {@inheritDoc} */
- @SuppressWarnings( {"unchecked"})
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
val = (T)in.readObject();
stamp = (S)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheCountDownLatchImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheCountDownLatchImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheCountDownLatchImpl.java
index 7662acf..8453080 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheCountDownLatchImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheCountDownLatchImpl.java
@@ -309,7 +309,6 @@ public final class GridCacheCountDownLatchImpl extends AtomicDataStructureProxy<
* @return Reconstructed object.
* @throws ObjectStreamException Thrown in case of unmarshalling error.
*/
- @SuppressWarnings({"ConstantConditions"})
private Object readResolve() throws ObjectStreamException {
try {
IgniteBiTuple<GridKernalContext, String> t = stash.get();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractOutputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractOutputStream.java
index c1e751e..463fb64 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractOutputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractOutputStream.java
@@ -110,7 +110,6 @@ abstract class IgfsAbstractOutputStream extends IgfsOutputStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("NullableProblems")
@Override public void write(byte[] b, int off, int len) throws IOException {
A.notNull(b, "b");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
index 5f8f314..9184f5e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
@@ -1497,7 +1497,6 @@ public class IgfsDataManager extends IgfsManager {
}
/** {@inheritDoc} */
- @SuppressWarnings("ConstantConditions")
@Override protected void body() throws InterruptedException, IgniteInterruptedCheckedException {
try {
while (!isCancelled()) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
index bac536d..5931d40 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
@@ -414,7 +414,6 @@ public final class IgfsImpl implements IgfsEx {
}
/** {@inheritDoc} */
- @SuppressWarnings("ConstantConditions")
@Override public IgfsStatus globalSpace() {
return safeOp(new Callable<IgfsStatus>() {
@Override public IgfsStatus call() throws Exception {
@@ -765,7 +764,6 @@ public final class IgfsImpl implements IgfsEx {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public Collection<IgfsPath> listPaths(final IgfsPath path) {
A.notNull(path, "path");
@@ -1554,7 +1552,6 @@ public final class IgfsImpl implements IgfsEx {
* @param arg Optional task argument.
* @return Execution future.
*/
- @SuppressWarnings("unchecked")
<T, R> IgniteInternalFuture<R> executeAsync0(Class<? extends IgfsTask<T, R>> taskCls,
@Nullable IgfsRecordResolver rslvr, Collection<IgfsPath> paths, boolean skipNonExistentFiles,
long maxRangeLen, @Nullable T arg) {
@@ -1790,7 +1787,6 @@ public final class IgfsImpl implements IgfsEx {
/**
* IGFS thread factory.
*/
- @SuppressWarnings("NullableProblems")
private static class IgfsThreadFactory implements ThreadFactory {
/** IGFS name. */
private final String name;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
index 40352aa..a24f8dc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
@@ -59,7 +59,6 @@ public class IgfsInputStreamImpl extends IgfsInputStream implements IgfsSecondar
private final IgfsContext igfsCtx;
/** Secondary file system reader. */
- @SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
private final IgfsSecondaryFileSystemPositionedReadable secReader;
/** Logger. */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientResourceRegistry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientResourceRegistry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientResourceRegistry.java
index 0ac3368..faa0e7f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientResourceRegistry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientResourceRegistry.java
@@ -52,7 +52,6 @@ public class ClientResourceRegistry {
* @param <T> Object type.
* @return Object.
*/
- @SuppressWarnings("unchecked")
public <T> T get(long hnd) {
Object obj = res.get(hnd);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/dotnet/PlatformDotNetCacheStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/dotnet/PlatformDotNetCacheStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/dotnet/PlatformDotNetCacheStore.java
index fbf8191..c2303ac 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/dotnet/PlatformDotNetCacheStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/dotnet/PlatformDotNetCacheStore.java
@@ -270,7 +270,6 @@ public class PlatformDotNetCacheStore<K, V> implements CacheStore<K, V>, Platfor
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void writeAll(final Collection<Cache.Entry<? extends K, ? extends V>> entries) {
assert entries != null;
try {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/dotnet/PlatformDotNetConfigurationClosure.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/dotnet/PlatformDotNetConfigurationClosure.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/dotnet/PlatformDotNetConfigurationClosure.java
index 05ee693..89ad088 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/dotnet/PlatformDotNetConfigurationClosure.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/dotnet/PlatformDotNetConfigurationClosure.java
@@ -75,7 +75,6 @@ public class PlatformDotNetConfigurationClosure extends PlatformAbstractConfigur
}
/** {@inheritDoc} */
- @SuppressWarnings("deprecation")
@Override protected void apply0(IgniteConfiguration igniteCfg) {
// Validate and copy Interop configuration setting environment pointer along the way.
PlatformConfiguration interopCfg = igniteCfg.getPlatformConfiguration();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/events/PlatformEvents.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/events/PlatformEvents.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/events/PlatformEvents.java
index bd22298..218b112 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/events/PlatformEvents.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/events/PlatformEvents.java
@@ -443,19 +443,17 @@ public class PlatformEvents extends PlatformAbstractTarget {
}
/** <inheritDoc /> */
- @SuppressWarnings("unchecked")
@Override public void write(BinaryRawWriterEx writer, Object obj, Throwable err) {
- Collection<Event> events = (Collection<Event>)obj;
+ Collection<Event> evts = (Collection<Event>)obj;
if (obj != null) {
- writer.writeInt(events.size());
+ writer.writeInt(evts.size());
- for (Event e : events)
+ for (Event e : evts)
platformCtx.writeEvent(writer, e);
}
- else {
+ else
writer.writeInt(-1);
- }
}
/** <inheritDoc /> */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java
index bfd31b6..6b34149 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java
@@ -81,7 +81,6 @@ import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_PREFIX;
/**
* Platform utility methods.
*/
-@SuppressWarnings({"unchecked"})
public class PlatformUtils {
/** Node attribute: platform. */
public static final String ATTR_PLATFORM = ATTR_PREFIX + ".platform";
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/CachePluginManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/CachePluginManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/CachePluginManager.java
index 556bb26..abab9d6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/CachePluginManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/CachePluginManager.java
@@ -109,7 +109,6 @@ public class CachePluginManager extends GridCacheManagerAdapter {
* @param cls Component class.
* @return Created component.
*/
- @SuppressWarnings("unchecked")
public <T> T createComponent(Class<T> cls) {
for (CachePluginProvider provider : providersList) {
T res = (T)provider.createComponent(cls);
@@ -146,7 +145,7 @@ public class CachePluginManager extends GridCacheManagerAdapter {
* @param <V> Value type.
* @return New instance of underlying type or {@code null} if it's not available.
*/
- @SuppressWarnings({"unchecked", "ForLoopReplaceableByForEach"})
+ @SuppressWarnings({"ForLoopReplaceableByForEach"})
@Nullable public <T, K, V> T unwrapCacheEntry(Cache.Entry<K, V> entry, Class<T> cls) {
for (int i = 0; i < providersList.size(); i++) {
final T res = (T)providersList.get(i).unwrapCacheEntry(entry, cls);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/IgnitePluginProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/IgnitePluginProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/IgnitePluginProcessor.java
index c1e542d..6e82a0d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/IgnitePluginProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/IgnitePluginProcessor.java
@@ -108,7 +108,6 @@ public class IgnitePluginProcessor extends GridProcessorAdapter {
* @param name Plugin name.
* @return Plugin provider.
*/
- @SuppressWarnings("unchecked")
@Nullable public <T extends PluginProvider> T pluginProvider(String name) {
return (T)plugins.get(name);
}
@@ -124,7 +123,6 @@ public class IgnitePluginProcessor extends GridProcessorAdapter {
* @param provider Plugin context.
* @return Plugin context.
*/
- @SuppressWarnings("unchecked")
public <T extends PluginContext> T pluginContextForProvider(PluginProvider provider) {
return (T)pluginCtxMap.get(provider);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryCacheObjectsIterator.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryCacheObjectsIterator.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryCacheObjectsIterator.java
index b0e1562..08934e9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryCacheObjectsIterator.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryCacheObjectsIterator.java
@@ -62,7 +62,6 @@ public class GridQueryCacheObjectsIterator implements Iterator<List<?>>, AutoClo
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public List<?> next() {
return ((List<?>)CacheObjectUtils.unwrapBinariesIfNeeded(
cacheObjValCtx, (Collection<Object>)iter.next(), keepBinary));
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index eee21e2..bf2f943 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -336,7 +336,6 @@ public class GridQueryProcessor extends GridProcessorAdapter {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void onGridDataReceived(DiscoveryDataBag.GridDiscoveryData data) {
synchronized (stateMux) {
// Preserve proposals.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryKeyValueIterator.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryKeyValueIterator.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryKeyValueIterator.java
index 02dde9d..af984cd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryKeyValueIterator.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryKeyValueIterator.java
@@ -46,7 +46,6 @@ public class QueryKeyValueIterator<K, V> implements Iterator<Cache.Entry<K, V>>
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public Cache.Entry<K, V> next() {
try {
List<?> row = iter.next();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
index 722205b..865c5df 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
@@ -205,7 +205,6 @@ public class QueryTypeDescriptorImpl implements GridQueryTypeDescriptor {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T value(String field, Object key, Object val) throws IgniteCheckedException {
assert field != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/query/property/QueryBinaryProperty.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/property/QueryBinaryProperty.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/property/QueryBinaryProperty.java
index 3f2d233..0405057 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/property/QueryBinaryProperty.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/property/QueryBinaryProperty.java
@@ -213,7 +213,6 @@ public class QueryBinaryProperty implements GridQueryProperty {
* @param <T> Value type.
*/
private <T> void setValue0(BinaryObjectBuilder builder, String field, Object val, Class<T> valType) {
- //noinspection unchecked
builder.setField(field, (T)val, valType);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/client/message/GridClientTaskResultBean.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/client/message/GridClientTaskResultBean.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/client/message/GridClientTaskResultBean.java
index dc2a953..8329276 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/client/message/GridClientTaskResultBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/client/message/GridClientTaskResultBean.java
@@ -73,7 +73,6 @@ public class GridClientTaskResultBean implements Externalizable {
/**
* @return Task result.
*/
- @SuppressWarnings("unchecked")
public <R> R getResult() {
return (R)res;
}
[18/52] [abbrv] ignite git commit: SqlQueryFullScanBenchmark config
fixed
Posted by sb...@apache.org.
SqlQueryFullScanBenchmark config fixed
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/32f564cf
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/32f564cf
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/32f564cf
Branch: refs/heads/ignite-627
Commit: 32f564cf4847b9b7493f74b946f9c65ba73bb0c2
Parents: b4bfd4c
Author: Sergi Vladykin <se...@gmail.com>
Authored: Tue Dec 18 15:30:31 2018 +0300
Committer: Sergi Vladykin <se...@gmail.com>
Committed: Tue Dec 18 15:30:31 2018 +0300
----------------------------------------------------------------------
modules/yardstick/config/ignite-base-config.xml | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/32f564cf/modules/yardstick/config/ignite-base-config.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/config/ignite-base-config.xml b/modules/yardstick/config/ignite-base-config.xml
index 6db8b6e..99f2460 100644
--- a/modules/yardstick/config/ignite-base-config.xml
+++ b/modules/yardstick/config/ignite-base-config.xml
@@ -127,6 +127,9 @@
<value>org.apache.ignite.yardstick.cache.model.Person</value>
<value>java.lang.Integer</value>
+ <value>org.apache.ignite.yardstick.cache.model.PersonNoIndex</value>
+
+ <value>java.lang.Integer</value>
<value>org.apache.ignite.yardstick.cache.model.SampleValue</value>
<value>java.lang.Integer</value>
[37/52] [abbrv] ignite git commit: IGNITE-9839 Web Console: update to
RxJS 6.
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/store/effects.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/store/effects.js b/modules/web-console/frontend/app/components/page-configure/store/effects.js
index 014076b..ac807dc 100644
--- a/modules/web-console/frontend/app/components/page-configure/store/effects.js
+++ b/modules/web-console/frontend/app/components/page-configure/store/effects.js
@@ -15,23 +15,8 @@
* limitations under the License.
*/
-import {Observable} from 'rxjs/Observable';
-import 'rxjs/add/operator/ignoreElements';
-import 'rxjs/add/operator/let';
-import 'rxjs/add/operator/exhaustMap';
-import 'rxjs/add/operator/switchMap';
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/pluck';
-import 'rxjs/add/operator/withLatestFrom';
-import 'rxjs/add/operator/merge';
-import 'rxjs/add/operator/take';
-import 'rxjs/add/operator/catch';
-import 'rxjs/add/operator/zip';
-import {merge} from 'rxjs/observable/merge';
-import {empty} from 'rxjs/observable/empty';
-import {of} from 'rxjs/observable/of';
-import {from} from 'rxjs/observable/from';
-import {fromPromise} from 'rxjs/observable/fromPromise';
+import {merge, empty, of, from} from 'rxjs';
+import {mapTo, filter, tap, ignoreElements, exhaustMap, switchMap, map, pluck, withLatestFrom, take, catchError, zip} from 'rxjs/operators';
import uniq from 'lodash/uniq';
import {uniqueName} from 'app/utils/uniqueName';
import {defaultNames} from '../defaultNames';
@@ -81,7 +66,7 @@ import Models from 'app/services/Models';
import IGFSs from 'app/services/IGFSs';
import {Confirm} from 'app/services/Confirm.service';
-export const ofType = (type) => (s) => s.filter((a) => a.type === type);
+export const ofType = (type) => (s) => s.pipe(filter((a) => a.type === type));
export default class ConfigEffects {
static $inject = [
@@ -124,35 +109,37 @@ export default class ConfigEffects {
this.Confirm = Confirm;
this.configurationDownload = ConfigurationDownload;
- this.loadConfigurationEffect$ = this.ConfigureState.actions$
- .let(ofType('LOAD_COMPLETE_CONFIGURATION'))
- .exhaustMap((action) => {
- return fromPromise(this.Clusters.getConfiguration(action.clusterID))
- .switchMap(({data}) => of(
+ this.loadConfigurationEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('LOAD_COMPLETE_CONFIGURATION'),
+ exhaustMap((action) => {
+ return from(this.Clusters.getConfiguration(action.clusterID)).pipe(
+ switchMap(({data}) => of(
completeConfiguration(data),
{type: 'LOAD_COMPLETE_CONFIGURATION_OK', data}
- ))
- .catch((error) => of({
+ )),
+ catchError((error) => of({
type: 'LOAD_COMPLETE_CONFIGURATION_ERR',
error: {
message: `Failed to load cluster configuration: ${error.data}.`
},
action
- }));
- });
+ })));
+ })
+ );
- this.storeConfigurationEffect$ = this.ConfigureState.actions$
- .let(ofType(COMPLETE_CONFIGURATION))
- .exhaustMap(({configuration: {cluster, caches, models, igfss}}) => of(...[
+ this.storeConfigurationEffect$ = this.ConfigureState.actions$.pipe(
+ ofType(COMPLETE_CONFIGURATION),
+ exhaustMap(({configuration: {cluster, caches, models, igfss}}) => of(...[
cluster && {type: clustersActionTypes.UPSERT, items: [cluster]},
caches && caches.length && {type: cachesActionTypes.UPSERT, items: caches},
models && models.length && {type: modelsActionTypes.UPSERT, items: models},
igfss && igfss.length && {type: igfssActionTypes.UPSERT, items: igfss}
- ].filter((v) => v)));
+ ].filter((v) => v)))
+ );
- this.saveCompleteConfigurationEffect$ = this.ConfigureState.actions$
- .let(ofType(ADVANCED_SAVE_COMPLETE_CONFIGURATION))
- .switchMap((action) => {
+ this.saveCompleteConfigurationEffect$ = this.ConfigureState.actions$.pipe(
+ ofType(ADVANCED_SAVE_COMPLETE_CONFIGURATION),
+ switchMap((action) => {
const actions = [
{
type: modelsActionTypes.UPSERT,
@@ -188,62 +175,68 @@ export default class ConfigEffects {
}
].filter((a) => a.items.length);
- return of(...actions)
- .merge(
- fromPromise(Clusters.saveAdvanced(action.changedItems))
- .switchMap((res) => {
- return of(
- {type: 'EDIT_CLUSTER', cluster: action.changedItems.cluster},
- {type: 'ADVANCED_SAVE_COMPLETE_CONFIGURATION_OK', changedItems: action.changedItems}
- );
- })
- .catch((res) => {
- return of({
- type: 'ADVANCED_SAVE_COMPLETE_CONFIGURATION_ERR',
- changedItems: action.changedItems,
- action,
- error: {
- message: `Failed to save cluster "${action.changedItems.cluster.name}": ${res.data}.`
- }
- }, {
- type: 'UNDO_ACTIONS',
- actions
- });
- })
+ return merge(
+ of(...actions),
+ from(Clusters.saveAdvanced(action.changedItems)).pipe(
+ switchMap((res) => {
+ return of(
+ {type: 'EDIT_CLUSTER', cluster: action.changedItems.cluster},
+ {type: 'ADVANCED_SAVE_COMPLETE_CONFIGURATION_OK', changedItems: action.changedItems}
+ );
+ }),
+ catchError((res) => {
+ return of({
+ type: 'ADVANCED_SAVE_COMPLETE_CONFIGURATION_ERR',
+ changedItems: action.changedItems,
+ action,
+ error: {
+ message: `Failed to save cluster "${action.changedItems.cluster.name}": ${res.data}.`
+ }
+ }, {
+ type: 'UNDO_ACTIONS',
+ actions
+ });
+ })
+ )
);
- });
-
- this.addCacheToEditEffect$ = this.ConfigureState.actions$
- .let(ofType('ADD_CACHE_TO_EDIT'))
- .switchMap(() => this.ConfigureState.state$.let(this.ConfigSelectors.selectCacheToEdit('new')).take(1))
- .map((cache) => ({type: 'UPSERT_CLUSTER_ITEM', itemType: 'caches', item: cache}));
-
- this.errorNotificationsEffect$ = this.ConfigureState.actions$
- .filter((a) => a.error)
- .do((action) => this.IgniteMessages.showError(action.error))
- .ignoreElements();
-
- this.loadUserClustersEffect$ = this.ConfigureState.actions$
- .let(ofType('LOAD_USER_CLUSTERS'))
- .exhaustMap((a) => {
- return fromPromise(this.Clusters.getClustersOverview())
- .switchMap(({data}) => of(
+ })
+ );
+
+ this.addCacheToEditEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('ADD_CACHE_TO_EDIT'),
+ switchMap(() => this.ConfigureState.state$.pipe(this.ConfigSelectors.selectCacheToEdit('new'), take(1))),
+ map((cache) => ({type: 'UPSERT_CLUSTER_ITEM', itemType: 'caches', item: cache}))
+ );
+
+ this.errorNotificationsEffect$ = this.ConfigureState.actions$.pipe(
+ filter((a) => a.error),
+ tap((action) => this.IgniteMessages.showError(action.error)),
+ ignoreElements()
+ );
+
+ this.loadUserClustersEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('LOAD_USER_CLUSTERS'),
+ exhaustMap((a) => {
+ return from(this.Clusters.getClustersOverview()).pipe(
+ switchMap(({data}) => of(
{type: shortClustersActionTypes.SET, items: data},
{type: `${a.type}_OK`}
- ))
- .catch((error) => of({
+ )),
+ catchError((error) => of({
type: `${a.type}_ERR`,
error: {
message: `Failed to load clusters: ${error.data}`
},
action: a
- }));
- });
+ }))
+ );
+ })
+ );
- this.loadAndEditClusterEffect$ = ConfigureState.actions$
- .let(ofType('LOAD_AND_EDIT_CLUSTER'))
- .withLatestFrom(this.ConfigureState.state$.let(this.ConfigSelectors.selectShortClustersValue()))
- .exhaustMap(([a, shortClusters]) => {
+ this.loadAndEditClusterEffect$ = ConfigureState.actions$.pipe(
+ ofType('LOAD_AND_EDIT_CLUSTER'),
+ withLatestFrom(this.ConfigureState.state$.pipe(this.ConfigSelectors.selectShortClustersValue())),
+ exhaustMap(([a, shortClusters]) => {
if (a.clusterID === 'new') {
return of(
{
@@ -256,226 +249,268 @@ export default class ConfigEffects {
{type: 'LOAD_AND_EDIT_CLUSTER_OK'}
);
}
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectCluster(a.clusterID)).take(1)
- .switchMap((cluster) => {
+ return this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectCluster(a.clusterID),
+ take(1),
+ switchMap((cluster) => {
if (cluster) {
return of(
{type: 'EDIT_CLUSTER', cluster},
{type: 'LOAD_AND_EDIT_CLUSTER_OK'}
);
}
- return from(this.Clusters.getCluster(a.clusterID))
- .switchMap(({data}) => of(
+ return from(this.Clusters.getCluster(a.clusterID)).pipe(
+ switchMap(({data}) => of(
{type: clustersActionTypes.UPSERT, items: [data]},
{type: 'EDIT_CLUSTER', cluster: data},
{type: 'LOAD_AND_EDIT_CLUSTER_OK'}
- ))
- .catch((error) => of({
+ )),
+ catchError((error) => of({
type: 'LOAD_AND_EDIT_CLUSTER_ERR',
error: {
message: `Failed to load cluster: ${error.data}.`
}
- }));
- });
- });
-
- this.loadCacheEffect$ = this.ConfigureState.actions$
- .let(ofType('LOAD_CACHE'))
- .exhaustMap((a) => {
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectCache(a.cacheID)).take(1)
- .switchMap((cache) => {
+ }))
+ );
+ })
+ );
+ })
+ );
+
+ this.loadCacheEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('LOAD_CACHE'),
+ exhaustMap((a) => {
+ return this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectCache(a.cacheID),
+ take(1),
+ switchMap((cache) => {
if (cache)
return of({type: `${a.type}_OK`, cache});
- return fromPromise(this.Caches.getCache(a.cacheID))
- .switchMap(({data}) => of(
+ return from(this.Caches.getCache(a.cacheID)).pipe(
+ switchMap(({data}) => of(
{type: 'CACHE', cache: data},
{type: `${a.type}_OK`, cache: data}
- ));
- })
- .catch((error) => of({
+ ))
+ );
+ }),
+ catchError((error) => of({
type: `${a.type}_ERR`,
error: {
message: `Failed to load cache: ${error.data}.`
}
- }));
- });
+ }))
+ );
+ })
+ );
- this.storeCacheEffect$ = this.ConfigureState.actions$
- .let(ofType('CACHE'))
- .map((a) => ({type: cachesActionTypes.UPSERT, items: [a.cache]}));
+ this.storeCacheEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('CACHE'),
+ map((a) => ({type: cachesActionTypes.UPSERT, items: [a.cache]}))
+ );
- this.loadShortCachesEffect$ = ConfigureState.actions$
- .let(ofType('LOAD_SHORT_CACHES'))
- .exhaustMap((a) => {
+ this.loadShortCachesEffect$ = ConfigureState.actions$.pipe(
+ ofType('LOAD_SHORT_CACHES'),
+ exhaustMap((a) => {
if (!(a.ids || []).length)
return of({type: `${a.type}_OK`});
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectShortCaches()).take(1)
- .switchMap((items) => {
+ return this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectShortCaches(),
+ take(1),
+ switchMap((items) => {
if (!items.pristine && a.ids && a.ids.every((_id) => items.value.has(_id)))
return of({type: `${a.type}_OK`});
- return fromPromise(this.Clusters.getClusterCaches(a.clusterID))
- .switchMap(({data}) => of(
+ return from(this.Clusters.getClusterCaches(a.clusterID)).pipe(
+ switchMap(({data}) => of(
{type: shortCachesActionTypes.UPSERT, items: data},
{type: `${a.type}_OK`}
- ));
- })
- .catch((error) => of({
+ ))
+ );
+ }),
+ catchError((error) => of({
type: `${a.type}_ERR`,
error: {
message: `Failed to load caches: ${error.data}.`
},
action: a
- }));
- });
-
- this.loadIgfsEffect$ = this.ConfigureState.actions$
- .let(ofType('LOAD_IGFS'))
- .exhaustMap((a) => {
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectIGFS(a.igfsID)).take(1)
- .switchMap((igfs) => {
+ }))
+ );
+ })
+ );
+
+ this.loadIgfsEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('LOAD_IGFS'),
+ exhaustMap((a) => {
+ return this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectIGFS(a.igfsID),
+ take(1),
+ switchMap((igfs) => {
if (igfs)
return of({type: `${a.type}_OK`, igfs});
- return fromPromise(this.IGFSs.getIGFS(a.igfsID))
- .switchMap(({data}) => of(
+ return from(this.IGFSs.getIGFS(a.igfsID)).pipe(
+ switchMap(({data}) => of(
{type: 'IGFS', igfs: data},
{type: `${a.type}_OK`, igfs: data}
- ));
- })
- .catch((error) => of({
+ ))
+ );
+ }),
+ catchError((error) => of({
type: `${a.type}_ERR`,
error: {
message: `Failed to load IGFS: ${error.data}.`
}
- }));
- });
+ }))
+ );
+ })
+ );
- this.storeIgfsEffect$ = this.ConfigureState.actions$
- .let(ofType('IGFS'))
- .map((a) => ({type: igfssActionTypes.UPSERT, items: [a.igfs]}));
+ this.storeIgfsEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('IGFS'),
+ map((a) => ({type: igfssActionTypes.UPSERT, items: [a.igfs]}))
+ );
- this.loadShortIgfssEffect$ = ConfigureState.actions$
- .let(ofType('LOAD_SHORT_IGFSS'))
- .exhaustMap((a) => {
+ this.loadShortIgfssEffect$ = ConfigureState.actions$.pipe(
+ ofType('LOAD_SHORT_IGFSS'),
+ exhaustMap((a) => {
if (!(a.ids || []).length) {
return of(
{type: shortIGFSsActionTypes.UPSERT, items: []},
{type: `${a.type}_OK`}
);
}
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectShortIGFSs()).take(1)
- .switchMap((items) => {
+ return this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectShortIGFSs(),
+ take(1),
+ switchMap((items) => {
if (!items.pristine && a.ids && a.ids.every((_id) => items.value.has(_id)))
return of({type: `${a.type}_OK`});
- return fromPromise(this.Clusters.getClusterIGFSs(a.clusterID))
- .switchMap(({data}) => of(
+ return from(this.Clusters.getClusterIGFSs(a.clusterID)).pipe(
+ switchMap(({data}) => of(
{type: shortIGFSsActionTypes.UPSERT, items: data},
{type: `${a.type}_OK`}
- ));
- })
- .catch((error) => of({
+ ))
+ );
+ }),
+ catchError((error) => of({
type: `${a.type}_ERR`,
error: {
message: `Failed to load IGFSs: ${error.data}.`
},
action: a
- }));
- });
-
- this.loadModelEffect$ = this.ConfigureState.actions$
- .let(ofType('LOAD_MODEL'))
- .exhaustMap((a) => {
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectModel(a.modelID)).take(1)
- .switchMap((model) => {
+ }))
+ );
+ })
+ );
+
+ this.loadModelEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('LOAD_MODEL'),
+ exhaustMap((a) => {
+ return this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectModel(a.modelID),
+ take(1),
+ switchMap((model) => {
if (model)
return of({type: `${a.type}_OK`, model});
- return fromPromise(this.Models.getModel(a.modelID))
- .switchMap(({data}) => of(
+ return from(this.Models.getModel(a.modelID)).pipe(
+ switchMap(({data}) => of(
{type: 'MODEL', model: data},
{type: `${a.type}_OK`, model: data}
- ));
- })
- .catch((error) => of({
+ ))
+ );
+ }),
+ catchError((error) => of({
type: `${a.type}_ERR`,
error: {
message: `Failed to load domain model: ${error.data}.`
}
- }));
- });
+ }))
+ );
+ })
+ );
- this.storeModelEffect$ = this.ConfigureState.actions$
- .let(ofType('MODEL'))
- .map((a) => ({type: modelsActionTypes.UPSERT, items: [a.model]}));
+ this.storeModelEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('MODEL'),
+ map((a) => ({type: modelsActionTypes.UPSERT, items: [a.model]}))
+ );
- this.loadShortModelsEffect$ = this.ConfigureState.actions$
- .let(ofType('LOAD_SHORT_MODELS'))
- .exhaustMap((a) => {
+ this.loadShortModelsEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('LOAD_SHORT_MODELS'),
+ exhaustMap((a) => {
if (!(a.ids || []).length) {
return of(
{type: shortModelsActionTypes.UPSERT, items: []},
{type: `${a.type}_OK`}
);
}
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectShortModels()).take(1)
- .switchMap((items) => {
+ return this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectShortModels(),
+ take(1),
+ switchMap((items) => {
if (!items.pristine && a.ids && a.ids.every((_id) => items.value.has(_id)))
return of({type: `${a.type}_OK`});
- return fromPromise(this.Clusters.getClusterModels(a.clusterID))
- .switchMap(({data}) => of(
+ return from(this.Clusters.getClusterModels(a.clusterID)).pipe(
+ switchMap(({data}) => of(
{type: shortModelsActionTypes.UPSERT, items: data},
{type: `${a.type}_OK`}
- ));
- })
- .catch((error) => of({
+ ))
+ );
+ }),
+ catchError((error) => of({
type: `${a.type}_ERR`,
error: {
message: `Failed to load domain models: ${error.data}.`
},
action: a
- }));
- });
-
- this.basicSaveRedirectEffect$ = this.ConfigureState.actions$
- .let(ofType(BASIC_SAVE_OK))
- .do((a) => this.$state.go('base.configuration.edit.basic', {clusterID: a.changedItems.cluster._id}, {location: 'replace', custom: {justIDUpdate: true}}))
- .ignoreElements();
-
- this.basicDownloadAfterSaveEffect$ = this.ConfigureState.actions$.let(ofType(BASIC_SAVE_AND_DOWNLOAD))
- .zip(this.ConfigureState.actions$.let(ofType(BASIC_SAVE_OK)))
- .pluck('1')
- .do((a) => this.configurationDownload.downloadClusterConfiguration(a.changedItems.cluster))
- .ignoreElements();
+ }))
+ );
+ })
+ );
+
+ this.basicSaveRedirectEffect$ = this.ConfigureState.actions$.pipe(
+ ofType(BASIC_SAVE_OK),
+ tap((a) => this.$state.go('base.configuration.edit.basic', {clusterID: a.changedItems.cluster._id}, {location: 'replace', custom: {justIDUpdate: true}})),
+ ignoreElements()
+ );
+
+ this.basicDownloadAfterSaveEffect$ = this.ConfigureState.actions$.pipe(
+ ofType(BASIC_SAVE_AND_DOWNLOAD),
+ zip(this.ConfigureState.actions$.pipe(ofType(BASIC_SAVE_OK))),
+ pluck('1'),
+ tap((a) => this.configurationDownload.downloadClusterConfiguration(a.changedItems.cluster)),
+ ignoreElements()
+ );
this.advancedDownloadAfterSaveEffect$ = merge(
- this.ConfigureState.actions$.let(ofType(ADVANCED_SAVE_CLUSTER)),
- this.ConfigureState.actions$.let(ofType(ADVANCED_SAVE_CACHE)),
- this.ConfigureState.actions$.let(ofType(ADVANCED_SAVE_IGFS)),
- this.ConfigureState.actions$.let(ofType(ADVANCED_SAVE_MODEL)),
- )
- .filter((a) => a.download)
- .zip(this.ConfigureState.actions$.let(ofType('ADVANCED_SAVE_COMPLETE_CONFIGURATION_OK')))
- .pluck('1')
- .do((a) => this.configurationDownload.downloadClusterConfiguration(a.changedItems.cluster))
- .ignoreElements();
-
- this.advancedSaveRedirectEffect$ = this.ConfigureState.actions$
- .let(ofType('ADVANCED_SAVE_COMPLETE_CONFIGURATION_OK'))
- .withLatestFrom(this.ConfigureState.actions$.let(ofType(ADVANCED_SAVE_COMPLETE_CONFIGURATION)))
- .pluck('1', 'changedItems')
- .map((req) => {
+ this.ConfigureState.actions$.pipe(ofType(ADVANCED_SAVE_CLUSTER)),
+ this.ConfigureState.actions$.pipe(ofType(ADVANCED_SAVE_CACHE)),
+ this.ConfigureState.actions$.pipe(ofType(ADVANCED_SAVE_IGFS)),
+ this.ConfigureState.actions$.pipe(ofType(ADVANCED_SAVE_MODEL)),
+ ).pipe(
+ filter((a) => a.download),
+ zip(this.ConfigureState.actions$.pipe(ofType('ADVANCED_SAVE_COMPLETE_CONFIGURATION_OK'))),
+ pluck('1'),
+ tap((a) => this.configurationDownload.downloadClusterConfiguration(a.changedItems.cluster)),
+ ignoreElements()
+ );
+
+ this.advancedSaveRedirectEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('ADVANCED_SAVE_COMPLETE_CONFIGURATION_OK'),
+ withLatestFrom(this.ConfigureState.actions$.pipe(ofType(ADVANCED_SAVE_COMPLETE_CONFIGURATION))),
+ pluck('1', 'changedItems'),
+ map((req) => {
const firstChangedItem = Object.keys(req).filter((k) => k !== 'cluster')
.map((k) => Array.isArray(req[k]) ? [k, req[k][0]] : [k, req[k]])
.filter((v) => v[1])
.pop();
return firstChangedItem ? [...firstChangedItem, req.cluster] : ['cluster', req.cluster, req.cluster];
- })
- .do(([type, value, cluster]) => {
+ }),
+ tap(([type, value, cluster]) => {
const go = (state, params = {}) => this.$state.go(
state, {...params, clusterID: cluster._id}, {location: 'replace', custom: {justIDUpdate: true}}
);
@@ -523,66 +558,76 @@ export default class ConfigEffects {
default: break;
}
- })
- .ignoreElements();
+ }),
+ ignoreElements()
+ );
- this.removeClusterItemsEffect$ = this.ConfigureState.actions$
- .let(ofType(REMOVE_CLUSTER_ITEMS))
- .exhaustMap((a) => {
+ this.removeClusterItemsEffect$ = this.ConfigureState.actions$.pipe(
+ ofType(REMOVE_CLUSTER_ITEMS),
+ exhaustMap((a) => {
return a.confirm
// TODO: list items to remove in confirmation
- ? fromPromise(this.Confirm.confirm('Are you sure you want to remove these items?'))
- .mapTo(a)
- .catch(() => empty())
+ ? from(this.Confirm.confirm('Are you sure you want to remove these items?')).pipe(
+ mapTo(a),
+ catchError(() => empty())
+ )
: of(a);
- })
- .map((a) => removeClusterItemsConfirmed(a.clusterID, a.itemType, a.itemIDs));
-
- this.persistRemovedClusterItemsEffect$ = this.ConfigureState.actions$
- .let(ofType(REMOVE_CLUSTER_ITEMS_CONFIRMED))
- .withLatestFrom(this.ConfigureState.actions$.let(ofType(REMOVE_CLUSTER_ITEMS)))
- .filter(([a, b]) => {
+ }),
+ map((a) => removeClusterItemsConfirmed(a.clusterID, a.itemType, a.itemIDs))
+ );
+
+ this.persistRemovedClusterItemsEffect$ = this.ConfigureState.actions$.pipe(
+ ofType(REMOVE_CLUSTER_ITEMS_CONFIRMED),
+ withLatestFrom(this.ConfigureState.actions$.pipe(ofType(REMOVE_CLUSTER_ITEMS))),
+ filter(([a, b]) => {
return a.itemType === b.itemType
&& b.save
&& JSON.stringify(a.itemIDs) === JSON.stringify(b.itemIDs);
- })
- .pluck('0')
- .withLatestFrom(this.ConfigureState.state$.pluck('edit'))
- .map(([action, edit]) => advancedSaveCompleteConfiguration(edit));
-
- this.confirmClustersRemovalEffect$ = this.ConfigureState.actions$
- .let(ofType(CONFIRM_CLUSTERS_REMOVAL))
- .pluck('clusterIDs')
- .switchMap((ids) => this.ConfigureState.state$.let(this.ConfigSelectors.selectClusterNames(ids)).take(1))
- .exhaustMap((names) => {
- return fromPromise(this.Confirm.confirm(`
+ }),
+ pluck('0'),
+ withLatestFrom(this.ConfigureState.state$.pipe(pluck('edit'))),
+ map(([action, edit]) => advancedSaveCompleteConfiguration(edit))
+ );
+
+ this.confirmClustersRemovalEffect$ = this.ConfigureState.actions$.pipe(
+ ofType(CONFIRM_CLUSTERS_REMOVAL),
+ pluck('clusterIDs'),
+ switchMap((ids) => this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectClusterNames(ids),
+ take(1)
+ )),
+ exhaustMap((names) => {
+ return from(this.Confirm.confirm(`
<p>Are you sure you want to remove these clusters?</p>
<ul>${names.map((name) => `<li>${name}</li>`).join('')}</ul>
- `))
- .map(confirmClustersRemovalOK)
- .catch(() => Observable.empty());
- });
-
- this.persistRemovedClustersLocallyEffect$ = this.ConfigureState.actions$
- .let(ofType(CONFIRM_CLUSTERS_REMOVAL_OK))
- .withLatestFrom(this.ConfigureState.actions$.let(ofType(CONFIRM_CLUSTERS_REMOVAL)))
- .switchMap(([, {clusterIDs}]) => of(
+ `)).pipe(
+ map(confirmClustersRemovalOK),
+ catchError(() => empty())
+ );
+ })
+ );
+
+ this.persistRemovedClustersLocallyEffect$ = this.ConfigureState.actions$.pipe(
+ ofType(CONFIRM_CLUSTERS_REMOVAL_OK),
+ withLatestFrom(this.ConfigureState.actions$.pipe(ofType(CONFIRM_CLUSTERS_REMOVAL))),
+ switchMap(([, {clusterIDs}]) => of(
{type: shortClustersActionTypes.REMOVE, ids: clusterIDs},
{type: clustersActionTypes.REMOVE, ids: clusterIDs}
- ));
-
- this.persistRemovedClustersRemotelyEffect$ = this.ConfigureState.actions$
- .let(ofType(CONFIRM_CLUSTERS_REMOVAL_OK))
- .withLatestFrom(
- this.ConfigureState.actions$.let(ofType(CONFIRM_CLUSTERS_REMOVAL)),
- this.ConfigureState.actions$.let(ofType(shortClustersActionTypes.REMOVE)),
- this.ConfigureState.actions$.let(ofType(clustersActionTypes.REMOVE))
- )
- .switchMap(([, {clusterIDs}, ...backup]) => this.Clusters.removeCluster$(clusterIDs)
- .mapTo({
+ ))
+ );
+
+ this.persistRemovedClustersRemotelyEffect$ = this.ConfigureState.actions$.pipe(
+ ofType(CONFIRM_CLUSTERS_REMOVAL_OK),
+ withLatestFrom(
+ this.ConfigureState.actions$.pipe(ofType(CONFIRM_CLUSTERS_REMOVAL)),
+ this.ConfigureState.actions$.pipe(ofType(shortClustersActionTypes.REMOVE)),
+ this.ConfigureState.actions$.pipe(ofType(clustersActionTypes.REMOVE))
+ ),
+ switchMap(([, {clusterIDs}, ...backup]) => this.Clusters.removeCluster$(clusterIDs).pipe(
+ mapTo({
type: 'REMOVE_CLUSTERS_OK'
- })
- .catch((e) => of(
+ }),
+ catchError((e) => of(
{
type: 'REMOVE_CLUSTERS_ERR',
error: {
@@ -594,13 +639,15 @@ export default class ConfigEffects {
actions: backup
}
))
- );
+ ))
+ );
- this.notifyRemoteClustersRemoveSuccessEffect$ = this.ConfigureState.actions$
- .let(ofType('REMOVE_CLUSTERS_OK'))
- .withLatestFrom(this.ConfigureState.actions$.let(ofType(CONFIRM_CLUSTERS_REMOVAL)))
- .do(([, {clusterIDs}]) => this.IgniteMessages.showInfo(`Cluster(s) removed: ${clusterIDs.length}`))
- .ignoreElements();
+ this.notifyRemoteClustersRemoveSuccessEffect$ = this.ConfigureState.actions$.pipe(
+ ofType('REMOVE_CLUSTERS_OK'),
+ withLatestFrom(this.ConfigureState.actions$.pipe(ofType(CONFIRM_CLUSTERS_REMOVAL))),
+ tap(([, {clusterIDs}]) => this.IgniteMessages.showInfo(`Cluster(s) removed: ${clusterIDs.length}`)),
+ ignoreElements()
+ );
const _applyChangedIDs = (edit, {cache, igfs, model, cluster} = {}) => ({
cluster: {
@@ -616,22 +663,24 @@ export default class ConfigEffects {
});
this.advancedSaveCacheEffect$ = merge(
- this.ConfigureState.actions$.let(ofType(ADVANCED_SAVE_CLUSTER)),
- this.ConfigureState.actions$.let(ofType(ADVANCED_SAVE_CACHE)),
- this.ConfigureState.actions$.let(ofType(ADVANCED_SAVE_IGFS)),
- this.ConfigureState.actions$.let(ofType(ADVANCED_SAVE_MODEL)),
- )
- .withLatestFrom(this.ConfigureState.state$.pluck('edit'))
- .map(([action, edit]) => ({
+ this.ConfigureState.actions$.pipe(ofType(ADVANCED_SAVE_CLUSTER)),
+ this.ConfigureState.actions$.pipe(ofType(ADVANCED_SAVE_CACHE)),
+ this.ConfigureState.actions$.pipe(ofType(ADVANCED_SAVE_IGFS)),
+ this.ConfigureState.actions$.pipe(ofType(ADVANCED_SAVE_MODEL)),
+ ).pipe(
+ withLatestFrom(this.ConfigureState.state$.pipe(pluck('edit'))),
+ map(([action, edit]) => ({
type: ADVANCED_SAVE_COMPLETE_CONFIGURATION,
changedItems: _applyChangedIDs(edit, action)
- }));
-
- this.basicSaveEffect$ = this.ConfigureState.actions$
- .let(ofType(BASIC_SAVE))
- .merge(this.ConfigureState.actions$.let(ofType(BASIC_SAVE_AND_DOWNLOAD)))
- .withLatestFrom(this.ConfigureState.state$.pluck('edit'))
- .switchMap(([action, edit]) => {
+ }))
+ );
+
+ this.basicSaveEffect$ = merge(
+ this.ConfigureState.actions$.pipe(ofType(BASIC_SAVE)),
+ this.ConfigureState.actions$.pipe(ofType(BASIC_SAVE_AND_DOWNLOAD))
+ ).pipe(
+ withLatestFrom(this.ConfigureState.state$.pipe(pluck('edit'))),
+ switchMap(([action, edit]) => {
const changedItems = _applyChangedIDs(edit, {cluster: action.cluster});
const actions = [{
type: cachesActionTypes.UPSERT,
@@ -651,24 +700,27 @@ export default class ConfigEffects {
}
].filter((a) => a.items.length);
- return Observable.of(...actions)
- .merge(
- Observable.fromPromise(this.Clusters.saveBasic(changedItems))
- .switchMap((res) => Observable.of(
- {type: 'EDIT_CLUSTER', cluster: changedItems.cluster},
- basicSaveOK(changedItems)
- ))
- .catch((res) => Observable.of(
- basicSaveErr(changedItems, res),
- {type: 'UNDO_ACTIONS', actions}
- ))
+ return merge(
+ of(...actions),
+ from(this.Clusters.saveBasic(changedItems)).pipe(
+ switchMap((res) => of(
+ {type: 'EDIT_CLUSTER', cluster: changedItems.cluster},
+ basicSaveOK(changedItems)
+ )),
+ catchError((res) => of(
+ basicSaveErr(changedItems, res),
+ {type: 'UNDO_ACTIONS', actions}
+ ))
+ )
);
- });
+ })
+ );
- this.basicSaveOKMessagesEffect$ = this.ConfigureState.actions$
- .let(ofType(BASIC_SAVE_OK))
- .do((action) => this.IgniteMessages.showInfo(`Cluster "${action.changedItems.cluster.name}" saved.`))
- .ignoreElements();
+ this.basicSaveOKMessagesEffect$ = this.ConfigureState.actions$.pipe(
+ ofType(BASIC_SAVE_OK),
+ tap((action) => this.IgniteMessages.showInfo(`Cluster "${action.changedItems.cluster.name}" saved.`)),
+ ignoreElements()
+ );
}
/**
@@ -691,21 +743,21 @@ export default class ConfigEffects {
setTimeout(() => this.ConfigureState.dispatchAction(action));
- return this.ConfigureState.actions$
- .filter((a) => a.type === ok || a.type === err)
- .take(1)
- .map((a) => {
+ return this.ConfigureState.actions$.pipe(
+ filter((a) => a.type === ok || a.type === err),
+ take(1),
+ map((a) => {
if (a.type === err)
throw a;
else
return a;
})
- .toPromise();
+ ).toPromise();
};
connect() {
return merge(
...Object.keys(this).filter((k) => k.endsWith('Effect$')).map((k) => this[k])
- ).do((a) => this.ConfigureState.dispatchAction(a)).subscribe();
+ ).pipe(tap((a) => this.ConfigureState.dispatchAction(a))).subscribe();
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/store/effects.spec.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/store/effects.spec.js b/modules/web-console/frontend/app/components/page-configure/store/effects.spec.js
index 10e0663..f8b3909 100644
--- a/modules/web-console/frontend/app/components/page-configure/store/effects.spec.js
+++ b/modules/web-console/frontend/app/components/page-configure/store/effects.spec.js
@@ -16,11 +16,10 @@
*/
import {assert} from 'chai';
-import {of} from 'rxjs/observable/of';
-import {_throw} from 'rxjs/observable/throw';
+import {of, throwError} from 'rxjs';
+import {TestScheduler} from 'rxjs/testing';
import {default as Effects} from './effects';
import {default as Selectors} from './selectors';
-import {TestScheduler} from 'rxjs/testing/TestScheduler';
const makeMocks = (target, mocks) => new Map(target.$inject.map((provider) => {
return (provider in mocks) ? [provider, mocks[provider]] : [provider, {}];
@@ -121,7 +120,7 @@ suite('Configuration store effects', () => {
stateMarbles: 'AB',
mocks: {
...mocks,
- Clusters: {getCluster: () => _throw({data: 'Error'})}
+ Clusters: {getCluster: () => throwError({data: 'Error'})}
}
});
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/store/selectors.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/store/selectors.js b/modules/web-console/frontend/app/components/page-configure/store/selectors.js
index c9df643..0c70e59 100644
--- a/modules/web-console/frontend/app/components/page-configure/store/selectors.js
+++ b/modules/web-console/frontend/app/components/page-configure/store/selectors.js
@@ -16,13 +16,8 @@
*/
import {uniqueName} from 'app/utils/uniqueName';
-import {of} from 'rxjs/observable/of';
-import {empty} from 'rxjs/observable/empty';
-import {combineLatest} from 'rxjs/observable/combineLatest';
-import 'rxjs/add/operator/filter';
-import 'rxjs/add/operator/mergeMap';
-import 'rxjs/add/observable/combineLatest';
-import {Observable} from 'rxjs/Observable';
+import {of, empty, combineLatest, forkJoin, pipe} from 'rxjs';
+import {filter, pluck, map, switchMap, take, distinctUntilChanged, exhaustMap} from 'rxjs/operators';
import {defaultNames} from '../defaultNames';
import {default as Caches} from 'app/services/Caches';
@@ -30,22 +25,22 @@ import {default as Clusters} from 'app/services/Clusters';
import {default as IGFSs} from 'app/services/IGFSs';
import {default as Models} from 'app/services/Models';
-const isDefined = (s) => s.filter((v) => v);
+const isDefined = filter((v) => v);
-const selectItems = (path) => (s) => s.filter((s) => s).pluck(path).filter((v) => v);
+const selectItems = (path) => pipe(filter((s) => s), pluck(path), filter((v) => v));
-const selectValues = (s) => s.map((v) => v && [...v.value.values()]);
+const selectValues = map((v) => v && [...v.value.values()]);
-export const selectMapItem = (mapPath, key) => (s) => s.pluck(mapPath).map((v) => v && v.get(key));
+export const selectMapItem = (mapPath, key) => pipe(pluck(mapPath), map((v) => v && v.get(key)));
-const selectMapItems = (mapPath, keys) => (s) => s.pluck(mapPath).map((v) => v && keys.map((key) => v.get(key)));
+const selectMapItems = (mapPath, keys) => pipe(pluck(mapPath), map((v) => v && keys.map((key) => v.get(key))));
-const selectItemToEdit = ({items, itemFactory, defaultName = '', itemID}) => (s) => s.switchMap((item) => {
+const selectItemToEdit = ({items, itemFactory, defaultName = '', itemID}) => switchMap((item) => {
if (item)
return of(Object.assign(itemFactory(), item));
if (itemID === 'new')
- return items.take(1).map((items) => Object.assign(itemFactory(), {name: uniqueName(defaultName, items)}));
+ return items.pipe(take(1), map((items) => Object.assign(itemFactory(), {name: uniqueName(defaultName, items)})));
if (!itemID)
return of(null);
@@ -54,22 +49,24 @@ const selectItemToEdit = ({items, itemFactory, defaultName = '', itemID}) => (s)
});
const currentShortItems = ({changesKey, shortKey}) => (state$) => {
- return Observable.combineLatest(
- state$.pluck('edit', 'changes', changesKey).let(isDefined).distinctUntilChanged(),
- state$.pluck(shortKey, 'value').let(isDefined).distinctUntilChanged()
- )
- .map(([{ids = [], changedItems}, shortItems]) => {
+ return combineLatest(
+ state$.pipe(pluck('edit', 'changes', changesKey), isDefined, distinctUntilChanged()),
+ state$.pipe(pluck(shortKey, 'value'), isDefined, distinctUntilChanged())
+ ).pipe(
+ map(([{ids = [], changedItems}, shortItems]) => {
if (!ids.length || !shortItems)
return [];
return ids.map((id) => changedItems.find(({_id}) => _id === id) || shortItems.get(id));
- })
- .map((v) => v.filter((v) => v));
+ }),
+ map((v) => v.filter((v) => v))
+ );
};
-const selectNames = (itemIDs, nameAt = 'name') => (items) => items
- .pluck('value')
- .map((items) => itemIDs.map((id) => items.get(id)[nameAt]));
+const selectNames = (itemIDs, nameAt = 'name') => pipe(
+ pluck('value'),
+ map((items) => itemIDs.map((id) => items.get(id)[nameAt]))
+);
export default class ConfigSelectors {
static $inject = ['Caches', 'Clusters', 'IGFSs', 'Models'];
@@ -95,17 +92,18 @@ export default class ConfigSelectors {
* @returns {(state$: Observable) => Observable<{pristine: boolean, value: Map<string, ig.config.model.ShortDomainModel>}>}
*/
this.selectShortModels = () => selectItems('shortModels');
- this.selectShortModelsValue = () => (state$) => state$.let(this.selectShortModels()).let(selectValues);
+ this.selectShortModelsValue = () => (state$) => state$.pipe(this.selectShortModels(), selectValues);
/**
* @returns {(state$: Observable) => Observable<Array<ig.config.cluster.ShortCluster>>}
*/
- this.selectShortClustersValue = () => (state$) => state$.let(this.selectShortClusters()).let(selectValues);
+ this.selectShortClustersValue = () => (state$) => state$.pipe(this.selectShortClusters(), selectValues);
/**
* @returns {(state$: Observable) => Observable<Array<string>>}
*/
- this.selectClusterNames = (clusterIDs) => (state$) => state$
- .let(this.selectShortClusters())
- .let(selectNames(clusterIDs));
+ this.selectClusterNames = (clusterIDs) => (state$) => state$.pipe(
+ this.selectShortClusters(),
+ selectNames(clusterIDs)
+ );
}
selectCluster = (id) => selectMapItem('clusters', id);
@@ -118,52 +116,56 @@ export default class ConfigSelectors {
selectShortCaches = () => selectItems('shortCaches');
- selectShortCachesValue = () => (state$) => state$.let(this.selectShortCaches()).let(selectValues);
+ selectShortCachesValue = () => (state$) => state$.pipe(this.selectShortCaches(), selectValues);
selectShortIGFSs = () => selectItems('shortIgfss');
- selectShortIGFSsValue = () => (state$) => state$.let(this.selectShortIGFSs()).let(selectValues);
+ selectShortIGFSsValue = () => (state$) => state$.pipe(this.selectShortIGFSs(), selectValues);
- selectShortModelsValue = () => (state$) => state$.let(this.selectShortModels()).let(selectValues);
+ selectShortModelsValue = () => (state$) => state$.pipe(this.selectShortModels(), selectValues);
- selectCacheToEdit = (cacheID) => (state$) => state$
- .let(this.selectCache(cacheID))
- .distinctUntilChanged()
- .let(selectItemToEdit({
- items: state$.let(this.selectCurrentShortCaches),
+ selectCacheToEdit = (cacheID) => (state$) => state$.pipe(
+ this.selectCache(cacheID),
+ distinctUntilChanged(),
+ selectItemToEdit({
+ items: state$.pipe(this.selectCurrentShortCaches),
itemFactory: () => this.Caches.getBlankCache(),
defaultName: defaultNames.cache,
itemID: cacheID
- }));
+ })
+ );
- selectIGFSToEdit = (itemID) => (state$) => state$
- .let(this.selectIGFS(itemID))
- .distinctUntilChanged()
- .let(selectItemToEdit({
- items: state$.let(this.selectCurrentShortIGFSs),
+ selectIGFSToEdit = (itemID) => (state$) => state$.pipe(
+ this.selectIGFS(itemID),
+ distinctUntilChanged(),
+ selectItemToEdit({
+ items: state$.pipe(this.selectCurrentShortIGFSs),
itemFactory: () => this.IGFSs.getBlankIGFS(),
defaultName: defaultNames.igfs,
itemID
- }));
+ })
+ );
- selectModelToEdit = (itemID) => (state$) => state$
- .let(this.selectModel(itemID))
- .distinctUntilChanged()
- .let(selectItemToEdit({
- items: state$.let(this.selectCurrentShortModels),
+ selectModelToEdit = (itemID) => (state$) => state$.pipe(
+ this.selectModel(itemID),
+ distinctUntilChanged(),
+ selectItemToEdit({
+ items: state$.pipe(this.selectCurrentShortModels),
itemFactory: () => this.Models.getBlankModel(),
itemID
- }));
+ })
+ );
- selectClusterToEdit = (clusterID, defaultName = defaultNames.cluster) => (state$) => state$
- .let(this.selectCluster(clusterID))
- .distinctUntilChanged()
- .let(selectItemToEdit({
- items: state$.let(this.selectShortClustersValue()),
+ selectClusterToEdit = (clusterID, defaultName = defaultNames.cluster) => (state$) => state$.pipe(
+ this.selectCluster(clusterID),
+ distinctUntilChanged(),
+ selectItemToEdit({
+ items: state$.pipe(this.selectShortClustersValue()),
itemFactory: () => this.Clusters.getBlankCluster(),
defaultName,
itemID: clusterID
- }));
+ })
+ );
selectCurrentShortCaches = currentShortItems({changesKey: 'caches', shortKey: 'shortCaches'});
@@ -176,34 +178,33 @@ export default class ConfigSelectors {
return of([]);
return combineLatest(
- state$.let(this.selectCluster(clusterID)).pluck('caches'),
- state$.let(this.selectShortCaches()).pluck('value'),
+ state$.pipe(this.selectCluster(clusterID), pluck('caches')),
+ state$.pipe(this.selectShortCaches(), pluck('value')),
(ids, items) => ids.map((id) => items.get(id))
);
};
selectCompleteClusterConfiguration = ({clusterID, isDemo}) => (state$) => {
const hasValues = (array) => !array.some((v) => !v);
- return state$.let(this.selectCluster(clusterID))
- .exhaustMap((cluster) => {
- if (!cluster)
- return of({__isComplete: false});
-
- const withSpace = (array) => array.map((c) => ({...c, space: cluster.space}));
-
- return Observable.forkJoin(
- state$.let(selectMapItems('caches', cluster.caches || [])).take(1),
- state$.let(selectMapItems('models', cluster.models || [])).take(1),
- state$.let(selectMapItems('igfss', cluster.igfss || [])).take(1),
- )
- .map(([caches, models, igfss]) => ({
- cluster,
- caches,
- domains: models,
- igfss,
- spaces: [{_id: cluster.space, demo: isDemo}],
- __isComplete: !!cluster && !(!hasValues(caches) || !hasValues(models) || !hasValues(igfss))
- }));
- });
+ return state$.pipe(
+ this.selectCluster(clusterID),
+ exhaustMap((cluster) => {
+ if (!cluster)
+ return of({__isComplete: false});
+
+ return forkJoin(
+ state$.pipe(selectMapItems('caches', cluster.caches || []), take(1)),
+ state$.pipe(selectMapItems('models', cluster.models || []), take(1)),
+ state$.pipe(selectMapItems('igfss', cluster.igfss || []), take(1)),
+ ).pipe(map(([caches, models, igfss]) => ({
+ cluster,
+ caches,
+ domains: models,
+ igfss,
+ spaces: [{_id: cluster.space, demo: isDemo}],
+ __isComplete: !!cluster && !(!hasValues(caches) || !hasValues(models) || !hasValues(igfss))
+ })));
+ })
+ );
};
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.ts b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.ts
index 3ac3177..78274e6 100644
--- a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.ts
+++ b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.ts
@@ -18,15 +18,8 @@
import _ from 'lodash';
import {nonEmpty, nonNil} from 'app/utils/lodashMixins';
import id8 from 'app/utils/id8';
-import 'rxjs/add/operator/mergeMap';
-import 'rxjs/add/operator/merge';
-import 'rxjs/add/operator/switchMap';
-import 'rxjs/add/operator/exhaustMap';
-import 'rxjs/add/operator/distinctUntilChanged';
-
-import { fromPromise } from 'rxjs/observable/fromPromise';
-import { timer } from 'rxjs/observable/timer';
-import { defer } from 'rxjs/observable/defer';
+import {timer, merge, defer, from} from 'rxjs';
+import {mergeMap, tap, switchMap, exhaustMap, take} from 'rxjs/operators';
import {CSV} from 'app/services/CSV';
@@ -930,27 +923,28 @@ export class NotebookCtrl {
};
const _startWatch = () => {
- const awaitClusters$ = fromPromise(
+ const awaitClusters$ = from(
agentMgr.startClusterWatch('Leave Queries', 'default-state'));
const finishLoading$ = defer(() => {
if (!$root.IgniteDemoMode)
Loading.finish('sqlLoading');
- }).take(1);
+ }).pipe(take(1));
const refreshCaches = (period) => {
- return timer(0, period).exhaustMap(() => _refreshCaches()).merge(finishLoading$);
+ return merge(timer(0, period).pipe(exhaustMap(() => _refreshCaches())), finishLoading$);
};
- this.refresh$ = awaitClusters$
- .mergeMap(() => agentMgr.currentCluster$)
- .do(() => Loading.start('sqlLoading'))
- .do(() => {
+ this.refresh$ = awaitClusters$.pipe(
+ mergeMap(() => agentMgr.currentCluster$),
+ tap(() => Loading.start('sqlLoading')),
+ tap(() => {
_.forEach($scope.notebook.paragraphs, (paragraph) => {
paragraph.reset($interval);
});
- })
- .switchMap(() => refreshCaches(5000))
+ }),
+ switchMap(() => refreshCaches(5000))
+ )
.subscribe();
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/agent/AgentManager.service.js b/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
index ef0d423..56eef35 100644
--- a/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
+++ b/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
@@ -18,11 +18,8 @@
import _ from 'lodash';
import {nonEmpty, nonNil} from 'app/utils/lodashMixins';
-import {BehaviorSubject} from 'rxjs/BehaviorSubject';
-import 'rxjs/add/operator/first';
-import 'rxjs/add/operator/partition';
-import 'rxjs/add/operator/takeUntil';
-import 'rxjs/add/operator/pluck';
+import {BehaviorSubject} from 'rxjs';
+import {first, pluck, tap, distinctUntilChanged, map, filter} from 'rxjs/operators';
import AgentModal from './AgentModal.service';
// @ts-ignore
@@ -185,14 +182,16 @@ export default class AgentManager {
let prevCluster;
- this.currentCluster$ = this.connectionSbj
- .distinctUntilChanged(({ cluster }) => prevCluster === cluster)
- .do(({ cluster }) => prevCluster = cluster);
+ this.currentCluster$ = this.connectionSbj.pipe(
+ distinctUntilChanged(({ cluster }) => prevCluster === cluster),
+ tap(({ cluster }) => prevCluster = cluster)
+ );
- this.clusterIsActive$ = this.connectionSbj
- .map(({ cluster }) => cluster)
- .filter((cluster) => Boolean(cluster))
- .pluck('active');
+ this.clusterIsActive$ = this.connectionSbj.pipe(
+ map(({ cluster }) => cluster),
+ filter((cluster) => Boolean(cluster)),
+ pluck('active')
+ );
if (!this.isDemoMode()) {
this.connectionSbj.subscribe({
@@ -524,7 +523,7 @@ export default class AgentManager {
if (this.isDemoMode())
return Promise.resolve(this._executeOnActiveCluster({}, {}, event, params));
- return this.connectionSbj.first().toPromise()
+ return this.connectionSbj.pipe(first()).toPromise()
.then(({cluster}) => {
if (_.isNil(cluster))
throw new Error('Failed to execute request on cluster.');
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/modules/user/User.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/user/User.service.js b/modules/web-console/frontend/app/modules/user/User.service.js
index 3515c1b..da84dcc 100644
--- a/modules/web-console/frontend/app/modules/user/User.service.js
+++ b/modules/web-console/frontend/app/modules/user/User.service.js
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import {ReplaySubject} from 'rxjs/ReplaySubject';
+import {ReplaySubject} from 'rxjs';
/**
* @typedef User
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/services/Clusters.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/Clusters.js b/modules/web-console/frontend/app/services/Clusters.js
index e0a2ec7..5649f0a 100644
--- a/modules/web-console/frontend/app/services/Clusters.js
+++ b/modules/web-console/frontend/app/services/Clusters.js
@@ -16,8 +16,7 @@
*/
import get from 'lodash/get';
-import {Observable} from 'rxjs/Observable';
-import 'rxjs/add/observable/fromPromise';
+import {from} from 'rxjs';
import ObjectID from 'bson-objectid/objectid';
import {uniqueName} from 'app/utils/uniqueName';
import omit from 'lodash/fp/omit';
@@ -117,7 +116,7 @@ export default class Clusters {
}
getClustersOverview$() {
- return Observable.fromPromise(this.getClustersOverview());
+ return from(this.getClustersOverview());
}
saveCluster(cluster) {
@@ -125,7 +124,7 @@ export default class Clusters {
}
saveCluster$(cluster) {
- return Observable.fromPromise(this.saveCluster(cluster));
+ return from(this.saveCluster(cluster));
}
removeCluster(cluster) {
@@ -133,7 +132,7 @@ export default class Clusters {
}
removeCluster$(cluster) {
- return Observable.fromPromise(this.removeCluster(cluster));
+ return from(this.removeCluster(cluster));
}
saveBasic(changedItems) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/services/Version.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/Version.service.js b/modules/web-console/frontend/app/services/Version.service.js
index 8bbf6ef..8b76d58 100644
--- a/modules/web-console/frontend/app/services/Version.service.js
+++ b/modules/web-console/frontend/app/services/Version.service.js
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import { BehaviorSubject } from 'rxjs/BehaviorSubject';
+import { BehaviorSubject } from 'rxjs';
import _ from 'lodash';
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/services/store.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/store.ts b/modules/web-console/frontend/app/services/store.ts
index 19dde69..4498d1e 100644
--- a/modules/web-console/frontend/app/services/store.ts
+++ b/modules/web-console/frontend/app/services/store.ts
@@ -15,10 +15,8 @@
* limitations under the License.
*/
-import {BehaviorSubject} from 'rxjs/BehaviorSubject';
-import {Subject} from 'rxjs/Subject';
+import {BehaviorSubject, Subject, merge} from 'rxjs';
import {scan, tap} from 'rxjs/operators';
-import {merge} from 'rxjs/observable/merge';
interface Reducer<State, Actions> {
(state: State, action: Actions): State
@@ -27,9 +25,9 @@ interface Reducer<State, Actions> {
export class Store<Actions, State> {
static $inject = ['$injector'];
- actions$: Subject<Actions>
- state$: BehaviorSubject<State>
- private _reducers: Array<Reducer<State, Actions>>
+ actions$: Subject<Actions>;
+ state$: BehaviorSubject<State>;
+ private _reducers: Array<Reducer<State, Actions>>;
constructor(private $injector: ng.auto.IInjectorService) {
this.$injector = $injector;
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/store/ofType.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/store/ofType.ts b/modules/web-console/frontend/app/store/ofType.ts
index 3d3bd8e..220de5f 100644
--- a/modules/web-console/frontend/app/store/ofType.ts
+++ b/modules/web-console/frontend/app/store/ofType.ts
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import {OperatorFunction} from 'rxjs/interfaces';
+import {OperatorFunction} from 'rxjs';
import {filter} from 'rxjs/operators';
type Action = {type: string};
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/utils/SimpleWorkerPool.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/utils/SimpleWorkerPool.js b/modules/web-console/frontend/app/utils/SimpleWorkerPool.js
index 8e7aab7..25c7ae4 100644
--- a/modules/web-console/frontend/app/utils/SimpleWorkerPool.js
+++ b/modules/web-console/frontend/app/utils/SimpleWorkerPool.js
@@ -16,15 +16,8 @@
*/
import _ from 'lodash';
-
-import {Observable} from 'rxjs/Observable';
-import {Subject} from 'rxjs/Subject';
-import 'rxjs/add/observable/race';
-import 'rxjs/add/operator/filter';
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/pluck';
-import 'rxjs/add/operator/take';
-import 'rxjs/add/operator/toPromise';
+import {Subject, race} from 'rxjs';
+import {filter, take, pluck, map} from 'rxjs/operators';
/**
* Simple implementation of workers pool.
@@ -112,11 +105,11 @@ export default class SimpleWorkerPool {
this._run();
- return Observable.race(
- this.messages$.filter((e) => e.tid === tid).take(1).pluck('m', 'data'),
- this.errors$.filter((e) => e.tid === tid).take(1).map((e) => {
+ return race(
+ this.messages$.pipe(filter((e) => e.tid === tid), take(1), pluck('m', 'data')),
+ this.errors$.pipe(filter((e) => e.tid === tid), take(1), map((e) => {
throw e.e;
}))
- .take(1).toPromise();
+ ).pipe(take(1)).toPromise();
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/package.json
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/package.json b/modules/web-console/frontend/package.json
index e8f4ae2..9d848df 100644
--- a/modules/web-console/frontend/package.json
+++ b/modules/web-console/frontend/package.json
@@ -30,7 +30,7 @@
"@babel/plugin-transform-parameters": "7.0.0",
"@uirouter/angularjs": "1.0.20",
"@uirouter/core": "5.0.19",
- "@uirouter/rx": "0.4.1",
+ "@uirouter/rx": "0.5.0",
"@uirouter/visualizer": "4.0.2",
"angular": "1.7.4",
"angular-acl": "0.1.10",
@@ -70,7 +70,7 @@
"pako": "1.0.6",
"resize-observer-polyfill": "1.5.0",
"roboto-font": "0.1.0",
- "rxjs": "5.5.11",
+ "rxjs": "6.3.3",
"socket.io-client": "1.7.3",
"tf-metatags": "2.0.0"
},
[05/52] [abbrv] ignite git commit: IGNITE-10555 Set
'TcpDiscoveryVmIpFinder' as default IP finder for tests instead of
'TcpDiscoveryMulticastIpFinder'
Posted by sb...@apache.org.
IGNITE-10555 Set 'TcpDiscoveryVmIpFinder' as default IP finder for tests instead of 'TcpDiscoveryMulticastIpFinder'
Signed-off-by: Anton Vinogradov <av...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/83abf892
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/83abf892
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/83abf892
Branch: refs/heads/ignite-627
Commit: 83abf89237986185d0b20c40f5bd3aac3f0ec403
Parents: cde6cae
Author: Vyacheslav Daradur <da...@gmail.com>
Authored: Mon Dec 17 13:56:12 2018 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Mon Dec 17 13:56:12 2018 +0300
----------------------------------------------------------------------
...entConnectAfterCommunicationFailureTest.java | 4 ++++
.../testframework/junits/GridAbstractTest.java | 24 ++++++++------------
2 files changed, 14 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/83abf892/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientConnectAfterCommunicationFailureTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientConnectAfterCommunicationFailureTest.java b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientConnectAfterCommunicationFailureTest.java
index 4ae4c56..434fe81 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientConnectAfterCommunicationFailureTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientConnectAfterCommunicationFailureTest.java
@@ -25,6 +25,8 @@ import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.util.nio.GridCommunicationClient;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -45,6 +47,8 @@ public class IgniteClientConnectAfterCommunicationFailureTest extends GridCommon
@Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(gridName);
+ ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(new TcpDiscoveryMulticastIpFinder());
+
cfg.setNetworkTimeout(500);
cfg.setCommunicationSpi(new TcpCommunicationSpi(gridName.contains("block")));
http://git-wip-us.apache.org/repos/asf/ignite/blob/83abf892/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index 486e80a..241211c 100755
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -102,7 +102,6 @@ import org.apache.ignite.spi.discovery.DiscoverySpiCustomMessage;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.TestTcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.apache.ignite.spi.eventstorage.memory.MemoryEventStorageSpi;
import org.apache.ignite.testframework.GridTestUtils;
@@ -165,6 +164,9 @@ public abstract class GridAbstractTest extends TestCase {
setAddresses(Collections.singleton("127.0.0.1:47500..47509"));
}};
+ /** Shared static IP finder which is used in configuration at nodes startup <b>for all test methods in class</b>. */
+ protected static TcpDiscoveryIpFinder sharedStaticIpFinder;
+
/** */
private static final int DFLT_TOP_WAIT_TIMEOUT = 2000;
@@ -620,6 +622,8 @@ public abstract class GridAbstractTest extends TestCase {
}
if (isFirstTest()) {
+ sharedStaticIpFinder = new TcpDiscoveryVmIpFinder(true);
+
info(">>> Starting test class: " + testClassDescription() + " <<<");
if (isSafeTopology())
@@ -1541,9 +1545,6 @@ public abstract class GridAbstractTest extends TestCase {
if (cfg.getDiscoverySpi() instanceof TcpDiscoverySpi)
((TcpDiscoverySpi)cfg.getDiscoverySpi()).setJoinTimeout(getTestTimeout());
- if (isMultiJvm())
- ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(LOCAL_IP_FINDER);
-
return cfg;
}
@@ -1694,18 +1695,13 @@ public abstract class GridAbstractTest extends TestCase {
// Set metrics update interval to 1 second to speed up tests.
cfg.setMetricsUpdateFrequency(1000);
- String mcastAddr = GridTestUtils.getNextMulticastGroup(getClass());
-
- TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder();
+ if (!isMultiJvm()) {
+ assert sharedStaticIpFinder != null : "Shared static IP finder should be initialized at this point.";
- ipFinder.setAddresses(Collections.singleton("127.0.0.1:" + TcpDiscoverySpi.DFLT_PORT));
-
- if (!F.isEmpty(mcastAddr)) {
- ipFinder.setMulticastGroup(mcastAddr);
- ipFinder.setMulticastPort(GridTestUtils.getNextMulticastPort(getClass()));
+ discoSpi.setIpFinder(sharedStaticIpFinder);
}
-
- discoSpi.setIpFinder(ipFinder);
+ else
+ discoSpi.setIpFinder(LOCAL_IP_FINDER);
cfg.setDiscoverySpi(discoSpi);
[35/52] [abbrv] ignite git commit: IGNITE-10371: [ML] Add multiple
metrics calculation for Binary Classification Evaluation process
Posted by sb...@apache.org.
IGNITE-10371: [ML] Add multiple metrics calculation for
Binary Classification Evaluation process
This closes #5612
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f2d6e436
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f2d6e436
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f2d6e436
Branch: refs/heads/ignite-627
Commit: f2d6e43605f8daaa12c3cb729a1ddd56bf36f564
Parents: ad9d561
Author: zaleslaw <za...@gmail.com>
Authored: Tue Dec 18 21:53:32 2018 +0300
Committer: Yury Babak <yb...@gridgain.com>
Committed: Tue Dec 18 21:53:32 2018 +0300
----------------------------------------------------------------------
.../ml/selection/scoring/EvaluatorExample.java | 83 +++++++++
.../scoring/MultipleMetricsExample.java | 82 ++++++++
.../ml/tutorial/Step_1_Read_and_Learn.java | 6 +-
.../examples/ml/tutorial/Step_2_Imputing.java | 6 +-
.../examples/ml/tutorial/Step_3_Categorial.java | 6 +-
.../Step_3_Categorial_with_One_Hot_Encoder.java | 6 +-
.../ml/tutorial/Step_4_Add_age_fare.java | 6 +-
.../examples/ml/tutorial/Step_5_Scaling.java | 6 +-
.../tutorial/Step_5_Scaling_with_Pipeline.java | 6 +-
.../ignite/examples/ml/tutorial/Step_6_KNN.java | 6 +-
.../ml/tutorial/Step_7_Split_train_test.java | 6 +-
.../ignite/examples/ml/tutorial/Step_8_CV.java | 6 +-
.../ml/tutorial/Step_8_CV_with_Param_Grid.java | 6 +-
.../ml/tutorial/Step_9_Go_to_LogReg.java | 6 +-
.../cursor/CacheBasedLabelPairCursor.java | 6 +-
.../BinaryClassificationEvaluator.java | 184 ++++++++++++++++++
.../selection/scoring/evaluator/Evaluator.java | 104 -----------
.../ml/selection/scoring/metric/Accuracy.java | 5 +
.../BinaryClassificationMetricValues.java | 185 +++++++++++++++++++
.../metric/BinaryClassificationMetrics.java | 86 +++++++++
.../selection/scoring/metric/ClassMetric.java | 37 ++++
.../ml/selection/scoring/metric/Fmeasure.java | 22 ++-
.../ml/selection/scoring/metric/Metric.java | 9 +
.../ml/selection/scoring/metric/Precision.java | 23 ++-
.../ml/selection/scoring/metric/Recall.java | 22 ++-
.../metric/UnknownClassLabelException.java | 38 ++++
.../scoring/evaluator/EvaluatorTest.java | 6 +-
27 files changed, 789 insertions(+), 175 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/selection/scoring/EvaluatorExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/selection/scoring/EvaluatorExample.java b/examples/src/main/java/org/apache/ignite/examples/ml/selection/scoring/EvaluatorExample.java
new file mode 100644
index 0000000..a6a989b
--- /dev/null
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/selection/scoring/EvaluatorExample.java
@@ -0,0 +1,83 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.examples.ml.selection.scoring;
+
+import java.io.FileNotFoundException;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.ml.math.functions.IgniteBiFunction;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
+import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
+import org.apache.ignite.ml.svm.SVMLinearClassificationModel;
+import org.apache.ignite.ml.svm.SVMLinearClassificationTrainer;
+import org.apache.ignite.ml.util.MLSandboxDatasets;
+import org.apache.ignite.ml.util.SandboxMLCache;
+
+/**
+ * Run SVM classification trainer ({@link SVMLinearClassificationTrainer}) over distributed dataset.
+ * <p>
+ * Code in this example launches Ignite grid and fills the cache with test data points (based on the
+ * <a href="https://en.wikipedia.org/wiki/Iris_flower_data_set"></a>Iris dataset</a>).</p>
+ * <p>
+ * After that it trains the model based on the specified data using
+ * <a href="https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm">kNN</a> algorithm.</p>
+ * <p>
+ * Finally, this example loops over the test set of data points, applies the trained model to predict what cluster
+ * does this point belong to, and compares prediction to expected outcome (ground truth).</p>
+ * <p>
+ * You can change the test data used in this example and re-run it to explore this algorithm further.</p>
+ */
+public class EvaluatorExample {
+ /** Run example. */
+ public static void main(String[] args) throws FileNotFoundException {
+ System.out.println();
+ System.out.println(">>> kNN multi-class classification algorithm over cached dataset usage example started.");
+ // Start ignite grid.
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println(">>> Ignite grid started.");
+
+ IgniteCache<Integer, Vector> dataCache = new SandboxMLCache(ignite)
+ .fillCacheWith(MLSandboxDatasets.TWO_CLASSED_IRIS);
+
+ SVMLinearClassificationTrainer trainer = new SVMLinearClassificationTrainer();
+
+ IgniteBiFunction<Integer, Vector, Vector> featureExtractor = (k, v) -> v.copyOfRange(1, v.size());
+ IgniteBiFunction<Integer, Vector, Double> lbExtractor = (k, v) -> v.get(0);
+
+ SVMLinearClassificationModel mdl = trainer.fit(
+ ignite,
+ dataCache,
+ featureExtractor,
+ lbExtractor
+ );
+
+ double accuracy = BinaryClassificationEvaluator.evaluate(
+ dataCache,
+ mdl,
+ featureExtractor,
+ lbExtractor,
+ new Accuracy<>()
+ );
+
+ System.out.println("\n>>> Accuracy " + accuracy);
+ System.out.println("\n>>> Test Error " + (1 - accuracy));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/selection/scoring/MultipleMetricsExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/selection/scoring/MultipleMetricsExample.java b/examples/src/main/java/org/apache/ignite/examples/ml/selection/scoring/MultipleMetricsExample.java
new file mode 100644
index 0000000..b8c76e0
--- /dev/null
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/selection/scoring/MultipleMetricsExample.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.examples.ml.selection.scoring;
+
+import java.io.FileNotFoundException;
+import java.util.Map;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.ml.knn.classification.KNNClassificationTrainer;
+import org.apache.ignite.ml.math.functions.IgniteBiFunction;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
+import org.apache.ignite.ml.svm.SVMLinearClassificationModel;
+import org.apache.ignite.ml.svm.SVMLinearClassificationTrainer;
+import org.apache.ignite.ml.util.MLSandboxDatasets;
+import org.apache.ignite.ml.util.SandboxMLCache;
+
+/**
+ * Run kNN multi-class classification trainer ({@link KNNClassificationTrainer}) over distributed dataset.
+ * <p>
+ * Code in this example launches Ignite grid and fills the cache with test data points (based on the
+ * <a href="https://en.wikipedia.org/wiki/Iris_flower_data_set"></a>Iris dataset</a>).</p>
+ * <p>
+ * After that it trains the model based on the specified data using
+ * <a href="https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm">kNN</a> algorithm.</p>
+ * <p>
+ * Finally, this example loops over the test set of data points, applies the trained model to predict what cluster
+ * does this point belong to, and compares prediction to expected outcome (ground truth).</p>
+ * <p>
+ * You can change the test data used in this example and re-run it to explore this algorithm further.</p>
+ */
+public class MultipleMetricsExample {
+ /** Run example. */
+ public static void main(String[] args) throws FileNotFoundException {
+ // Start ignite grid.
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println(">>> Ignite grid started.");
+
+ IgniteCache<Integer, Vector> dataCache = new SandboxMLCache(ignite)
+ .fillCacheWith(MLSandboxDatasets.TWO_CLASSED_IRIS);
+
+ SVMLinearClassificationTrainer trainer = new SVMLinearClassificationTrainer();
+
+ IgniteBiFunction<Integer, Vector, Vector> featureExtractor = (k, v) -> v.copyOfRange(1, v.size());
+ IgniteBiFunction<Integer, Vector, Double> lbExtractor = (k, v) -> v.get(0);
+
+ SVMLinearClassificationModel mdl = trainer.fit(
+ ignite,
+ dataCache,
+ featureExtractor,
+ lbExtractor
+ );
+
+ Map<String, Double> scores = BinaryClassificationEvaluator.evaluate(
+ dataCache,
+ mdl,
+ featureExtractor,
+ lbExtractor
+ ).toMap();
+
+ scores.forEach(
+ (metricName, score) -> System.out.println("\n>>>" + metricName + ": " + score)
+ );
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_1_Read_and_Learn.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_1_Read_and_Learn.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_1_Read_and_Learn.java
index 481fa1d..0cbde9c 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_1_Read_and_Learn.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_1_Read_and_Learn.java
@@ -24,7 +24,7 @@ import org.apache.ignite.Ignition;
import org.apache.ignite.ml.math.functions.IgniteBiFunction;
import org.apache.ignite.ml.math.primitives.vector.Vector;
import org.apache.ignite.ml.math.primitives.vector.VectorUtils;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.tree.DecisionTreeClassificationTrainer;
import org.apache.ignite.ml.tree.DecisionTreeNode;
@@ -38,7 +38,7 @@ import org.apache.ignite.ml.tree.DecisionTreeNode;
* <p>
* After that it trains the model based on the specified data using decision tree classification.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
*/
public class Step_1_Read_and_Learn {
/** Run example. */
@@ -66,7 +66,7 @@ public class Step_1_Read_and_Learn {
System.out.println("\n>>> Trained model: " + mdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
mdl,
featureExtractor,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_2_Imputing.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_2_Imputing.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_2_Imputing.java
index d60dc4b..6fe41ab 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_2_Imputing.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_2_Imputing.java
@@ -25,7 +25,7 @@ import org.apache.ignite.ml.math.functions.IgniteBiFunction;
import org.apache.ignite.ml.math.primitives.vector.Vector;
import org.apache.ignite.ml.math.primitives.vector.VectorUtils;
import org.apache.ignite.ml.preprocessing.imputing.ImputerTrainer;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.tree.DecisionTreeClassificationTrainer;
import org.apache.ignite.ml.tree.DecisionTreeNode;
@@ -40,7 +40,7 @@ import org.apache.ignite.ml.tree.DecisionTreeNode;
* <p>
* Then, it trains the model based on the processed data using decision tree classification.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
*/
public class Step_2_Imputing {
/** Run example. */
@@ -75,7 +75,7 @@ public class Step_2_Imputing {
System.out.println("\n>>> Trained model: " + mdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
mdl,
imputingPreprocessor,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_3_Categorial.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_3_Categorial.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_3_Categorial.java
index ac2fe08..f9bd014 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_3_Categorial.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_3_Categorial.java
@@ -26,7 +26,7 @@ import org.apache.ignite.ml.math.primitives.vector.Vector;
import org.apache.ignite.ml.preprocessing.encoding.EncoderTrainer;
import org.apache.ignite.ml.preprocessing.encoding.EncoderType;
import org.apache.ignite.ml.preprocessing.imputing.ImputerTrainer;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.tree.DecisionTreeClassificationTrainer;
import org.apache.ignite.ml.tree.DecisionTreeNode;
@@ -43,7 +43,7 @@ import org.apache.ignite.ml.tree.DecisionTreeNode;
* <p>
* Then, it trains the model based on the processed data using decision tree classification.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
*/
public class Step_3_Categorial {
/** Run example. */
@@ -88,7 +88,7 @@ public class Step_3_Categorial {
System.out.println("\n>>> Trained model: " + mdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
mdl,
imputingPreprocessor,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_3_Categorial_with_One_Hot_Encoder.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_3_Categorial_with_One_Hot_Encoder.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_3_Categorial_with_One_Hot_Encoder.java
index f0b6efe..0b3e235 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_3_Categorial_with_One_Hot_Encoder.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_3_Categorial_with_One_Hot_Encoder.java
@@ -26,7 +26,7 @@ import org.apache.ignite.ml.math.primitives.vector.Vector;
import org.apache.ignite.ml.preprocessing.encoding.EncoderTrainer;
import org.apache.ignite.ml.preprocessing.encoding.EncoderType;
import org.apache.ignite.ml.preprocessing.imputing.ImputerTrainer;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.tree.DecisionTreeClassificationTrainer;
import org.apache.ignite.ml.tree.DecisionTreeNode;
@@ -44,7 +44,7 @@ import org.apache.ignite.ml.tree.DecisionTreeNode;
* <p>
* Then, it trains the model based on the processed data using decision tree classification.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
*/
public class Step_3_Categorial_with_One_Hot_Encoder {
/** Run example. */
@@ -91,7 +91,7 @@ public class Step_3_Categorial_with_One_Hot_Encoder {
System.out.println("\n>>> Trained model: " + mdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
mdl,
imputingPreprocessor,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_4_Add_age_fare.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_4_Add_age_fare.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_4_Add_age_fare.java
index 71e9efd..7576cd6 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_4_Add_age_fare.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_4_Add_age_fare.java
@@ -26,7 +26,7 @@ import org.apache.ignite.ml.math.primitives.vector.Vector;
import org.apache.ignite.ml.preprocessing.encoding.EncoderTrainer;
import org.apache.ignite.ml.preprocessing.encoding.EncoderType;
import org.apache.ignite.ml.preprocessing.imputing.ImputerTrainer;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.tree.DecisionTreeClassificationTrainer;
import org.apache.ignite.ml.tree.DecisionTreeNode;
@@ -41,7 +41,7 @@ import org.apache.ignite.ml.tree.DecisionTreeNode;
* <p>
* Then, it trains the model based on the processed data using decision tree classification.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
*/
public class Step_4_Add_age_fare {
/** Run example. */
@@ -87,7 +87,7 @@ public class Step_4_Add_age_fare {
System.out.println("\n>>> Trained model: " + mdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
mdl,
imputingPreprocessor,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_5_Scaling.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_5_Scaling.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_5_Scaling.java
index fe7bf91..065eb90 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_5_Scaling.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_5_Scaling.java
@@ -28,7 +28,7 @@ import org.apache.ignite.ml.preprocessing.encoding.EncoderType;
import org.apache.ignite.ml.preprocessing.imputing.ImputerTrainer;
import org.apache.ignite.ml.preprocessing.minmaxscaling.MinMaxScalerTrainer;
import org.apache.ignite.ml.preprocessing.normalization.NormalizationTrainer;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.tree.DecisionTreeClassificationTrainer;
import org.apache.ignite.ml.tree.DecisionTreeNode;
@@ -44,7 +44,7 @@ import org.apache.ignite.ml.tree.DecisionTreeNode;
* <p>
* Then, it trains the model based on the processed data using decision tree classification.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
*/
public class Step_5_Scaling {
/** Run example. */
@@ -105,7 +105,7 @@ public class Step_5_Scaling {
System.out.println("\n>>> Trained model: " + mdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
mdl,
normalizationPreprocessor,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_5_Scaling_with_Pipeline.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_5_Scaling_with_Pipeline.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_5_Scaling_with_Pipeline.java
index bd7cc21..2e97ccb 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_5_Scaling_with_Pipeline.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_5_Scaling_with_Pipeline.java
@@ -29,7 +29,7 @@ import org.apache.ignite.ml.preprocessing.encoding.EncoderType;
import org.apache.ignite.ml.preprocessing.imputing.ImputerTrainer;
import org.apache.ignite.ml.preprocessing.minmaxscaling.MinMaxScalerTrainer;
import org.apache.ignite.ml.preprocessing.normalization.NormalizationTrainer;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.tree.DecisionTreeClassificationTrainer;
@@ -44,7 +44,7 @@ import org.apache.ignite.ml.tree.DecisionTreeClassificationTrainer;
* <p>
* Then, it trains the model based on the processed data using decision tree classification.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
*/
public class Step_5_Scaling_with_Pipeline {
/** Run example. */
@@ -79,7 +79,7 @@ public class Step_5_Scaling_with_Pipeline {
System.out.println("\n>>> Trained model: " + mdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
mdl,
mdl.getFeatureExtractor(),
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_6_KNN.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_6_KNN.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_6_KNN.java
index a35b841..d7a0b88 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_6_KNN.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_6_KNN.java
@@ -31,7 +31,7 @@ import org.apache.ignite.ml.preprocessing.encoding.EncoderType;
import org.apache.ignite.ml.preprocessing.imputing.ImputerTrainer;
import org.apache.ignite.ml.preprocessing.minmaxscaling.MinMaxScalerTrainer;
import org.apache.ignite.ml.preprocessing.normalization.NormalizationTrainer;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
/**
@@ -45,7 +45,7 @@ import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
* <p>
* Then, it trains the model based on the processed data using kNN classification.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
*/
public class Step_6_KNN {
/** Run example. */
@@ -106,7 +106,7 @@ public class Step_6_KNN {
System.out.println("\n>>> Trained model: " + mdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
mdl,
normalizationPreprocessor,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_7_Split_train_test.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_7_Split_train_test.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_7_Split_train_test.java
index 53d4d0a..a988abe 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_7_Split_train_test.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_7_Split_train_test.java
@@ -28,7 +28,7 @@ import org.apache.ignite.ml.preprocessing.encoding.EncoderType;
import org.apache.ignite.ml.preprocessing.imputing.ImputerTrainer;
import org.apache.ignite.ml.preprocessing.minmaxscaling.MinMaxScalerTrainer;
import org.apache.ignite.ml.preprocessing.normalization.NormalizationTrainer;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.selection.split.TrainTestDatasetSplitter;
import org.apache.ignite.ml.selection.split.TrainTestSplit;
@@ -47,7 +47,7 @@ import org.apache.ignite.ml.tree.DecisionTreeNode;
* <p>
* Then, it trains the model based on the processed data using decision tree classification.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
*/
public class Step_7_Split_train_test {
/** Run example. */
@@ -112,7 +112,7 @@ public class Step_7_Split_train_test {
System.out.println("\n>>> Trained model: " + mdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
split.getTestFilter(),
mdl,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_8_CV.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_8_CV.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_8_CV.java
index feedccf..8a962f3 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_8_CV.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_8_CV.java
@@ -30,7 +30,7 @@ import org.apache.ignite.ml.preprocessing.imputing.ImputerTrainer;
import org.apache.ignite.ml.preprocessing.minmaxscaling.MinMaxScalerTrainer;
import org.apache.ignite.ml.preprocessing.normalization.NormalizationTrainer;
import org.apache.ignite.ml.selection.cv.CrossValidation;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.selection.split.TrainTestDatasetSplitter;
import org.apache.ignite.ml.selection.split.TrainTestSplit;
@@ -48,7 +48,7 @@ import org.apache.ignite.ml.tree.DecisionTreeNode;
* Then, it tunes hyperparams with K-fold Cross-Validation on the split training set and trains the model based on
* the processed data using decision tree classification and the obtained hyperparams.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
* <p>
* The purpose of cross-validation is model checking, not model building.</p>
* <p>
@@ -175,7 +175,7 @@ public class Step_8_CV {
System.out.println("\n>>> Trained model: " + bestMdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
split.getTestFilter(),
bestMdl,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_8_CV_with_Param_Grid.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_8_CV_with_Param_Grid.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_8_CV_with_Param_Grid.java
index 670f025..19951a2 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_8_CV_with_Param_Grid.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_8_CV_with_Param_Grid.java
@@ -32,7 +32,7 @@ import org.apache.ignite.ml.preprocessing.normalization.NormalizationTrainer;
import org.apache.ignite.ml.selection.cv.CrossValidation;
import org.apache.ignite.ml.selection.cv.CrossValidationResult;
import org.apache.ignite.ml.selection.paramgrid.ParamGrid;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.selection.split.TrainTestDatasetSplitter;
import org.apache.ignite.ml.selection.split.TrainTestSplit;
@@ -50,7 +50,7 @@ import org.apache.ignite.ml.tree.DecisionTreeNode;
* Then, it tunes hyperparams with K-fold Cross-Validation on the split training set and trains the model based on
* the processed data using decision tree classification and the obtained hyperparams.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
* <p>
* The purpose of cross-validation is model checking, not model building.</p>
* <p>
@@ -163,7 +163,7 @@ public class Step_8_CV_with_Param_Grid {
System.out.println("\n>>> Trained model: " + bestMdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
split.getTestFilter(),
bestMdl,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_9_Go_to_LogReg.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_9_Go_to_LogReg.java b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_9_Go_to_LogReg.java
index 58466bd..eb12e58 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_9_Go_to_LogReg.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/Step_9_Go_to_LogReg.java
@@ -35,7 +35,7 @@ import org.apache.ignite.ml.preprocessing.normalization.NormalizationTrainer;
import org.apache.ignite.ml.regressions.logistic.LogisticRegressionModel;
import org.apache.ignite.ml.regressions.logistic.LogisticRegressionSGDTrainer;
import org.apache.ignite.ml.selection.cv.CrossValidation;
-import org.apache.ignite.ml.selection.scoring.evaluator.Evaluator;
+import org.apache.ignite.ml.selection.scoring.evaluator.BinaryClassificationEvaluator;
import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
import org.apache.ignite.ml.selection.split.TrainTestDatasetSplitter;
import org.apache.ignite.ml.selection.split.TrainTestSplit;
@@ -52,7 +52,7 @@ import org.apache.ignite.ml.selection.split.TrainTestSplit;
* Then, it tunes hyperparams with K-fold Cross-Validation on the split training set and trains the model based on
* the processed data using logistic regression and the obtained hyperparams.</p>
* <p>
- * Finally, this example uses {@link Evaluator} functionality to compute metrics from predictions.</p>
+ * Finally, this example uses {@link BinaryClassificationEvaluator} functionality to compute metrics from predictions.</p>
*/
public class Step_9_Go_to_LogReg {
/** Run example. */
@@ -207,7 +207,7 @@ public class Step_9_Go_to_LogReg {
System.out.println("\n>>> Trained model: " + bestMdl);
- double accuracy = Evaluator.evaluate(
+ double accuracy = BinaryClassificationEvaluator.evaluate(
dataCache,
split.getTestFilter(),
bestMdl,
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/CacheBasedLabelPairCursor.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/CacheBasedLabelPairCursor.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/CacheBasedLabelPairCursor.java
index 037cf45..06be96b 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/CacheBasedLabelPairCursor.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/CacheBasedLabelPairCursor.java
@@ -98,12 +98,14 @@ public class CacheBasedLabelPairCursor<L, K, V> implements LabelPairCursor<L> {
* Queries the specified cache using the specified filter.
*
* @param upstreamCache Ignite cache with {@code upstream} data.
- * @param filter Filter for {@code upstream} data.
+ * @param filter Filter for {@code upstream} data. If {@code null} then all entries will be returned.
* @return Query cursor.
*/
private QueryCursor<Cache.Entry<K, V>> query(IgniteCache<K, V> upstreamCache, IgniteBiPredicate<K, V> filter) {
ScanQuery<K, V> qry = new ScanQuery<>();
- qry.setFilter(filter);
+
+ if (filter != null) // This section was added to keep code correct of qry.setFilter(null) behaviour will changed.
+ qry.setFilter(filter);
return upstreamCache.query(qry);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/BinaryClassificationEvaluator.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/BinaryClassificationEvaluator.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/BinaryClassificationEvaluator.java
new file mode 100644
index 0000000..30adc5c
--- /dev/null
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/BinaryClassificationEvaluator.java
@@ -0,0 +1,184 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.selection.scoring.evaluator;
+
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.lang.IgniteBiPredicate;
+import org.apache.ignite.ml.Model;
+import org.apache.ignite.ml.math.functions.IgniteBiFunction;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.selection.scoring.cursor.CacheBasedLabelPairCursor;
+import org.apache.ignite.ml.selection.scoring.cursor.LabelPairCursor;
+import org.apache.ignite.ml.selection.scoring.metric.BinaryClassificationMetricValues;
+import org.apache.ignite.ml.selection.scoring.metric.BinaryClassificationMetrics;
+import org.apache.ignite.ml.selection.scoring.metric.Metric;
+
+/**
+ * Binary classification evaluator that computes metrics from predictions and ground truth values.
+ */
+public class BinaryClassificationEvaluator {
+ /**
+ * Computes the given metric on the given cache.
+ *
+ * @param dataCache The given cache.
+ * @param mdl The model.
+ * @param featureExtractor The feature extractor.
+ * @param lbExtractor The label extractor.
+ * @param metric The binary classification metric.
+ * @param <K> The type of cache entry key.
+ * @param <V> The type of cache entry value.
+ * @return Computed metric.
+ */
+ public static <L, K, V> double evaluate(IgniteCache<K, V> dataCache,
+ Model<Vector, L> mdl,
+ IgniteBiFunction<K, V, Vector> featureExtractor,
+ IgniteBiFunction<K, V, L> lbExtractor,
+ Metric<L> metric) {
+
+ return calculateMetric(dataCache, null, mdl, featureExtractor, lbExtractor, metric);
+ }
+
+ /**
+ * Computes the given metric on the given cache.
+ *
+ * @param dataCache The given cache.
+ * @param filter The given filter.
+ * @param mdl The model.
+ * @param featureExtractor The feature extractor.
+ * @param lbExtractor The label extractor.
+ * @param metric The binary classification metric.
+ * @param <L> The type of label.
+ * @param <K> The type of cache entry key.
+ * @param <V> The type of cache entry value.
+ * @return Computed metric.
+ */
+ public static <L, K, V> double evaluate(IgniteCache<K, V> dataCache, IgniteBiPredicate<K, V> filter,
+ Model<Vector, L> mdl,
+ IgniteBiFunction<K, V, Vector> featureExtractor,
+ IgniteBiFunction<K, V, L> lbExtractor,
+ Metric<L> metric) {
+
+ return calculateMetric(dataCache, filter, mdl, featureExtractor, lbExtractor, metric);
+ }
+
+ /**
+ * Computes the given metrics on the given cache.
+ *
+ * @param dataCache The given cache.
+ * @param mdl The model.
+ * @param featureExtractor The feature extractor.
+ * @param lbExtractor The label extractor.
+ * @param <K> The type of cache entry key.
+ * @param <V> The type of cache entry value.
+ * @return Computed metric.
+ */
+ public static <K, V> BinaryClassificationMetricValues evaluate(IgniteCache<K, V> dataCache,
+ Model<Vector, Double> mdl,
+ IgniteBiFunction<K, V, Vector> featureExtractor,
+ IgniteBiFunction<K, V, Double> lbExtractor) {
+ return calcMetricValues(dataCache, null, mdl, featureExtractor, lbExtractor);
+ }
+
+ /**
+ * Computes the given metrics on the given cache.
+ *
+ * @param dataCache The given cache.
+ * @param filter The given filter.
+ * @param mdl The model.
+ * @param featureExtractor The feature extractor.
+ * @param lbExtractor The label extractor.
+ * @param <K> The type of cache entry key.
+ * @param <V> The type of cache entry value.
+ * @return Computed metric.
+ */
+ public static <K, V> BinaryClassificationMetricValues evaluate(IgniteCache<K, V> dataCache, IgniteBiPredicate<K, V> filter,
+ Model<Vector, Double> mdl,
+ IgniteBiFunction<K, V, Vector> featureExtractor,
+ IgniteBiFunction<K, V, Double> lbExtractor) {
+ return calcMetricValues(dataCache, filter, mdl, featureExtractor, lbExtractor);
+ }
+
+ /**
+ * Computes the given metrics on the given cache.
+ *
+ * @param dataCache The given cache.
+ * @param filter The given filter.
+ * @param mdl The model.
+ * @param featureExtractor The feature extractor.
+ * @param lbExtractor The label extractor.
+ * @param <K> The type of cache entry key.
+ * @param <V> The type of cache entry value.
+ * @return Computed metric.
+ */
+ private static <K, V> BinaryClassificationMetricValues calcMetricValues(IgniteCache<K, V> dataCache,
+ IgniteBiPredicate<K, V> filter,
+ Model<Vector, Double> mdl,
+ IgniteBiFunction<K, V, Vector> featureExtractor,
+ IgniteBiFunction<K, V, Double> lbExtractor) {
+ BinaryClassificationMetricValues metricValues;
+ BinaryClassificationMetrics binaryMetrics = new BinaryClassificationMetrics();
+
+ try (LabelPairCursor<Double> cursor = new CacheBasedLabelPairCursor<>(
+ dataCache,
+ filter,
+ featureExtractor,
+ lbExtractor,
+ mdl
+ )) {
+ metricValues = binaryMetrics.score(cursor.iterator());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ return metricValues;
+ }
+
+ /**
+ * Computes the given metric on the given cache.
+ *
+ * @param dataCache The given cache.
+ * @param filter The given filter.
+ * @param mdl The model.
+ * @param featureExtractor The feature extractor.
+ * @param lbExtractor The label extractor.
+ * @param metric The binary classification metric.
+ * @param <L> The type of label.
+ * @param <K> The type of cache entry key.
+ * @param <V> The type of cache entry value.
+ * @return Computed metric.
+ */
+ private static <L, K, V> double calculateMetric(IgniteCache<K, V> dataCache, IgniteBiPredicate<K, V> filter,
+ Model<Vector, L> mdl, IgniteBiFunction<K, V, Vector> featureExtractor, IgniteBiFunction<K, V, L> lbExtractor,
+ Metric<L> metric) {
+ double metricRes;
+
+ try (LabelPairCursor<L> cursor = new CacheBasedLabelPairCursor<>(
+ dataCache,
+ filter,
+ featureExtractor,
+ lbExtractor,
+ mdl
+ )) {
+ metricRes = metric.score(cursor.iterator());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ return metricRes;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/Evaluator.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/Evaluator.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/Evaluator.java
deleted file mode 100644
index 4535831..0000000
--- a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/Evaluator.java
+++ /dev/null
@@ -1,104 +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.
- */
-
-package org.apache.ignite.ml.selection.scoring.evaluator;
-
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.ml.Model;
-import org.apache.ignite.ml.math.functions.IgniteBiFunction;
-import org.apache.ignite.ml.math.primitives.vector.Vector;
-import org.apache.ignite.ml.selection.scoring.cursor.CacheBasedLabelPairCursor;
-import org.apache.ignite.ml.selection.scoring.cursor.LabelPairCursor;
-import org.apache.ignite.ml.selection.scoring.metric.Accuracy;
-
-/**
- * Binary classification evaluator that compute metrics from predictions.
- */
-public class Evaluator {
- /**
- * Computes the given metric on the given cache.
- *
- * @param dataCache The given cache.
- * @param mdl The model.
- * @param featureExtractor The feature extractor.
- * @param lbExtractor The label extractor.
- * @param metric The binary classification metric.
- * @param <L> The type of label.
- * @param <K> The type of cache entry key.
- * @param <V> The type of cache entry value.
- * @return Computed metric.
- */
- public static <L, K, V> double evaluate(IgniteCache<K, V> dataCache,
- Model<Vector, L> mdl,
- IgniteBiFunction<K, V, Vector> featureExtractor,
- IgniteBiFunction<K, V, L> lbExtractor,
- Accuracy<L> metric) {
- double metricRes;
-
- try (LabelPairCursor<L> cursor = new CacheBasedLabelPairCursor<L, K, V>(
- dataCache,
- featureExtractor,
- lbExtractor,
- mdl
- )) {
- metricRes = metric.score(cursor.iterator());
- }
- catch (Exception e) {
- throw new RuntimeException(e);
- }
-
- return metricRes;
- }
-
- /**
- * Computes the given metric on the given cache.
- *
- * @param dataCache The given cache.
- * @param filter The given filter.
- * @param mdl The model.
- * @param featureExtractor The feature extractor.
- * @param lbExtractor The label extractor.
- * @param metric The binary classification metric.
- * @param <L> The type of label.
- * @param <K> The type of cache entry key.
- * @param <V> The type of cache entry value.
- * @return Computed metric.
- */
- public static <L, K, V> double evaluate(IgniteCache<K, V> dataCache, IgniteBiPredicate<K, V> filter,
- Model<Vector, L> mdl,
- IgniteBiFunction<K, V, Vector> featureExtractor,
- IgniteBiFunction<K, V, L> lbExtractor,
- Accuracy<L> metric) {
- double metricRes;
-
- try (LabelPairCursor<L> cursor = new CacheBasedLabelPairCursor<L, K, V>(
- dataCache,
- filter,
- featureExtractor,
- lbExtractor,
- mdl
- )) {
- metricRes = metric.score(cursor.iterator());
- }
- catch (Exception e) {
- throw new RuntimeException(e);
- }
-
- return metricRes;
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Accuracy.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Accuracy.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Accuracy.java
index 30e6299..fd0656c 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Accuracy.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Accuracy.java
@@ -45,4 +45,9 @@ public class Accuracy<L> implements Metric<L> {
return 1.0 * correctCnt / totalCnt;
}
+
+ /** {@inheritDoc} */
+ @Override public String name() {
+ return "accuracy";
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/BinaryClassificationMetricValues.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/BinaryClassificationMetricValues.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/BinaryClassificationMetricValues.java
new file mode 100644
index 0000000..04cd981
--- /dev/null
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/BinaryClassificationMetricValues.java
@@ -0,0 +1,185 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.selection.scoring.metric;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Provides access to binary metric values.
+ */
+public class BinaryClassificationMetricValues {
+ /** True Positive (TP). */
+ private double tp;
+
+ /** True Negative (TN). */
+ private double tn;
+
+ /** False Positive (FP). */
+ private double fp;
+
+ /** False Negative (FN). */
+ private double fn;
+
+ /** Sensitivity or True Positive Rate (TPR). */
+ private double recall;
+
+ /** Specificity (SPC) or True Negative Rate (TNR). */
+ private double specificity;
+
+ /** Precision or Positive Predictive Value (PPV). */
+ private double precision;
+
+ /** Negative Predictive Value (NPV). */
+ private double npv;
+
+ /** Fall-out or False Positive Rate (FPR). */
+ private double fallOut;
+
+ /** False Discovery Rate (FDR). */
+ private double fdr;
+
+ /** Miss Rate or False Negative Rate (FNR). */
+ private double missRate;
+
+ /** Accuracy. */
+ private double accuracy;
+
+ /** Balanced accuracy. */
+ private double balancedAccuracy;
+
+ /** F1-Score is the harmonic mean of Precision and Sensitivity. */
+ private double f1Score;
+
+ /**
+ * Initialize an example by 4 metrics.
+ *
+ * @param tp True Positive (TP).
+ * @param tn True Negative (TN).
+ * @param fp False Positive (FP).
+ * @param fn False Negative (FN).
+ */
+ public BinaryClassificationMetricValues(long tp, long tn, long fp, long fn) {
+ this.tp = tp;
+ this.tn = tn;
+ this.fp = fp;
+ this.fn = fn;
+
+ long p = tp + fn;
+ long n = tn + fp;
+ long positivePredictions = tp + fp;
+ long negativePredictions = tn + fn;
+
+ // according to https://github.com/dice-group/gerbil/wiki/Precision,-Recall-and-F1-measure
+ recall = p == 0 ? 1 : (double)tp / p;
+ precision = positivePredictions == 0 ? 1 : (double)tp / positivePredictions;
+ specificity = n == 0 ? 1 : (double)tn / n;
+ npv = negativePredictions == 0 ? 1 : (double)tn / negativePredictions;
+ fallOut = n == 0 ? 1 : (double)fp / n;
+ fdr = positivePredictions == 0 ? 1 : (double)fp / positivePredictions;
+ missRate = p == 0 ? 1 : (double)fn / p;
+
+ f1Score = 2 * (recall * precision) / (recall + precision);
+
+ accuracy = (p + n) == 0 ? 1 : (double)(tp + tn) / (p + n); // multiplication on 1.0 to make double
+ balancedAccuracy = p == 0 && n == 0 ? 1 : ((double)tp / p + (double)tn / n) / 2;
+ }
+
+ /** */
+ public double tp() {
+ return tp;
+ }
+
+ /** */
+ public double tn() {
+ return tn;
+ }
+
+ /** */
+ public double fp() {
+ return fp;
+ }
+
+ /** */
+ public double fn() {
+ return fn;
+ }
+
+ /** Returns Sensitivity or True Positive Rate (TPR). */
+ public double recall() {
+ return recall;
+ }
+
+ /** Returns Specificity (SPC) or True Negative Rate (TNR). */
+ public double specificity() {
+ return specificity;
+ }
+
+ /** Returns Precision or Positive Predictive Value (PPV). */
+ public double precision() {
+ return precision;
+ }
+
+ /** Returns Negative Predictive Value (NPV). */
+ public double npv() {
+ return npv;
+ }
+
+ /** Returns Fall-out or False Positive Rate (FPR). */
+ public double fallOut() {
+ return fallOut;
+ }
+
+ /** Returns False Discovery Rate (FDR). */
+ public double fdr() {
+ return fdr;
+ }
+
+ /** Returns Miss Rate or False Negative Rate (FNR). */
+ public double missRate() {
+ return missRate;
+ }
+
+ /** Returns Accuracy. */
+ public double accuracy() {
+ return accuracy;
+ }
+
+ /** Returns Balanced accuracy. */
+ public double balancedAccuracy() {
+ return balancedAccuracy;
+ }
+
+ /** Returns F1-Score is the harmonic mean of Precision and Sensitivity. */
+ public double f1Score() {
+ return f1Score;
+ }
+
+ /** Returns the pair of metric name and metric value. */
+ public Map<String, Double> toMap() {
+ Map<String, Double> metricValues = new HashMap<>();
+ for (Field field : getClass().getDeclaredFields())
+ try {
+ metricValues.put(field.getName(), field.getDouble(this));
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ return metricValues;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/BinaryClassificationMetrics.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/BinaryClassificationMetrics.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/BinaryClassificationMetrics.java
new file mode 100644
index 0000000..0b15d04
--- /dev/null
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/BinaryClassificationMetrics.java
@@ -0,0 +1,86 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.selection.scoring.metric;
+
+import java.util.Iterator;
+import org.apache.ignite.ml.selection.scoring.LabelPair;
+
+/**
+ * Binary classification metrics calculator.
+ */
+public class BinaryClassificationMetrics {
+ /** Positive class label. */
+ private double positiveClsLb = 1.0;
+
+ /** Negative class label. Default value is 0.0. */
+ private double negativeClsLb;
+
+ /**
+ * Calculates binary metrics values.
+ *
+ * @param iter Iterator that supplies pairs of truth values and predicated.
+ * @return Scores for all binary metrics.
+ */
+ public BinaryClassificationMetricValues score(Iterator<LabelPair<Double>> iter) {
+ long tp = 0;
+ long tn = 0;
+ long fp = 0;
+ long fn = 0;
+
+ while (iter.hasNext()) {
+ LabelPair<Double> e = iter.next();
+
+ double prediction = e.getPrediction();
+ double truth = e.getTruth();
+
+ if (prediction != negativeClsLb && prediction != positiveClsLb)
+ throw new UnknownClassLabelException(prediction, positiveClsLb, negativeClsLb);
+ if (truth != negativeClsLb && truth != positiveClsLb)
+ throw new UnknownClassLabelException(truth, positiveClsLb, negativeClsLb);
+
+ if (truth == positiveClsLb && prediction == positiveClsLb) tp++;
+ else if (truth == positiveClsLb && prediction == negativeClsLb) fn++;
+ else if (truth == negativeClsLb && prediction == negativeClsLb) tn++;
+ else if (truth == negativeClsLb && prediction == positiveClsLb) fp++;
+ }
+
+ return new BinaryClassificationMetricValues(tp, tn, fp, fn);
+ }
+
+ /** */
+ public double positiveClsLb() {
+ return positiveClsLb;
+ }
+
+ /** */
+ public BinaryClassificationMetrics withPositiveClsLb(double positiveClsLb) {
+ this.positiveClsLb = positiveClsLb;
+ return this;
+ }
+
+ /** */
+ public double negativeClsLb() {
+ return negativeClsLb;
+ }
+
+ /** */
+ public BinaryClassificationMetrics withNegativeClsLb(double negativeClsLb) {
+ this.negativeClsLb = negativeClsLb;
+ return this;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/ClassMetric.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/ClassMetric.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/ClassMetric.java
new file mode 100644
index 0000000..f89e683
--- /dev/null
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/ClassMetric.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.selection.scoring.metric;
+
+/**
+ * Metric calculator for one class label.
+ *
+ * @param <L> Type of a label (truth or prediction).
+ */
+public abstract class ClassMetric<L> implements Metric<L> {
+ /** Class label. */
+ protected L clsLb;
+
+ /**
+ * The class of interest or positive class.
+ *
+ * @param clsLb The label.
+ */
+ public ClassMetric(L clsLb) {
+ this.clsLb = clsLb;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Fmeasure.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Fmeasure.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Fmeasure.java
index 1267584..fe36f51 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Fmeasure.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Fmeasure.java
@@ -25,9 +25,15 @@ import org.apache.ignite.ml.selection.scoring.LabelPair;
*
* @param <L> Type of a label (truth or prediction).
*/
-public class Fmeasure<L> implements Metric<L> {
- /** Class label. */
- private L clsLb;
+public class Fmeasure<L> extends ClassMetric<L> {
+ /**
+ * The class of interest or positive class.
+ *
+ * @param clsLb The label.
+ */
+ public Fmeasure(L clsLb) {
+ super(clsLb);
+ }
/** {@inheritDoc} */
@Override public double score(Iterator<LabelPair<L>> it) {
@@ -68,12 +74,8 @@ public class Fmeasure<L> implements Metric<L> {
return Double.NaN;
}
- /**
- * The class of interest or positive class.
- *
- * @param clsLb The label.
- */
- public Fmeasure(L clsLb) {
- this.clsLb = clsLb;
+ /** {@inheritDoc} */
+ @Override public String name() {
+ return "F-measure for class with label " + clsLb;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Metric.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Metric.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Metric.java
index 60d1e41..783d7fc 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Metric.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Metric.java
@@ -33,4 +33,13 @@ public interface Metric<L> {
* @return Score.
*/
public double score(Iterator<LabelPair<L>> iter);
+
+ /**
+ * Returns the metric's name.
+ *
+ * NOTE: Should be unique to calculate multiple metrics correctly.
+ *
+ * @return String name representation.
+ */
+ public String name();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Precision.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Precision.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Precision.java
index 0a583c8..482a027 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Precision.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Precision.java
@@ -25,9 +25,15 @@ import org.apache.ignite.ml.selection.scoring.LabelPair;
*
* @param <L> Type of a label (truth or prediction).
*/
-public class Precision<L> implements Metric<L> {
- /** Class label. */
- private L clsLb;
+public class Precision<L> extends ClassMetric<L> {
+ /**
+ * The class of interest or positive class.
+ *
+ * @param clsLb The label.
+ */
+ public Precision(L clsLb) {
+ super(clsLb);
+ }
/** {@inheritDoc} */
@Override public double score(Iterator<LabelPair<L>> it) {
@@ -59,12 +65,9 @@ public class Precision<L> implements Metric<L> {
return Double.NaN;
}
- /**
- * The class of interest or positive class.
- *
- * @param clsLb The label.
- */
- public Precision(L clsLb) {
- this.clsLb = clsLb;
+ /** {@inheritDoc} */
+ @Override public String name() {
+ return "precision for class with label " + clsLb;
}
+
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Recall.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Recall.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Recall.java
index 60324e7..d459e94 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Recall.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/Recall.java
@@ -25,9 +25,15 @@ import org.apache.ignite.ml.selection.scoring.LabelPair;
*
* @param <L> Type of a label (truth or prediction).
*/
-public class Recall<L> implements Metric<L> {
- /** Class label. */
- private L clsLb;
+public class Recall<L> extends ClassMetric<L> {
+ /**
+ * The class of interest or positive class.
+ *
+ * @param clsLb The label.
+ */
+ public Recall(L clsLb) {
+ super(clsLb);
+ }
/** {@inheritDoc} */
@Override public double score(Iterator<LabelPair<L>> it) {
@@ -59,12 +65,8 @@ public class Recall<L> implements Metric<L> {
return Double.NaN;
}
- /**
- * The class of interest or positive class.
- *
- * @param clsLb The label.
- */
- public Recall(L clsLb) {
- this.clsLb = clsLb;
+ /** {@inheritDoc} */
+ @Override public String name() {
+ return "recall for class with label " + clsLb;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/UnknownClassLabelException.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/UnknownClassLabelException.java b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/UnknownClassLabelException.java
new file mode 100644
index 0000000..0531f2e
--- /dev/null
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/metric/UnknownClassLabelException.java
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.selection.scoring.metric;
+
+import org.apache.ignite.IgniteException;
+
+/**
+ * Indicates an unknown class label for metric calculator.
+ */
+public class UnknownClassLabelException extends IgniteException {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+
+ /**
+ * @param incorrectVal Incorrect value.
+ * @param positiveClsLb Positive class label.
+ * @param negativeClsLb Negative class label.
+ */
+ public UnknownClassLabelException(double incorrectVal, double positiveClsLb, double negativeClsLb) {
+ super("The next class label: " + incorrectVal + " is not positive class label: " + positiveClsLb + " or negative class label: " + negativeClsLb);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d6e436/modules/ml/src/test/java/org/apache/ignite/ml/selection/scoring/evaluator/EvaluatorTest.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/test/java/org/apache/ignite/ml/selection/scoring/evaluator/EvaluatorTest.java b/modules/ml/src/test/java/org/apache/ignite/ml/selection/scoring/evaluator/EvaluatorTest.java
index 1abf7f0..f17ac73 100644
--- a/modules/ml/src/test/java/org/apache/ignite/ml/selection/scoring/evaluator/EvaluatorTest.java
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/selection/scoring/evaluator/EvaluatorTest.java
@@ -52,7 +52,7 @@ import static org.apache.ignite.ml.TestUtils.testEnvBuilder;
import static org.junit.Assert.assertArrayEquals;
/**
- * Tests for {@link Evaluator} that require to start the whole Ignite infrastructure. IMPL NOTE based on
+ * Tests for {@link BinaryClassificationEvaluator} that require to start the whole Ignite infrastructure. IMPL NOTE based on
* Step_8_CV_with_Param_Grid example.
*/
public class EvaluatorTest extends GridCommonAbstractTest {
@@ -260,7 +260,7 @@ public class EvaluatorTest extends GridCommonAbstractTest {
lbExtractor
);
- actualAccuracy.set(Evaluator.evaluate(
+ actualAccuracy.set(BinaryClassificationEvaluator.evaluate(
cache,
split.getTestFilter(),
bestMdl,
@@ -269,7 +269,7 @@ public class EvaluatorTest extends GridCommonAbstractTest {
new Accuracy<>()
));
- actualAccuracy2.set(Evaluator.evaluate(
+ actualAccuracy2.set(BinaryClassificationEvaluator.evaluate(
cache,
bestMdl,
preprocessor,
[46/52] [abbrv] ignite git commit: IGNITE-9893 IGNITE-1757
IGNITE-10723 Adding hibernate-5.3 module
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheStrategySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheStrategySelfTest.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheStrategySelfTest.java
new file mode 100644
index 0000000..e859284
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheStrategySelfTest.java
@@ -0,0 +1,570 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.cache.Cache;
+import javax.persistence.Cacheable;
+import javax.persistence.Id;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.processors.cache.IgniteCacheProxy;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.hamcrest.core.Is;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.boot.Metadata;
+import org.hibernate.boot.MetadataSources;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.hibernate.cache.spi.access.AccessType;
+import org.hibernate.mapping.PersistentClass;
+import org.hibernate.mapping.RootClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.REGION_CACHE_PROPERTY;
+import static org.hibernate.cache.spi.RegionFactory.DEFAULT_QUERY_RESULTS_REGION_UNQUALIFIED_NAME;
+import static org.hibernate.cache.spi.RegionFactory.DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME;
+import static org.hibernate.cfg.AvailableSettings.USE_STRUCTURED_CACHE;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Tests Hibernate L2 cache configuration.
+ */
+@SuppressWarnings("unchecked")
+@RunWith(JUnit4.class)
+public class HibernateL2CacheStrategySelfTest extends GridCommonAbstractTest {
+ /** */
+ private static final String ENTITY1_NAME = Entity1.class.getName();
+
+ /** */
+ private static final String ENTITY2_NAME = Entity2.class.getName();
+
+ /** */
+ private static final String ENTITY3_NAME = Entity3.class.getName();
+
+ /** */
+ private static final String ENTITY4_NAME = Entity4.class.getName();
+
+ /** */
+ private static final String CONNECTION_URL = "jdbc:h2:mem:example;DB_CLOSE_DELAY=-1";
+
+ /** */
+ private SessionFactory sesFactory1;
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ startGrid(0);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ stopAllGrids();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ for (IgniteCacheProxy<?, ?> cache : ((IgniteKernal)grid(0)).caches())
+ cache.clear();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(new TcpDiscoveryVmIpFinder(true));
+
+ cfg.setCacheConfiguration(cacheConfiguration(ENTITY3_NAME),
+ cacheConfiguration(ENTITY4_NAME),
+ cacheConfiguration("cache1"),
+ cacheConfiguration("cache2"),
+ cacheConfiguration(DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME),
+ cacheConfiguration(DEFAULT_QUERY_RESULTS_REGION_UNQUALIFIED_NAME));
+
+ return cfg;
+ }
+
+ /**
+ * @param cacheName Cache name.
+ * @return Cache configuration.
+ */
+ private CacheConfiguration cacheConfiguration(String cacheName) {
+ CacheConfiguration cfg = new CacheConfiguration();
+
+ cfg.setName(cacheName);
+ cfg.setCacheMode(PARTITIONED);
+ cfg.setAtomicityMode(TRANSACTIONAL);
+
+ return cfg;
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testEntityCacheReadWrite() throws Exception {
+ for (AccessType accessType : new AccessType[]{AccessType.READ_WRITE, AccessType.NONSTRICT_READ_WRITE})
+ testEntityCacheReadWrite(accessType);
+ }
+
+ /**
+ * @param accessType Cache access type.
+ * @throws Exception If failed.
+ */
+ private void testEntityCacheReadWrite(AccessType accessType) throws Exception {
+ log.info("Test access type: " + accessType);
+
+ sesFactory1 = startHibernate(accessType, getTestIgniteInstanceName(0));
+
+ try {
+ // 1 Adding.
+ Session ses = sesFactory1.openSession();
+
+ try {
+ Transaction tr = ses.beginTransaction();
+
+ ses.save(new Entity1(1, "entity-1#name-1"));
+ ses.save(new Entity2(1, "entity-2#name-1"));
+
+ tr.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ loadEntities(sesFactory1);
+
+ assertEquals(1, grid(0).cache("cache1").size());
+ assertEquals(1, grid(0).cache("cache2").size());
+ assertThat(getEntityNameFromRegion(sesFactory1, "cache1", 1), Is.is("entity-1#name-1"));
+ assertThat(getEntityNameFromRegion(sesFactory1, "cache2", 1), Is.is("entity-2#name-1"));
+
+ // 2. Updating and adding.
+ ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ Entity1 e1 = (Entity1)ses.load(Entity1.class, 1);
+
+ e1.setName("entity-1#name-1#UPDATED-1");
+
+ ses.update(e1);
+
+ ses.save(new Entity2(2, "entity-2#name-2#ADDED"));
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ loadEntities(sesFactory1);
+
+ assertEquals(1, grid(0).cache("cache1").size());
+ assertEquals(2, grid(0).cache("cache2").size());
+ assertThat(getEntityNameFromRegion(sesFactory1, "cache1", 1), Is.is("entity-1#name-1#UPDATED-1"));
+ assertThat(getEntityNameFromRegion(sesFactory1, "cache2", 1), Is.is("entity-2#name-1"));
+ assertThat(getEntityNameFromRegion(sesFactory1, "cache2", 2), Is.is("entity-2#name-2#ADDED"));
+
+ // 3. Updating, adding, updating.
+ ses = sesFactory1.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ Entity2 e2_1 = (Entity2)ses.load(Entity2.class, 1);
+
+ e2_1.setName("entity-2#name-1#UPDATED-1");
+
+ ses.update(e2_1);
+
+ ses.save(new Entity1(2, "entity-1#name-2#ADDED"));
+
+ Entity1 e1_1 = (Entity1)ses.load(Entity1.class, 1);
+
+ e1_1.setName("entity-1#name-1#UPDATED-2");
+
+ ses.update(e1_1);
+
+ tx.commit();
+
+ }
+ finally {
+ ses.close();
+ }
+
+ loadEntities(sesFactory1);
+
+ assertEquals(2, grid(0).cache("cache1").size());
+ assertEquals(2, grid(0).cache("cache2").size());
+ assertThat(getEntityNameFromRegion(sesFactory1, "cache2", 1), Is.is("entity-2#name-1#UPDATED-1"));
+ assertThat(getEntityNameFromRegion(sesFactory1, "cache1", 2), Is.is("entity-1#name-2#ADDED"));
+ assertThat(getEntityNameFromRegion(sesFactory1, "cache1", 1), Is.is("entity-1#name-1#UPDATED-2"));
+
+ ses = sesFactory1.openSession();
+
+ sesFactory1.getStatistics().logSummary();
+
+ ses.close();
+ }
+ finally {
+ cleanup();
+ }
+ }
+
+ /**
+ * @param sesFactory Session factory.
+ */
+ private void loadEntities(SessionFactory sesFactory) {
+ Session ses = sesFactory.openSession();
+
+ try {
+ List<Entity1> list1 = ses.createCriteria(ENTITY1_NAME).list();
+
+ for (Entity1 e1 : list1)
+ assertNotNull(e1.getName());
+
+ List<Entity2> list2 = ses.createCriteria(ENTITY2_NAME).list();
+
+ for (Entity2 e2 : list2)
+ assertNotNull(e2.getName());
+ }
+ finally {
+ ses.close();
+ }
+ }
+
+ /**
+ * @param sesFactory Session Factory.
+ * @param regionName Region Name.
+ * @param id Id.
+ * @return Entity Name.
+ */
+ private String getEntityNameFromRegion(SessionFactory sesFactory, String regionName, int id) {
+ Session ses = sesFactory.openSession();
+
+ try {
+ for (Cache.Entry<Object, Object> entry : grid(0).cache(regionName)) {
+ if (((HibernateKeyWrapper)entry.getKey()).id().equals(id))
+ return (String) ((HashMap) entry.getValue()).get("name");
+ }
+
+ return null;
+ }
+ finally {
+ ses.close();
+ }
+ }
+
+ /**
+ * @param accessType Cache access typr.
+ * @param igniteInstanceName Name of the grid providing caches.
+ * @return Session factory.
+ */
+ private SessionFactory startHibernate(AccessType accessType, String igniteInstanceName) {
+ StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
+
+ builder.applySetting("hibernate.connection.url", CONNECTION_URL);
+
+ for (Map.Entry<String, String> e : HibernateL2CacheSelfTest.hibernateProperties(igniteInstanceName, accessType.name()).entrySet())
+ builder.applySetting(e.getKey(), e.getValue());
+
+ builder.applySetting(USE_STRUCTURED_CACHE, "true");
+ builder.applySetting(REGION_CACHE_PROPERTY + ENTITY1_NAME, "cache1");
+ builder.applySetting(REGION_CACHE_PROPERTY + ENTITY2_NAME, "cache2");
+ builder.applySetting(REGION_CACHE_PROPERTY + DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME, DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME);
+ builder.applySetting(REGION_CACHE_PROPERTY + DEFAULT_QUERY_RESULTS_REGION_UNQUALIFIED_NAME, DEFAULT_QUERY_RESULTS_REGION_UNQUALIFIED_NAME);
+
+ MetadataSources metadataSources = new MetadataSources(builder.build());
+
+ metadataSources.addAnnotatedClass(Entity1.class);
+ metadataSources.addAnnotatedClass(Entity2.class);
+ metadataSources.addAnnotatedClass(Entity3.class);
+ metadataSources.addAnnotatedClass(Entity4.class);
+
+ Metadata metadata = metadataSources.buildMetadata();
+
+ for (PersistentClass entityBinding : metadata.getEntityBindings()) {
+ if (!entityBinding.isInherited())
+ ((RootClass)entityBinding).setCacheConcurrencyStrategy(accessType.getExternalName());
+ }
+
+ return metadata.buildSessionFactory();
+ }
+
+ /**
+ * Test Hibernate entity1.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ @Cacheable
+ public static class Entity1 {
+ /** */
+ private int id;
+
+ /** */
+ private String name;
+
+ /**
+ *
+ */
+ public Entity1() {
+ // No-op.
+ }
+
+ /**
+ * @param id ID.
+ * @param name Name.
+ */
+ Entity1(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ /**
+ * @return ID.
+ */
+ @Id
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ /**
+ * Test Hibernate entity2.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ @Cacheable
+ public static class Entity2 {
+ /** */
+ private int id;
+
+ /** */
+ private String name;
+
+ /**
+ *
+ */
+ public Entity2() {
+ // No-op.
+ }
+
+ /**
+ * @param id ID.
+ * @param name Name.
+ */
+ Entity2(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ /**
+ * @return ID.
+ */
+ @Id
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ /**
+ * Test Hibernate entity3.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ @Cacheable
+ public static class Entity3 {
+ /** */
+ private int id;
+
+ /** */
+ private String name;
+
+ /**
+ *
+ */
+ public Entity3() {
+ // No-op.
+ }
+
+ /**
+ * @param id ID.
+ * @param name Name.
+ */
+ public Entity3(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ /**
+ * @return ID.
+ */
+ @Id
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ /**
+ * Test Hibernate entity4.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ @Cacheable
+ public static class Entity4 {
+ /** */
+ private int id;
+
+ /** */
+ private String name;
+
+ /**
+ *
+ */
+ public Entity4() {
+ // No-op.
+ }
+
+ /**
+ * @param id ID.
+ * @param name Name.
+ */
+ public Entity4(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ /**
+ * @return ID.
+ */
+ @Id
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ /**
+ * Closes session factories and clears data from caches.
+ *
+ * @throws Exception If failed.
+ */
+ private void cleanup() throws Exception {
+ if (sesFactory1 != null)
+ sesFactory1.close();
+
+ sesFactory1 = null;
+
+ for (IgniteCacheProxy<?, ?> cache : ((IgniteKernal)grid(0)).caches())
+ cache.clear();
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheTransactionalSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheTransactionalSelfTest.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheTransactionalSelfTest.java
new file mode 100644
index 0000000..5175292
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheTransactionalSelfTest.java
@@ -0,0 +1,154 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import java.util.Collections;
+import javax.cache.configuration.Factory;
+import javax.transaction.Synchronization;
+import javax.transaction.TransactionManager;
+import javax.transaction.UserTransaction;
+import org.apache.commons.dbcp.managed.BasicManagedDataSource;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.h2.jdbcx.JdbcDataSource;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.hibernate.cache.spi.access.AccessType;
+import org.hibernate.cfg.Environment;
+import org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl;
+import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
+import org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform;
+import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform;
+import org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorBuilderImpl;
+import org.jetbrains.annotations.Nullable;
+import org.objectweb.jotm.Jotm;
+
+/**
+ *
+ * Tests Hibernate L2 cache with TRANSACTIONAL access mode (Hibernate and Cache are configured
+ * to used the same TransactionManager).
+ */
+public class HibernateL2CacheTransactionalSelfTest extends HibernateL2CacheSelfTest {
+ /** */
+ private static Jotm jotm;
+
+ /**
+ */
+ private static class TestJtaPlatform extends AbstractJtaPlatform {
+ /** {@inheritDoc} */
+ @Override protected TransactionManager locateTransactionManager() {
+ return jotm.getTransactionManager();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected UserTransaction locateUserTransaction() {
+ return jotm.getUserTransaction();
+ }
+ }
+
+ /**
+ */
+ @SuppressWarnings("PublicInnerClass")
+ public static class TestTmFactory implements Factory<TransactionManager> {
+ /** */
+ private static final long serialVersionUID = 0;
+
+ /** {@inheritDoc} */
+ @Override public TransactionManager create() {
+ return jotm.getTransactionManager();
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ jotm = new Jotm(true, false);
+
+ super.beforeTestsStarted();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ super.afterTestsStopped();
+
+ if (jotm != null)
+ jotm.stop();
+
+ jotm = null;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ cfg.getTransactionConfiguration().setTxManagerFactory(new TestTmFactory());
+ cfg.getTransactionConfiguration().setUseJtaSynchronization(useJtaSynchronization());
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheConfiguration transactionalRegionConfiguration(String regionName) {
+ CacheConfiguration cfg = super.transactionalRegionConfiguration(regionName);
+
+ cfg.setNearConfiguration(null);
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override protected StandardServiceRegistryBuilder registryBuilder() {
+ StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
+
+ DatasourceConnectionProviderImpl connProvider = new DatasourceConnectionProviderImpl();
+
+ BasicManagedDataSource dataSrc = new BasicManagedDataSource(); // JTA-aware data source.
+
+ dataSrc.setTransactionManager(jotm.getTransactionManager());
+
+ dataSrc.setDefaultAutoCommit(false);
+
+ JdbcDataSource h2DataSrc = new JdbcDataSource();
+
+ h2DataSrc.setURL(CONNECTION_URL);
+
+ dataSrc.setXaDataSourceInstance(h2DataSrc);
+
+ connProvider.setDataSource(dataSrc);
+
+ connProvider.configure(Collections.emptyMap());
+
+ builder.addService(ConnectionProvider.class, connProvider);
+
+ builder.addService(JtaPlatform.class, new TestJtaPlatform());
+
+ builder.applySetting(Environment.TRANSACTION_COORDINATOR_STRATEGY, JtaTransactionCoordinatorBuilderImpl.class.getName());
+
+ return builder;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected AccessType[] accessTypes() {
+ return new AccessType[]{AccessType.TRANSACTIONAL};
+ }
+
+ /**
+ * @return Whether to use {@link Synchronization}.
+ */
+ protected boolean useJtaSynchronization() {
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheTransactionalUseSyncSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheTransactionalUseSyncSelfTest.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheTransactionalUseSyncSelfTest.java
new file mode 100644
index 0000000..44899f9
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheTransactionalUseSyncSelfTest.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import javax.transaction.Synchronization;
+
+/**
+ * Tests Hibernate L2 cache with TRANSACTIONAL access mode and {@link Synchronization}
+ * instead of XA resource.
+ */
+public class HibernateL2CacheTransactionalUseSyncSelfTest extends HibernateL2CacheTransactionalSelfTest {
+ /** {@inheritDoc} */
+ @Override protected boolean useJtaSynchronization() {
+ return true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreNodeRestartTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreNodeRestartTest.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreNodeRestartTest.java
new file mode 100644
index 0000000..d5496af
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreNodeRestartTest.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.store.hibernate;
+
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.store.CacheStore;
+import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheStoreNodeRestartAbstractTest;
+
+public class CacheHibernateBlobStoreNodeRestartTest extends IgniteCacheStoreNodeRestartAbstractTest {
+ /** {@inheritDoc} */
+ @Override protected CacheStore getStore() {
+ return new CacheHibernateBlobStore();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheMode cacheMode() {
+ return CacheMode.PARTITIONED;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheAtomicityMode atomicityMode() {
+ return CacheAtomicityMode.ATOMIC;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected NearCacheConfiguration nearConfiguration() {
+ return null;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
new file mode 100644
index 0000000..8b75bb7
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
@@ -0,0 +1,118 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.store.hibernate;
+
+import java.io.File;
+import java.net.URL;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.junits.cache.GridAbstractCacheStoreSelfTest;
+import org.hibernate.FlushMode;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.resource.transaction.spi.TransactionStatus;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/**
+ * Cache store test.
+ */
+@RunWith(JUnit4.class)
+public class CacheHibernateBlobStoreSelfTest extends
+ GridAbstractCacheStoreSelfTest<CacheHibernateBlobStore<Object, Object>> {
+ /**
+ * @throws Exception If failed.
+ */
+ public CacheHibernateBlobStoreSelfTest() throws Exception {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ super.afterTest();
+
+ Session s = store.session(null);
+
+ if (s == null)
+ return;
+
+ try {
+ s.createQuery("delete from " + CacheHibernateBlobStoreEntry.class.getSimpleName())
+ .setFlushMode(FlushMode.ALWAYS).executeUpdate();
+
+ Transaction hTx = s.getTransaction();
+
+ if (hTx != null && hTx.getStatus() == TransactionStatus.ACTIVE)
+ hTx.commit();
+ }
+ finally {
+ s.close();
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheHibernateBlobStore<Object, Object> store() {
+ return new CacheHibernateBlobStore<>();
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testConfigurationByUrl() throws Exception {
+ URL url = U.resolveIgniteUrl(CacheHibernateStoreFactorySelfTest.MODULE_PATH +
+ "/src/test/resources/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml");
+
+ assert url != null;
+
+ store.setHibernateConfigurationPath(url.toString());
+
+ // Store will be implicitly initialized.
+ store.load("key");
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testConfigurationByFile() throws Exception {
+ URL url = U.resolveIgniteUrl(CacheHibernateStoreFactorySelfTest.MODULE_PATH +
+ "/src/test/resources/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml");
+
+ assert url != null;
+
+ File file = new File(url.toURI());
+
+ store.setHibernateConfigurationPath(file.getAbsolutePath());
+
+ // Store will be implicitly initialized.
+ store.load("key");
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testConfigurationByResource() throws Exception {
+ store.setHibernateConfigurationPath("/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml");
+
+ // Store will be implicitly initialized.
+ store.load("key");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
new file mode 100644
index 0000000..0a9a881
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
@@ -0,0 +1,336 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.store.hibernate;
+
+import java.sql.Connection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import javax.naming.NamingException;
+import javax.naming.Reference;
+import javax.persistence.EntityGraph;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceUnitUtil;
+import javax.persistence.Query;
+import javax.persistence.SynchronizationType;
+import javax.persistence.criteria.CriteriaBuilder;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.hibernate.Cache;
+import org.hibernate.HibernateException;
+import org.hibernate.Metamodel;
+import org.hibernate.Session;
+import org.hibernate.SessionBuilder;
+import org.hibernate.SessionFactory;
+import org.hibernate.StatelessSession;
+import org.hibernate.StatelessSessionBuilder;
+import org.hibernate.TypeHelper;
+import org.hibernate.boot.spi.SessionFactoryOptions;
+import org.hibernate.engine.spi.FilterDefinition;
+import org.hibernate.metadata.ClassMetadata;
+import org.hibernate.metadata.CollectionMetadata;
+import org.hibernate.stat.Statistics;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/**
+ * Test for Cache jdbc blob store factory.
+ */
+@RunWith(JUnit4.class)
+public class CacheHibernateStoreFactorySelfTest extends GridCommonAbstractTest {
+ /** Cache name. */
+ private static final String CACHE_NAME = "test";
+
+ /** */
+ static final String MODULE_PATH = "modules/hibernate-5.3/";
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testCacheConfiguration() throws Exception {
+ try (Ignite ignite1 = startGrid(0)) {
+ IgniteCache<Integer, String> cache1 = ignite1.getOrCreateCache(cacheConfiguration());
+
+ checkStore(cache1);
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testXmlConfiguration() throws Exception {
+ try (Ignite ignite = Ignition.start(MODULE_PATH + "/src/test/config/factory-cache.xml")) {
+ try(Ignite ignite1 = Ignition.start(MODULE_PATH + "/src/test/config/factory-cache1.xml")) {
+ checkStore(ignite.<Integer, String>cache(CACHE_NAME), DummySessionFactoryExt.class);
+
+ checkStore(ignite1.<Integer, String>cache(CACHE_NAME), DummySessionFactory.class);
+ }
+ }
+ }
+
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testIncorrectBeanConfiguration() {
+ GridTestUtils.assertThrows(log, new Callable<Object>() {
+ @Override
+ public Object call() throws Exception {
+ String path = MODULE_PATH + "/src/test/config/factory-incorrect-store-cache.xml";
+ try (Ignite ignite = Ignition.start(path)) {
+ ignite.cache(CACHE_NAME).getConfiguration(CacheConfiguration.class).getCacheStoreFactory().create();
+ }
+ return null;
+ }
+ }, IgniteException.class, "Failed to load bean in application context");
+ }
+
+ /**
+ * @return Cache configuration with store.
+ */
+ private CacheConfiguration<Integer, String> cacheConfiguration() {
+ CacheConfiguration<Integer, String> cfg = new CacheConfiguration<>(DEFAULT_CACHE_NAME);
+
+ CacheHibernateBlobStoreFactory<Integer, String> factory = new CacheHibernateBlobStoreFactory();
+
+ factory.setHibernateConfigurationPath("/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml");
+
+ cfg.setCacheStoreFactory(factory);
+
+ return cfg;
+ }
+
+ /**
+ * @param cache Ignite cache.
+ * @param dataSrcClass Data source class.
+ * @throws Exception If store parameters is not the same as in configuration xml.
+ */
+ private void checkStore(IgniteCache<Integer, String> cache, Class<?> dataSrcClass) throws Exception {
+ CacheHibernateBlobStore store = (CacheHibernateBlobStore)cache
+ .getConfiguration(CacheConfiguration.class).getCacheStoreFactory().create();
+
+ assertEquals(dataSrcClass,
+ GridTestUtils.getFieldValue(store, CacheHibernateBlobStore.class, "sesFactory").getClass());
+ }
+
+ /**
+ * @param cache Ignite cache.
+ * @throws Exception If store parameters is not the same as in configuration xml.
+ */
+ private void checkStore(IgniteCache<Integer, String> cache) throws Exception {
+ CacheHibernateBlobStore store = (CacheHibernateBlobStore)cache.getConfiguration(CacheConfiguration.class)
+ .getCacheStoreFactory().create();
+
+ assertEquals("/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml",
+ GridTestUtils.getFieldValue(store, CacheHibernateBlobStore.class, "hibernateCfgPath"));
+ }
+
+ /**
+ *
+ */
+ public static class DummySessionFactoryExt extends DummySessionFactory {
+ /** */
+ public DummySessionFactoryExt() {
+ // No-op.
+ }
+ }
+
+ /**
+ *
+ */
+ public static class DummySessionFactory implements SessionFactory {
+ /** {@inheritDoc} */
+ @Override public SessionFactoryOptions getSessionFactoryOptions() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public SessionBuilder withOptions() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Session openSession() throws HibernateException {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Session getCurrentSession() throws HibernateException {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public StatelessSessionBuilder withStatelessOptions() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public StatelessSession openStatelessSession() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public StatelessSession openStatelessSession(Connection conn) {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public ClassMetadata getClassMetadata(Class entityCls) {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public ClassMetadata getClassMetadata(String entityName) {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public CollectionMetadata getCollectionMetadata(String roleName) {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Map<String, ClassMetadata> getAllClassMetadata() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Map getAllCollectionMetadata() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Statistics getStatistics() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void close() throws HibernateException {
+ }
+
+ @Override
+ public Map<String, Object> getProperties() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isClosed() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Cache getCache() {
+ return null;
+ }
+
+ @Override
+ public PersistenceUnitUtil getPersistenceUnitUtil() {
+ return null;
+ }
+
+ @Override
+ public void addNamedQuery(String name, Query query) {
+
+ }
+
+ @Override
+ public <T> T unwrap(Class<T> cls) {
+ return null;
+ }
+
+ @Override
+ public <T> void addNamedEntityGraph(String graphName, EntityGraph<T> entityGraph) {
+
+ }
+
+ /** {@inheritDoc} */
+ @Override public Set getDefinedFilterNames() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public FilterDefinition getFilterDefinition(String filterName) throws HibernateException {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean containsFetchProfileDefinition(String name) {
+ return false;
+ }
+
+ /** {@inheritDoc} */
+ @Override public TypeHelper getTypeHelper() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Reference getReference() throws NamingException {
+ return null;
+ }
+
+ @Override
+ public <T> List<EntityGraph<? super T>> findEntityGraphsByType(Class<T> aClass) {
+ return null;
+ }
+
+ @Override
+ public EntityManager createEntityManager() {
+ return null;
+ }
+
+ @Override
+ public EntityManager createEntityManager(Map map) {
+ return null;
+ }
+
+ @Override
+ public EntityManager createEntityManager(SynchronizationType synchronizationType) {
+ return null;
+ }
+
+ @Override
+ public EntityManager createEntityManager(SynchronizationType synchronizationType, Map map) {
+ return null;
+ }
+
+ @Override
+ public CriteriaBuilder getCriteriaBuilder() {
+ return null;
+ }
+
+ @Override
+ public Metamodel getMetamodel() {
+ return null;
+ }
+
+ @Override
+ public boolean isOpen() {
+ return false;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreSessionListenerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreSessionListenerSelfTest.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreSessionListenerSelfTest.java
new file mode 100644
index 0000000..0010425
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreSessionListenerSelfTest.java
@@ -0,0 +1,242 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.store.hibernate;
+
+import java.io.Serializable;
+import java.util.Map;
+import javax.cache.Cache;
+import javax.cache.configuration.Factory;
+import javax.cache.integration.CacheLoaderException;
+import javax.cache.integration.CacheWriterException;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import org.apache.ignite.cache.store.CacheStore;
+import org.apache.ignite.cache.store.CacheStoreAdapter;
+import org.apache.ignite.cache.store.CacheStoreSession;
+import org.apache.ignite.cache.store.CacheStoreSessionListener;
+import org.apache.ignite.cache.store.CacheStoreSessionListenerAbstractSelfTest;
+import org.apache.ignite.cache.store.jdbc.CacheJdbcStoreSessionListener;
+import org.apache.ignite.lang.IgniteBiInClosure;
+import org.apache.ignite.resources.CacheStoreSessionResource;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.resource.transaction.spi.TransactionStatus;
+
+/**
+ * Tests for {@link CacheJdbcStoreSessionListener}.
+ */
+public class CacheHibernateStoreSessionListenerSelfTest extends CacheStoreSessionListenerAbstractSelfTest {
+ /** {@inheritDoc} */
+ @Override protected Factory<? extends CacheStore<Integer, Integer>> storeFactory() {
+ return new Factory<CacheStore<Integer, Integer>>() {
+ @Override public CacheStore<Integer, Integer> create() {
+ return new Store();
+ }
+ };
+ }
+
+ /** {@inheritDoc} */
+ @Override protected Factory<CacheStoreSessionListener> sessionListenerFactory() {
+ return new Factory<CacheStoreSessionListener>() {
+ @Override public CacheStoreSessionListener create() {
+ CacheHibernateStoreSessionListener lsnr = new CacheHibernateStoreSessionListener();
+
+ SessionFactory sesFactory = new Configuration().
+ setProperty("hibernate.connection.url", URL).
+ addAnnotatedClass(Table1.class).
+ addAnnotatedClass(Table2.class).
+ buildSessionFactory();
+
+ lsnr.setSessionFactory(sesFactory);
+
+ return lsnr;
+ }
+ };
+ }
+
+ /**
+ */
+ private static class Store extends CacheStoreAdapter<Integer, Integer> {
+ /** */
+ private static String SES_CONN_KEY = "ses_conn";
+
+ /** */
+ @CacheStoreSessionResource
+ private CacheStoreSession ses;
+
+ /** {@inheritDoc} */
+ @Override public void loadCache(IgniteBiInClosure<Integer, Integer> clo, Object... args) {
+ loadCacheCnt.incrementAndGet();
+
+ checkSession();
+ }
+
+ /** {@inheritDoc} */
+ @Override public Integer load(Integer key) throws CacheLoaderException {
+ loadCnt.incrementAndGet();
+
+ checkSession();
+
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void write(Cache.Entry<? extends Integer, ? extends Integer> entry)
+ throws CacheWriterException {
+ writeCnt.incrementAndGet();
+
+ checkSession();
+
+ if (write.get()) {
+ Session hibSes = ses.attachment();
+
+ switch (ses.cacheName()) {
+ case "cache1":
+ hibSes.save(new Table1(entry.getKey(), entry.getValue()));
+
+ break;
+
+ case "cache2":
+ if (fail.get())
+ throw new CacheWriterException("Expected failure.");
+
+ hibSes.save(new Table2(entry.getKey(), entry.getValue()));
+
+ break;
+
+ default:
+ throw new CacheWriterException("Wring cache: " + ses.cacheName());
+ }
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void delete(Object key) throws CacheWriterException {
+ deleteCnt.incrementAndGet();
+
+ checkSession();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void sessionEnd(boolean commit) {
+ assertNull(ses.attachment());
+ }
+
+ /**
+ */
+ private void checkSession() {
+ Session hibSes = ses.attachment();
+
+ assertNotNull(hibSes);
+
+ assertTrue(hibSes.isOpen());
+
+ Transaction tx = hibSes.getTransaction();
+
+ assertNotNull(tx);
+
+ if (ses.isWithinTransaction())
+ assertEquals(TransactionStatus.ACTIVE, tx.getStatus());
+ else
+ assertFalse("Unexpected status: " + tx.getStatus(), tx.getStatus() == TransactionStatus.ACTIVE);
+
+ verifySameInstance(hibSes);
+ }
+
+ /**
+ * @param hibSes Session.
+ */
+ private void verifySameInstance(Session hibSes) {
+ Map<String, Session> props = ses.properties();
+
+ Session sesConn = props.get(SES_CONN_KEY);
+
+ if (sesConn == null)
+ props.put(SES_CONN_KEY, hibSes);
+ else {
+ assertSame(hibSes, sesConn);
+
+ reuseCnt.incrementAndGet();
+ }
+ }
+ }
+
+ /**
+ */
+ @Entity
+ @Table(name = "Table1")
+ private static class Table1 implements Serializable {
+ /** */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private Integer id;
+
+ /** */
+ @Column(name = "key")
+ private int key;
+
+ /** */
+ @Column(name = "value")
+ private int value;
+
+ /**
+ * @param key Key.
+ * @param value Value.
+ */
+ private Table1(int key, int value) {
+ this.key = key;
+ this.value = value;
+ }
+ }
+
+ /**
+ */
+ @Entity
+ @Table(name = "Table2")
+ private static class Table2 implements Serializable {
+ /** */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private Integer id;
+
+ /** */
+ @Column(name = "key")
+ private int key;
+
+ /** */
+ @Column(name = "value")
+ private int value;
+
+ /**
+ * @param key Key.
+ * @param value Value.
+ */
+ private Table2(int key, int value) {
+ this.key = key;
+ this.value = value;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml
new file mode 100644
index 0000000..6240599
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+
+
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+ <session-factory>
+ <!-- Show SQL. -->
+ <property name="show_sql">true</property>
+
+ <!-- Database connection settings (private in-memory database). -->
+ <property name="connection.url">jdbc:h2:mem:example;DB_CLOSE_DELAY=-1</property>
+
+ <!-- Only validate the database schema on startup in production mode. -->
+ <property name="hbm2ddl.auto">update</property>
+
+ <!-- H2 dialect. -->
+ <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
+
+ <!-- Mappings. -->
+ <mapping resource="org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.hbm.xml"/>
+ </session-factory>
+</hibernate-configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/package-info.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/package-info.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/package-info.java
new file mode 100644
index 0000000..8af9886
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/store/hibernate/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Contains internal tests or test related classes and interfaces.
+ */
+package org.apache.ignite.cache.store.hibernate;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/testsuites/IgniteBinaryHibernate53TestSuite.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/testsuites/IgniteBinaryHibernate53TestSuite.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/testsuites/IgniteBinaryHibernate53TestSuite.java
new file mode 100644
index 0000000..51842a8
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/testsuites/IgniteBinaryHibernate53TestSuite.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.testsuites;
+
+import junit.framework.TestSuite;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.testframework.config.GridTestProperties;
+
+/**
+ *
+ */
+public class IgniteBinaryHibernate53TestSuite extends TestSuite {
+ /**
+ * @return Test suite.
+ * @throws Exception If failed.
+ */
+ public static TestSuite suite() throws Exception {
+ GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
+
+ return IgniteHibernate53TestSuite.suite();
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/testsuites/IgniteHibernate53TestSuite.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/testsuites/IgniteHibernate53TestSuite.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/testsuites/IgniteHibernate53TestSuite.java
new file mode 100644
index 0000000..794cffe
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/testsuites/IgniteHibernate53TestSuite.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.testsuites;
+
+import junit.framework.JUnit4TestAdapter;
+import junit.framework.TestSuite;
+import org.apache.ignite.cache.hibernate.HibernateL2CacheConfigurationSelfTest;
+import org.apache.ignite.cache.hibernate.HibernateL2CacheMultiJvmTest;
+import org.apache.ignite.cache.hibernate.HibernateL2CacheSelfTest;
+import org.apache.ignite.cache.hibernate.HibernateL2CacheStrategySelfTest;
+import org.apache.ignite.cache.hibernate.HibernateL2CacheTransactionalSelfTest;
+import org.apache.ignite.cache.hibernate.HibernateL2CacheTransactionalUseSyncSelfTest;
+import org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreNodeRestartTest;
+import org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreSelfTest;
+import org.apache.ignite.cache.store.hibernate.CacheHibernateStoreFactorySelfTest;
+import org.apache.ignite.cache.store.hibernate.CacheHibernateStoreSessionListenerSelfTest;
+
+/**
+ * Hibernate integration tests.
+ */
+public class IgniteHibernate53TestSuite extends TestSuite {
+ /**
+ * @return Test suite.
+ */
+ public static TestSuite suite() {
+ TestSuite suite = new TestSuite("Hibernate5 Integration Test Suite");
+
+ // Hibernate L2 cache.
+ suite.addTest(new JUnit4TestAdapter(HibernateL2CacheSelfTest.class));
+ suite.addTest(new JUnit4TestAdapter(HibernateL2CacheTransactionalSelfTest.class));
+ suite.addTest(new JUnit4TestAdapter(HibernateL2CacheTransactionalUseSyncSelfTest.class));
+ suite.addTest(new JUnit4TestAdapter(HibernateL2CacheConfigurationSelfTest.class));
+ suite.addTest(new JUnit4TestAdapter(HibernateL2CacheStrategySelfTest.class));
+ suite.addTest(new JUnit4TestAdapter(HibernateL2CacheMultiJvmTest.class));
+
+ suite.addTest(new JUnit4TestAdapter(CacheHibernateBlobStoreSelfTest.class));
+
+ suite.addTest(new JUnit4TestAdapter(CacheHibernateBlobStoreNodeRestartTest.class));
+
+ suite.addTest(new JUnit4TestAdapter(CacheHibernateStoreSessionListenerSelfTest.class));
+
+ suite.addTest(new JUnit4TestAdapter(CacheHibernateStoreFactorySelfTest.class));
+
+ return suite;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/resources/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/resources/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml b/modules/hibernate-5.3/src/test/resources/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml
new file mode 100644
index 0000000..6240599
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/resources/org/apache/ignite/cache/store/hibernate/hibernate.cfg.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+
+
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+ <session-factory>
+ <!-- Show SQL. -->
+ <property name="show_sql">true</property>
+
+ <!-- Database connection settings (private in-memory database). -->
+ <property name="connection.url">jdbc:h2:mem:example;DB_CLOSE_DELAY=-1</property>
+
+ <!-- Only validate the database schema on startup in production mode. -->
+ <property name="hbm2ddl.auto">update</property>
+
+ <!-- H2 dialect. -->
+ <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
+
+ <!-- Mappings. -->
+ <mapping resource="org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.hbm.xml"/>
+ </session-factory>
+</hibernate-configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateAccessStrategyAdapter.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateAccessStrategyAdapter.java b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateAccessStrategyAdapter.java
index 557b018..44edf8e 100644
--- a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateAccessStrategyAdapter.java
+++ b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateAccessStrategyAdapter.java
@@ -100,7 +100,8 @@ public abstract class HibernateAccessStrategyAdapter {
* @param cache Cache.
* @param eConverter Exception converter.
*/
- protected HibernateAccessStrategyAdapter(Ignite ignite,
+ protected HibernateAccessStrategyAdapter(
+ Ignite ignite,
HibernateCacheProxy cache,
HibernateExceptionConverter eConverter) {
this.cache = cache;
@@ -124,7 +125,12 @@ public abstract class HibernateAccessStrategyAdapter {
*/
@Nullable public Object get(Object key) {
try {
- return cache.get(key);
+ Object val = cache.get(key);
+
+ if (log.isDebugEnabled())
+ log.debug("Get [cache=" + cache.name() + ", key=" + key + ", val=" + val + ']');
+
+ return val;
}
catch (IgniteCheckedException e) {
throw convertException(e);
@@ -147,6 +153,9 @@ public abstract class HibernateAccessStrategyAdapter {
* @param val Value.
*/
public void putFromLoad(Object key, Object val) {
+ if (log.isDebugEnabled())
+ log.debug("Put from load [cache=" + cache.name() + ", key=" + key + ", val=" + val + ']');
+
try {
cache.put(key, val);
}
@@ -225,6 +234,9 @@ public abstract class HibernateAccessStrategyAdapter {
* Called to remove all data from cache without regard to transaction.
*/
public void evictAll() {
+ if (log.isDebugEnabled())
+ log.debug("Evict all [cache=" + cache.name() + ']');
+
try {
evictAll(cache);
}
@@ -337,4 +349,4 @@ public abstract class HibernateAccessStrategyAdapter {
cacheName = U.readString(in);
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateAccessStrategyFactory.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateAccessStrategyFactory.java b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateAccessStrategyFactory.java
index 0226c1c..c48d482 100644
--- a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateAccessStrategyFactory.java
+++ b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateAccessStrategyFactory.java
@@ -19,8 +19,9 @@ package org.apache.ignite.cache.hibernate;
import java.util.HashMap;
import java.util.Map;
-import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Supplier;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
@@ -54,9 +55,6 @@ public class HibernateAccessStrategyFactory {
/** Hibernate L2 cache Ignite instance name property name. */
public static final String IGNITE_INSTANCE_NAME_PROPERTY = "org.apache.ignite.hibernate.ignite_instance_name";
- /** Default cache property name. */
- public static final String DFLT_CACHE_NAME_PROPERTY = "org.apache.ignite.hibernate.default_cache";
-
/** Property prefix used to specify region name to cache name mapping. */
public static final String REGION_CACHE_PROPERTY = "org.apache.ignite.hibernate.region_cache.";
@@ -66,13 +64,16 @@ public class HibernateAccessStrategyFactory {
/** */
public static final String GRID_CONFIG_PROPERTY = "org.apache.ignite.hibernate.grid_config";
+ /** Disable atomicity check when caches are created lazily. */
+ public static final String VERIFY_ATOMICITY = "org.apache.ignite.hibernate.verify_atomicity";
+
+ /** When set, all cache names in ignite will be fetched using the specified prefix. */
+ public static final String CACHE_PREFIX = "org.apache.ignite.hibernate.cache_prefix";
+
/** Grid providing caches. */
private Ignite ignite;
- /** Default cache. */
- private HibernateCacheProxy dfltCache;
-
- /** Region name to cache name mapping. */
+ /** Region name to cache name (without prefix) mapping. */
private final Map<String, String> regionCaches = new HashMap<>();
/** */
@@ -81,6 +82,12 @@ public class HibernateAccessStrategyFactory {
/** */
private final ConcurrentHashMap<String, ThreadLocal> threadLocMap = new ConcurrentHashMap<>();
+ /** */
+ private String cachePrefix;
+
+ /** */
+ private boolean verifyAtomicity = true;
+
/**
* @param keyTransformer Key transformer.
* @param eConverter Exception converter.
@@ -91,53 +98,45 @@ public class HibernateAccessStrategyFactory {
}
/**
- * @param props Properties.
+ * @param cfgValues {@link Map} of config values.
*/
- public void start(Properties props) {
- String gridCfg = props.getProperty(GRID_CONFIG_PROPERTY);
- String igniteInstanceName = props.getProperty(IGNITE_INSTANCE_NAME_PROPERTY);
+ public void start(Map<Object, Object> cfgValues) {
+ cachePrefix = cfgValues.getOrDefault(CACHE_PREFIX, "").toString();
+
+ verifyAtomicity = Boolean.valueOf(cfgValues.getOrDefault(VERIFY_ATOMICITY, verifyAtomicity).toString());
- if (igniteInstanceName == null)
- igniteInstanceName = props.getProperty(GRID_NAME_PROPERTY);
+ Object gridCfg = cfgValues.get(GRID_CONFIG_PROPERTY);
+
+ Object igniteInstanceName = cfgValues.get(IGNITE_INSTANCE_NAME_PROPERTY);
if (gridCfg != null) {
try {
- ignite = G.start(gridCfg);
+ ignite = G.start(gridCfg.toString());
}
catch (IgniteException e) {
throw eConverter.convert(e);
}
}
else
- ignite = Ignition.ignite(igniteInstanceName);
+ ignite = Ignition.ignite(igniteInstanceName == null ? null : igniteInstanceName.toString());
- for (Map.Entry<Object, Object> prop : props.entrySet()) {
- String key = prop.getKey().toString();
+ for (Map.Entry entry : cfgValues.entrySet()) {
+ String key = entry.getKey().toString();
if (key.startsWith(REGION_CACHE_PROPERTY)) {
String regionName = key.substring(REGION_CACHE_PROPERTY.length());
- String cacheName = prop.getValue().toString();
+ String cacheName = entry.getValue().toString();
- if (((IgniteKernal)ignite).getCache(cacheName) == null)
+ if (((IgniteKernal) ignite).getCache(cachePrefix + cacheName) == null) {
throw new IllegalArgumentException("Cache '" + cacheName + "' specified for region '" + regionName + "' " +
"is not configured.");
+ }
regionCaches.put(regionName, cacheName);
}
}
- String dfltCacheName = props.getProperty(DFLT_CACHE_NAME_PROPERTY);
-
- if (dfltCacheName != null) {
- IgniteInternalCache<Object, Object> dfltCache = ((IgniteKernal)ignite).getCache(dfltCacheName);
-
- if (dfltCache == null)
- throw new IllegalArgumentException("Cache specified as default is not configured: " + dfltCacheName);
-
- this.dfltCache = new HibernateCacheProxy(dfltCache, keyTransformer);
- }
-
IgniteLogger log = ignite.log().getLogger(getClass());
if (log.isDebugEnabled())
@@ -158,19 +157,48 @@ public class HibernateAccessStrategyFactory {
HibernateCacheProxy regionCache(String regionName) {
String cacheName = regionCaches.get(regionName);
- if (cacheName == null) {
- if (dfltCache != null)
- return dfltCache;
-
+ if (cacheName == null)
cacheName = regionName;
+
+ cacheName = cachePrefix + cacheName;
+
+ Supplier<IgniteInternalCache<Object, Object>> lazyCache = new LazyCacheSupplier(cacheName, regionName);
+
+ return new HibernateCacheProxy(cacheName, lazyCache, keyTransformer);
+ }
+
+ /** */
+ private class LazyCacheSupplier implements Supplier<IgniteInternalCache<Object, Object>> {
+ /** */
+ private final AtomicReference<IgniteInternalCache<Object, Object>> reference = new AtomicReference<>();
+
+ /** */
+ private final String cacheName;
+
+ /** */
+ private final String regionName;
+
+ /** */
+ private LazyCacheSupplier(String cacheName, String regionName) {
+ this.cacheName = cacheName;
+ this.regionName = regionName;
}
- IgniteInternalCache<Object, Object> cache = ((IgniteKernal)ignite).getCache(cacheName);
+ /** {@inheritDoc} */
+ @Override public IgniteInternalCache<Object, Object> get() {
+ IgniteInternalCache<Object, Object> cache = reference.get();
- if (cache == null)
- throw new IllegalArgumentException("Cache '" + cacheName + "' for region '" + regionName + "' is not configured.");
+ if (cache == null) {
+ cache = ((IgniteKernal)ignite).getCache(cacheName);
- return new HibernateCacheProxy(cache, keyTransformer);
+ if (cache == null)
+ throw new IllegalArgumentException("Cache '" + cacheName + "' for region '" + regionName + "' is not configured.");
+
+ reference.compareAndSet(null, cache);
+ }
+
+ return cache;
+ }
}
/**
@@ -203,9 +231,12 @@ public class HibernateAccessStrategyFactory {
* @return Access strategy implementation.
*/
HibernateAccessStrategyAdapter createReadWriteStrategy(HibernateCacheProxy cache) {
- if (cache.configuration().getAtomicityMode() != TRANSACTIONAL)
- throw new IllegalArgumentException("Hibernate READ-WRITE access strategy must have Ignite cache with " +
- "'TRANSACTIONAL' atomicity mode: " + cache.name());
+ if (verifyAtomicity) {
+ if (cache.configuration().getAtomicityMode() != TRANSACTIONAL) {
+ throw new IllegalArgumentException("Hibernate READ-WRITE access strategy must have Ignite cache with " +
+ "'TRANSACTIONAL' atomicity mode: " + cache.name());
+ }
+ }
return new HibernateReadWriteAccessStrategy(ignite, cache, threadLoc, eConverter);
}
@@ -215,19 +246,22 @@ public class HibernateAccessStrategyFactory {
* @return Access strategy implementation.
*/
HibernateAccessStrategyAdapter createTransactionalStrategy(HibernateCacheProxy cache) {
- if (cache.configuration().getAtomicityMode() != TRANSACTIONAL)
- throw new IllegalArgumentException("Hibernate TRANSACTIONAL access strategy must have Ignite cache with " +
- "'TRANSACTIONAL' atomicity mode: " + cache.name());
-
- TransactionConfiguration txCfg = ignite.configuration().getTransactionConfiguration();
-
- if (txCfg == null ||
- (txCfg.getTxManagerFactory() == null
- && txCfg.getTxManagerLookupClassName() == null
- && cache.configuration().getTransactionManagerLookupClassName() == null)) {
- throw new IllegalArgumentException("Hibernate TRANSACTIONAL access strategy must have Ignite with " +
- "Factory<TransactionManager> configured (see IgniteConfiguration." +
- "getTransactionConfiguration().setTxManagerFactory()): " + cache.name());
+ if (verifyAtomicity) {
+ if (cache.configuration().getAtomicityMode() != TRANSACTIONAL) {
+ throw new IllegalArgumentException("Hibernate TRANSACTIONAL access strategy must have Ignite cache with " +
+ "'TRANSACTIONAL' atomicity mode: " + cache.name());
+ }
+
+ TransactionConfiguration txCfg = ignite.configuration().getTransactionConfiguration();
+
+ if (txCfg == null ||
+ (txCfg.getTxManagerFactory() == null
+ && txCfg.getTxManagerLookupClassName() == null
+ && cache.configuration().getTransactionManagerLookupClassName() == null)) {
+ throw new IllegalArgumentException("Hibernate TRANSACTIONAL access strategy must have Ignite with " +
+ "Factory<TransactionManager> configured (see IgniteConfiguration." +
+ "getTransactionConfiguration().setTxManagerFactory()): " + cache.name());
+ }
}
return new HibernateTransactionalAccessStrategy(ignite, cache, eConverter);
[04/52] [abbrv] ignite git commit: IGNITE-10701 Add missing import to
CacheQueryEntityWithJsr310Java8DateTimeApiFieldsTest - Fixes #5674.
Posted by sb...@apache.org.
IGNITE-10701 Add missing import to CacheQueryEntityWithJsr310Java8DateTimeApiFieldsTest - Fixes #5674.
Signed-off-by: Dmitriy Govorukhin <dm...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/cde6caee
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/cde6caee
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/cde6caee
Branch: refs/heads/ignite-627
Commit: cde6caee42afcc547a9cd93e1e3dcd756e41b431
Parents: 9dc251c
Author: Oleg Ignatenko <oi...@gridgain.com>
Authored: Mon Dec 17 13:22:53 2018 +0300
Committer: Dmitriy Govorukhin <dm...@gmail.com>
Committed: Mon Dec 17 13:22:53 2018 +0300
----------------------------------------------------------------------
.../h2/CacheQueryEntityWithJsr310Java8DateTimeApiFieldsTest.java | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/cde6caee/modules/indexing/src/test/java8/org/apache/ignite/internal/processors/query/h2/CacheQueryEntityWithJsr310Java8DateTimeApiFieldsTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java8/org/apache/ignite/internal/processors/query/h2/CacheQueryEntityWithJsr310Java8DateTimeApiFieldsTest.java b/modules/indexing/src/test/java8/org/apache/ignite/internal/processors/query/h2/CacheQueryEntityWithJsr310Java8DateTimeApiFieldsTest.java
index 1854978..6a144fc 100644
--- a/modules/indexing/src/test/java8/org/apache/ignite/internal/processors/query/h2/CacheQueryEntityWithJsr310Java8DateTimeApiFieldsTest.java
+++ b/modules/indexing/src/test/java8/org/apache/ignite/internal/processors/query/h2/CacheQueryEntityWithJsr310Java8DateTimeApiFieldsTest.java
@@ -31,6 +31,9 @@ import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
import org.apache.ignite.configuration.CacheConfiguration;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
/**
* Tests queries against entities with JSR-310 Java 8 Date and Time API fields.
[52/52] [abbrv] ignite git commit: merge
Posted by sb...@apache.org.
merge
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/404a9f3b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/404a9f3b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/404a9f3b
Branch: refs/heads/ignite-627
Commit: 404a9f3ba5504fc65d050208d68ed39ecefdce1d
Parents: f9c06b8 a8d3990
Author: sboikov <sb...@apache.org>
Authored: Wed Dec 19 23:23:26 2018 +0300
Committer: sboikov <sb...@apache.org>
Committed: Wed Dec 19 23:23:26 2018 +0300
----------------------------------------------------------------------
.gitignore | 5 +-
.idea/inspectionProfiles/Project_Default.xml | 776 ++++
CONTRIBUTING.md | 70 +
RELEASE_NOTES.txt | 152 +
bin/ignite-tf.sh | 0
.../visorcmd/node_startup_by_ssh.sample.ini | 74 -
config/visor-cmd/node_startup_by_ssh.sample.ini | 79 +
docker/web-console/standalone/Dockerfile | 85 +
docker/web-console/standalone/README.txt | 35 +
.../web-console/standalone/docker-entrypoint.sh | 23 +
docker/web-console/standalone/nginx/nginx.conf | 55 +
.../standalone/nginx/web-console.conf | 62 +
.../encryption/example-encrypted-store.xml | 2 +
examples/config/example-ignite-ml.xml | 38 +
examples/pom-standalone-lgpl.xml | 2 +-
examples/pom-standalone.xml | 2 +-
examples/pom.xml | 6 +
examples/sql/world.sql | 28 +-
.../clustering/KMeansClusterizationExample.java | 4 +-
.../AlgorithmSpecificDatasetExample.java | 2 +-
...niteFunctionDistributedInferenceExample.java | 100 +
.../ml/inference/ModelStorageExample.java | 122 +
.../TensorFlowDistributedInferenceExample.java | 99 +
.../TensorFlowLocalInferenceExample.java | 85 +
.../TensorFlowThreadedInferenceExample.java | 95 +
.../examples/ml/inference/package-info.java | 22 +
.../ml/knn/ANNClassificationExample.java | 3 +-
.../ml/knn/KNNClassificationExample.java | 7 +-
.../examples/ml/knn/KNNRegressionExample.java | 4 +-
.../OneVsRestClassificationExample.java | 163 +
.../examples/ml/multiclass/package-info.java | 22 +
.../DiscreteNaiveBayesTrainerExample.java | 115 +
.../GaussianNaiveBayesTrainerExample.java | 30 +-
.../ml/preprocessing/StandardScalerExample.java | 84 +
.../LinearRegressionLSQRTrainerExample.java | 4 +-
...ssionLSQRTrainerWithMinMaxScalerExample.java | 4 +-
.../LinearRegressionSGDTrainerExample.java | 4 +-
...ggedLogisticRegressionSGDTrainerExample.java | 105 +
.../logistic/bagged/package-info.java | 22 +
.../LogisticRegressionSGDTrainerExample.java | 13 +-
...gressionMultiClassClassificationExample.java | 164 -
.../logistic/multiclass/package-info.java | 22 -
.../ml/selection/scoring/EvaluatorExample.java | 83 +
.../scoring/MultipleMetricsExample.java | 82 +
.../split/TrainTestDatasetSplitterExample.java | 4 +-
.../ml/svm/SVMBinaryClassificationExample.java | 113 +
.../binary/SVMBinaryClassificationExample.java | 112 -
.../examples/ml/svm/binary/package-info.java | 22 -
.../SVMMultiClassClassificationExample.java | 153 -
.../ml/svm/multiclass/package-info.java | 22 -
...ecisionTreeClassificationTrainerExample.java | 3 +-
.../GDBOnTreesRegressionTrainerExample.java | 2 +-
.../RandomForestClassificationExample.java | 7 +-
.../RandomForestRegressionExample.java | 13 +-
.../ml/tutorial/Step_1_Read_and_Learn.java | 6 +-
.../examples/ml/tutorial/Step_2_Imputing.java | 6 +-
.../examples/ml/tutorial/Step_3_Categorial.java | 6 +-
.../Step_3_Categorial_with_One_Hot_Encoder.java | 6 +-
.../ml/tutorial/Step_4_Add_age_fare.java | 6 +-
.../examples/ml/tutorial/Step_5_Scaling.java | 6 +-
.../tutorial/Step_5_Scaling_with_Pipeline.java | 6 +-
.../ignite/examples/ml/tutorial/Step_6_KNN.java | 6 +-
.../ml/tutorial/Step_7_Split_train_test.java | 6 +-
.../ignite/examples/ml/tutorial/Step_8_CV.java | 6 +-
.../ml/tutorial/Step_8_CV_with_Param_Grid.java | 6 +-
.../ml/tutorial/Step_9_Go_to_LogReg.java | 14 +-
.../examples/ml/tutorial/TitanicUtils.java | 3 +-
.../examples/ml/util/MLExamplesCommonArgs.java | 2 +-
.../examples/ml/util/MLSandboxDatasets.java | 87 -
.../ignite/examples/ml/util/SandboxMLCache.java | 144 -
.../ml/xgboost/XGBoostModelParserExample.java | 99 +
.../examples/ml/xgboost/package-info.java | 22 +
.../ignite/examples/util/IrisDataset.java | 129 -
.../resources/datasets/agaricus-test-data.txt | 1611 ++++++++
.../datasets/agaricus-test-expected-results.txt | 1611 ++++++++
.../datasets/boston_housing_dataset.txt | 505 ---
.../resources/datasets/cleared_machines.csv | 209 --
.../resources/datasets/glass_identification.csv | 116 -
examples/src/main/resources/datasets/iris.txt | 150 -
.../main/resources/datasets/mortalitydata.csv | 53 -
.../resources/datasets/t10k-images-idx3-ubyte | Bin 0 -> 9876027 bytes
.../resources/datasets/t10k-labels-idx1-ubyte | Bin 0 -> 10008 bytes
.../resources/datasets/two_classed_iris.csv | 100 -
examples/src/main/resources/datasets/wine.txt | 178 -
.../models/mnist_tf_model/saved_model.pb | Bin 0 -> 37185 bytes
.../variables/variables.data-00000-of-00001 | Bin 0 -> 13098544 bytes
.../mnist_tf_model/variables/variables.index | Bin 0 -> 410 bytes
.../resources/models/xgboost/agaricus-model.txt | 714 ++++
.../ignite/examples/BasicExamplesSelfTest.java | 6 +
.../examples/CacheClientBinaryExampleTest.java | 3 +
.../CacheContinuousQueryExamplesSelfTest.java | 4 +
.../ignite/examples/CacheExamplesSelfTest.java | 4 +
.../ComputeClientBinaryExampleTest.java | 2 +
.../examples/EncryptedCacheExampleSelfTest.java | 3 +
.../ignite/examples/EventsExamplesSelfTest.java | 2 +
.../examples/MessagingExamplesSelfTest.java | 3 +
.../examples/SpringDataExampleSelfTest.java | 2 +
.../ignite/examples/SqlExamplesSelfTest.java | 4 +
.../IgniteExamplesJ8SelfTestSuite.java | 80 -
.../testsuites/IgniteExamplesSelfTestSuite.java | 61 +-
idea/disabled_plugins.txt | 113 +
idea/ignite_inspections.xml | 772 ----
idea/ignite_inspections_teamcity.xml | 17 +-
.../aop/aspectj/GridifyAspectJAspect.java | 2 +-
.../aspectj/GridifySetToSetAspectJAspect.java | 2 +-
.../aspectj/GridifySetToValueAspectJAspect.java | 2 +-
.../aop/spring/GridifySetToSetSpringAspect.java | 2 +-
.../spring/GridifySetToValueSpringAspect.java | 2 +-
.../gridify/aop/spring/GridifySpringAspect.java | 2 +-
.../aop/spring/GridifySpringPointcut.java | 8 +-
.../apache/ignite/gridify/AbstractAopTest.java | 47 +-
.../apache/ignite/gridify/BasicAopSelfTest.java | 7 +-
.../GridifySetToXXXNonSpringAopSelfTest.java | 8 +-
.../GridifySetToXXXSpringAopSelfTest.java | 8 +-
.../gridify/hierarchy/GridifyHierarchyTest.java | 7 +-
.../optimized/OptimizedMarshallerAopTest.java | 7 +-
.../apache/ignite/p2p/P2PGridifySelfTest.java | 14 +-
.../testsuites/IgniteAopSelfTestSuite.java | 18 +-
.../singlesplit/SingleSplitsLoadTest.java | 6 +-
.../gridify/GridifySingleSplitLoadTest.java | 8 +-
.../gridify/ExternalNonSpringAopSelfTest.java | 38 +-
.../spi/checkpoint/s3/S3CheckpointSpi.java | 1 -
.../tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java | 1 -
.../s3/S3CheckpointManagerSelfTest.java | 8 +-
.../s3/S3CheckpointSpiConfigSelfTest.java | 7 +-
.../checkpoint/s3/S3CheckpointSpiSelfTest.java | 9 +-
...pointSpiStartStopBucketEndpointSelfTest.java | 12 +-
...ckpointSpiStartStopSSEAlgorithmSelfTest.java | 11 +-
.../s3/S3CheckpointSpiStartStopSelfTest.java | 7 +-
.../s3/S3SessionCheckpointSelfTest.java | 7 +-
.../elb/TcpDiscoveryElbIpFinderSelfTest.java | 7 +-
.../TcpDiscoveryS3IpFinderAbstractSelfTest.java | 5 +
...3IpFinderAwsCredentialsProviderSelfTest.java | 7 +-
...scoveryS3IpFinderAwsCredentialsSelfTest.java | 7 +-
...scoveryS3IpFinderBucketEndpointSelfTest.java | 5 +
...TcpDiscoveryS3IpFinderKeyPrefixSelfTest.java | 5 +
...DiscoveryS3IpFinderSSEAlgorithmSelfTest.java | 7 +-
.../s3/client/DummyObjectListingTest.java | 5 +
.../ipfinder/s3/client/DummyS3ClientTest.java | 8 +
.../ignite/testsuites/IgniteElbTestSuite.java | 6 +-
.../ignite/testsuites/IgniteS3TestSuite.java | 32 +-
.../stream/camel/IgniteCamelStreamerTest.java | 10 +
.../camel/IgniteCamelStreamerTestSuite.java | 11 +-
.../cassandra/CassandraCacheStoreFactory.java | 2 -
.../store/cassandra/common/CassandraHelper.java | 5 +-
.../store/cassandra/datasource/DataSource.java | 20 -
.../KeyValuePersistenceSettings.java | 5 -
.../persistence/PersistenceController.java | 1 -
.../ignite/tests/CassandraConfigTest.java | 5 +
.../apache/ignite/tests/DDLGeneratorTest.java | 1 -
.../org/apache/ignite/tests/pojos/Person.java | 20 -
.../org/apache/ignite/tests/pojos/PersonId.java | 7 -
.../apache/ignite/tests/pojos/SimplePerson.java | 1 -
.../ignite/tests/pojos/SimplePersonId.java | 1 -
.../ignite/tests/utils/CassandraHelper.java | 4 -
.../ignite/tests/utils/TestCacheSession.java | 1 -
.../internal/TaskEventSubjectIdSelfTest.java | 9 +
.../ClientAbstractMultiThreadedSelfTest.java | 7 +-
.../client/ClientDefaultCacheSelfTest.java | 5 +
.../client/ClientReconnectionSelfTest.java | 12 +-
.../client/ClientSslParametersTest.java | 338 ++
.../ClientTcpSslAuthenticationSelfTest.java | 10 +-
...skExecutionAfterTopologyRestartSelfTest.java | 7 +-
.../client/impl/ClientCacheFlagsCodecTest.java | 6 +
.../client/impl/ClientComputeImplSelfTest.java | 18 +-
.../client/impl/ClientDataImplSelfTest.java | 23 +-
.../impl/ClientFutureAdapterSelfTest.java | 8 +-
.../ClientPropertiesConfigurationSelfTest.java | 8 +-
.../ClientAbstractConnectivitySelfTest.java | 12 +-
.../ClientAbstractMultiNodeSelfTest.java | 10 +-
.../integration/ClientAbstractSelfTest.java | 13 +-
.../integration/ClientPreferDirectSelfTest.java | 8 +-
.../client/router/ClientFailedInitSelfTest.java | 10 +-
.../client/router/RouterFactorySelfTest.java | 7 +-
.../router/TcpRouterAbstractSelfTest.java | 7 +-
.../client/suite/IgniteClientTestSuite.java | 107 +-
.../client/util/ClientByteUtilsTest.java | 10 +-
.../util/ClientConsistentHashSelfTest.java | 11 +-
.../client/util/ClientJavaHasherSelfTest.java | 7 +-
.../jdbc2/JdbcAbstractDmlStatementSelfTest.java | 1 -
.../ignite/internal/jdbc2/JdbcBlobTest.java | 15 +-
.../internal/jdbc2/JdbcBulkLoadSelfTest.java | 6 +-
.../jdbc2/JdbcComplexQuerySelfTest.java | 11 +-
.../jdbc2/JdbcConnectionReopenTest.java | 5 +
.../internal/jdbc2/JdbcConnectionSelfTest.java | 15 +
.../jdbc2/JdbcDeleteStatementSelfTest.java | 7 +
.../jdbc2/JdbcDistributedJoinsQueryTest.java | 11 +-
.../jdbc2/JdbcDynamicIndexAbstractSelfTest.java | 11 +
.../internal/jdbc2/JdbcEmptyCacheSelfTest.java | 6 +
.../internal/jdbc2/JdbcErrorsSelfTest.java | 6 +
.../jdbc2/JdbcInsertStatementSelfTest.java | 12 +
.../internal/jdbc2/JdbcLocalCachesSelfTest.java | 7 +
.../jdbc2/JdbcMergeStatementSelfTest.java | 7 +
.../internal/jdbc2/JdbcMetadataSelfTest.java | 163 +-
.../jdbc2/JdbcNoCacheStreamingSelfTest.java | 6 +
.../internal/jdbc2/JdbcNoDefaultCacheTest.java | 6 +
.../jdbc2/JdbcPreparedStatementSelfTest.java | 21 +-
.../internal/jdbc2/JdbcResultSetSelfTest.java | 29 +-
.../internal/jdbc2/JdbcSpringSelfTest.java | 6 +
.../jdbc2/JdbcStatementBatchingSelfTest.java | 8 +
.../internal/jdbc2/JdbcStatementSelfTest.java | 11 +-
.../internal/jdbc2/JdbcStreamingSelfTest.java | 8 +
.../jdbc2/JdbcStreamingToPublicCacheTest.java | 5 +
.../jdbc2/JdbcUpdateStatementSelfTest.java | 7 +
.../rest/ChangeStateCommandHandlerTest.java | 5 +
.../rest/ClientMemcachedProtocolSelfTest.java | 23 +
.../JettyRestProcessorAbstractSelfTest.java | 154 +-
...RestProcessorAuthenticationAbstractTest.java | 12 +-
...rocessorAuthenticationWithTokenSelfTest.java | 5 +
.../JettyRestProcessorBaselineSelfTest.java | 221 ++
.../JettyRestProcessorGetAllAsArrayTest.java | 5 +
.../rest/JettyRestProcessorSignedSelfTest.java | 5 +
.../rest/RestBinaryProtocolSelfTest.java | 21 +-
.../rest/RestMemcacheProtocolSelfTest.java | 20 +-
.../rest/RestProcessorMultiStartSelfTest.java | 6 +
.../rest/RestProcessorStartSelfTest.java | 7 +-
.../rest/TaskCommandHandlerSelfTest.java | 7 +-
.../rest/TcpRestUnmarshalVulnerabilityTest.java | 12 +-
.../processors/rest/TestBinaryClient.java | 1 -
.../processors/rest/TestMemcacheClient.java | 1 -
.../protocols/tcp/TcpRestParserSelfTest.java | 12 +-
.../tcp/redis/RedisProtocolConnectSelfTest.java | 7 +
.../tcp/redis/RedisProtocolServerSelfTest.java | 7 +
...tocolStringAtomicDatastructuresSelfTest.java | 49 +
.../tcp/redis/RedisProtocolStringSelfTest.java | 19 +
.../ignite/jdbc/JdbcComplexQuerySelfTest.java | 13 +-
.../ignite/jdbc/JdbcConnectionSelfTest.java | 14 +-
.../ignite/jdbc/JdbcEmptyCacheSelfTest.java | 8 +-
.../ignite/jdbc/JdbcErrorsAbstractSelfTest.java | 39 +-
.../ignite/jdbc/JdbcLocalCachesSelfTest.java | 8 +-
.../ignite/jdbc/JdbcMetadataSelfTest.java | 80 +-
.../ignite/jdbc/JdbcNoDefaultCacheTest.java | 6 +
.../jdbc/JdbcPojoLegacyQuerySelfTest.java | 5 +
.../ignite/jdbc/JdbcPojoQuerySelfTest.java | 6 +
.../jdbc/JdbcPreparedStatementSelfTest.java | 22 +-
.../ignite/jdbc/JdbcResultSetSelfTest.java | 24 +-
.../ignite/jdbc/JdbcStatementSelfTest.java | 10 +-
.../jdbc/JdbcVersionMismatchSelfTest.java | 5 +
.../suite/IgniteJdbcDriverMvccTestSuite.java | 17 +-
.../jdbc/suite/IgniteJdbcDriverTestSuite.java | 199 +-
.../JdbcThinAbstractDmlStatementSelfTest.java | 6 +-
.../JdbcThinAuthenticateConnectionSelfTest.java | 11 +-
.../thin/JdbcThinAutoCloseServerCursorTest.java | 10 +-
.../ignite/jdbc/thin/JdbcThinBatchSelfTest.java | 25 +
.../thin/JdbcThinBulkLoadAbstractSelfTest.java | 84 +-
...bcThinComplexDmlDdlCustomSchemaSelfTest.java | 8 +-
.../thin/JdbcThinComplexDmlDdlSelfTest.java | 8 +-
.../jdbc/thin/JdbcThinComplexQuerySelfTest.java | 13 +-
...JdbcThinConnectionMultipleAddressesTest.java | 19 +-
.../JdbcThinConnectionMvccEnabledSelfTest.java | 13 +-
.../jdbc/thin/JdbcThinConnectionSSLTest.java | 17 +-
.../jdbc/thin/JdbcThinConnectionSelfTest.java | 60 +-
.../jdbc/thin/JdbcThinDataSourceSelfTest.java | 12 +-
.../thin/JdbcThinDeleteStatementSelfTest.java | 6 +
.../JdbcThinDynamicIndexAbstractSelfTest.java | 11 +
.../jdbc/thin/JdbcThinEmptyCacheSelfTest.java | 8 +-
.../jdbc/thin/JdbcThinErrorsSelfTest.java | 24 +-
.../thin/JdbcThinInsertStatementSelfTest.java | 9 +
.../jdbc/thin/JdbcThinLocalQueriesSelfTest.java | 5 +
.../thin/JdbcThinMergeStatementSelfTest.java | 6 +
.../JdbcThinMetadataPrimaryKeysSelfTest.java | 8 +
.../jdbc/thin/JdbcThinMetadataSelfTest.java | 156 +-
.../JdbcThinMissingLongArrayResultsTest.java | 7 +-
.../jdbc/thin/JdbcThinNoDefaultSchemaTest.java | 9 +
.../thin/JdbcThinPreparedStatementSelfTest.java | 24 +-
.../jdbc/thin/JdbcThinResultSetSelfTest.java | 27 +-
.../jdbc/thin/JdbcThinSchemaCaseTest.java | 7 +-
.../thin/JdbcThinSelectAfterAlterTable.java | 10 +-
.../jdbc/thin/JdbcThinStatementSelfTest.java | 41 +-
.../thin/JdbcThinStreamingAbstractSelfTest.java | 17 +-
.../ignite/jdbc/thin/JdbcThinTcpIoTest.java | 7 +-
...ThinTransactionsAbstractComplexSelfTest.java | 36 +-
.../jdbc/thin/JdbcThinTransactionsSelfTest.java | 36 +-
...ThinTransactionsWithMvccEnabledSelfTest.java | 34 +-
.../thin/JdbcThinUpdateStatementSelfTest.java | 6 +
...ctionFinishOnDeactivatedClusterSelfTest.java | 162 +
.../loadtests/client/ClientCacheBenchmark.java | 1 -
.../client/ClientMarshallerBenchmarkTest.java | 7 +-
.../loadtests/client/ClientTcpSslLoadTest.java | 8 +-
.../TcpDiscoveryCloudIpFinderSelfTest.java | 19 +-
.../ignite/testsuites/IgniteCloudTestSuite.java | 10 +-
.../ignite/codegen/MessageCodeGenerator.java | 11 +-
modules/compatibility/pom.xml | 7 +
.../PdsWithTtlCompatibilityTest.java | 5 +
.../FoldersReuseCompatibilityTest.java | 6 +
.../IgnitePKIndexesMigrationToUnwrapPkTest.java | 263 ++
...tingToWalV2SerializerWithCompactionTest.java | 5 +
.../PersistenceBasicCompatibilityTest.java | 37 +
.../testframework/junits/Dependency.java | 95 +-
.../junits/IgniteCompatibilityAbstractTest.java | 40 +-
.../junits/IgniteCompatibilityNodeRunner.java | 19 +-
.../testframework/util/MavenUtils.java | 15 +-
.../IgniteCompatibilityBasicTestSuite.java | 12 +-
modules/compress/licenses/Snappy-LICENSE.txt | 29 +
.../compress/licenses/Snappy-java-LICENSE.txt | 202 +
modules/compress/licenses/Zstd-LICENSE.txt | 30 +
modules/compress/licenses/Zstd-jni-LICENSE.txt | 26 +
modules/compress/licenses/jnr-ffi-LICENSE.txt | 25 +
modules/compress/licenses/jnr-posix-LICENSE.txt | 2486 +++++++++++++
modules/compress/licenses/lz4-LICENSE.txt | 11 +
modules/compress/licenses/lz4-java-LICENSE.txt | 202 +
modules/compress/pom.xml | 113 +
.../compress/CompressionProcessorImpl.java | 403 ++
.../compress/NativeFileSystemLinux.java | 142 +
.../compress/NativeFileSystemPosix.java | 54 +
.../compress/CompressionConfigurationTest.java | 109 +
.../compress/CompressionProcessorTest.java | 1085 ++++++
...DiskPageCompressionIntegrationAsyncTest.java | 30 +
.../DiskPageCompressionIntegrationTest.java | 480 +++
.../compress/FileSystemUtilsTest.java | 198 +
.../IgnitePdsCompressionTestSuite.java | 59 +
.../IgnitePdsCompressionTestSuite2.java | 38 +
.../org/apache/ignite/DataStorageMetrics.java | 18 +
.../java/org/apache/ignite/IgniteCache.java | 4 +-
.../org/apache/ignite/IgniteJdbcDriver.java | 1 -
.../apache/ignite/IgniteJdbcThinDataSource.java | 1 -
.../org/apache/ignite/IgniteJdbcThinDriver.java | 1 -
.../java/org/apache/ignite/IgniteQueue.java | 8 +
.../apache/ignite/IgniteSystemProperties.java | 94 +-
.../org/apache/ignite/cache/CacheManager.java | 1 -
.../ignite/cache/affinity/AffinityKey.java | 1 -
.../cache/affinity/AffinityKeyMapped.java | 4 +-
...lusterNodeAttributeAffinityBackupFilter.java | 2 +-
.../cache/eviction/fifo/FifoEvictionPolicy.java | 1 -
.../cache/eviction/lru/LruEvictionPolicy.java | 1 -
.../eviction/sorted/SortedEvictionPolicy.java | 4 -
.../ignite/cache/query/ContinuousQuery.java | 11 +-
.../org/apache/ignite/cache/query/Query.java | 20 +-
.../ignite/cache/query/SqlFieldsQuery.java | 4 +
.../org/apache/ignite/cache/query/SqlQuery.java | 4 +
.../apache/ignite/cache/query/TextQuery.java | 32 +-
.../cache/store/jdbc/CacheJdbcBlobStore.java | 1 -
.../store/jdbc/CacheJdbcPojoStoreFactory.java | 2 -
.../ignite/compute/ComputeJobAdapter.java | 1 -
.../apache/ignite/compute/ComputeTaskName.java | 2 +-
.../apache/ignite/compute/ComputeTaskSpis.java | 1 -
.../apache/ignite/compute/gridify/Gridify.java | 6 -
.../ignite/compute/gridify/GridifySetToSet.java | 1 -
.../compute/gridify/GridifySetToValue.java | 1 -
.../gridify/aop/GridifyDefaultRangeTask.java | 1 -
.../aop/GridifySetToSetAbstractAspect.java | 1 -
.../configuration/CacheConfiguration.java | 74 +-
.../configuration/DataStorageConfiguration.java | 17 +-
.../configuration/DiskPageCompression.java | 53 +
.../configuration/IgniteConfiguration.java | 45 +-
.../configuration/MemoryConfiguration.java | 1 -
.../SqlConnectorConfiguration.java | 1 -
.../org/apache/ignite/events/CacheEvent.java | 25 +-
.../ignite/failure/AbstractFailureHandler.java | 16 +-
.../apache/ignite/failure/FailureHandler.java | 6 -
.../java/org/apache/ignite/igfs/IgfsPath.java | 1 -
.../records/IgfsNewLineRecordResolver.java | 1 -
.../local/LocalIgfsSecondaryFileSystem.java | 1 -
.../ignite/internal/AsyncSupportAdapter.java | 3 -
.../internal/GridEventConsumeHandler.java | 1 -
.../ignite/internal/GridJobCancelRequest.java | 2 +-
.../ignite/internal/GridJobContextImpl.java | 1 -
.../ignite/internal/GridJobExecuteRequest.java | 4 +-
.../ignite/internal/GridJobExecuteResponse.java | 4 +-
.../ignite/internal/GridJobSessionImpl.java | 3 -
.../ignite/internal/GridJobSiblingsRequest.java | 2 +-
.../internal/GridJobSiblingsResponse.java | 2 +-
.../ignite/internal/GridKernalContext.java | 17 +
.../ignite/internal/GridKernalContextImpl.java | 48 +-
.../ignite/internal/GridKernalGatewayImpl.java | 2 +-
.../apache/ignite/internal/GridLoggerProxy.java | 2 -
.../ignite/internal/GridPluginComponent.java | 1 -
.../ignite/internal/GridTaskCancelRequest.java | 2 +-
.../ignite/internal/GridTaskSessionImpl.java | 3 -
.../ignite/internal/GridTaskSessionRequest.java | 2 +-
.../ignite/internal/IgniteComponentType.java | 9 +-
.../ignite/internal/IgniteComputeImpl.java | 3 -
.../ignite/internal/IgniteEventsImpl.java | 1 -
.../apache/ignite/internal/IgniteFeatures.java | 101 +
.../ignite/internal/IgniteInternalFuture.java | 4 +
.../IgniteInterruptedCheckedException.java | 1 -
.../apache/ignite/internal/IgniteKernal.java | 64 +-
.../ignite/internal/IgniteNodeAttributes.java | 9 +-
.../ignite/internal/IgniteServicesImpl.java | 1 -
.../org/apache/ignite/internal/IgnitionEx.java | 10 +-
.../ignite/internal/MarshallerContextImpl.java | 8 +-
.../java/org/apache/ignite/internal/README.md | 12 +
.../internal/binary/BinaryClassDescriptor.java | 1 -
.../ignite/internal/binary/BinaryEnumCache.java | 1 -
.../internal/binary/BinaryEnumObjectImpl.java | 1 -
.../ignite/internal/binary/BinaryFieldImpl.java | 1 -
.../internal/binary/BinaryMarshaller.java | 1 -
.../internal/binary/BinaryObjectExImpl.java | 7 +-
.../internal/binary/BinaryObjectImpl.java | 7 -
.../binary/BinaryObjectOffheapImpl.java | 7 -
.../internal/binary/BinaryReaderExImpl.java | 3 -
.../internal/binary/BinaryReaderHandles.java | 1 -
.../ignite/internal/binary/BinaryTreeMap.java | 1 -
.../ignite/internal/binary/BinaryTreeSet.java | 1 -
.../ignite/internal/binary/BinaryUtils.java | 3 -
.../internal/binary/BinaryWriterExImpl.java | 3 -
.../internal/binary/BinaryWriterHandles.java | 1 -
.../internal/binary/GridBinaryMarshaller.java | 3 -
.../binary/builder/BinaryObjectBuilderImpl.java | 6 +-
.../client/GridClientPartitionAffinity.java | 1 -
.../client/impl/GridClientDataImpl.java | 1 -
.../client/impl/GridClientNodeImpl.java | 1 -
.../connection/GridClientNioTcpConnection.java | 2 +-
.../marshaller/jdk/GridClientJdkMarshaller.java | 1 -
.../router/GridTcpRouterConfiguration.java | 1 -
.../impl/GridRouterCommandLineStartup.java | 1 -
.../client/ssl/GridSslBasicContextFactory.java | 88 +-
.../internal/client/thin/ClientBinary.java | 1 -
.../internal/client/thin/ClientUtils.java | 1 -
.../internal/client/thin/TcpClientCache.java | 1 -
.../client/util/GridClientConsistentHash.java | 1 -
.../client/util/GridConcurrentHashSet.java | 4 -
.../ignite/internal/commandline/Arguments.java | 154 +-
.../internal/commandline/CommandHandler.java | 584 ++-
.../commandline/cache/CacheArguments.java | 18 +
.../internal/direct/DirectMessageReader.java | 30 +
.../internal/direct/DirectMessageWriter.java | 26 +
.../direct/state/DirectMessageState.java | 2 -
.../direct/stream/DirectByteBufferStream.java | 11 +
.../stream/v1/DirectByteBufferStreamImplV1.java | 19 +-
.../stream/v2/DirectByteBufferStreamImplV2.java | 26 +-
.../stream/v3/DirectByteBufferStreamImplV3.java | 298 ++
.../internal/executor/GridExecutorService.java | 3 -
.../igfs/common/IgfsControlResponse.java | 2 -
.../ignite/internal/jdbc/JdbcResultSet.java | 1 -
.../apache/ignite/internal/jdbc/JdbcUtils.java | 13 +-
.../internal/jdbc/thin/JdbcThinConnection.java | 2 -
.../jdbc/thin/JdbcThinDatabaseMetadata.java | 39 +-
.../jdbc/thin/JdbcThinParameterMetadata.java | 1 -
.../jdbc/thin/JdbcThinPreparedStatement.java | 1 -
.../internal/jdbc/thin/JdbcThinResultSet.java | 5 -
.../internal/jdbc/thin/JdbcThinStatement.java | 1 -
.../internal/jdbc/thin/JdbcThinTcpIo.java | 2 -
.../internal/jdbc/thin/JdbcThinUtils.java | 13 +-
.../ignite/internal/jdbc2/JdbcConnection.java | 3 -
.../internal/jdbc2/JdbcDatabaseMetadata.java | 39 +-
.../ignite/internal/jdbc2/JdbcResultSet.java | 3 -
.../internal/jdbc2/JdbcResultSetMetadata.java | 1 -
.../ignite/internal/jdbc2/JdbcStatement.java | 2 -
.../apache/ignite/internal/jdbc2/JdbcUtils.java | 7 +-
.../internal/managers/GridManagerAdapter.java | 2 -
.../checkpoint/GridCheckpointManager.java | 3 +-
.../checkpoint/GridCheckpointRequest.java | 2 +-
.../managers/communication/GridIoManager.java | 19 +-
.../communication/GridIoMessageFactory.java | 8 +-
.../communication/GridIoUserMessage.java | 2 +-
.../communication/IgniteIoTestMessage.java | 2 +
.../managers/deployment/GridDeployment.java | 5 +-
.../deployment/GridDeploymentCommunication.java | 11 +-
.../deployment/GridDeploymentInfoBean.java | 2 +-
.../deployment/GridDeploymentLocalStore.java | 1 -
.../GridDeploymentPerVersionStore.java | 1 -
.../deployment/GridDeploymentRequest.java | 2 +-
.../deployment/GridDeploymentResponse.java | 2 +-
.../internal/managers/discovery/DiscoCache.java | 15 -
.../discovery/GridDiscoveryManager.java | 58 +-
.../encryption/GridEncryptionManager.java | 6 +-
.../eventstorage/GridEventStorageManager.java | 8 +-
.../eventstorage/GridEventStorageMessage.java | 2 +-
.../managers/indexing/GridIndexingManager.java | 3 -
.../optimized/OptimizedClassDescriptor.java | 2 -
.../optimized/OptimizedMarshaller.java | 2 -
.../optimized/OptimizedObjectInputStream.java | 7 -
.../optimized/OptimizedObjectOutputStream.java | 2 -
.../OptimizedObjectStreamRegistry.java | 1 -
.../apache/ignite/internal/package-info.java | 4 +-
.../internal/pagemem/PageIdAllocator.java | 6 +
.../ignite/internal/pagemem/PageSupport.java | 14 +
.../ignite/internal/pagemem/PageUtils.java | 1 -
.../pagemem/impl/PageMemoryNoStoreImpl.java | 21 +-
.../internal/pagemem/store/PageStore.java | 34 +-
.../pagemem/wal/IgniteWriteAheadLogManager.java | 16 +
.../internal/pagemem/wal/WALIterator.java | 6 +-
.../internal/pagemem/wal/record/DataEntry.java | 1 +
.../internal/pagemem/wal/record/DataRecord.java | 10 +
.../pagemem/wal/record/LazyDataEntry.java | 1 -
.../pagemem/wal/record/LazyMvccDataEntry.java | 149 +
.../wal/record/MemoryRecoveryRecord.java | 9 +-
.../pagemem/wal/record/MetastoreDataRecord.java | 8 +-
.../pagemem/wal/record/MvccDataEntry.java | 75 +
.../pagemem/wal/record/MvccDataRecord.java | 69 +
.../pagemem/wal/record/MvccTxRecord.java | 98 +
.../internal/pagemem/wal/record/TxRecord.java | 34 +-
.../pagemem/wal/record/UnwrapMvccDataEntry.java | 130 +
.../internal/pagemem/wal/record/WALRecord.java | 171 +-
.../delta/MetaPageUpdateNextSnapshotId.java | 10 +-
.../MetaPageUpdatePartitionDataRecord.java | 3 +-
.../apache/ignite/internal/processors/README.md | 27 +
.../processors/affinity/AffinityAssignment.java | 6 -
.../affinity/AffinityTopologyVersion.java | 11 +-
.../affinity/GridAffinityAssignment.java | 15 +-
.../affinity/GridAffinityAssignmentCache.java | 61 +-
.../affinity/GridAffinityProcessor.java | 4 +-
.../processors/affinity/GridAffinityUtils.java | 2 +-
.../affinity/HistoryAffinityAssignment.java | 19 +-
.../IgniteAuthenticationProcessor.java | 2 -
.../processors/authentication/User.java | 7 +-
.../UserAuthenticateResponseMessage.java | 2 +-
.../cache/CacheAffinitySharedManager.java | 72 +-
.../cache/CacheCompressionManager.java | 95 +
.../processors/cache/CacheEntryImpl.java | 1 -
.../processors/cache/CacheEntryImpl0.java | 1 -
.../cache/CacheEntryInfoCollection.java | 2 +-
.../processors/cache/CacheEntryPredicate.java | 2 +-
.../cache/CacheEntryPredicateAdapter.java | 2 +-
.../cache/CacheEntryPredicateContainsValue.java | 6 +-
.../cache/CacheEntryPredicateHasValue.java | 2 +-
.../cache/CacheEntryPredicateNoValue.java | 2 +-
.../cache/CacheEntrySerializablePredicate.java | 2 +-
.../cache/CacheEvictableEntryImpl.java | 8 +-
.../processors/cache/CacheEvictionEntry.java | 2 +-
.../processors/cache/CacheGroupContext.java | 281 +-
.../cache/CacheGroupMetricsMXBeanImpl.java | 30 +-
.../cache/CacheInvokeDirectResult.java | 2 +-
.../processors/cache/CacheInvokeEntry.java | 1 -
.../processors/cache/CacheInvokeResult.java | 1 -
.../processors/cache/CacheLazyEntry.java | 2 -
.../internal/processors/cache/CacheObject.java | 2 +-
.../processors/cache/CacheObjectAdapter.java | 2 +-
.../cache/CacheObjectByteArrayImpl.java | 2 +-
.../processors/cache/CacheObjectContext.java | 36 +-
.../processors/cache/CacheObjectImpl.java | 3 +-
.../processors/cache/CacheObjectUtils.java | 1 -
.../CachePartialUpdateCheckedException.java | 1 -
.../processors/cache/CachesRegistry.java | 2 +-
.../processors/cache/ClusterCachesInfo.java | 22 +-
.../processors/cache/ExchangeContext.java | 43 +-
.../cache/ExchangeDiscoveryEvents.java | 1 +
.../processors/cache/GridCacheAdapter.java | 108 +-
.../cache/GridCacheAffinityManager.java | 25 +-
.../cache/GridCacheConcurrentMapImpl.java | 14 +-
.../processors/cache/GridCacheContext.java | 138 +-
.../processors/cache/GridCacheContextInfo.java | 166 +
.../cache/GridCacheDeploymentManager.java | 3 +-
.../processors/cache/GridCacheEntryEx.java | 13 +-
.../processors/cache/GridCacheEventManager.java | 33 +-
.../cache/GridCacheEvictionManager.java | 7 +-
.../cache/GridCacheFilterFailedException.java | 1 -
.../cache/GridCacheGroupIdMessage.java | 6 +-
.../processors/cache/GridCacheIdMessage.java | 6 +-
.../processors/cache/GridCacheIoManager.java | 94 +-
.../processors/cache/GridCacheMapEntry.java | 239 +-
.../processors/cache/GridCacheMessage.java | 41 +-
.../cache/GridCacheMvccCandidate.java | 2 -
.../processors/cache/GridCacheMvccManager.java | 29 +-
.../GridCachePartitionExchangeManager.java | 232 +-
.../processors/cache/GridCachePreloader.java | 10 +
.../cache/GridCachePreloaderAdapter.java | 10 +
.../processors/cache/GridCacheProcessor.java | 715 ++--
.../processors/cache/GridCacheProxyImpl.java | 7 +-
.../processors/cache/GridCacheReturn.java | 4 -
.../cache/GridCacheSharedTtlCleanupManager.java | 15 +-
.../processors/cache/GridCacheUtilityKey.java | 1 -
.../processors/cache/GridCacheUtils.java | 10 +-
.../cache/GridCacheValueCollection.java | 1 -
.../GridChangeGlobalStateMessageResponse.java | 10 +-
.../cache/IgniteCacheOffheapManager.java | 78 +-
.../cache/IgniteCacheOffheapManagerImpl.java | 303 +-
.../processors/cache/IgniteCacheProxy.java | 2 -
.../processors/cache/IgniteCacheProxyImpl.java | 7 +-
.../processors/cache/IgniteInternalCache.java | 4 +-
.../processors/cache/KeyCacheObject.java | 2 +-
.../processors/cache/KeyCacheObjectImpl.java | 1 -
.../cache/LocalJoinCachesContext.java | 30 +-
.../cache/PartitionUpdateCounter.java | 28 +-
.../ignite/internal/processors/cache/README.md | 8 +
.../processors/cache/StartCacheInfo.java | 25 +
.../processors/cache/WalStateAckMessage.java | 2 +
.../processors/cache/WalStateManager.java | 35 +-
.../cache/affinity/GridCacheAffinityProxy.java | 1 -
.../cache/binary/CacheObjectBinaryContext.java | 62 -
.../binary/CacheObjectBinaryProcessor.java | 149 -
.../binary/CacheObjectBinaryProcessorImpl.java | 355 +-
.../cache/binary/IgniteBinaryImpl.java | 5 +-
.../CacheDataStructuresManager.java | 19 +-
.../distributed/GridCacheTtlUpdateRequest.java | 30 +-
.../distributed/GridCacheTxRecoveryFuture.java | 2 -
.../distributed/GridCacheTxRecoveryRequest.java | 26 +-
.../GridCacheTxRecoveryResponse.java | 14 +-
.../distributed/GridDistributedBaseMessage.java | 16 +-
.../distributed/GridDistributedCacheEntry.java | 18 +-
.../distributed/GridDistributedLockRequest.java | 54 +-
.../GridDistributedLockResponse.java | 14 +-
.../GridDistributedTxFinishRequest.java | 62 +-
.../GridDistributedTxFinishResponse.java | 18 +-
.../GridDistributedTxPrepareRequest.java | 54 +-
.../GridDistributedTxPrepareResponse.java | 14 +-
.../GridDistributedTxRemoteAdapter.java | 18 +-
.../GridDistributedUnlockRequest.java | 6 +-
.../dht/CacheDistributedGetFutureAdapter.java | 436 ++-
.../dht/ClientCacheDhtTopologyFuture.java | 5 +
.../dht/GridDhtAffinityAssignmentRequest.java | 18 +-
.../dht/GridDhtAffinityAssignmentResponse.java | 26 +-
.../distributed/dht/GridDhtCacheAdapter.java | 46 +-
.../distributed/dht/GridDhtCacheEntry.java | 13 +-
.../cache/distributed/dht/GridDhtGetFuture.java | 49 +-
.../distributed/dht/GridDhtGetSingleFuture.java | 50 +-
.../distributed/dht/GridDhtLockFuture.java | 11 +-
.../distributed/dht/GridDhtLockRequest.java | 76 +-
.../distributed/dht/GridDhtLockResponse.java | 18 +-
.../distributed/dht/GridDhtTopologyFuture.java | 6 +
.../dht/GridDhtTopologyFutureAdapter.java | 233 +-
.../dht/GridDhtTransactionalCacheAdapter.java | 78 +-
.../dht/GridDhtTxAbstractEnlistFuture.java | 180 +-
.../distributed/dht/GridDhtTxEnlistFuture.java | 13 +-
.../distributed/dht/GridDhtTxFinishFuture.java | 6 +-
.../distributed/dht/GridDhtTxFinishRequest.java | 54 +-
.../dht/GridDhtTxFinishResponse.java | 14 +-
.../cache/distributed/dht/GridDhtTxLocal.java | 23 +-
.../distributed/dht/GridDhtTxLocalAdapter.java | 3 -
.../cache/distributed/dht/GridDhtTxMapping.java | 1 -
.../dht/GridDhtTxOnePhaseCommitAckRequest.java | 6 +-
.../distributed/dht/GridDhtTxPrepareFuture.java | 90 +-
.../dht/GridDhtTxPrepareRequest.java | 111 +-
.../dht/GridDhtTxPrepareResponse.java | 22 +-
.../dht/GridDhtTxQueryEnlistRequest.java | 30 +-
.../dht/GridDhtTxQueryEnlistResponse.java | 16 +-
.../dht/GridDhtTxQueryFirstEnlistRequest.java | 42 +-
.../cache/distributed/dht/GridDhtTxRemote.java | 14 +-
.../distributed/dht/GridDhtUnlockRequest.java | 6 +-
.../dht/GridPartitionedGetFuture.java | 583 +--
.../dht/GridPartitionedSingleGetFuture.java | 357 +-
.../dht/NearTxQueryEnlistResultHandler.java | 1 -
.../distributed/dht/NearTxResultHandler.java | 1 -
.../dht/PartitionUpdateCountersMessage.java | 4 +-
.../GridDhtAtomicAbstractUpdateRequest.java | 42 +-
.../dht/atomic/GridDhtAtomicCache.java | 136 +-
.../GridDhtAtomicDeferredUpdateResponse.java | 6 +-
.../dht/atomic/GridDhtAtomicNearResponse.java | 22 +-
.../GridDhtAtomicSingleUpdateRequest.java | 18 +-
.../dht/atomic/GridDhtAtomicUpdateRequest.java | 66 +-
.../dht/atomic/GridDhtAtomicUpdateResponse.java | 18 +-
.../GridNearAtomicAbstractUpdateFuture.java | 44 +-
.../GridNearAtomicAbstractUpdateRequest.java | 38 +-
.../GridNearAtomicCheckUpdateRequest.java | 10 +-
.../atomic/GridNearAtomicFullUpdateRequest.java | 40 +-
...GridNearAtomicSingleUpdateFilterRequest.java | 6 +-
.../GridNearAtomicSingleUpdateFuture.java | 1 -
...GridNearAtomicSingleUpdateInvokeRequest.java | 10 +-
.../GridNearAtomicSingleUpdateRequest.java | 10 +-
.../dht/atomic/GridNearAtomicUpdateFuture.java | 5 -
.../atomic/GridNearAtomicUpdateResponse.java | 36 +-
.../dht/atomic/NearCacheUpdates.java | 1 -
.../dht/colocated/GridDhtColocatedCache.java | 62 +-
.../colocated/GridDhtColocatedLockFuture.java | 19 +-
.../CachePartitionPartialCountersMap.java | 2 +-
.../dht/preloader/GridDhtForceKeysFuture.java | 6 +-
.../dht/preloader/GridDhtForceKeysRequest.java | 22 +-
.../dht/preloader/GridDhtForceKeysResponse.java | 22 +-
.../GridDhtPartitionDemandLegacyMessage.java | 40 +-
.../GridDhtPartitionDemandMessage.java | 32 +-
.../dht/preloader/GridDhtPartitionDemander.java | 9 +-
.../preloader/GridDhtPartitionExchangeId.java | 6 +-
.../dht/preloader/GridDhtPartitionSupplier.java | 1 -
.../GridDhtPartitionSupplyMessage.java | 47 +-
.../GridDhtPartitionSupplyMessageV2.java | 6 +-
.../GridDhtPartitionsAbstractMessage.java | 14 +-
.../GridDhtPartitionsExchangeFuture.java | 196 +-
.../preloader/GridDhtPartitionsFullMessage.java | 273 +-
.../GridDhtPartitionsSingleMessage.java | 98 +-
.../GridDhtPartitionsSingleRequest.java | 6 +-
.../dht/preloader/GridDhtPreloader.java | 91 +-
.../preloader/latch/ExchangeLatchManager.java | 2 +-
.../dht/preloader/latch/LatchAckMessage.java | 6 +-
.../topology/GridClientPartitionTopology.java | 21 +-
.../dht/topology/GridDhtLocalPartition.java | 56 +-
.../dht/topology/GridDhtPartitionTopology.java | 22 +-
.../topology/GridDhtPartitionTopologyImpl.java | 328 +-
.../GridDhtPartitionsStateValidator.java | 4 +-
.../distributed/near/CacheVersionedValue.java | 2 +-
.../distributed/near/GridNearAtomicCache.java | 4 -
.../distributed/near/GridNearCacheAdapter.java | 2 +-
.../distributed/near/GridNearCacheEntry.java | 4 +-
.../distributed/near/GridNearGetFuture.java | 459 +--
.../distributed/near/GridNearGetRequest.java | 91 +-
.../distributed/near/GridNearGetResponse.java | 34 +-
.../distributed/near/GridNearLockFuture.java | 22 +-
.../distributed/near/GridNearLockRequest.java | 71 +-
.../distributed/near/GridNearLockResponse.java | 30 +-
...arOptimisticSerializableTxPrepareFuture.java | 53 +-
.../near/GridNearOptimisticTxPrepareFuture.java | 52 +-
...ridNearOptimisticTxPrepareFutureAdapter.java | 114 -
.../GridNearPessimisticTxPrepareFuture.java | 87 +-
.../near/GridNearSingleGetRequest.java | 75 +-
.../near/GridNearSingleGetResponse.java | 26 +-
.../near/GridNearTransactionalCache.java | 6 +-
.../near/GridNearTxAbstractEnlistFuture.java | 13 +-
.../near/GridNearTxEnlistFuture.java | 47 +-
.../near/GridNearTxEnlistRequest.java | 70 +-
.../near/GridNearTxEnlistResponse.java | 36 +-
.../near/GridNearTxFinishFuture.java | 3 -
.../near/GridNearTxFinishRequest.java | 10 +-
.../near/GridNearTxFinishResponse.java | 14 +-
.../cache/distributed/near/GridNearTxLocal.java | 83 +-
.../near/GridNearTxPrepareFutureAdapter.java | 1 -
.../near/GridNearTxPrepareRequest.java | 86 +-
.../near/GridNearTxPrepareResponse.java | 74 +-
.../near/GridNearTxQueryEnlistFuture.java | 5 +
.../near/GridNearTxQueryEnlistRequest.java | 78 +-
.../near/GridNearTxQueryEnlistResponse.java | 44 +-
.../GridNearTxQueryResultsEnlistFuture.java | 27 +-
.../GridNearTxQueryResultsEnlistRequest.java | 62 +-
.../GridNearTxQueryResultsEnlistResponse.java | 12 +-
.../distributed/near/GridNearTxRemote.java | 44 +-
.../distributed/near/GridNearUnlockRequest.java | 2 +-
.../near/TxTopologyVersionFuture.java | 13 +-
.../cache/local/GridLocalCacheEntry.java | 22 +-
.../cache/local/GridLocalLockFuture.java | 4 +-
.../local/atomic/GridLocalAtomicCache.java | 11 +-
.../cache/mvcc/MvccCachingManager.java | 30 +-
.../mvcc/MvccPreviousCoordinatorQueries.java | 13 +-
.../processors/cache/mvcc/MvccProcessor.java | 45 +-
.../cache/mvcc/MvccProcessorImpl.java | 467 +--
.../cache/mvcc/MvccQueryTrackerImpl.java | 12 +-
.../processors/cache/mvcc/MvccUtils.java | 65 +-
.../mvcc/msg/MvccAckRequestTxAndQueryId.java | 1 +
.../cache/mvcc/msg/MvccSnapshotResponse.java | 2 +
.../cache/mvcc/msg/MvccTxSnapshotRequest.java | 2 +
.../PartitionCountersNeighborcastRequest.java | 10 +-
.../PartitionCountersNeighborcastResponse.java | 6 +-
.../processors/cache/mvcc/txlog/TxLog.java | 77 +-
.../internal/processors/cache/package-info.java | 23 +
.../cache/persistence/CacheDataRowAdapter.java | 7 +-
.../cache/persistence/CheckpointFuture.java | 2 +-
.../persistence/DataRegionMetricsImpl.java | 19 +
.../persistence/DataStorageMetricsImpl.java | 22 +-
.../persistence/DataStorageMetricsSnapshot.java | 18 +
.../cache/persistence/DataStructure.java | 45 +-
.../persistence/DatabaseLifecycleListener.java | 52 +-
.../GridCacheDatabaseSharedManager.java | 1553 ++++----
.../persistence/GridCacheOffheapManager.java | 211 +-
.../IgniteCacheDatabaseSharedManager.java | 110 +-
.../cache/persistence/IndexStorage.java | 26 +-
.../cache/persistence/IndexStorageImpl.java | 37 +-
.../processors/cache/persistence/README.md | 10 +
.../processors/cache/persistence/RowStore.java | 24 +-
.../cache/persistence/file/AbstractFileIO.java | 2 +-
.../cache/persistence/file/AsyncFileIO.java | 38 +-
.../persistence/file/AsyncFileIOFactory.java | 9 -
.../cache/persistence/file/EncryptedFileIO.java | 16 +-
.../file/EncryptedFileIOFactory.java | 7 -
.../cache/persistence/file/FileIO.java | 19 +
.../cache/persistence/file/FileIODecorator.java | 17 +-
.../cache/persistence/file/FileIOFactory.java | 10 +-
.../cache/persistence/file/FilePageStore.java | 79 +-
.../persistence/file/FilePageStoreManager.java | 181 +-
.../cache/persistence/file/FilePageStoreV2.java | 21 +
.../persistence/file/RandomAccessFileIO.java | 35 +
.../file/RandomAccessFileIOFactory.java | 9 -
.../cache/persistence/file/UnzipFileIO.java | 15 +
.../persistence/freelist/AbstractFreeList.java | 51 +-
.../persistence/freelist/CacheFreeListImpl.java | 5 +-
.../cache/persistence/freelist/FreeList.java | 10 +-
.../cache/persistence/freelist/PagesList.java | 101 +-
.../persistence/metastorage/MetaStorage.java | 413 ++-
.../metastorage/MetastorageDataRow.java | 3 +-
.../MetastorageLifecycleListener.java | 4 +-
.../metastorage/MetastorageRowStore.java | 7 +-
.../metastorage/MetastorageTree.java | 15 +-
.../UpgradePendingTreeToPerPartitionTask.java | 4 +-
.../cache/persistence/package-info.java | 23 +
.../cache/persistence/pagemem/PageMemoryEx.java | 6 +-
.../persistence/pagemem/PageMemoryImpl.java | 63 +-
.../cache/persistence/pagemem/README.md | 24 +
.../cache/persistence/pagemem/package-info.java | 30 +
.../partstate/PartitionRecoverState.java | 52 +
.../snapshot/IgniteCacheSnapshotManager.java | 4 -
.../cache/persistence/tree/BPlusTree.java | 150 +-
.../persistence/tree/io/AbstractDataPageIO.java | 79 +-
.../cache/persistence/tree/io/BPlusIO.java | 32 +-
.../cache/persistence/tree/io/BPlusMetaIO.java | 20 +-
.../persistence/tree/io/CompactablePageIO.java | 43 +
.../persistence/tree/io/DataPagePayload.java | 16 +
.../cache/persistence/tree/io/PageIO.java | 157 +-
.../persistence/tree/reuse/ReuseListImpl.java | 5 +-
.../persistence/tree/util/PageHandler.java | 43 +-
.../wal/AbstractWalRecordsIterator.java | 11 +
.../cache/persistence/wal/FileWALPointer.java | 2 +-
.../wal/FileWriteAheadLogManager.java | 1134 +-----
.../wal/FsyncModeFileWriteAheadLogManager.java | 3464 ------------------
.../wal/aware/SegmentArchivedStorage.java | 16 +
.../persistence/wal/aware/SegmentAware.java | 13 +-
.../wal/aware/SegmentCompressStorage.java | 7 +-
.../wal/aware/SegmentLockStorage.java | 2 -
.../wal/filehandle/AbstractFileHandle.java | 47 +
.../wal/filehandle/FileHandleManager.java | 81 +
.../filehandle/FileHandleManagerFactory.java | 90 +
.../wal/filehandle/FileHandleManagerImpl.java | 603 +++
.../wal/filehandle/FileWriteHandle.java | 113 +
.../wal/filehandle/FileWriteHandleImpl.java | 600 +++
.../filehandle/FsyncFileHandleManagerImpl.java | 157 +
.../wal/filehandle/FsyncFileWriteHandle.java | 844 +++++
.../wal/reader/IgniteWalIteratorFactory.java | 45 +-
.../wal/reader/StandaloneGridKernalContext.java | 16 +
.../reader/StandaloneWalRecordsIterator.java | 132 +-
.../wal/reader/StrictBoundsCheckException.java | 35 +
.../wal/serializer/RecordDataV1Serializer.java | 62 +-
.../wal/serializer/RecordDataV2Serializer.java | 141 +-
.../wal/serializer/RecordSerializerFactory.java | 2 +
.../serializer/RecordSerializerFactoryImpl.java | 7 +-
.../wal/serializer/RecordV1Serializer.java | 5 +-
.../wal/serializer/RecordV2Serializer.java | 3 +-
.../wal/serializer/TxRecordSerializer.java | 132 +-
.../query/GridCacheDistributedQueryFuture.java | 3 -
.../query/GridCacheDistributedQueryManager.java | 4 -
.../cache/query/GridCacheQueryAdapter.java | 30 +-
.../query/GridCacheQueryFutureAdapter.java | 5 -
.../cache/query/GridCacheQueryManager.java | 9 +-
.../cache/query/GridCacheQueryRequest.java | 112 +-
.../cache/query/GridCacheQueryResponse.java | 27 +-
.../query/GridCacheQueryResponseEntry.java | 1 -
.../cache/query/GridCacheSqlQuery.java | 9 +-
.../cache/query/IgniteQueryErrorCode.java | 8 +
.../CacheContinuousQueryBatchAck.java | 16 +-
.../continuous/CacheContinuousQueryEntry.java | 4 +-
.../CacheContinuousQueryEventBuffer.java | 1 -
.../continuous/CacheContinuousQueryHandler.java | 17 +-
.../CacheContinuousQueryHandlerV3.java | 2 -
.../CacheContinuousQueryListener.java | 7 +-
.../continuous/CacheContinuousQueryManager.java | 45 +-
.../store/GridCacheStoreManagerAdapter.java | 1 -
.../cache/store/GridCacheWriteBehindStore.java | 1 -
.../cache/transactions/IgniteInternalTx.java | 7 +
.../transactions/IgniteTransactionsImpl.java | 1 -
.../cache/transactions/IgniteTxAdapter.java | 120 +-
.../cache/transactions/IgniteTxEntry.java | 1 -
.../cache/transactions/IgniteTxHandler.java | 289 +-
.../IgniteTxImplicitSingleStateImpl.java | 5 +
.../cache/transactions/IgniteTxKey.java | 2 +-
.../transactions/IgniteTxLocalAdapter.java | 5 -
.../cache/transactions/IgniteTxLocalState.java | 5 +
.../cache/transactions/IgniteTxManager.java | 91 +-
.../cache/transactions/IgniteTxStateImpl.java | 7 +-
.../TransactionProxyRollbackOnlyImpl.java | 1 -
.../cache/transactions/TxDeadlockDetection.java | 1 -
.../cache/transactions/TxLocksRequest.java | 10 +-
.../cache/transactions/TxLocksResponse.java | 18 +-
.../processors/cache/tree/CacheDataTree.java | 6 +
.../cache/tree/mvcc/data/MvccUpdateDataRow.java | 13 +-
.../cache/verify/IdleVerifyResultV2.java | 34 +-
.../verify/VerifyBackupPartitionsDumpTask.java | 28 +
.../verify/VerifyBackupPartitionsTaskV2.java | 128 +-
.../GridCacheLazyPlainVersionedEntry.java | 1 -
.../version/GridCacheRawVersionedEntry.java | 4 +-
.../cache/version/GridCacheVersion.java | 1 -
.../cache/version/GridCacheVersionManager.java | 1 -
.../cacheobject/IgniteCacheObjectProcessor.java | 119 +-
.../IgniteCacheObjectProcessorImpl.java | 348 --
.../cacheobject/UserKeyCacheObjectImpl.java | 2 +-
.../processors/cluster/ClusterProcessor.java | 1 -
.../cluster/GridClusterStateProcessor.java | 17 +-
.../compress/CompressionProcessor.java | 173 +
.../processors/compress/FileSystemUtils.java | 129 +
.../processors/compress/NativeFileSystem.java | 50 +
.../continuous/GridContinuousMessage.java | 3 +-
.../continuous/GridContinuousProcessor.java | 9 +-
.../processors/continuous/StartRequestData.java | 1 -
.../datastreamer/DataStreamerImpl.java | 1 -
.../datastreamer/DataStreamerRequest.java | 4 +-
.../datastreamer/DataStreamerResponse.java | 2 +-
.../datastructures/DataStructuresProcessor.java | 4 -
.../GridCacheAtomicReferenceImpl.java | 1 -
.../GridCacheAtomicReferenceValue.java | 1 -
.../GridCacheAtomicSequenceImpl.java | 1 -
.../GridCacheAtomicStampedImpl.java | 1 -
.../GridCacheAtomicStampedValue.java | 1 -
.../GridCacheCountDownLatchImpl.java | 1 -
.../datastructures/GridCacheLockImpl.java | 1 -
.../datastructures/GridCacheQueueAdapter.java | 36 +-
.../datastructures/GridCacheQueueProxy.java | 14 +-
.../datastructures/GridCacheSetImpl.java | 6 +-
.../datastructures/GridSetQueryPredicate.java | 1 -
.../processors/failure/FailureProcessor.java | 9 +-
.../processors/hadoop/HadoopClassLoader.java | 2 -
.../processors/hadoop/HadoopNoopHelper.java | 1 -
.../shuffle/HadoopDirectShuffleMessage.java | 4 +-
.../hadoop/shuffle/HadoopShuffleMessage.java | 2 +
.../igfs/IgfsAbstractOutputStream.java | 1 -
.../processors/igfs/IgfsAckMessage.java | 2 +-
.../internal/processors/igfs/IgfsBlockKey.java | 2 +-
.../processors/igfs/IgfsBlocksMessage.java | 2 +-
.../igfs/IgfsCommunicationMessage.java | 2 +-
.../processors/igfs/IgfsDataManager.java | 3 -
.../processors/igfs/IgfsDeleteMessage.java | 2 +-
.../processors/igfs/IgfsDirectoryInfo.java | 1 -
.../processors/igfs/IgfsFileAffinityRange.java | 1 -
.../internal/processors/igfs/IgfsFileInfo.java | 1 -
.../igfs/IgfsFragmentizerRequest.java | 2 +-
.../igfs/IgfsFragmentizerResponse.java | 2 +-
.../internal/processors/igfs/IgfsImpl.java | 4 -
.../processors/igfs/IgfsInputStreamImpl.java | 2 -
.../processors/igfs/IgfsIpcHandler.java | 1 -
.../processors/igfs/IgfsMetaManager.java | 2 +-
.../internal/processors/igfs/IgfsProcessor.java | 1 -
.../processors/igfs/IgfsSyncMessage.java | 2 +-
.../internal/processors/igfs/IgfsUtils.java | 2 -
.../igfs/client/IgfsClientAbstractCallable.java | 1 -
.../processors/job/GridJobProcessor.java | 3 +-
...ClientListenerAbstractConnectionContext.java | 12 +-
.../odbc/ClientListenerConnectionContext.java | 6 +
.../odbc/ClientListenerNioListener.java | 21 +-
.../processors/odbc/SqlListenerUtils.java | 1 -
.../odbc/jdbc/JdbcBatchExecuteRequest.java | 1 -
.../odbc/jdbc/JdbcBulkLoadBatchRequest.java | 2 -
.../odbc/jdbc/JdbcConnectionContext.java | 2 +
.../odbc/jdbc/JdbcQueryExecuteRequest.java | 1 -
.../odbc/jdbc/JdbcRequestHandler.java | 50 +-
.../odbc/odbc/OdbcConnectionContext.java | 2 +
.../odbc/odbc/OdbcRequestHandler.java | 12 +-
.../processors/odbc/odbc/OdbcUtils.java | 23 +
.../offheap/GridOffHeapProcessor.java | 1 -
.../internal/processors/package-info.java | 8 +-
.../platform/PlatformContextImpl.java | 1 -
.../processors/platform/PlatformIgnition.java | 1 -
.../platform/PlatformNativeException.java | 1 -
.../platform/PlatformNoCallbackException.java | 1 -
.../processors/platform/PlatformProcessor.java | 2 +-
.../platform/PlatformProcessorImpl.java | 2 +-
.../processors/platform/PlatformTarget.java | 1 -
.../platform/PlatformTargetProxy.java | 1 -
.../platform/cache/PlatformCache.java | 2 +-
.../cache/affinity/PlatformAffinity.java | 3 +-
.../cache/query/PlatformContinuousQuery.java | 1 -
.../query/PlatformContinuousQueryImpl.java | 1 -
.../callback/PlatformCallbackGateway.java | 1 -
.../client/ClientConnectionContext.java | 2 +
.../platform/client/ClientRequest.java | 29 -
.../platform/client/ClientRequestHandler.java | 18 +-
.../platform/client/ClientResourceRegistry.java | 1 -
.../binary/ClientBinaryTypePutRequest.java | 1 -
.../cache/ClientCacheClearKeyRequest.java | 3 -
.../cache/ClientCacheClearKeysRequest.java | 3 -
.../client/cache/ClientCacheClearRequest.java | 4 -
.../cache/ClientCacheContainsKeyRequest.java | 3 -
.../cache/ClientCacheContainsKeysRequest.java | 3 -
...ientCacheCreateWithConfigurationRequest.java | 9 +-
.../cache/ClientCacheCreateWithNameRequest.java | 6 +-
.../client/cache/ClientCacheDestroyRequest.java | 3 -
.../client/cache/ClientCacheGetAllRequest.java | 5 +-
.../ClientCacheGetAndPutIfAbsentRequest.java | 3 -
.../cache/ClientCacheGetAndPutRequest.java | 3 -
.../cache/ClientCacheGetAndRemoveRequest.java | 3 -
.../cache/ClientCacheGetAndReplaceRequest.java | 3 -
...acheGetOrCreateWithConfigurationRequest.java | 9 +-
.../ClientCacheGetOrCreateWithNameRequest.java | 3 -
.../client/cache/ClientCacheGetRequest.java | 3 -
.../client/cache/ClientCacheGetSizeRequest.java | 4 -
.../cache/ClientCacheLocalPeekRequest.java | 3 -
.../cache/ClientCacheNodePartitionsRequest.java | 6 +-
.../client/cache/ClientCachePutAllRequest.java | 3 -
.../cache/ClientCachePutIfAbsentRequest.java | 3 -
.../client/cache/ClientCachePutRequest.java | 3 -
.../cache/ClientCacheRemoveAllRequest.java | 4 -
.../cache/ClientCacheRemoveIfEqualsRequest.java | 3 -
.../cache/ClientCacheRemoveKeyRequest.java | 3 -
.../cache/ClientCacheRemoveKeysRequest.java | 3 -
.../ClientCacheReplaceIfEqualsRequest.java | 3 -
.../client/cache/ClientCacheReplaceRequest.java | 3 -
.../client/cache/ClientCacheRequest.java | 32 -
.../cache/ClientCacheScanQueryRequest.java | 3 -
.../platform/cluster/PlatformClusterGroup.java | 3 +-
.../cluster/PlatformClusterNodeFilterImpl.java | 1 -
.../platform/compute/PlatformAbstractTask.java | 2 -
.../PlatformBalancingMultiClosureTask.java | 1 -
.../PlatformBalancingSingleClosureTask.java | 1 -
.../platform/compute/PlatformCompute.java | 2 +-
.../platform/compute/PlatformFullJob.java | 2 -
.../datastreamer/PlatformDataStreamer.java | 2 +-
.../PlatformStreamReceiverImpl.java | 1 -
.../dotnet/PlatformDotNetCacheStore.java | 1 -
.../PlatformDotNetConfigurationClosure.java | 3 -
.../platform/events/PlatformEvents.java | 12 +-
.../platform/messaging/PlatformMessaging.java | 1 -
.../services/PlatformAbstractService.java | 1 -
.../platform/services/PlatformServices.java | 2 -
.../transactions/PlatformTransactions.java | 2 +-
.../utils/PlatformConfigurationUtils.java | 14 +-
.../platform/utils/PlatformFutureUtils.java | 1 -
.../platform/utils/PlatformUtils.java | 4 -
.../websession/PlatformDotNetSessionData.java | 1 -
.../PlatformDotNetSessionLockProcessor.java | 1 -
.../PlatformDotNetSessionLockResult.java | 1 -
.../processors/plugin/CachePluginManager.java | 4 +-
.../plugin/IgnitePluginProcessor.java | 2 -
.../query/GridQueryCacheObjectsIterator.java | 1 -
.../processors/query/GridQueryIndexing.java | 77 +-
.../processors/query/GridQueryProcessor.java | 529 ++-
.../query/GridQueryTypeDescriptor.java | 5 +
.../processors/query/QueryKeyValueIterable.java | 53 +
.../processors/query/QueryKeyValueIterator.java | 67 +
.../query/QueryTypeDescriptorImpl.java | 52 +-
.../internal/processors/query/QueryUtils.java | 96 +-
.../messages/GridQueryNextPageResponse.java | 4 +-
.../query/property/QueryBinaryProperty.java | 9 +-
.../schema/SchemaIndexCacheVisitorImpl.java | 4 +-
.../query/schema/SchemaOperationManager.java | 1 -
.../message/SchemaOperationStatusMessage.java | 2 +
.../processors/resource/GridResourceIoc.java | 1 -
.../resource/GridResourceLoggerInjector.java | 1 -
.../processors/rest/GridRestCommand.java | 12 +
.../processors/rest/GridRestProcessor.java | 9 +
.../processors/rest/GridRestResponse.java | 1 -
.../client/message/GridClientCacheRequest.java | 2 -
.../message/GridClientTaskResultBean.java | 1 -
.../handlers/cache/GridCacheCommandHandler.java | 1 -
.../cluster/GridBaselineCommandHandler.java | 205 ++
.../cluster/GridBaselineCommandResponse.java | 161 +
.../handlers/query/QueryCommandHandler.java | 1 -
.../redis/GridRedisRestCommandHandler.java | 10 +-
.../redis/key/GridRedisDelCommandHandler.java | 6 +-
.../key/GridRedisExistsCommandHandler.java | 6 +-
.../key/GridRedisExpireCommandHandler.java | 6 +-
.../server/GridRedisDbSizeCommandHandler.java | 6 +-
.../server/GridRedisFlushCommandHandler.java | 12 +-
.../string/GridRedisAppendCommandHandler.java | 6 +-
.../string/GridRedisGetCommandHandler.java | 12 +-
.../string/GridRedisGetRangeCommandHandler.java | 6 +-
.../string/GridRedisGetSetCommandHandler.java | 6 +-
.../string/GridRedisIncrDecrCommandHandler.java | 6 +-
.../string/GridRedisMGetCommandHandler.java | 6 +-
.../string/GridRedisMSetCommandHandler.java | 6 +-
.../string/GridRedisSetCommandHandler.java | 12 +-
.../string/GridRedisSetRangeCommandHandler.java | 6 +-
.../string/GridRedisStrlenCommandHandler.java | 6 +-
.../handlers/task/GridTaskResultRequest.java | 2 +-
.../handlers/task/GridTaskResultResponse.java | 2 +-
.../rest/protocols/GridRestProtocolAdapter.java | 1 -
.../tcp/GridTcpMemcachedNioListener.java | 1 -
.../protocols/tcp/GridTcpRestNioListener.java | 1 -
.../rest/protocols/tcp/GridTcpRestProtocol.java | 1 -
.../tcp/redis/GridRedisNioListener.java | 24 +-
.../rest/request/GridRestBaselineRequest.java | 65 +
.../security/SecurityContextHolder.java | 15 +-
.../service/GridServiceProcessor.java | 18 -
.../processors/service/GridServiceProxy.java | 2 -
.../processors/service/ServiceContextImpl.java | 1 -
.../service/ServiceDescriptorImpl.java | 1 -
.../processors/task/GridTaskProcessor.java | 8 +-
.../processors/task/GridTaskWorker.java | 4 -
.../sql/command/SqlBulkLoadCommand.java | 1 -
.../ignite/internal/stat/IndexPageType.java | 33 +
.../internal/stat/IoStatisticsHolder.java | 66 +
.../internal/stat/IoStatisticsHolderCache.java | 121 +
.../internal/stat/IoStatisticsHolderIndex.java | 168 +
.../internal/stat/IoStatisticsHolderKey.java | 91 +
.../internal/stat/IoStatisticsHolderNoOp.java | 70 +
.../internal/stat/IoStatisticsHolderQuery.java | 128 +
.../internal/stat/IoStatisticsManager.java | 204 ++
.../IoStatisticsMetricsLocalMXBeanImpl.java | 146 +
.../internal/stat/IoStatisticsQueryHelper.java | 98 +
.../ignite/internal/stat/IoStatisticsType.java | 36 +
.../org/apache/ignite/internal/util/F0.java | 4 +-
.../apache/ignite/internal/util/GridArrays.java | 1 -
.../util/GridBoundedConcurrentOrderedMap.java | 1 -
.../util/GridBoundedConcurrentOrderedSet.java | 1 -
.../internal/util/GridBoundedLinkedHashMap.java | 1 -
.../internal/util/GridBoundedLinkedHashSet.java | 3 +-
.../ignite/internal/util/GridByteArrayList.java | 2 +-
.../internal/util/GridCircularBuffer.java | 1 -
.../util/GridConcurrentPhantomHashSet.java | 2 -
.../util/GridConcurrentSkipListSet.java | 2 +-
.../util/GridConcurrentWeakHashSet.java | 2 -
.../ignite/internal/util/GridIntList.java | 2 +-
.../ignite/internal/util/GridLeanMap.java | 3 +-
.../ignite/internal/util/GridLeanSet.java | 1 -
.../ignite/internal/util/GridListSet.java | 4 -
.../ignite/internal/util/GridLongList.java | 2 +
.../apache/ignite/internal/util/GridMutex.java | 1 -
.../ignite/internal/util/GridSetWrapper.java | 4 -
.../ignite/internal/util/GridSnapshotLock.java | 1 -
.../internal/util/GridSpinReadWriteLock.java | 2 -
.../apache/ignite/internal/util/GridUnsafe.java | 1 +
.../ignite/internal/util/IgniteUtils.java | 703 ++--
.../internal/util/OffheapReadWriteLock.java | 1 -
.../util/StripedCompositeReadWriteLock.java | 1 -
.../util/future/GridCompoundFuture.java | 4 -
.../util/future/GridEmbeddedFuture.java | 2 -
.../util/future/GridFinishedFuture.java | 2 -
.../internal/util/future/GridFutureAdapter.java | 32 +-
.../internal/util/future/IgniteFutureImpl.java | 1 -
.../internal/util/gridify/GridifyUtils.java | 1 -
.../internal/util/io/GridUnsafeDataOutput.java | 76 +-
.../ipc/shmem/IpcSharedMemoryNativeLoader.java | 2 -
.../util/ipc/shmem/IpcSharedMemorySpace.java | 1 -
.../ignite/internal/util/lang/GridFunc.java | 16 +-
.../util/lang/GridMetadataAwareAdapter.java | 10 -
.../ignite/internal/util/lang/GridTriple.java | 1 -
.../ignite/internal/util/lang/GridTuple.java | 2 -
.../ignite/internal/util/lang/GridTuple3.java | 2 -
.../ignite/internal/util/lang/GridTuple4.java | 2 -
.../ignite/internal/util/lang/GridTuple5.java | 2 -
.../ignite/internal/util/lang/GridTuple6.java | 2 -
.../ignite/internal/util/lang/IgnitePair.java | 1 -
.../util/lang/IgniteThrowableConsumer.java | 6 +-
.../gridfunc/CacheEntryGetValueClosure.java | 1 -
.../gridfunc/CacheEntryHasPeekPredicate.java | 1 -
.../util/lang/gridfunc/PredicateMapView.java | 4 -
.../util/lang/gridfunc/TransformMapView.java | 4 -
.../util/lang/gridfunc/TransformMapView2.java | 4 -
.../internal/util/nio/GridDirectParser.java | 6 +-
.../ignite/internal/util/nio/GridNioServer.java | 7 -
.../util/offheap/unsafe/GridUnsafeMap.java | 8 +-
.../unsafe/GridUnsafePartitionedMap.java | 1 -
.../util/tostring/GridToStringBuilder.java | 103 +-
.../util/tostring/GridToStringOrder.java | 2 +-
.../internal/util/tostring/SBLimitedLength.java | 1 -
.../apache/ignite/internal/util/typedef/X.java | 3 -
.../internal/util/typedef/internal/U.java | 1 -
.../internal/util/worker/GridWorkerPool.java | 2 +-
.../internal/visor/VisorMultiNodeTask.java | 2 +-
.../ignite/internal/visor/cache/VisorCache.java | 20 +-
.../visor/cache/VisorCacheConfiguration.java | 38 +
.../VisorCacheConfigurationCollectorTask.java | 40 +
.../cache/VisorCacheToggleStatisticsTask.java | 72 +
.../VisorCacheToggleStatisticsTaskArg.java | 87 +
.../VisorCacheRebalanceCollectorJobResult.java | 91 +
.../node/VisorCacheRebalanceCollectorTask.java | 194 +
.../VisorCacheRebalanceCollectorTaskArg.java | 54 +
.../VisorCacheRebalanceCollectorTaskResult.java | 92 +
.../node/VisorExecutorServiceConfiguration.java | 4 +-
.../visor/node/VisorNodeBaselineStatus.java | 45 +
.../visor/node/VisorNodeDataCollectorJob.java | 77 +-
.../node/VisorNodeDataCollectorTaskResult.java | 3 +-
.../visor/node/VisorPersistenceMetrics.java | 34 +-
.../internal/visor/util/VisorTaskUtils.java | 43 +
.../internal/visor/verify/CacheFilterEnum.java | 52 +
.../verify/VisorIdleVerifyDumpTaskArg.java | 30 +-
.../verify/VisorValidateIndexesJobResult.java | 9 +
.../verify/VisorValidateIndexesTaskArg.java | 23 +-
.../ignite/internal/worker/WorkersRegistry.java | 2 +-
.../org/apache/ignite/lang/IgniteBiTuple.java | 3 -
.../ignite/lang/IgniteProductVersion.java | 1 -
.../apache/ignite/logger/java/JavaLogger.java | 1 -
.../logger/java/JavaLoggerFileHandler.java | 1 -
.../ignite/logger/java/JavaLoggerFormatter.java | 1 -
.../AbstractNodeNameAwareMarshaller.java | 1 -
.../ignite/marshaller/jdk/JdkMarshaller.java | 1 -
.../ignite/mxbean/CacheGroupMetricsMXBean.java | 12 +
.../ignite/mxbean/DataStorageMetricsMXBean.java | 8 +
.../mxbean/IoStatisticsMetricsMXBean.java | 172 +
.../apache/ignite/mxbean/MXBeanDescription.java | 2 +-
.../mxbean/MXBeanParametersDescriptions.java | 2 +-
.../ignite/mxbean/MXBeanParametersNames.java | 2 +-
.../dotnet/PlatformDotNetConfiguration.java | 1 -
.../MessageCollectionItemType.java | 5 +-
.../extensions/communication/MessageReader.java | 9 +
.../extensions/communication/MessageWriter.java | 10 +
.../ignite/services/ServiceConfiguration.java | 1 -
.../ignite/spi/IgniteSpiConfiguration.java | 1 -
.../ignite/spi/IgniteSpiConsistencyChecked.java | 2 -
.../spi/IgniteSpiMultipleInstancesSupport.java | 2 +-
.../org/apache/ignite/spi/IgniteSpiThread.java | 1 -
.../jobstealing/JobStealingCollisionSpi.java | 2 -
.../jobstealing/JobStealingRequest.java | 2 +-
.../communication/tcp/TcpCommunicationSpi.java | 109 +-
.../tcp/messages/HandshakeMessage.java | 2 +
.../tcp/messages/HandshakeMessage2.java | 2 +
.../tcp/messages/HandshakeWaitMessage.java | 81 +
.../tcp/messages/NodeIdMessage.java | 2 +
.../messages/RecoveryLastReceivedMessage.java | 2 +
.../deployment/local/LocalDeploymentSpi.java | 1 -
.../ignite/spi/discovery/DiscoveryDataBag.java | 6 +
.../discovery/DiscoverySpiHistorySupport.java | 1 -
.../spi/discovery/DiscoverySpiOrderSupport.java | 1 -
.../ignite/spi/discovery/tcp/ClientImpl.java | 4 +-
.../ignite/spi/discovery/tcp/ServerImpl.java | 100 +-
.../spi/discovery/tcp/TcpDiscoveryImpl.java | 2 -
.../spi/discovery/tcp/TcpDiscoverySpi.java | 11 +-
.../tcp/internal/TcpDiscoveryNode.java | 10 +-
.../tcp/internal/TcpDiscoveryNodesRing.java | 2 +-
.../TcpDiscoveryMulticastIpFinder.java | 1 -
.../spi/failover/always/AlwaysFailoverSpi.java | 1 -
.../jobstealing/JobStealingFailoverSpi.java | 1 -
.../apache/ignite/ssl/SSLContextWrapper.java | 13 +-
.../apache/ignite/ssl/SslContextFactory.java | 16 +-
.../ignite/startup/cmdline/AboutDialog.java | 1 -
.../startup/cmdline/CommandLineStartup.java | 1 -
.../startup/cmdline/CommandLineTransformer.java | 1 -
.../org/apache/ignite/thread/IgniteThread.java | 44 +-
.../org/jsr166/ConcurrentLinkedHashMap.java | 12 +-
.../resources/META-INF/classnames.properties | 5 -
.../GridCacheAffinityBackupsSelfTest.java | 7 +-
.../ignite/GridSuppressedExceptionSelfTest.java | 9 +
.../java/org/apache/ignite/GridTestIoUtils.java | 3 -
.../org/apache/ignite/GridTestJobContext.java | 1 -
.../org/apache/ignite/GridTestTaskSession.java | 1 -
.../ignite/IgniteCacheAffinitySelfTest.java | 7 +-
...teCacheEntryProcessorSequentialCallTest.java | 83 +-
.../cache/IgniteWarmupClosureSelfTest.java | 7 +-
.../ignite/cache/LargeEntryUpdateTest.java | 5 +
.../ignite/cache/ResetLostPartitionTest.java | 270 ++
.../AbstractAffinityFunctionSelfTest.java | 13 +
.../affinity/AffinityClientNodeSelfTest.java | 7 +-
.../AffinityDistributionLoggingTest.java | 10 +
...ityFunctionBackupFilterAbstractSelfTest.java | 7 +-
...unctionExcludeNeighborsAbstractSelfTest.java | 9 +-
.../affinity/AffinityHistoryCleanupTest.java | 5 +
.../local/LocalAffinityFunctionTest.java | 5 +
...ndezvousAffinityFunctionSimpleBenchmark.java | 36 +-
...RWThroughDisabledTransactionalCacheTest.java | 17 +
.../store/CacheStoreReadFromBackupTest.java | 8 +
...cheStoreSessionListenerAbstractSelfTest.java | 12 +-
...heStoreSessionListenerLifecycleSelfTest.java | 16 +
...nerReadWriteThroughDisabledAbstractTest.java | 10 +
...reSessionListenerWriteBehindEnabledTest.java | 18 +
.../cache/store/CacheStoreWriteErrorTest.java | 133 +
...cheTransactionalStoreReadFromBackupTest.java | 8 +
.../store/GridCacheBalancingStoreSelfTest.java | 9 +
.../GridCacheLoadOnlyStoreAdapterSelfTest.java | 87 +-
.../cache/store/GridStoreLoadCacheTest.java | 5 +
.../IgniteCacheExpiryStoreLoadSelfTest.java | 11 +-
.../store/StoreResourceInjectionSelfTest.java | 7 +
.../CacheJdbcPojoStoreAbstractSelfTest.java | 28 +-
...heJdbcPojoStoreBinaryMarshallerSelfTest.java | 10 +
.../store/jdbc/CacheJdbcPojoStoreTest.java | 8 +
...eJdbcStoreAbstractMultithreadedSelfTest.java | 7 +
.../CacheJdbcStoreSessionListenerSelfTest.java | 8 +
...CacheJdbcBlobStoreMultithreadedSelfTest.java | 17 +-
.../jdbc/JdbcTypesDefaultTransformerTest.java | 5 +
.../apache/ignite/client/SslParametersTest.java | 162 +-
.../failure/FailureHandlerTriggeredTest.java | 5 +
.../FailureHandlingConfigurationTest.java | 9 +
.../ignite/failure/IoomFailureHandlerTest.java | 36 +-
.../ignite/failure/OomFailureHandlerTest.java | 9 +
.../failure/StopNodeFailureHandlerTest.java | 5 +
.../StopNodeOrHaltFailureHandlerTest.java | 5 +
.../failure/SystemWorkersBlockingTest.java | 5 +
.../failure/SystemWorkersTerminationTest.java | 5 +
.../ignite/igfs/IgfsEventsAbstractSelfTest.java | 15 +-
.../ignite/igfs/IgfsFragmentizerSelfTest.java | 14 +-
.../igfs/IgfsFragmentizerTopologySelfTest.java | 7 +-
.../apache/ignite/igfs/IgfsPathSelfTest.java | 8 +-
.../apache/ignite/internal/ClassSetTest.java | 9 +-
.../ClusterBaselineNodesMetricsSelfTest.java | 5 +
.../internal/ClusterGroupAbstractTest.java | 11 +-
.../internal/ClusterGroupHostsSelfTest.java | 6 +
.../ignite/internal/ClusterGroupSelfTest.java | 16 +-
.../ignite/internal/ClusterMetricsSelfTest.java | 6 +
.../internal/ClusterNodeMetricsSelfTest.java | 11 +-
.../internal/ClusterNodeMetricsUpdateTest.java | 5 +
.../ComputeJobCancelWithServiceSelfTest.java | 5 +
.../ignite/internal/GridAffinityMappedTest.java | 5 +
.../internal/GridAffinityNoCacheSelfTest.java | 8 +
.../internal/GridAffinityP2PSelfTest.java | 9 +-
.../ignite/internal/GridAffinitySelfTest.java | 5 +
.../GridAlwaysFailoverSpiFailSelfTest.java | 10 +-
...chePartitionExchangeManagerHistSizeTest.java | 5 +
.../internal/GridCancelOnGridStopSelfTest.java | 7 +-
.../internal/GridCancelUnusedJobSelfTest.java | 8 +-
.../GridCancelledJobsMetricsSelfTest.java | 5 +
.../GridCollisionJobsContextSelfTest.java | 7 +-
.../internal/GridCommunicationSelfTest.java | 7 +-
...omputationBinarylizableClosuresSelfTest.java | 10 +
.../GridContinuousJobAnnotationSelfTest.java | 8 +-
.../GridContinuousJobSiblingsSelfTest.java | 8 +-
.../internal/GridContinuousTaskSelfTest.java | 11 +
.../GridDeploymentMultiThreadedSelfTest.java | 7 +-
.../ignite/internal/GridDeploymentSelfTest.java | 13 +-
.../internal/GridDiscoveryEventSelfTest.java | 11 +-
.../ignite/internal/GridDiscoverySelfTest.java | 14 +-
.../GridEventStorageCheckAllEventsSelfTest.java | 10 +
.../GridEventStorageDefaultExceptionTest.java | 6 +
...ventStorageRuntimeConfigurationSelfTest.java | 14 +-
.../internal/GridEventStorageSelfTest.java | 10 +
...ridFailFastNodeFailureDetectionSelfTest.java | 5 +
.../GridFailedInputParametersSelfTest.java | 13 +-
.../GridFailoverCustomTopologySelfTest.java | 9 +-
.../ignite/internal/GridFailoverSelfTest.java | 7 +-
.../GridFailoverTaskWithPredicateSelfTest.java | 9 +-
.../internal/GridFailoverTopologySelfTest.java | 8 +-
.../ignite/internal/GridGetOrStartSelfTest.java | 6 +
.../ignite/internal/GridHomePathSelfTest.java | 7 +-
.../GridJobCheckpointCleanupSelfTest.java | 7 +-
.../GridJobCollisionCancelSelfTest.java | 7 +-
.../ignite/internal/GridJobContextSelfTest.java | 7 +-
.../GridJobMasterLeaveAwareSelfTest.java | 23 +-
.../internal/GridJobServicesAddNodeTest.java | 5 +
.../internal/GridJobStealingSelfTest.java | 23 +-
.../GridJobStealingZeroActiveJobsSelfTest.java | 7 +-
.../internal/GridJobSubjectIdSelfTest.java | 8 +-
.../GridKernalConcurrentAccessStopSelfTest.java | 7 +-
.../internal/GridLifecycleBeanSelfTest.java | 16 +-
.../internal/GridListenActorSelfTest.java | 12 +-
.../GridLocalEventListenerSelfTest.java | 7 +-
.../apache/ignite/internal/GridMBeansTest.java | 6 +
.../internal/GridMultipleJobsSelfTest.java | 8 +-
.../internal/GridMultipleSpisSelfTest.java | 8 +-
.../GridMultipleVersionsDeploymentSelfTest.java | 10 +-
.../GridMultithreadedJobStealingSelfTest.java | 15 +-
.../ignite/internal/GridNodeFilterSelfTest.java | 7 +-
.../ignite/internal/GridNodeLocalSelfTest.java | 8 +-
.../internal/GridNodeMetricsLogPdsSelfTest.java | 9 +-
.../internal/GridNodeMetricsLogSelfTest.java | 6 +-
.../GridNodeVisorAttributesSelfTest.java | 9 +-
.../internal/GridNonHistoryMetricsSelfTest.java | 7 +-
.../GridProjectionForCachesSelfTest.java | 12 +-
...ectionLocalJobMultipleArgumentsSelfTest.java | 10 +-
.../ignite/internal/GridReduceSelfTest.java | 8 +-
.../internal/GridReleaseTypeSelfTest.java | 8 +-
.../internal/GridRuntimeExceptionSelfTest.java | 10 +-
.../internal/GridSameVmStartupSelfTest.java | 7 +-
.../apache/ignite/internal/GridSelfTest.java | 12 +-
.../internal/GridSpiExceptionSelfTest.java | 7 +-
.../ignite/internal/GridStartStopSelfTest.java | 11 +-
.../internal/GridStopWithCancelSelfTest.java | 7 +-
.../internal/GridStopWithWaitSelfTest.java | 8 +-
.../GridTaskCancelSingleNodeSelfTest.java | 8 +-
.../GridTaskContinuousMapperSelfTest.java | 11 +-
.../GridTaskExecutionContextSelfTest.java | 9 +-
.../internal/GridTaskExecutionSelfTest.java | 7 +
.../GridTaskFailoverAffinityRunTest.java | 8 +-
.../internal/GridTaskFailoverSelfTest.java | 8 +-
.../GridTaskFutureImplStopGridSelfTest.java | 11 +-
.../GridTaskInstanceExecutionSelfTest.java | 7 +-
.../internal/GridTaskInstantiationSelfTest.java | 7 +-
.../internal/GridTaskJobRejectSelfTest.java | 7 +-
.../internal/GridTaskListenerSelfTest.java | 10 +-
.../internal/GridTaskMapAsyncSelfTest.java | 7 +-
.../GridTaskNameAnnotationSelfTest.java | 10 +-
.../internal/GridTaskResultCacheSelfTest.java | 9 +-
.../internal/GridTaskTimeoutSelfTest.java | 10 +-
.../GridTopicExternalizableSelfTest.java | 14 +-
.../ignite/internal/GridVersionSelfTest.java | 7 +-
...entConnectAfterCommunicationFailureTest.java | 10 +
.../IgniteClientReconnectApiExceptionTest.java | 7 +-
.../IgniteClientReconnectAtomicsTest.java | 20 +
.../IgniteClientReconnectBinaryContexTest.java | 5 +
.../IgniteClientReconnectCacheTest.java | 20 +
.../IgniteClientReconnectCollectionsTest.java | 12 +
.../IgniteClientReconnectComputeTest.java | 9 +-
...eClientReconnectContinuousProcessorTest.java | 11 +-
.../IgniteClientReconnectDelayedSpiTest.java | 5 +
...IgniteClientReconnectDiscoveryStateTest.java | 7 +-
.../IgniteClientReconnectFailoverTest.java | 10 +-
.../IgniteClientReconnectServicesTest.java | 10 +-
.../internal/IgniteClientReconnectStopTest.java | 7 +-
.../IgniteClientReconnectStreamerTest.java | 8 +-
.../ignite/internal/IgniteClientRejoinTest.java | 7 +
.../IgniteComputeEmptyClusterGroupTest.java | 8 +-
.../internal/IgniteComputeJobOneThreadTest.java | 5 +
.../IgniteComputeResultExceptionTest.java | 16 +
.../IgniteComputeTopologyExceptionTest.java | 6 +
...eConcurrentEntryProcessorAccessStopTest.java | 5 +
...onnectionConcurrentReserveAndRemoveTest.java | 5 +
.../IgniteDiscoveryMassiveNodeFailTest.java | 10 +
.../internal/IgniteExecutorServiceTest.java | 15 +-
...gniteExplicitImplicitDeploymentSelfTest.java | 15 +-
.../internal/IgniteInternalCacheRemoveTest.java | 7 +-
.../IgniteLocalNodeMapBeforeStartTest.java | 5 +
.../IgniteReflectionFactorySelfTest.java | 5 +
...RoundRobinErrorAfterClientReconnectTest.java | 5 +
.../IgniteSlowClientDetectionSelfTest.java | 7 +-
...UpdateNotifierPerClusterSettingSelfTest.java | 6 +
.../internal/LongJVMPauseDetectorTest.java | 6 +
.../MarshallerContextLockingSelfTest.java | 5 +
.../internal/MemoryLeaksOnRestartNodeTest.java | 7 +-
.../internal/SensitiveInfoTestLoggerProxy.java | 2 -
.../ignite/internal/TaskNodeRestartTest.java | 5 +
.../TransactionMetricsMxBeanImplTest.java | 20 +-
.../internal/TransactionsMXBeanImplTest.java | 5 +
.../internal/VisorManagementEventSelfTest.java | 8 +
.../BinaryArrayIdentityResolverSelfTest.java | 13 +-
.../binary/BinaryBasicIdMapperSelfTest.java | 6 +
.../binary/BinaryBasicNameMapperSelfTest.java | 6 +
.../BinaryConfigurationConsistencySelfTest.java | 12 +
...ryConfigurationCustomSerializerSelfTest.java | 5 +
.../internal/binary/BinaryEnumsSelfTest.java | 27 +-
.../binary/BinaryFieldExtractionSelfTest.java | 9 +-
.../binary/BinaryFieldsAbstractSelfTest.java | 37 +-
.../binary/BinaryFieldsOffheapSelfTest.java | 4 +-
.../BinaryFooterOffsetsAbstractSelfTest.java | 9 +
.../BinaryFooterOffsetsOffheapSelfTest.java | 4 +-
.../binary/BinaryMarshallerSelfTest.java | 135 +-
.../BinaryObjectBuilderAdditionalSelfTest.java | 76 +-
...naryObjectBuilderDefaultMappersSelfTest.java | 53 +-
...ilderSimpleNameLowerCaseMappersSelfTest.java | 1 -
.../binary/BinaryObjectExceptionSelfTest.java | 7 +-
.../binary/BinaryObjectToStringSelfTest.java | 5 +
.../BinaryObjectTypeCompatibilityTest.java | 6 +-
.../BinarySerialiedFieldComparatorSelfTest.java | 38 +-
.../BinarySimpleNameTestPropertySelfTest.java | 7 +
.../internal/binary/BinaryTreeSelfTest.java | 16 +
.../binary/GridBinaryAffinityKeySelfTest.java | 8 +-
...GridBinaryMarshallerCtxDisabledSelfTest.java | 5 +
.../binary/GridBinaryWildcardsSelfTest.java | 31 +-
...aultBinaryMappersBinaryMetaDataSelfTest.java | 12 +-
.../GridBinaryMarshalerAwareTestClass.java | 1 -
.../mutabletest/GridBinaryTestClasses.java | 1 -
.../AbstractBinaryStreamByteOrderSelfTest.java | 16 +
.../streams/BinaryAbstractOutputStreamTest.java | 5 +
.../commandline/CommandHandlerParsingTest.java | 74 +-
...ByteBufferStreamImplV2ByteOrderSelfTest.java | 21 +-
.../encryption/EncryptedCacheBigEntryTest.java | 5 +
.../encryption/EncryptedCacheCreateTest.java | 9 +-
.../encryption/EncryptedCacheDestroyTest.java | 6 +
.../EncryptedCacheGroupCreateTest.java | 6 +
.../encryption/EncryptedCacheNodeJoinTest.java | 12 +
.../EncryptedCachePreconfiguredRestartTest.java | 6 +
.../encryption/EncryptedCacheRestartTest.java | 5 +
...GridManagerLocalMessageListenerSelfTest.java | 7 +
...dManagerMxBeanIllegalArgumentHandleTest.java | 9 +
.../managers/GridManagerStopSelfTest.java | 14 +-
.../managers/GridNoopManagerSelfTest.java | 7 +-
.../managers/IgniteDiagnosticMessagesTest.java | 200 +-
.../GridCheckpointManagerSelfTest.java | 12 +-
.../checkpoint/GridCheckpointTaskSelfTest.java | 8 +-
...idCommunicationManagerListenersSelfTest.java | 12 +-
.../GridCommunicationSendMessageSelfTest.java | 9 +-
.../communication/GridIoManagerSelfTest.java | 10 +-
...unicationBalanceMultipleConnectionsTest.java | 5 -
.../IgniteCommunicationBalanceTest.java | 7 +
.../communication/IgniteIoTestMessagesTest.java | 5 +
.../IgniteVariousConnectionNumberTest.java | 5 +
...mentRequestOfUnknownClassProcessingTest.java | 156 +
.../GridDeploymentManagerStopSelfTest.java | 7 +-
.../GridDeploymentMessageCountSelfTest.java | 60 +-
.../GridDiscoveryManagerAliveCacheSelfTest.java | 6 +
.../GridDiscoveryManagerAttributesSelfTest.java | 49 +-
.../IgniteTopologyPrintFormatSelfTest.java | 12 +-
.../events/GridEventStorageManagerSelfTest.java | 9 +-
.../OptimizedMarshallerEnumSelfTest.java | 7 +-
.../OptimizedMarshallerNodeFailoverTest.java | 9 +-
.../optimized/OptimizedMarshallerSelfTest.java | 11 +-
...arshallerSerialPersistentFieldsSelfTest.java | 7 +-
.../optimized/OptimizedMarshallerTest.java | 86 +-
.../OptimizedObjectStreamSelfTest.java | 84 +-
.../pagemem/impl/PageIdUtilsSelfTest.java | 10 +
.../pagemem/impl/PageMemoryNoLoadSelfTest.java | 9 +
.../GridCacheTxLoadFromStoreOnLockSelfTest.java | 16 +-
.../GridAffinityProcessorAbstractSelfTest.java | 10 +-
.../GridAffinityProcessorMemoryLeakTest.java | 5 +
.../Authentication1kUsersNodeRestartTest.java | 82 +-
.../AuthenticationConfigurationClusterTest.java | 24 +
.../AuthenticationOnNotActiveClusterTest.java | 21 +
.../AuthenticationProcessorNPEOnStartTest.java | 5 +
.../AuthenticationProcessorNodeRestartTest.java | 23 +
.../AuthenticationProcessorSelfTest.java | 33 +
.../AtomicCacheAffinityConfigurationTest.java | 7 +
...ataRegistrationInsideEntryProcessorTest.java | 7 +-
.../cache/CacheAffinityCallSelfTest.java | 7 +
.../CacheAtomicSingleMessageCountSelfTest.java | 7 +
.../cache/CacheClientStoreSelfTest.java | 23 +-
.../processors/cache/CacheComparatorTest.java | 5 +
.../cache/CacheConcurrentReadThroughTest.java | 14 +-
.../cache/CacheConfigurationLeakTest.java | 5 +
.../cache/CacheConnectionLeakStoreTxTest.java | 37 +-
.../cache/CacheDataRegionConfigurationTest.java | 14 +
.../cache/CacheDeferredDeleteQueueTest.java | 18 +
.../CacheDeferredDeleteSanitySelfTest.java | 37 +
...cheDhtLocalPartitionAfterRemoveSelfTest.java | 7 +-
.../cache/CacheEntryProcessorCopySelfTest.java | 6 +
.../cache/CacheEnumOperationsAbstractTest.java | 23 +-
.../cache/CacheEventWithTxLabelTest.java | 502 +++
...CacheExchangeMessageDuplicatedStateTest.java | 5 +
.../cache/CacheFutureExceptionSelfTest.java | 13 +-
.../cache/CacheGetEntryAbstractTest.java | 16 +-
...GetEntryOptimisticReadCommittedSelfTest.java | 36 +
...GetEntryOptimisticReadCommittedSeltTest.java | 36 -
...etEntryOptimisticRepeatableReadSelfTest.java | 36 +
...etEntryOptimisticRepeatableReadSeltTest.java | 36 -
...eGetEntryOptimisticSerializableSelfTest.java | 36 +
...eGetEntryOptimisticSerializableSeltTest.java | 36 -
...etEntryPessimisticReadCommittedSelfTest.java | 36 +
...etEntryPessimisticReadCommittedSeltTest.java | 36 -
...tEntryPessimisticRepeatableReadSelfTest.java | 113 +
...tEntryPessimisticRepeatableReadSeltTest.java | 40 -
...GetEntryPessimisticSerializableSelfTest.java | 36 +
...GetEntryPessimisticSerializableSeltTest.java | 36 -
.../processors/cache/CacheGetFromJobTest.java | 7 +-
.../CacheGetsDistributionAbstractTest.java | 383 ++
.../CacheGroupLocalConfigurationSelfTest.java | 6 +
.../cache/CacheGroupMetricsMBeanTest.java | 26 +-
.../cache/CacheGroupsMetricsRebalanceTest.java | 11 +-
...erceptorPartitionCounterLocalSanityTest.java | 35 +-
...torPartitionCounterRandomOperationsTest.java | 132 +-
.../cache/CacheKeepBinaryTransactionTest.java | 15 +-
.../cache/CacheMetricsEntitiesCountTest.java | 52 +-
.../CacheMetricsForClusterGroupSelfTest.java | 116 +-
.../cache/CacheMetricsManageTest.java | 25 +-
.../cache/CacheMvccTxFastFinishTest.java | 67 +
.../processors/cache/CacheNamesSelfTest.java | 5 +
.../CacheNamesWithSpecialCharactersTest.java | 14 +-
.../cache/CacheNearReaderUpdateTest.java | 14 +
...cheNearUpdateTopologyChangeAbstractTest.java | 7 +-
.../cache/CacheNoAffinityExchangeTest.java | 317 ++
.../cache/CacheOffheapMapEntrySelfTest.java | 21 +-
...cheOptimisticTransactionsWithFilterTest.java | 8 +
.../CachePutEventListenerErrorSelfTest.java | 11 +
.../processors/cache/CachePutIfAbsentTest.java | 9 +
.../CacheReadThroughLocalRestartSelfTest.java | 8 +
.../cache/CacheReadThroughRestartSelfTest.java | 21 +-
.../CacheRebalanceConfigValidationTest.java | 5 +
.../cache/CacheRebalancingSelfTest.java | 20 +-
.../cache/CacheRemoveAllSelfTest.java | 18 +-
.../CacheSerializableTransactionsTest.java | 126 +-
.../CacheStartupInDeploymentModesTest.java | 6 +
.../cache/CacheStopAndDestroySelfTest.java | 37 +
...eUsageMultinodeDynamicStartAbstractTest.java | 16 +-
...heStoreUsageMultinodeDynamicStartTxTest.java | 8 +
...reUsageMultinodeStaticStartAbstractTest.java | 17 +-
...cheStoreUsageMultinodeStaticStartTxTest.java | 8 +
.../processors/cache/CacheTxFastFinishTest.java | 14 +-
.../CacheTxNotAllowReadFromBackupTest.java | 80 +-
.../cache/CacheValidatorMetricsTest.java | 8 +
.../cache/ClusterReadOnlyModeAbstractTest.java | 11 +-
.../cache/ClusterReadOnlyModeTest.java | 6 +
.../cache/ClusterStateAbstractTest.java | 66 +-
.../cache/ConcurrentCacheStartTest.java | 5 +
.../processors/cache/CrossCacheLockTest.java | 13 +
.../cache/CrossCacheTxRandomOperationsTest.java | 32 +-
.../DataStorageConfigurationValidationTest.java | 7 +
.../EntryVersionConsistencyReadThroughTest.java | 32 +
...idAbstractCacheInterceptorRebalanceTest.java | 17 +-
...ridCacheAbstractByteArrayValuesSelfTest.java | 6 -
.../GridCacheAbstractFailoverSelfTest.java | 6 +
.../GridCacheAbstractFailoverTxSelfTest.java | 19 +-
...cheAbstractFullApiMultithreadedSelfTest.java | 19 +-
.../cache/GridCacheAbstractFullApiSelfTest.java | 164 +-
.../GridCacheAbstractIteratorsSelfTest.java | 14 +-
.../GridCacheAbstractLocalStoreSelfTest.java | 18 +-
.../cache/GridCacheAbstractMetricsSelfTest.java | 41 +-
.../GridCacheAbstractRemoveFailureTest.java | 10 +-
.../cache/GridCacheAbstractSelfTest.java | 6 +-
.../cache/GridCacheAbstractTxReadTest.java | 13 +-
...acheAbstractUsersAffinityMapperSelfTest.java | 7 +-
.../cache/GridCacheAffinityApiSelfTest.java | 17 +-
.../cache/GridCacheAffinityMapperSelfTest.java | 9 +-
.../cache/GridCacheAffinityRoutingSelfTest.java | 12 +
.../GridCacheAsyncOperationsLimitSelfTest.java | 7 +-
...eAtomicEntryProcessorDeploymentSelfTest.java | 17 +
.../GridCacheAtomicMessageCountSelfTest.java | 8 +-
.../cache/GridCacheBasicApiAbstractTest.java | 45 +-
.../cache/GridCacheBasicStoreAbstractTest.java | 25 +-
...acheBasicStoreMultithreadedAbstractTest.java | 7 +-
.../cache/GridCacheClearAllSelfTest.java | 17 +-
.../cache/GridCacheClearLocallySelfTest.java | 14 +-
.../cache/GridCacheClearSelfTest.java | 16 +
...GridCacheConcurrentGetCacheOnClientTest.java | 5 +
.../cache/GridCacheConcurrentMapSelfTest.java | 10 +-
.../GridCacheConcurrentTxMultiNodeLoadTest.java | 10 +-
.../GridCacheConditionalDeploymentSelfTest.java | 7 +
...idCacheConfigurationConsistencySelfTest.java | 58 +-
...ridCacheConfigurationValidationSelfTest.java | 8 +-
.../GridCacheDaemonNodeAbstractSelfTest.java | 7 +
.../cache/GridCacheDeploymentSelfTest.java | 17 +-
.../cache/GridCacheEntryMemorySizeSelfTest.java | 38 +-
.../cache/GridCacheEntryVersionSelfTest.java | 19 +-
.../GridCacheEvictionEventAbstractTest.java | 18 +-
.../GridCacheFinishPartitionsSelfTest.java | 18 +-
...CacheFullTextQueryMultithreadedSelfTest.java | 5 +
.../cache/GridCacheGenericTestStore.java | 1 -
...idCacheGetAndTransformStoreAbstractTest.java | 17 +-
.../cache/GridCacheIncrementTransformTest.java | 8 +-
.../GridCacheInterceptorAbstractSelfTest.java | 43 +-
.../GridCacheInterceptorLocalSelfTest.java | 13 +-
...dCacheInterceptorLocalWithStoreSelfTest.java | 13 +-
.../GridCacheInterceptorReplicatedSelfTest.java | 1 -
.../cache/GridCacheInterceptorSelfTest.java | 1 -
...heInterceptorTransactionalRebalanceTest.java | 6 +
.../cache/GridCacheIteratorPerformanceTest.java | 9 +-
.../cache/GridCacheKeyCheckSelfTest.java | 12 +-
.../processors/cache/GridCacheLeakTest.java | 6 +
.../cache/GridCacheLifecycleAwareSelfTest.java | 7 +-
.../GridCacheLocalTxStoreExceptionSelfTest.java | 8 +
.../GridCacheMarshallerTxAbstractTest.java | 7 +-
.../GridCacheMarshallingNodeJoinSelfTest.java | 17 +-
.../GridCacheMissingCommitVersionSelfTest.java | 5 +
...GridCacheMixedPartitionExchangeSelfTest.java | 16 +-
.../cache/GridCacheMultiUpdateLockSelfTest.java | 8 +-
...ridCacheMultinodeUpdateAbstractSelfTest.java | 24 +-
...ultinodeUpdateAtomicNearEnabledSelfTest.java | 1 -
...inodeUpdateNearEnabledNoBackupsSelfTest.java | 11 +-
...CacheMultinodeUpdateNearEnabledSelfTest.java | 24 +-
.../cache/GridCacheMultinodeUpdateSelfTest.java | 1 -
.../cache/GridCacheMvccFlagsTest.java | 8 +-
.../cache/GridCacheMvccManagerSelfTest.java | 9 +-
...ridCacheMvccMultiThreadedUpdateSelfTest.java | 203 +
.../cache/GridCacheMvccPartitionedSelfTest.java | 20 +
.../processors/cache/GridCacheMvccSelfTest.java | 33 +-
.../cache/GridCacheNestedTxAbstractTest.java | 9 +-
.../cache/GridCacheObjectToStringSelfTest.java | 22 +-
...HeapMultiThreadedUpdateAbstractSelfTest.java | 10 +-
...CacheOffHeapMultiThreadedUpdateSelfTest.java | 9 +
.../cache/GridCacheOffheapUpdateSelfTest.java | 25 +-
.../GridCacheOnCopyFlagAbstractSelfTest.java | 6 +
.../GridCacheOrderedPreloadingSelfTest.java | 10 +-
.../cache/GridCacheP2PUndeploySelfTest.java | 17 +-
.../cache/GridCachePartitionedGetSelfTest.java | 16 +-
...hePartitionedProjectionAffinitySelfTest.java | 9 +-
.../cache/GridCachePartitionedWritesTest.java | 13 +-
.../GridCachePreloadingEvictionsSelfTest.java | 10 +-
.../cache/GridCachePutAllFailoverSelfTest.java | 17 +-
.../GridCacheQueryIndexingDisabledSelfTest.java | 10 +-
.../GridCacheQueryInternalKeysSelfTest.java | 7 +-
...ridCacheQuerySqlFieldInlineSizeSelfTest.java | 12 +-
.../GridCacheReferenceCleanupSelfTest.java | 39 +-
.../cache/GridCacheReloadSelfTest.java | 33 +-
...ridCacheReplicatedSynchronousCommitTest.java | 8 +-
.../GridCacheReturnValueTransferSelfTest.java | 8 +-
.../cache/GridCacheSlowTxWarnTest.java | 7 +-
.../processors/cache/GridCacheStopSelfTest.java | 92 +-
...ridCacheStoreManagerDeserializationTest.java | 20 +-
.../cache/GridCacheStorePutxSelfTest.java | 159 -
.../cache/GridCacheStoreValueBytesSelfTest.java | 7 +-
.../cache/GridCacheSwapPreloadSelfTest.java | 245 --
...acheTcpClientDiscoveryMultiThreadedTest.java | 7 +-
.../processors/cache/GridCacheTestEntryEx.java | 11 +-
...cheTransactionalAbstractMetricsSelfTest.java | 31 +
.../GridCacheTtlManagerEvictionSelfTest.java | 18 +-
.../cache/GridCacheTtlManagerLoadTest.java | 5 +
.../GridCacheTtlManagerNotificationTest.java | 9 +-
.../cache/GridCacheTtlManagerSelfTest.java | 17 +-
...ridCacheTxPartitionedLocalStoreSelfTest.java | 8 +
.../cache/GridCacheUtilsSelfTest.java | 7 +-
.../GridCacheValueBytesPreloadingSelfTest.java | 7 +-
...idCacheValueConsistencyAbstractSelfTest.java | 22 +-
...heValueConsistencyTransactionalSelfTest.java | 5 +-
.../GridCacheVariableTopologySelfTest.java | 18 +-
.../cache/GridCacheVersionMultinodeTest.java | 47 +-
.../cache/GridCacheVersionSelfTest.java | 8 +-
.../GridCacheVersionTopologyChangeTest.java | 18 +-
...StorageConfigurationConsistencySelfTest.java | 5 +
.../cache/GridEvictionPolicyMBeansTest.java | 37 +-
...calCacheStoreManagerDeserializationTest.java | 6 +
.../cache/GridLocalIgniteSerializationTest.java | 8 +
...ProjectionForCachesOnDaemonNodeSelfTest.java | 7 +
...IgniteAbstractDynamicCacheStartFailTest.java | 1986 ++++++----
.../IgniteCacheAbstractStopBusySelfTest.java | 12 +-
.../IgniteCacheAtomicStopBusySelfTest.java | 10 +-
...IgniteCacheBinaryEntryProcessorSelfTest.java | 8 +
.../IgniteCacheBinaryObjectsScanSelfTest.java | 5 +
.../IgniteCacheConfigVariationsFullApiTest.java | 155 +-
...teCacheConfigurationDefaultTemplateTest.java | 7 +-
.../IgniteCacheConfigurationTemplateTest.java | 12 +-
.../IgniteCacheContainsKeyAbstractSelfTest.java | 8 +-
.../cache/IgniteCacheContainsKeyAtomicTest.java | 6 +
...niteCacheCopyOnReadDisabledAbstractTest.java | 5 +
.../cache/IgniteCacheCreateRestartSelfTest.java | 5 +
.../cache/IgniteCacheDynamicStopSelfTest.java | 6 +
.../IgniteCacheEntryListenerAbstractTest.java | 22 +-
...eCacheEntryListenerEagerTtlDisabledTest.java | 8 +
...niteCacheEntryListenerExpiredEventsTest.java | 6 +
.../IgniteCacheEntryListenerTxLocalTest.java | 8 +
.../IgniteCacheEntryProcessorCallTest.java | 60 +-
.../IgniteCacheEntryProcessorNodeJoinTest.java | 137 +-
...niteCacheExpireAndUpdateConsistencyTest.java | 10 +
...IgniteCacheGetCustomCollectionsSelfTest.java | 5 +
.../processors/cache/IgniteCacheGroupsTest.java | 334 +-
.../cache/IgniteCacheIncrementTxTest.java | 7 +
.../IgniteCacheInterceptorSelfTestSuite.java | 57 +-
.../cache/IgniteCacheInvokeAbstractTest.java | 24 +-
...iteCacheInvokeReadThroughSingleNodeTest.java | 65 +
.../cache/IgniteCacheInvokeReadThroughTest.java | 77 +
...gniteCacheLoadRebalanceEvictionSelfTest.java | 5 +
.../IgniteCacheManyAsyncOperationsTest.java | 7 +-
.../cache/IgniteCacheMvccTxInvokeTest.java | 59 +
.../IgniteCacheMvccTxNearEnabledInvokeTest.java | 37 +
.../cache/IgniteCacheNearLockValueSelfTest.java | 10 +-
.../cache/IgniteCacheNoSyncForGetTest.java | 15 +
.../cache/IgniteCacheObjectPutSelfTest.java | 6 +
.../IgniteCacheP2pUnmarshallingErrorTest.java | 7 +-
...gniteCacheP2pUnmarshallingNearErrorTest.java | 7 +-
...CacheP2pUnmarshallingRebalanceErrorTest.java | 5 +
.../IgniteCacheP2pUnmarshallingTxErrorTest.java | 7 +-
.../IgniteCachePartitionMapUpdateTest.java | 10 +-
.../cache/IgniteCachePeekModesAbstractTest.java | 10 +
.../cache/IgniteCachePutAllRestartTest.java | 8 +-
.../IgniteCachePutStackOverflowSelfTest.java | 7 +
.../IgniteCacheReadThroughEvictionSelfTest.java | 24 +
...acheReadThroughEvictionsVariationsSuite.java | 3 +-
.../IgniteCacheReadThroughStoreCallTest.java | 15 +
...iteCacheScanPredicateDeploymentSelfTest.java | 5 +
.../cache/IgniteCacheSerializationSelfTest.java | 5 +
.../cache/IgniteCacheStartStopLoadTest.java | 5 +
.../processors/cache/IgniteCacheStartTest.java | 7 +
.../cache/IgniteCacheStoreCollectionTest.java | 33 +-
.../IgniteCacheStoreValueAbstractTest.java | 6 +
...gniteCacheTransactionalStopBusySelfTest.java | 10 +-
.../IgniteCacheTxCopyOnReadDisabledTest.java | 11 +-
.../cache/IgniteCacheTxLocalInvokeTest.java | 8 +
.../cache/IgniteCacheTxLocalPeekModesTest.java | 12 +-
.../cache/IgniteCacheTxLocalStoreValueTest.java | 12 +-
.../IgniteCacheTxNearEnabledStoreValueTest.java | 12 +-
.../cache/IgniteCacheTxNearPeekModesTest.java | 17 +
.../cache/IgniteCacheTxPeekModesTest.java | 10 +-
.../cache/IgniteCacheTxPreloadNoWriteTest.java | 8 +-
.../cache/IgniteCacheTxStoreValueTest.java | 12 +-
.../cache/IgniteCachingProviderSelfTest.java | 8 +-
.../IgniteClientAffinityAssignmentSelfTest.java | 7 +-
...IgniteClientCacheInitializationFailTest.java | 107 +-
.../IgniteClientCacheStartFailoverTest.java | 50 +-
.../IgniteClusterActivateDeactivateTest.java | 57 +-
...erActivateDeactivateTestWithPersistence.java | 61 +-
.../IgniteDaemonNodeMarshallerCacheTest.java | 8 +-
.../cache/IgniteDynamicCacheAndNodeStop.java | 5 +
.../cache/IgniteDynamicCacheFilterTest.java | 7 +
.../cache/IgniteDynamicCacheMultinodeTest.java | 6 +
...ynamicCacheStartCoordinatorFailoverTest.java | 524 +--
...ynamicCacheStartFailWithPersistenceTest.java | 8 +
...eDynamicCacheStartNoExchangeTimeoutTest.java | 50 +-
.../cache/IgniteDynamicCacheStartSelfTest.java | 46 +
...niteDynamicCacheStartStopConcurrentTest.java | 5 +
...niteDynamicCacheWithConfigStartSelfTest.java | 9 +-
.../IgniteDynamicClientCacheStartSelfTest.java | 27 +-
.../cache/IgniteExchangeFutureHistoryTest.java | 7 +-
...IgniteGetNonPlainKeyReadThroughSelfTest.java | 161 +
.../IgniteIncompleteCacheObjectSelfTest.java | 5 +
.../cache/IgniteInternalCacheTypesTest.java | 5 +
...iteMarshallerCacheClassNameConflictTest.java | 5 +
...lerCacheClientRequestsMappingOnMissTest.java | 9 +
...eMarshallerCacheConcurrentReadWriteTest.java | 5 +
.../IgniteMarshallerCacheFSRestoreTest.java | 6 +
.../IgniteMvccTxMultiThreadedAbstractTest.java | 132 +
.../IgniteMvccTxSingleThreadedAbstractTest.java | 56 +
.../cache/IgniteNearClientCacheCloseTest.java | 33 +
.../cache/IgniteOnePhaseCommitInvokeTest.java | 5 +
.../IgniteOnePhaseCommitNearReadersTest.java | 8 +
.../cache/IgniteOnePhaseCommitNearSelfTest.java | 5 +
.../cache/IgniteOutOfMemoryPropagationTest.java | 6 +
.../cache/IgnitePdsDataRegionMetricsTxTest.java | 56 +
.../cache/IgnitePutAllLargeBatchSelfTest.java | 26 +-
...tAllUpdateNonPreloadedPartitionSelfTest.java | 15 +-
.../IgniteStartCacheInTransactionSelfTest.java | 16 +-
.../cache/IgniteStaticCacheStartSelfTest.java | 7 +-
.../cache/IgniteSystemCacheOnClientTest.java | 7 +-
...gniteTopologyValidatorAbstractCacheTest.java | 5 +
...ologyValidatorAbstractTxCacheGroupsTest.java | 70 +-
...iteTopologyValidatorAbstractTxCacheTest.java | 43 +-
...opologyValidatorCacheGroupsAbstractTest.java | 5 +
...niteTopologyValidatorGridSplitCacheTest.java | 10 +
...lidatorNearPartitionedTxCacheGroupsTest.java | 8 +
...logyValidatorNearPartitionedTxCacheTest.java | 8 +
.../processors/cache/IgniteTxAbstractTest.java | 16 +-
.../IgniteTxConcurrentGetAbstractTest.java | 7 +-
.../cache/IgniteTxConfigCacheSelfTest.java | 14 +-
.../IgniteTxExceptionAbstractSelfTest.java | 37 +-
.../cache/IgniteTxMultiNodeAbstractTest.java | 22 +-
.../IgniteTxMultiThreadedAbstractTest.java | 19 +-
.../cache/IgniteTxReentryAbstractSelfTest.java | 7 +-
.../IgniteTxSingleThreadedAbstractTest.java | 19 +-
.../IgniteTxStoreExceptionAbstractSelfTest.java | 23 +-
...rceptorCacheConfigVariationsFullApiTest.java | 9 +-
.../MarshallerCacheJobRunNodeRestartTest.java | 5 +
.../cache/MemoryPolicyConfigValidationTest.java | 14 +
.../cache/MvccCacheGroupMetricsMBeanTest.java | 29 +
...AffinityCoordinatorDynamicStartStopTest.java | 5 +
...heapCacheMetricsForClusterGroupSelfTest.java | 13 +-
...titionedAtomicCacheGetsDistributionTest.java | 24 +-
...cTxPessimisticCacheGetsDistributionTest.java | 32 +
...onalOptimisticCacheGetsDistributionTest.java | 17 +-
...nalPessimisticCacheGetsDistributionTest.java | 24 +-
...rtitionsExchangeCoordinatorFailoverTest.java | 6 +
...sExchangeOnDiscoveryHistoryOverflowTest.java | 5 +
...plicatedAtomicCacheGetsDistributionTest.java | 329 +-
...cTxPessimisticCacheGetsDistributionTest.java | 32 +
...onalOptimisticCacheGetsDistributionTest.java | 9 +-
...nalPessimisticCacheGetsDistributionTest.java | 24 +-
.../SetTxTimeoutOnPartitionMapExchangeTest.java | 10 +-
.../cache/WalModeChangeAbstractSelfTest.java | 62 +-
.../cache/WalModeChangeAdvancedSelfTest.java | 27 +-
.../cache/WithKeepBinaryCacheFullApiTest.java | 19 +-
.../binary/BinaryMetadataUpdatesFlowTest.java | 538 ++-
.../BinaryTxCacheLocalEntriesSelfTest.java | 5 +
.../CacheKeepBinaryWithInterceptorTest.java | 46 +-
...yAtomicEntryProcessorDeploymentSelfTest.java | 8 +
...naryObjectMetadataExchangeMultinodeTest.java | 129 +-
...acheBinaryObjectUserClassloaderSelfTest.java | 6 +
...naryObjectsAbstractDataStreamerSelfTest.java | 5 +
...aryObjectsAbstractMultiThreadedSelfTest.java | 8 +-
.../GridCacheBinaryObjectsAbstractSelfTest.java | 93 +
.../GridCacheBinaryStoreAbstractSelfTest.java | 10 +
...ntNodeBinaryObjectMetadataMultinodeTest.java | 11 +-
...CacheClientNodeBinaryObjectMetadataTest.java | 5 +
...treamProcessorPersistenceBinarySelfTest.java | 28 +
.../GridDataStreamerImplSelfTest.java | 10 +-
...IgniteCacheAbstractExecutionContextTest.java | 5 +
...iteCachePartitionedExecutionContextTest.java | 44 -
...eAbstractDataStructuresFailoverSelfTest.java | 55 +-
...actQueueFailoverDataConsistencySelfTest.java | 10 +-
...CacheAtomicReferenceApiSelfAbstractTest.java | 12 +-
...cheAtomicReferenceMultiNodeAbstractTest.java | 8 +-
...idCacheAtomicStampedApiSelfAbstractTest.java | 11 +-
.../GridCacheQueueApiSelfAbstractTest.java | 226 +-
.../GridCacheQueueCleanupSelfTest.java | 8 +-
.../GridCacheQueueClientDisconnectTest.java | 259 +-
...ridCacheQueueJoinedNodeSelfAbstractTest.java | 7 +-
...GridCacheQueueMultiNodeAbstractSelfTest.java | 16 +-
...dCacheQueueMultiNodeConsistencySelfTest.java | 10 +-
...CacheQueueRotativeMultiNodeAbstractTest.java | 9 +-
.../GridCacheSequenceApiSelfAbstractTest.java | 20 +-
...dCacheSequenceMultiNodeAbstractSelfTest.java | 9 +-
.../GridCacheSetAbstractSelfTest.java | 60 +-
.../GridCacheSetFailoverAbstractSelfTest.java | 5 +
.../IgniteAtomicLongApiAbstractSelfTest.java | 19 +-
.../IgniteClientDataStructuresAbstractTest.java | 11 +
.../IgniteCountDownLatchAbstractSelfTest.java | 9 +
.../IgniteDataStructureUniqueNameTest.java | 8 +
.../IgniteDataStructureWithJobTest.java | 7 +-
...ExchangeLatchManagerCoordinatorFailTest.java | 7 +
.../IgniteLockAbstractSelfTest.java | 20 +
.../IgniteSemaphoreAbstractSelfTest.java | 9 +
.../IgniteSequenceInternalCleanupTest.java | 5 +
.../SemaphoreFailoverNoWaitingAcquirerTest.java | 8 +-
...SemaphoreFailoverSafeReleasePermitsTest.java | 6 +
.../IgniteLocalCountDownLatchSelfTest.java | 7 +-
.../local/IgniteLocalLockSelfTest.java | 5 +
.../local/IgniteLocalSemaphoreSelfTest.java | 5 +
...titionedAtomicSequenceMultiThreadedTest.java | 19 +-
...achePartitionedAtomicSequenceTxSelfTest.java | 8 +-
...chePartitionedAtomicSetFailoverSelfTest.java | 5 +
...rtitionedDataStructuresFailoverSelfTest.java | 14 -
...idCachePartitionedNodeRestartTxSelfTest.java | 9 +-
...PartitionedQueueCreateMultiNodeSelfTest.java | 6 +
...dCachePartitionedQueueEntryMoveSelfTest.java | 7 +-
...GridCachePartitionedSetFailoverSelfTest.java | 7 +-
...idCachePartitionedSetWithClientSelfTest.java | 52 +
...chePartitionedSetWithNodeFilterSelfTest.java | 37 +
...IgnitePartitionedCountDownLatchSelfTest.java | 5 -
.../IgnitePartitionedQueueNoBackupsTest.java | 5 +
.../IgnitePartitionedSetNoBackupsSelfTest.java | 5 +
...eplicatedDataStructuresFailoverSelfTest.java | 28 -
...ridCacheReplicatedSetWithClientSelfTest.java | 52 +
...acheReplicatedSetWithNodeFilterSelfTest.java | 37 +
.../distributed/Cache64kPartitionsTest.java | 6 +
.../CacheAbstractRestartSelfTest.java | 5 +
.../distributed/CacheAffinityEarlyTest.java | 9 +-
...acheAsyncOperationsFailoverAbstractTest.java | 9 +-
.../distributed/CacheAsyncOperationsTest.java | 17 +-
.../CacheAtomicPrimarySyncBackPressureTest.java | 6 +
.../distributed/CacheBaselineTopologyTest.java | 15 +
.../distributed/CacheBlockOnGetAllTest.java | 36 +
.../CacheBlockOnReadAbstractTest.java | 40 +
.../cache/distributed/CacheBlockOnScanTest.java | 16 +
.../distributed/CacheBlockOnSingleGetTest.java | 36 +
.../CacheClientsConcurrentStartTest.java | 7 +-
.../CacheDataLossOnPartitionMoveTest.java | 11 +-
.../CacheDiscoveryDataConcurrentJoinTest.java | 9 +-
.../distributed/CacheExchangeMergeTest.java | 53 +-
.../CacheGetFutureHangsSelfTest.java | 5 +
.../CacheGetInsideLockChangingTopologyTest.java | 10 +
.../distributed/CacheGroupsPreloadTest.java | 60 +
...ffinityAssignmentNodeJoinValidationTest.java | 6 +
.../CacheLateAffinityAssignmentTest.java | 67 +-
...CacheLoadingConcurrentGridStartSelfTest.java | 78 +-
.../CacheLockReleaseNodeLeaveTest.java | 124 +-
.../CacheOperationsInterruptTest.java | 175 +
.../CachePageWriteLockUnlockTest.java | 11 +-
.../distributed/CacheParallelStartTest.java | 208 ++
.../distributed/CachePartitionStateTest.java | 12 +
.../CachePutAllFailoverAbstractTest.java | 6 +
.../CacheRentingStateRepairTest.java | 5 +
...CacheResultIsNotNullOnPartitionLossTest.java | 30 +-
.../cache/distributed/CacheStartOnJoinTest.java | 22 +-
.../CacheTryLockMultithreadedTest.java | 11 +
.../CacheTxNearUpdateTopologyChangeTest.java | 8 +
...tractDistributedByteArrayValuesSelfTest.java | 77 +-
.../GridCacheAbstractJobExecutionTest.java | 8 +-
.../GridCacheAbstractNodeRestartSelfTest.java | 24 +-
...tractPartitionedByteArrayValuesSelfTest.java | 19 +-
.../GridCacheAbstractPrimarySyncSelfTest.java | 14 +-
.../GridCacheBasicOpAbstractTest.java | 18 +-
.../GridCacheClientModesAbstractSelfTest.java | 19 +-
.../GridCacheEntrySetAbstractSelfTest.java | 7 +-
...acheEntrySetIterationPreloadingSelfTest.java | 7 +-
.../distributed/GridCacheEventAbstractTest.java | 20 +
.../distributed/GridCacheLockAbstractTest.java | 21 +-
.../distributed/GridCacheMixedModeSelfTest.java | 9 +-
.../GridCacheModuloAffinityFunction.java | 1 -
.../GridCacheMultiNodeAbstractTest.java | 23 +-
.../GridCacheMultiNodeLockAbstractTest.java | 23 +-
...dCacheMultithreadedFailoverAbstractTest.java | 9 +-
.../GridCacheNodeFailureAbstractTest.java | 24 +-
...titionEvictionDuringReadThroughSelfTest.java | 7 +-
...ridCachePartitionNotLoadedEventSelfTest.java | 36 +-
...NearDisabledMvccTxMultiThreadedSelfTest.java | 31 +
...chePartitionedReloadAllAbstractSelfTest.java | 7 +-
.../GridCachePreloadEventsAbstractSelfTest.java | 13 +-
.../GridCachePreloadLifecycleAbstractTest.java | 1 -
...GridCachePreloadRestartAbstractSelfTest.java | 16 +-
.../GridCacheTransformEventSelfTest.java | 99 +-
...yMetadataUpdateChangingTopologySelfTest.java | 6 +
...niteBinaryMetadataUpdateNodeRestartTest.java | 7 +-
.../distributed/IgniteCache150ClientsTest.java | 17 +-
.../IgniteCacheAtomicNodeRestartTest.java | 10 +-
...heClientMultiNodeUpdateTopologyLockTest.java | 5 +
...niteCacheClientNodeChangingTopologyTest.java | 40 +-
.../IgniteCacheClientNodeConcurrentStart.java | 7 +-
...teCacheClientNodePartitionsExchangeTest.java | 14 +-
.../IgniteCacheClientReconnectTest.java | 9 +-
.../IgniteCacheConnectionRecoveryTest.java | 20 +-
.../IgniteCacheCreatePutMultiNodeSelfTest.java | 24 +-
.../distributed/IgniteCacheCreatePutTest.java | 19 +-
.../IgniteCacheFailedUpdateResponseTest.java | 48 +-
.../distributed/IgniteCacheGetRestartTest.java | 37 +-
...eCacheGroupsPartitionLossPolicySelfTest.java | 9 +
.../distributed/IgniteCacheManyClientsTest.java | 9 +-
.../IgniteCacheMessageRecoveryAbstractTest.java | 7 +-
...eCacheMessageRecoveryIdleConnectionTest.java | 15 +
.../IgniteCacheMessageWriteTimeoutTest.java | 5 +
.../IgniteCacheNearRestartRollbackSelfTest.java | 6 +-
.../IgniteCacheNodeJoinAbstractTest.java | 8 +-
.../IgniteCachePartitionLossPolicySelfTest.java | 583 ++-
.../distributed/IgniteCachePrimarySyncTest.java | 58 +-
.../IgniteCachePutGetRestartAbstractTest.java | 7 +-
.../IgniteCacheReadFromBackupTest.java | 101 +-
.../IgniteCacheServerNodeConcurrentStart.java | 7 +-
.../IgniteCacheSingleGetMessageTest.java | 39 +-
.../IgniteCacheSizeFailoverTest.java | 7 +-
.../IgniteCacheSystemTransactionsSelfTest.java | 53 +-
.../IgniteCacheThreadLocalTxTest.java | 10 +
.../IgniteCacheTxIteratorSelfTest.java | 35 +-
.../IgniteCrossCacheTxStoreSelfTest.java | 20 +-
.../IgniteMvccTxTimeoutAbstractTest.java | 151 +
...ptimisticTxSuspendResumeMultiServerTest.java | 30 -
.../IgniteOptimisticTxSuspendResumeTest.java | 244 +-
.../IgnitePessimisticTxSuspendResumeTest.java | 10 +
.../IgniteRejectConnectOnNodeStopTest.java | 5 +
.../IgniteTxCachePrimarySyncTest.java | 108 +-
...teSynchronizationModesMultithreadedTest.java | 91 +-
.../IgniteTxConcurrentRemoveObjectsTest.java | 194 +
...iteTxConsistencyRestartAbstractSelfTest.java | 7 +-
.../distributed/IgniteTxGetAfterStopTest.java | 9 +-
...xOriginatingNodeFailureAbstractSelfTest.java | 6 +
...cOriginatingNodeFailureAbstractSelfTest.java | 8 +
.../IgniteTxPreloadAbstractTest.java | 19 +-
.../IgniteTxRemoveTimeoutObjectsTest.java | 19 +
.../IgniteTxTimeoutAbstractTest.java | 49 +-
.../dht/CacheGetReadFromBackupFailoverTest.java | 262 ++
...achePartitionPartialCountersMapSelfTest.java | 7 +-
...tPartitionedOnlyByteArrayValuesSelfTest.java | 27 +-
...heAbstractTransformWriteThroughSelfTest.java | 23 +-
.../dht/GridCacheAtomicFullApiSelfTest.java | 8 +-
.../dht/GridCacheAtomicNearCacheSelfTest.java | 10 +-
.../dht/GridCacheColocatedDebugTest.java | 36 +-
...heColocatedMvccTxSingleThreadedSelfTest.java | 85 +
...eColocatedOptimisticTransactionSelfTest.java | 7 +-
...dCacheColocatedTxSingleThreadedSelfTest.java | 1 -
.../dht/GridCacheDhtEntrySelfTest.java | 16 +-
...GridCacheDhtEvictionNearReadersSelfTest.java | 11 +-
.../GridCacheDhtEvictionsDisabledSelfTest.java | 9 +-
.../dht/GridCacheDhtMappingSelfTest.java | 13 +-
.../dht/GridCacheDhtMultiBackupTest.java | 5 +
.../dht/GridCacheDhtPreloadBigDataSelfTest.java | 8 +-
.../dht/GridCacheDhtPreloadDelayedSelfTest.java | 12 +-
.../GridCacheDhtPreloadDisabledSelfTest.java | 13 +-
.../GridCacheDhtPreloadMessageCountTest.java | 7 +-
...ridCacheDhtPreloadMultiThreadedSelfTest.java | 12 +-
.../dht/GridCacheDhtPreloadPerformanceTest.java | 5 +
.../dht/GridCacheDhtPreloadPutGetSelfTest.java | 22 +-
.../dht/GridCacheDhtPreloadSelfTest.java | 23 +-
.../GridCacheDhtPreloadStartStopSelfTest.java | 7 +-
.../dht/GridCacheDhtPreloadUnloadSelfTest.java | 10 +-
.../dht/GridCacheGlobalLoadTest.java | 17 +-
...achePartitionedNearDisabledLockSelfTest.java | 7 +-
...ePartitionedNearDisabledMetricsSelfTest.java | 7 +-
...dCachePartitionedTopologyChangeSelfTest.java | 13 +-
...itionedTxOriginatingNodeFailureSelfTest.java | 8 +
...ridCachePartitionedUnloadEventsSelfTest.java | 5 +
.../GridCachePartitionsStateValidationTest.java | 6 +
...idCachePartitionsStateValidatorSelfTest.java | 6 +
.../dht/GridCacheTxNodeFailureSelfTest.java | 20 +-
...gniteAtomicLongChangingTopologySelfTest.java | 11 +
.../IgniteCacheClearDuringRebalanceTest.java | 12 +
.../IgniteCacheCommitDelayTxRecoveryTest.java | 8 +
.../dht/IgniteCacheConcurrentPutGetRemove.java | 6 +
.../IgniteCacheCrossCacheTxFailoverTest.java | 12 +
.../dht/IgniteCacheLockFailoverSelfTest.java | 18 +-
.../dht/IgniteCacheMultiTxLockSelfTest.java | 36 +-
...artitionedBackupNodeFailureRecoveryTest.java | 7 +-
...ePrimaryNodeFailureRecoveryAbstractTest.java | 20 +
.../IgniteCachePutRetryAbstractSelfTest.java | 16 +-
.../dht/IgniteCachePutRetryAtomicSelfTest.java | 6 +-
...gniteCachePutRetryTransactionalSelfTest.java | 11 +-
.../dht/IgniteCacheStartWithLoadTest.java | 17 +-
.../dht/IgniteCacheTxRecoveryRollbackTest.java | 16 +
.../dht/IgniteCrossCacheMvccTxSelfTest.java | 44 +
.../dht/IgniteCrossCacheTxAbstractSelfTest.java | 181 +
.../dht/IgniteCrossCacheTxSelfTest.java | 164 +-
.../dht/NotMappedPartitionInTxTest.java | 157 +-
.../dht/TxRecoveryStoreEnabledTest.java | 6 +
.../AtomicPutAllChangingTopologyTest.java | 7 +-
...eAtomicInvalidPartitionHandlingSelfTest.java | 7 +
.../atomic/GridCacheAtomicPreloadSelfTest.java | 10 +-
.../atomic/IgniteCacheAtomicProtocolTest.java | 40 +-
...tNearPartitionedByteArrayValuesSelfTest.java | 14 +
...tomicClientOnlyMultiNodeFullApiSelfTest.java | 14 +-
...eAtomicNearOnlyMultiNodeFullApiSelfTest.java | 7 +-
...AtomicPartitionedTckMetricsSelfTestImpl.java | 12 +-
.../near/GridCacheGetStoreErrorSelfTest.java | 21 +-
.../near/GridCacheMvccNearEvictionSelfTest.java | 39 +
.../GridCacheNearAtomicMetricsSelfTest.java | 5 +
.../near/GridCacheNearClientHitTest.java | 10 +-
.../near/GridCacheNearEvictionSelfTest.java | 7 +
.../near/GridCacheNearMetricsSelfTest.java | 20 +
.../near/GridCacheNearMultiGetSelfTest.java | 100 +-
.../near/GridCacheNearMultiNodeSelfTest.java | 44 +-
.../near/GridCacheNearOneNodeSelfTest.java | 28 +-
...idCacheNearOnlyMultiNodeFullApiSelfTest.java | 12 +-
.../near/GridCacheNearOnlySelfTest.java | 7 +-
.../near/GridCacheNearOnlyTopologySelfTest.java | 18 +
.../GridCacheNearPartitionedClearSelfTest.java | 10 +-
.../GridCacheNearReaderPreloadSelfTest.java | 13 +-
.../near/GridCacheNearReadersSelfTest.java | 20 +-
.../near/GridCacheNearTxExceptionSelfTest.java | 8 +
.../near/GridCacheNearTxForceKeyTest.java | 5 +
.../near/GridCacheNearTxMultiNodeSelfTest.java | 7 +-
.../near/GridCacheNearTxPreloadSelfTest.java | 12 +-
...AffinityExcludeNeighborsPerformanceTest.java | 9 +-
.../GridCachePartitionedAffinitySelfTest.java | 10 +-
.../GridCachePartitionedBasicOpSelfTest.java | 10 +-
...ePartitionedBasicStoreMultiNodeSelfTest.java | 20 +-
...ionedClientOnlyNoPrimaryFullApiSelfTest.java | 8 +-
.../near/GridCachePartitionedEventSelfTest.java | 12 +-
.../GridCachePartitionedEvictionSelfTest.java | 12 +-
...titionedExplicitLockNodeFailureSelfTest.java | 11 +
...GridCachePartitionedFilteredPutSelfTest.java | 8 +-
.../GridCachePartitionedFullApiSelfTest.java | 7 +-
...idCachePartitionedHitsAndMissesSelfTest.java | 10 +-
.../GridCachePartitionedLoadCacheSelfTest.java | 14 +-
.../GridCachePartitionedMetricsSelfTest.java | 8 +
...achePartitionedMultiNodeCounterSelfTest.java | 12 +-
...achePartitionedMultiNodeFullApiSelfTest.java | 12 +-
...idCachePartitionedMultiNodeLockSelfTest.java | 11 +-
...ePartitionedMultiThreadedPutGetSelfTest.java | 14 +-
...ePartitionedMvccTxMultiThreadedSelfTest.java | 100 +
...PartitionedMvccTxSingleThreadedSelfTest.java | 84 +
...idCachePartitionedMvccTxTimeoutSelfTest.java | 47 +
.../GridCachePartitionedNodeRestartTest.java | 21 +-
...ePartitionedOptimisticTxNodeRestartTest.java | 21 +-
...achePartitionedPreloadLifecycleSelfTest.java | 10 +-
.../GridCachePartitionedStorePutSelfTest.java | 65 +-
...GridCachePartitionedTxMultiNodeSelfTest.java | 13 +-
...CachePartitionedTxMultiThreadedSelfTest.java | 1 -
.../GridCachePartitionedTxSalvageSelfTest.java | 10 +-
...achePartitionedTxSingleThreadedSelfTest.java | 1 -
.../GridCachePartitionedTxTimeoutSelfTest.java | 21 -
.../near/GridCachePutArrayValueSelfTest.java | 16 +-
...idCacheRendezvousAffinityClientSelfTest.java | 7 +-
.../near/GridNearCacheStoreUpdateTest.java | 13 +
.../near/GridPartitionedBackupLoadSelfTest.java | 7 +-
.../near/IgniteCacheNearOnlyTxTest.java | 20 +-
.../near/IgniteCacheNearReadCommittedTest.java | 17 +-
.../near/IgniteCacheNearTxRollbackTest.java | 7 +-
.../near/NearCacheMultithreadedUpdateTest.java | 8 +
.../near/NearCachePutAllMultinodeTest.java | 7 +-
.../near/NearCacheSyncUpdateTest.java | 24 +
.../near/NoneRebalanceModeSelfTest.java | 17 +-
.../rebalancing/CacheManualRebalancingTest.java | 14 +-
...cingDelayedPartitionMapExchangeSelfTest.java | 5 +
.../GridCacheRebalancingAsyncSelfTest.java | 7 +-
.../GridCacheRebalancingCancelTest.java | 7 +
.../GridCacheRebalancingOrderingTest.java | 5 +
...cheRebalancingPartitionCountersMvccTest.java | 29 +
...idCacheRebalancingPartitionCountersTest.java | 14 +
...cheRebalancingPartitionDistributionTest.java | 6 +-
.../GridCacheRebalancingSyncCheckDataTest.java | 7 +
.../GridCacheRebalancingSyncSelfTest.java | 101 +-
...eRebalancingUnmarshallingFailedSelfTest.java | 7 +
...cheRebalancingWithAsyncClearingMvccTest.java | 36 +
...idCacheRebalancingWithAsyncClearingTest.java | 64 +-
...balanceOnCachesStoppingOrDestroyingTest.java | 298 ++
...stractReplicatedByteArrayValuesSelfTest.java | 2 +-
.../GridCacheReplicatedLockSelfTest.java | 7 +-
.../GridCacheReplicatedMetricsSelfTest.java | 8 +
...heReplicatedMvccTxMultiThreadedSelfTest.java | 81 +
...eReplicatedMvccTxSingleThreadedSelfTest.java | 77 +
...ridCacheReplicatedMvccTxTimeoutSelfTest.java | 44 +
.../GridCacheReplicatedNodeRestartSelfTest.java | 20 +
...GridCacheReplicatedTxMultiNodeBasicTest.java | 11 +
...dCacheReplicatedTxMultiThreadedSelfTest.java | 26 -
...CacheReplicatedTxSingleThreadedSelfTest.java | 44 +-
.../GridCacheReplicatedTxTimeoutSelfTest.java | 18 -
.../GridCacheSyncReplicatedPreloadSelfTest.java | 8 +-
.../replicated/GridReplicatedTxPreloadTest.java | 5 +
.../IgniteCacheSyncRebalanceModeSelfTest.java | 6 +
...CacheReplicatedPreloadLifecycleSelfTest.java | 9 +-
.../GridCacheReplicatedPreloadSelfTest.java | 155 +-
...eplicatedPreloadStartStopEventsSelfTest.java | 7 +-
.../cache/eviction/DhtAndNearEvictionTest.java | 19 +
.../cache/eviction/EvictionAbstractTest.java | 31 +-
.../EvictionPolicyFactoryAbstractTest.java | 33 +-
...heConcurrentEvictionConsistencySelfTest.java | 50 +-
.../GridCacheConcurrentEvictionsSelfTest.java | 49 +-
.../GridCacheEmptyEntriesAbstractSelfTest.java | 11 +-
.../GridCacheEmptyEntriesLocalSelfTest.java | 15 +-
...ridCacheEmptyEntriesPartitionedSelfTest.java | 13 +-
.../GridCacheEvictableEntryEqualsSelfTest.java | 5 +
.../GridCacheEvictionFilterSelfTest.java | 16 +-
.../GridCacheEvictionLockUnlockSelfTest.java | 19 +-
.../GridCacheEvictionTouchSelfTest.java | 18 +-
.../lru/LruEvictionPolicyFactorySelfTest.java | 7 +-
.../eviction/lru/LruEvictionPolicySelfTest.java | 7 +-
.../lru/LruNearEvictionPolicySelfTest.java | 21 +-
.../LruNearOnlyNearEvictionPolicySelfTest.java | 39 +-
.../paged/PageEvictionDataStreamerTest.java | 8 +-
.../eviction/paged/PageEvictionMetricTest.java | 24 +-
.../PageEvictionMultinodeAbstractTest.java | 40 +-
.../PageEvictionMultinodeMixedRegionsTest.java | 2 +-
...ageEvictionPagesRecyclingAndReusingTest.java | 40 +
.../paged/PageEvictionReadThroughTest.java | 42 +
.../paged/PageEvictionTouchOrderTest.java | 41 +
.../PageEvictionWithRebalanceAbstractTest.java | 24 +-
.../SortedEvictionPolicyPerformanceTest.java | 7 +-
.../IgniteCacheClientNearCacheExpiryTest.java | 7 +-
.../IgniteCacheExpiryPolicyAbstractTest.java | 17 +
.../IgniteCacheExpiryPolicyTestSuite.java | 42 +-
...eCacheExpiryPolicyWithStoreAbstractTest.java | 10 +-
.../expiry/IgniteCacheLargeValueExpireTest.java | 5 +
...eCacheOnlyOneTtlCleanupThreadExistsTest.java | 5 +
.../IgniteCacheTxExpiryPolicyWithStoreTest.java | 7 +-
.../IgniteCacheLoadAllAbstractTest.java | 19 +-
.../IgniteCacheLoaderWriterAbstractTest.java | 10 +-
...iteCacheNoLoadPreviousValueAbstractTest.java | 7 +-
.../IgniteCacheNoReadThroughAbstractTest.java | 7 +-
.../IgniteCacheNoWriteThroughAbstractTest.java | 7 +-
...IgniteCacheStoreNodeRestartAbstractTest.java | 7 +-
.../IgniteCacheStoreSessionAbstractTest.java | 7 +-
...acheStoreSessionWriteBehindAbstractTest.java | 10 +-
.../IgniteCacheTxLoaderWriterTest.java | 12 +-
.../IgniteCacheTxLocalLoadAllTest.java | 11 +-
...niteCacheTxLocalNoLoadPreviousValueTest.java | 12 +-
.../IgniteCacheTxLocalNoReadThroughTest.java | 12 +-
.../IgniteCacheTxLocalNoWriteThroughTest.java | 12 +-
...cheTxNearEnabledNoLoadPreviousValueTest.java | 12 +-
...iteCacheTxNearEnabledNoWriteThroughTest.java | 12 +-
.../IgniteCacheTxNoLoadPreviousValueTest.java | 12 +-
.../IgniteCacheTxNoReadThroughTest.java | 12 +-
.../IgniteCacheTxNoWriteThroughTest.java | 12 +-
.../IgniteCacheTxStoreSessionTest.java | 18 +-
...TxStoreSessionWriteBehindCoalescingTest.java | 12 +-
...gniteCacheTxStoreSessionWriteBehindTest.java | 12 +-
...dCacheAtomicLocalTckMetricsSelfTestImpl.java | 10 +-
.../local/GridCacheDaemonNodeLocalSelfTest.java | 10 +-
.../local/GridCacheLocalBasicApiSelfTest.java | 12 +-
.../local/GridCacheLocalBasicStoreSelfTest.java | 12 +-
.../GridCacheLocalByteArrayValuesSelfTest.java | 24 +-
.../local/GridCacheLocalEventSelfTest.java | 11 +-
.../GridCacheLocalEvictionEventSelfTest.java | 12 +-
.../local/GridCacheLocalFullApiSelfTest.java | 7 +
...dCacheLocalGetAndTransformStoreSelfTest.java | 12 +-
.../GridCacheLocalIsolatedNodesSelfTest.java | 10 +-
.../local/GridCacheLocalIteratorsSelfTest.java | 8 +
.../local/GridCacheLocalLoadAllSelfTest.java | 17 +-
.../cache/local/GridCacheLocalLockSelfTest.java | 22 +-
.../local/GridCacheLocalMetricsSelfTest.java | 10 +
.../GridCacheLocalMultithreadedSelfTest.java | 21 +-
.../GridCacheLocalTxExceptionSelfTest.java | 8 +
.../GridCacheLocalTxMultiThreadedSelfTest.java | 9 +-
.../GridCacheLocalTxSingleThreadedSelfTest.java | 9 +-
.../local/GridCacheLocalTxTimeoutSelfTest.java | 20 +
...tomicNearEnabledMultiJvmFullApiSelfTest.java | 7 +-
...plicatedNearOnlyMultiJvmFullApiSelfTest.java | 11 +-
...vccAbstractBasicCoordinatorFailoverTest.java | 191 +
...acheMvccAbstractCoordinatorFailoverTest.java | 16 +
.../cache/mvcc/CacheMvccAbstractTest.java | 26 +-
.../cache/mvcc/CacheMvccClusterRestartTest.java | 9 +-
.../CacheMvccConfigurationValidationTest.java | 47 +-
...ccIteratorWithConcurrentTransactionTest.java | 5 +
...calEntriesWithConcurrentTransactionTest.java | 5 +
.../mvcc/CacheMvccOperationChecksTest.java | 19 +-
...eMvccPartitionedCoordinatorFailoverTest.java | 53 +
.../mvcc/CacheMvccProcessorLazyStartTest.java | 8 +
.../cache/mvcc/CacheMvccProcessorTest.java | 26 +-
.../CacheMvccRemoteTxOnNearNodeStartTest.java | 5 +
...cScanQueryWithConcurrentTransactionTest.java | 5 +
...heMvccSizeWithConcurrentTransactionTest.java | 5 +
.../cache/mvcc/CacheMvccTransactionsTest.java | 129 +-
.../cache/mvcc/CacheMvccTxFailoverTest.java | 283 ++
.../cache/mvcc/CacheMvccVacuumTest.java | 14 +
.../cache/mvcc/MvccCachePeekTest.java | 166 +
.../cache/mvcc/MvccUnsupportedTxModesTest.java | 366 ++
.../cache/persistence/DummyPageIO.java | 21 +-
...eBaselineAffinityTopologyActivationTest.java | 84 +-
.../IgniteDataStorageMetricsSelfTest.java | 22 +-
...tePdsBinaryMetadataOnClusterRestartTest.java | 18 +-
.../IgnitePdsBinarySortObjectFieldsTest.java | 5 +
...gnitePdsCacheAssignmentNodeRestartsTest.java | 11 +-
...heConfigurationFileConsistencyCheckTest.java | 7 +
...cheObjectBinaryProcessorOnDiscoveryTest.java | 5 +
.../IgnitePdsCacheRebalancingAbstractTest.java | 10 +
...PdsCacheStartStopWithFreqCheckpointTest.java | 184 +
.../IgnitePdsContinuousRestartTest.java | 47 +-
...dsContinuousRestartTestWithExpiryPolicy.java | 8 +
.../IgnitePdsCorruptedIndexTest.java | 15 +-
.../IgnitePdsCorruptedStoreTest.java | 24 +-
.../persistence/IgnitePdsDestroyCacheTest.java | 10 +-
...tePdsDestroyCacheWithoutCheckpointsTest.java | 6 +
.../persistence/IgnitePdsDynamicCacheTest.java | 9 +-
.../IgnitePdsExchangeDuringCheckpointTest.java | 7 +
...MarshallerMappingRestoreOnNodeStartTest.java | 5 +
.../persistence/IgnitePdsPageSizesTest.java | 17 +
.../IgnitePdsPartitionFilesDestroyTest.java | 38 +-
.../IgnitePdsPartitionsStateRecoveryTest.java | 177 +
...gnitePdsRecoveryAfterFileCorruptionTest.java | 8 +
.../IgnitePdsRemoveDuringRebalancingTest.java | 5 +
.../persistence/IgnitePdsTaskCancelingTest.java | 18 +-
.../IgnitePdsTxCacheRebalancingTest.java | 5 +
.../IgnitePersistentStoreCacheGroupsTest.java | 13 +
...IgnitePersistentStoreDataStructuresTest.java | 30 +-
...teRebalanceScheduleResendPartitionsTest.java | 14 +-
...hangeDuringRebalanceOnNonNodeAssignTest.java | 170 -
...lWalModeChangeDuringRebalancingSelfTest.java | 162 +-
...hangeDuringRebalanceOnNonNodeAssignTest.java | 211 ++
.../MemoryPolicyInitializationTest.java | 10 +
.../PersistenceDirectoryWarningLoggingTest.java | 6 +
...lientAffinityAssignmentWithBaselineTest.java | 43 +-
...niteAbsentEvictionNodeOutOfBaselineTest.java | 5 +
.../db/CheckpointBufferDeadlockTest.java | 15 +-
.../db/IgniteLogicalRecoveryTest.java | 707 ++++
.../db/IgnitePdsCacheRestoreTest.java | 14 +-
...itePdsCacheWalDisabledOnRebalancingTest.java | 272 ++
.../db/IgnitePdsDataRegionMetricsTest.java | 89 +-
.../db/IgnitePdsMultiNodePutGetRestartTest.java | 5 +
...PdsPageEvictionDuringPartitionClearTest.java | 9 +
.../db/IgnitePdsPageEvictionTest.java | 5 +
.../db/IgnitePdsPartitionPreloadTest.java | 209 ++
...tePdsRebalancingOnNotStableTopologyTest.java | 18 +-
.../db/IgnitePdsReserveWalSegmentsTest.java | 8 +-
.../db/IgnitePdsTransactionsHangTest.java | 19 +-
.../db/IgnitePdsWholeClusterRestartTest.java | 19 +-
.../persistence/db/IgnitePdsWithTtlTest.java | 13 +-
...SlowHistoricalRebalanceSmallHistoryTest.java | 14 +-
...gniteCheckpointDirtyPagesForLowLoadTest.java | 8 +-
.../checkpoint/IgniteMassLoadSandboxTest.java | 8 +
...faultPageSizeBackwardsCompatibilityTest.java | 24 +-
...nitePdsCacheDestroyDuringCheckpointTest.java | 5 +
.../db/file/IgnitePdsCacheIntegrationTest.java | 6 +
.../db/file/IgnitePdsCheckpointSimpleTest.java | 7 +-
...ckpointSimulationWithRealCpDisabledTest.java | 96 +-
.../file/IgnitePdsDiskErrorsRecoveringTest.java | 132 +-
.../file/IgnitePdsNoActualWalHistoryTest.java | 5 +
.../db/file/IgnitePdsPageReplacementTest.java | 5 +
.../file/IgnitePdsThreadInterruptionTest.java | 8 +-
.../IgniteUidAsConsistentIdMigrationTest.java | 18 +
.../wal/FsyncWalRolloverDoesNotBlockTest.java | 7 +-
.../IgniteNodeStoppedDuringDisableWALTest.java | 26 +-
...IsReachedDuringIterationOverArchiveTest.java | 6 +
.../db/wal/IgniteWalFlushFailoverTest.java | 15 +-
...lFlushMultiNodeFailoverAbstractSelfTest.java | 30 +-
.../db/wal/IgniteWalFormatFileFailoverTest.java | 518 +--
.../wal/IgniteWalHistoryReservationsTest.java | 39 +-
...gniteWalIteratorExceptionDuringReadTest.java | 5 +
.../wal/IgniteWalIteratorSwitchSegmentTest.java | 76 +-
.../db/wal/IgniteWalRebalanceTest.java | 19 +-
.../db/wal/IgniteWalRecoveryPPCTest.java | 6 +
.../IgniteWalRecoverySeveralRestartsTest.java | 7 +
.../db/wal/IgniteWalSerializerVersionTest.java | 6 +
.../db/wal/WalCompactionAfterRestartTest.java | 166 +
.../persistence/db/wal/WalCompactionTest.java | 69 +-
.../db/wal/WalDeletionArchiveAbstractTest.java | 30 +-
.../cache/persistence/db/wal/WalPathsTest.java | 6 +
.../db/wal/WalRecoveryTxLogicalRecordsTest.java | 19 +-
.../db/wal/WalRolloverRecordLoggingTest.java | 6 +
.../db/wal/WalRolloverTypesTest.java | 20 +
...IgniteAbstractWalIteratorInvalidCrcTest.java | 7 +
.../db/wal/crc/IgniteDataIntegrityTests.java | 16 +-
.../wal/crc/IgnitePureJavaCrcCompatibility.java | 5 +
.../IgniteReplayWalIteratorInvalidCrcTest.java | 5 +
.../db/wal/reader/IgniteWalReaderTest.java | 186 +-
.../persistence/file/FileDownloaderTest.java | 7 +-
.../metastorage/IgniteMetaStorageBasicTest.java | 356 ++
.../pagemem/FillFactorMetricTest.java | 6 +
...gnitePageMemReplaceDelayedWriteUnitTest.java | 18 +-
.../persistence/pagemem/NoOpWALManager.java | 7 +
.../pagemem/PageIdDistributionTest.java | 6 +
.../pagemem/PageMemoryImplNoLoadTest.java | 5 +
.../persistence/pagemem/PageMemoryImplTest.java | 9 +
.../pagemem/PageMemoryNoStoreLeakTest.java | 5 +
.../pagemem/PagesWriteThrottleSandboxTest.java | 5 +
.../pagemem/PagesWriteThrottleSmokeTest.java | 14 +-
.../AbstractNodeJoinTemplate.java | 4 +-
.../IgniteChangeGlobalStateCacheTest.java | 7 +
...IgniteChangeGlobalStateDataStreamerTest.java | 5 +
...gniteChangeGlobalStateDataStructureTest.java | 7 +
.../IgniteChangeGlobalStateFailOverTest.java | 7 +
.../IgniteChangeGlobalStateServiceTest.java | 5 +
.../IgniteChangeGlobalStateTest.java | 20 +-
.../IgniteNoParrallelClusterIsAllowedTest.java | 5 +
.../IgniteStandByClusterTest.java | 12 +
.../join/JoinActiveNodeToActiveCluster.java | 14 +
.../join/JoinActiveNodeToInActiveCluster.java | 14 +
.../join/JoinInActiveNodeToActiveCluster.java | 14 +
.../join/JoinInActiveNodeToInActiveCluster.java | 14 +
...ctiveNodeToActiveClusterWithPersistence.java | 8 +
.../IgniteStandByClientReconnectTest.java | 8 +
...eStandByClientReconnectToNewClusterTest.java | 8 +
.../persistence/tree/io/TrackingPageIOTest.java | 13 +-
.../wal/AbstractWalDeltaConsistencyTest.java | 19 +
.../wal/CpTriggeredWalDeltaConsistencyTest.java | 24 +-
.../wal/ExplicitWalDeltaConsistencyTest.java | 35 +-
.../wal/SegmentedRingByteBufferTest.java | 16 +-
.../wal/SysPropWalDeltaConsistencyTest.java | 24 +-
.../persistence/wal/aware/SegmentAwareTest.java | 44 +-
.../wal/memtracker/PageMemoryTracker.java | 58 +-
.../PageMemoryTrackerPluginProvider.java | 21 +-
.../StandaloneWalRecordsIteratorTest.java | 129 +-
.../cache/query/CacheScanQueryFailoverTest.java | 6 +
.../GridCacheQueryTransformerSelfTest.java | 18 +
.../cache/query/GridCircularQueueTest.java | 7 +-
.../IgniteCacheQueryCacheDestroySelfTest.java | 5 +
.../cache/query/IndexingSpiQuerySelfTest.java | 43 +-
.../cache/query/IndexingSpiQueryTxSelfTest.java | 8 +-
.../ScanQueryOffheapExpiryPolicySelfTest.java | 5 +
.../continuous/CacheContinuousBatchAckTest.java | 21 +-
...heContinuousBatchForceServerModeAckTest.java | 1 -
...tinuousQueryAsyncFailoverMvccTxSelfTest.java | 59 +
...eContinuousQueryAsyncFilterListenerTest.java | 48 +-
...nuousQueryConcurrentPartitionUpdateTest.java | 16 +
...CacheContinuousQueryCounterAbstractTest.java | 22 +-
.../CacheContinuousQueryEventBufferTest.java | 7 +-
...acheContinuousQueryExecuteInPrimaryTest.java | 14 +-
...usQueryFactoryFilterRandomOperationTest.java | 7 +-
...ContinuousQueryFailoverAbstractSelfTest.java | 112 +-
...usQueryFailoverMvccTxReplicatedSelfTest.java | 31 +
...heContinuousQueryFailoverMvccTxSelfTest.java | 54 +
.../CacheContinuousQueryLostPartitionTest.java | 10 +
...ontinuousQueryOperationFromCallbackTest.java | 15 +
.../CacheContinuousQueryOperationP2PTest.java | 16 +
.../CacheContinuousQueryOrderingEventTest.java | 25 +-
...acheContinuousQueryRandomOperationsTest.java | 52 +-
.../CacheContinuousQueryVariationsTest.java | 18 +-
...heContinuousWithTransformerFailoverTest.java | 7 +
...inuousWithTransformerReplicatedSelfTest.java | 26 +-
...eEntryProcessorExternalizableFailedTest.java | 419 ++-
.../CacheEntryProcessorNonSerializableTest.java | 274 +-
...CacheKeepBinaryIterationNearEnabledTest.java | 8 +-
...acheKeepBinaryIterationStoreEnabledTest.java | 6 +
.../CacheKeepBinaryIterationTest.java | 12 +-
.../ClientReconnectContinuousQueryTest.java | 5 +
.../ContinuousQueryMarshallerTest.java | 6 +
.../ContinuousQueryPeerClassLoadingTest.java | 7 +
.../ContinuousQueryReassignmentTest.java | 177 +
...yRemoteFilterMissingInClassPathSelfTest.java | 8 +
...ridCacheContinuousQueryAbstractSelfTest.java | 22 +-
.../GridCacheContinuousQueryAtomicSelfTest.java | 7 +-
.../GridCacheContinuousQueryConcurrentTest.java | 14 +
...eContinuousQueryMultiNodesFilteringTest.java | 6 +
...dCacheContinuousQueryNodesFilteringTest.java | 7 +-
...eContinuousQueryPartitionedOnlySelfTest.java | 7 +-
...ContinuousQueryReplicatedAtomicSelfTest.java | 7 +-
...dCacheContinuousQueryReplicatedSelfTest.java | 8 +-
...eContinuousQueryReplicatedTxOneNodeTest.java | 9 +-
.../GridCacheContinuousQueryTxSelfTest.java | 7 +-
...niteCacheContinuousQueryBackupQueueTest.java | 7 +
...CacheContinuousQueryClientReconnectTest.java | 8 +-
.../IgniteCacheContinuousQueryClientTest.java | 9 +-
...eCacheContinuousQueryImmutableEntryTest.java | 8 +-
...teCacheContinuousQueryNoUnsubscribeTest.java | 6 +
...IgniteCacheContinuousQueryReconnectTest.java | 8 +-
...idCacheWriteBehindStoreAbstractSelfTest.java | 1 -
.../GridCacheWriteBehindStoreAbstractTest.java | 20 +-
.../GridCacheWriteBehindStoreLocalTest.java | 12 +-
...heWriteBehindStoreMultithreadedSelfTest.java | 45 +-
...BehindStorePartitionedMultiNodeSelfTest.java | 15 +-
.../GridCacheWriteBehindStoreSelfTest.java | 20 +-
.../IgniteCacheWriteBehindNoUpdateSelfTest.java | 5 +
...CacheClientWriteBehindStoreAbstractTest.java | 20 +-
...ClientWriteBehindStoreNonCoalescingTest.java | 5 +
.../AbstractDeadlockDetectionTest.java | 2 -
.../transactions/AtomicOperationsInTxTest.java | 7 +
.../transactions/DepthFirstSearchTest.java | 9 +
...IntegrityWithPrimaryIndexCorruptionTest.java | 33 +-
...ctionIntegrityWithSystemWorkerDeathTest.java | 5 +
.../TxDataConsistencyOnCommitFailureTest.java | 7 +
.../cache/transactions/TxDeadlockCauseTest.java | 10 +-
...DeadlockDetectionMessageMarshallingTest.java | 6 +-
.../TxDeadlockDetectionNoHangsTest.java | 6 +
.../transactions/TxDeadlockDetectionTest.java | 9 +
.../TxDeadlockDetectionUnmasrhalErrorsTest.java | 6 +-
.../cache/transactions/TxLabelTest.java | 28 +-
.../transactions/TxMultiCacheAsyncOpsTest.java | 6 +
.../cache/transactions/TxOnCachesStartTest.java | 5 +
...timisticDeadlockDetectionCrossCacheTest.java | 5 +
.../TxOptimisticDeadlockDetectionTest.java | 9 +-
.../TxOptimisticOnPartitionExchangeTest.java | 7 +-
...OptimisticPrepareOnUnstableTopologyTest.java | 170 +-
...simisticDeadlockDetectionCrossCacheTest.java | 9 +-
.../TxPessimisticDeadlockDetectionTest.java | 9 +-
.../TxRollbackAsyncNearCacheTest.java | 11 +
.../cache/transactions/TxRollbackAsyncTest.java | 116 +-
.../TxRollbackOnIncorrectParamsTest.java | 24 +-
.../TxRollbackOnTimeoutOnePhaseCommitTest.java | 7 +
.../transactions/TxRollbackOnTimeoutTest.java | 34 +-
.../TxRollbackOnTopologyChangeTest.java | 9 +
.../transactions/TxStateChangeEventTest.java | 84 +-
...WithSmallTimeoutAndContentionOneKeyTest.java | 15 +
.../CacheVersionedEntryAbstractTest.java | 10 +-
...ersionedEntryLocalTransactionalSelfTest.java | 13 +-
.../closure/GridClosureProcessorRemoteTest.java | 8 +-
.../closure/GridClosureProcessorSelfTest.java | 16 +-
.../closure/GridClosureSerializationTest.java | 13 +-
.../cluster/GridAddressResolverSelfTest.java | 5 +
.../cluster/GridUpdateNotifierSelfTest.java | 5 +
...ComputeJobExecutionErrorToLogManualTest.java | 5 +
...gniteComputeConfigVariationsFullApiTest.java | 46 +-
...puteCustomExecutorConfigurationSelfTest.java | 5 +
.../IgniteComputeCustomExecutorSelfTest.java | 6 +
.../compute/PublicThreadpoolStarvationTest.java | 5 +
.../continuous/GridEventConsumeSelfTest.java | 24 +
.../continuous/GridMessageListenSelfTest.java | 15 +-
.../IgniteNoCustomEventsOnNodeStart.java | 5 +
.../processors/database/BPlusTreeSelfTest.java | 94 +
.../database/CacheFreeListImplSelfTest.java | 27 +-
.../database/DataRegionMetricsSelfTest.java | 8 +
.../database/IgniteDbAbstractTest.java | 2 -
.../database/IgniteDbDynamicCacheSelfTest.java | 6 +
.../IgniteDbMemoryLeakAbstractTest.java | 5 +
.../database/IgniteDbPutGetAbstractTest.java | 58 +-
.../IgniteDbPutGetWithCacheStoreTest.java | 14 +
.../IgniteDbSingleNodeTinyPutGetTest.java | 68 +-
.../database/IndexStorageSelfTest.java | 26 +-
.../database/SwapPathConstructionSelfTest.java | 6 +
...aStreamProcessorMvccPersistenceSelfTest.java | 28 +
.../DataStreamProcessorMvccSelfTest.java | 9 +-
.../DataStreamProcessorPersistenceSelfTest.java | 28 +
.../DataStreamProcessorSelfTest.java | 128 +-
...rClientReconnectAfterClusterRestartTest.java | 8 +
.../datastreamer/DataStreamerImplSelfTest.java | 15 +
.../DataStreamerMultiThreadedSelfTest.java | 8 +-
.../DataStreamerMultinodeCreateCacheTest.java | 7 +-
.../datastreamer/DataStreamerTimeoutTest.java | 6 +
.../DataStreamerUpdateAfterLoadTest.java | 5 +
.../IgniteDataStreamerPerformanceTest.java | 7 +-
.../igfs/IgfsAbstractBaseSelfTest.java | 4 +-
.../processors/igfs/IgfsAbstractSelfTest.java | 82 +-
.../processors/igfs/IgfsAttributesSelfTest.java | 7 +-
.../igfs/IgfsBackupFailoverSelfTest.java | 10 +-
...lockMessageSystemPoolStarvationSelfTest.java | 5 +
...sCachePerBlockLruEvictionPolicySelfTest.java | 14 +-
.../processors/igfs/IgfsCacheSelfTest.java | 7 +-
.../igfs/IgfsDataManagerSelfTest.java | 12 +-
.../igfs/IgfsDualAbstractSelfTest.java | 81 +-
.../processors/igfs/IgfsFileInfoSelfTest.java | 6 +-
.../processors/igfs/IgfsFileMapSelfTest.java | 12 +-
...IgfsGroupDataBlockKeyMapperHashSelfTest.java | 7 +-
...SecondaryFileSystemDualAbstractSelfTest.java | 12 +-
...fsLocalSecondaryFileSystemProxySelfTest.java | 12 +-
.../igfs/IgfsMetaManagerSelfTest.java | 7 +-
.../processors/igfs/IgfsMetricsSelfTest.java | 9 +-
.../igfs/IgfsModeResolverSelfTest.java | 13 +-
.../processors/igfs/IgfsModesSelfTest.java | 16 +-
.../processors/igfs/IgfsOneClientNodeTest.java | 7 +-
.../igfs/IgfsPrimaryMultiNodeSelfTest.java | 8 +-
...maryRelaxedConsistencyMultiNodeSelfTest.java | 11 +-
.../processors/igfs/IgfsProcessorSelfTest.java | 47 +-
.../igfs/IgfsProcessorValidationSelfTest.java | 22 +-
...gfsSecondaryFileSystemInjectionSelfTest.java | 8 +-
...IpcEndpointRegistrationAbstractSelfTest.java | 8 +-
...dpointRegistrationOnLinuxAndMacSelfTest.java | 7 +-
...pcEndpointRegistrationOnWindowsSelfTest.java | 7 +-
.../processors/igfs/IgfsSizeSelfTest.java | 14 +-
.../processors/igfs/IgfsStartCacheTest.java | 7 +-
.../processors/igfs/IgfsStreamsSelfTest.java | 7 +
.../processors/igfs/IgfsTaskSelfTest.java | 8 +-
...IgfsByteDelimiterRecordResolverSelfTest.java | 14 +-
.../IgfsFixedLengthRecordResolverSelfTest.java | 7 +-
...sNewLineDelimiterRecordResolverSelfTest.java | 7 +-
...fsStringDelimiterRecordResolverSelfTest.java | 7 +-
.../GridJobMetricsProcessorLoadTest.java | 7 +-
...niteMessagingConfigVariationFullApiTest.java | 18 +
.../OdbcConfigurationValidationSelfTest.java | 13 +-
.../odbc/OdbcEscapeSequenceSelfTest.java | 40 +-
.../port/GridPortProcessorSelfTest.java | 8 +-
.../cache/GridCacheCommandHandlerSelfTest.java | 8 +-
.../handlers/log/GridLogCommandHandlerTest.java | 13 +
.../query/GridQueryCommandHandlerTest.java | 9 +
.../top/CacheTopologyCommandHandlerTest.java | 7 +
.../service/ClosureServiceClientsNodesTest.java | 12 +-
.../service/GridServiceClientNodeTest.java | 7 +
.../GridServiceContinuousQueryRedeployTest.java | 5 +
...ServiceDeploymentCompoundFutureSelfTest.java | 5 +
...rviceDeploymentExceptionPropagationTest.java | 5 +
.../GridServicePackagePrivateSelfTest.java | 5 +
.../GridServiceProcessorAbstractSelfTest.java | 25 +-
...GridServiceProcessorBatchDeploySelfTest.java | 17 +
...ServiceProcessorMultiNodeConfigSelfTest.java | 10 +
.../GridServiceProcessorMultiNodeSelfTest.java | 12 +-
.../GridServiceProcessorProxySelfTest.java | 14 +
.../GridServiceProcessorSingleNodeSelfTest.java | 7 +-
.../GridServiceProcessorStopSelfTest.java | 6 +
...GridServiceProxyClientReconnectSelfTest.java | 6 +
.../GridServiceProxyNodeStopSelfTest.java | 5 +
.../GridServiceReassignmentSelfTest.java | 10 +-
.../GridServiceSerializationSelfTest.java | 5 +
...gniteServiceConfigVariationsFullApiTest.java | 10 +-
...yment2ClassLoadersDefaultMarshallerTest.java | 7 +
...oymentClassLoadingDefaultMarshallerTest.java | 7 +
.../IgniteServiceDynamicCachesSelfTest.java | 6 +
...gniteServiceProxyTimeoutInitializedTest.java | 10 +-
.../service/IgniteServiceReassignmentTest.java | 9 +
.../ServiceDeploymentOnActivationTest.java | 14 +-
.../ServiceDeploymentOutsideBaselineTest.java | 16 +
.../ServicePredicateAccessCacheTest.java | 5 +
.../service/SystemCacheNotConfiguredTest.java | 5 +
.../timeout/GridTimeoutProcessorSelfTest.java | 15 +-
.../product/GridProductVersionSelfTest.java | 7 +-
.../internal/sql/SqlParserBulkLoadSelfTest.java | 6 +
.../sql/SqlParserCreateIndexSelfTest.java | 7 +-
.../sql/SqlParserDropIndexSelfTest.java | 5 +
.../sql/SqlParserSetStreamingSelfTest.java | 5 +
.../SqlParserTransactionalKeywordsSelfTest.java | 7 +
.../internal/sql/SqlParserUserSelfTest.java | 9 +-
.../IoStatisticsCachePersistenceSelfTest.java | 30 +
.../stat/IoStatisticsCacheSelfTest.java | 262 ++
.../stat/IoStatisticsManagerSelfTest.java | 154 +
...tatisticsMetricsLocalMXBeanImplSelfTest.java | 224 ++
.../internal/util/GridArraysSelfTest.java | 8 +
.../ignite/internal/util/GridCleanerTest.java | 5 +
.../internal/util/GridHandleTableSelfTest.java | 5 +
...dStartupWithUndefinedIgniteHomeSelfTest.java | 11 +-
.../internal/util/IgniteDevOnlyLogTest.java | 7 +
.../util/IgniteExceptionRegistrySelfTest.java | 8 +-
.../internal/util/IgniteUtilsSelfTest.java | 359 +-
.../internal/util/StripedExecutorTest.java | 10 +
.../util/future/GridCompoundFutureSelfTest.java | 11 +-
.../util/future/GridEmbeddedFutureSelfTest.java | 8 +-
.../util/future/GridFutureAdapterSelfTest.java | 12 +-
.../util/future/GridFutureQueueTest.java | 3 +-
.../util/future/IgniteFutureImplTest.java | 18 +-
.../nio/GridNioEmbeddedFutureSelfTest.java | 7 +-
.../util/future/nio/GridNioFutureSelfTest.java | 10 +-
...dUnsafeDataInputOutputByteOrderSelfTest.java | 24 +-
...GridUnsafeDataOutputArraySizingSelfTest.java | 12 +-
.../IpcSharedMemoryCrashDetectionSelfTest.java | 11 +-
.../IpcSharedMemoryNativeLoaderSelfTest.java | 7 +-
.../ipc/shmem/IpcSharedMemorySpaceSelfTest.java | 12 +-
.../ipc/shmem/IpcSharedMemoryUtilsSelfTest.java | 8 +-
.../nio/GridNioDelimitedBufferSelfTest.java | 8 +-
.../internal/util/nio/GridNioSelfTest.java | 17 +
.../util/nio/GridNioSessionMetaKeySelfTest.java | 7 +-
.../internal/util/nio/GridNioSslSelfTest.java | 8 +-
.../internal/util/nio/GridRoundTripTest.java | 8 +-
.../nio/IgniteExceptionInNioWorkerSelfTest.java | 5 +
.../nio/impl/GridNioFilterChainSelfTest.java | 7 +-
.../offheap/GridOffHeapMapAbstractSelfTest.java | 22 +-
.../GridOffHeapMapPerformanceAbstractTest.java | 9 +-
...idOffHeapPartitionedMapAbstractSelfTest.java | 29 +-
...apPartitionedMapPerformanceAbstractTest.java | 10 +-
.../unsafe/GridUnsafeMemorySelfTest.java | 16 +
.../unsafe/GridUnsafeStripedLruSefTest.java | 13 +-
.../tostring/CircularStringBuilderSelfTest.java | 6 +
.../tostring/GridToStringBuilderSelfTest.java | 100 +
.../tostring/IncludeSensitiveAbstractTest.java | 5 +
.../org/apache/ignite/jvmtest/FileIOTest.java | 9 +-
.../apache/ignite/jvmtest/FileLocksTest.java | 8 +-
.../ignite/jvmtest/LinkedHashMapTest.java | 9 +-
.../ignite/jvmtest/NetworkFailureTest.java | 10 +-
.../QueueSizeCounterMultiThreadedTest.java | 9 +-
.../jvmtest/ReadWriteLockMultiThreadedTest.java | 11 +-
.../org/apache/ignite/jvmtest/RegExpTest.java | 7 +-
.../jvmtest/ServerSocketMultiThreadedTest.java | 7 +-
.../ignite/lang/GridBasicPerformanceTest.java | 3 -
.../ignite/lang/GridByteArrayListSelfTest.java | 13 +-
.../ignite/lang/GridFuncPerformanceTest.java | 8 +-
.../lang/GridMetadataAwareAdapterLoadTest.java | 5 +
.../lang/GridMetadataAwareAdapterSelfTest.java | 5 +
.../ignite/lang/GridSetWrapperSelfTest.java | 12 +-
.../apache/ignite/lang/GridTupleSelfTest.java | 8 +
.../org/apache/ignite/lang/GridXSelfTest.java | 10 +-
.../apache/ignite/lang/IgniteUuidSelfTest.java | 11 +-
...dBoundedConcurrentLinkedHashMapSelfTest.java | 5 +
...GridBoundedConcurrentOrderedMapSelfTest.java | 8 +-
.../utils/GridBoundedPriorityQueueSelfTest.java | 5 +
.../GridCircularBufferPerformanceTest.java | 11 +-
.../lang/utils/GridCircularBufferSelfTest.java | 10 +-
.../GridConcurrentLinkedHashMapSelfTest.java | 11 +
.../GridConcurrentWeakHashSetSelfTest.java | 11 +-
.../lang/utils/GridConsistentHashSelfTest.java | 11 +-
.../lang/utils/GridLeanIdentitySetSelfTest.java | 7 +-
.../lang/utils/GridLeanMapPerformanceTest.java | 9 +-
.../ignite/lang/utils/GridLeanMapSelfTest.java | 17 +-
.../ignite/lang/utils/GridListSetSelfTest.java | 9 +-
.../lang/utils/GridStripedLockSelfTest.java | 9 +-
.../IgniteOffheapReadWriteLockSelfTest.java | 9 +
.../loadtests/GridCacheLoadPopulationTask.java | 1 -
.../loadtests/GridCacheMultiNodeLoadTest.java | 7 +-
.../loadtests/GridLoadTestStatistics.java | 1 -
.../loadtests/GridSingleExecutionTest.java | 1 -
.../cache/GridCacheAbstractLoadTest.java | 3 -
.../loadtests/cache/GridCacheBenchmark.java | 1 -
.../GridCacheWriteBehindStoreLoadTest.java | 9 +-
.../communication/GridIoManagerBenchmark.java | 2 -
.../communication/GridIoManagerBenchmark0.java | 12 +-
.../GridTcpCommunicationBenchmark.java | 2 +-
.../GridCachePartitionedAtomicLongLoadTest.java | 7 +-
.../direct/multisplit/GridLoadTestJob.java | 1 -
.../multisplit/GridMultiSplitsLoadTest.java | 7 +-
.../GridMultiSplitsRedeployLoadTest.java | 7 +-
...ridSingleSplitsNewNodesAbstractLoadTest.java | 6 +-
.../GridSingleSplitsRedeployLoadTest.java | 6 +-
.../direct/session/GridSessionLoadTest.java | 6 +-
.../direct/stealing/GridStealingLoadTest.java | 6 +-
.../ignite/loadtests/dsi/GridDsiClient.java | 5 +-
.../loadtests/dsi/GridDsiLifecycleBean.java | 1 -
.../ignite/loadtests/dsi/GridDsiPerfJob.java | 1 -
.../ignite/loadtests/dsi/GridDsiRequest.java | 4 +-
.../ignite/loadtests/dsi/GridDsiResponse.java | 3 -
.../ignite/loadtests/dsi/GridDsiSession.java | 1 -
.../cacheget/GridBenchmarkCacheGetLoadTest.java | 2 +-
...dBoundedConcurrentLinkedHashSetLoadTest.java | 3 +-
.../loadtests/hashmap/GridCacheTestContext.java | 7 +-
.../loadtests/hashmap/GridHashMapLoadTest.java | 7 +
.../job/GridJobExecutionLoadTestClient.java | 1 -
...GridJobExecutionLoadTestClientSemaphore.java | 1 -
.../job/GridJobExecutionSingleNodeLoadTest.java | 3 +-
.../loadtests/nio/GridNioBenchmarkTest.java | 1 -
.../ignite/loadtests/util/GridLoadTestArgs.java | 2 -
.../ignite/logger/java/JavaLoggerTest.java | 7 +-
...namicProxySerializationMultiJvmSelfTest.java | 7 +
.../marshaller/GridMarshallerAbstractTest.java | 30 +-
.../GridMarshallerMappingConsistencyTest.java | 6 +
.../GridMarshallerPerformanceTest.java | 10 +-
.../marshaller/MarshallerContextSelfTest.java | 10 +
.../MarshallerEnumDeadlockMultiJvmTest.java | 7 +
.../jdk/GridJdkMarshallerSelfTest.java | 1 -
...GridMessagingNoPeerClassLoadingSelfTest.java | 7 +-
.../ignite/messaging/GridMessagingSelfTest.java | 20 +-
.../messaging/IgniteMessagingSendAsyncTest.java | 12 +
.../IgniteMessagingWithClientTest.java | 7 +-
.../p2p/DeploymentClassLoaderCallableTest.java | 7 +
.../p2p/GridAbstractMultinodeRedeployTest.java | 1 -
...MultinodeRedeployContinuousModeSelfTest.java | 7 +-
...idMultinodeRedeployIsolatedModeSelfTest.java | 7 +-
...ridMultinodeRedeployPrivateModeSelfTest.java | 7 +-
...GridMultinodeRedeploySharedModeSelfTest.java | 7 +-
.../ignite/p2p/GridP2PClassLoadingSelfTest.java | 10 +-
.../GridP2PContinuousDeploymentSelfTest.java | 8 +-
.../GridP2PDifferentClassLoaderSelfTest.java | 16 +-
.../p2p/GridP2PDoubleDeploymentSelfTest.java | 11 +-
.../p2p/GridP2PHotRedeploymentSelfTest.java | 16 +-
.../p2p/GridP2PJobClassLoaderSelfTest.java | 10 +-
.../p2p/GridP2PLocalDeploymentSelfTest.java | 12 +-
.../GridP2PMissedResourceCacheSizeSelfTest.java | 16 +-
.../ignite/p2p/GridP2PNodeLeftSelfTest.java | 8 +-
.../p2p/GridP2PRecursionTaskSelfTest.java | 8 +
.../p2p/GridP2PRemoteClassLoadersSelfTest.java | 11 +-
.../p2p/GridP2PSameClassLoaderSelfTest.java | 8 +
.../p2p/GridP2PTestTaskExecutionTest.java | 8 +-
.../ignite/p2p/GridP2PTimeoutSelfTest.java | 15 +-
.../ignite/p2p/GridP2PUndeploySelfTest.java | 16 +-
.../ignite/p2p/P2PScanQueryUndeployTest.java | 5 +
.../ignite/p2p/P2PStreamingClassLoaderTest.java | 7 +
.../apache/ignite/p2p/SharedDeploymentTest.java | 5 +
.../platform/PlatformCacheEntryEventFilter.java | 4 +-
.../PlatformCacheEntryEventFilterFactory.java | 1 -
.../platform/PlatformCacheWriteMetricsTask.java | 1 -
.../PlatformComputeBinarizableArgTask.java | 1 -
.../platform/PlatformComputeDecimalTask.java | 3 +-
...latformDefaultJavaObjectFactorySelfTest.java | 13 +-
.../platform/PlatformDeployServiceTask.java | 2 -
.../platform/PlatformEventsWriteEventTask.java | 4 +-
.../PlatformJavaObjectFactoryProxySelfTest.java | 13 +-
.../SecurityPermissionSetBuilderTest.java | 7 +-
.../services/ServiceThreadPoolSelfTest.java | 8 +
...SessionCancelSiblingsFromFutureSelfTest.java | 9 +-
...ridSessionCancelSiblingsFromJobSelfTest.java | 10 +-
...idSessionCancelSiblingsFromTaskSelfTest.java | 11 +-
.../session/GridSessionCheckpointSelfTest.java | 7 +
.../GridSessionCollisionSpiSelfTest.java | 7 +-
...idSessionFutureWaitJobAttributeSelfTest.java | 9 +-
...dSessionFutureWaitTaskAttributeSelfTest.java | 9 +-
.../session/GridSessionJobFailoverSelfTest.java | 8 +-
...GridSessionJobWaitTaskAttributeSelfTest.java | 9 +-
.../ignite/session/GridSessionLoadSelfTest.java | 8 +-
.../GridSessionSetFutureAttributeSelfTest.java | 9 +-
...nSetFutureAttributeWaitListenerSelfTest.java | 7 +-
.../GridSessionSetJobAttribute2SelfTest.java | 7 +-
...GridSessionSetJobAttributeOrderSelfTest.java | 7 +-
.../GridSessionSetJobAttributeSelfTest.java | 9 +-
...sionSetJobAttributeWaitListenerSelfTest.java | 7 +-
.../GridSessionSetTaskAttributeSelfTest.java | 9 +-
...GridSessionTaskWaitJobAttributeSelfTest.java | 9 +-
.../GridSessionWaitAttributeSelfTest.java | 15 +-
.../spi/GridSpiLocalHostInjectionTest.java | 14 +-
.../spi/GridSpiStartStopAbstractTest.java | 8 +-
.../spi/GridTcpSpiForwardingSelfTest.java | 10 +-
.../GridCheckpointSpiAbstractTest.java | 10 +-
.../cache/CacheCheckpointSpiConfigSelfTest.java | 7 +-
.../CacheCheckpointSpiSecondCacheSelfTest.java | 7 +-
.../jdbc/JdbcCheckpointSpiConfigSelfTest.java | 7 +-
...GridSharedFsCheckpointSpiConfigSelfTest.java | 7 +-
...redFsCheckpointSpiMultiThreadedSelfTest.java | 7 +-
...heckpointSpiMultipleDirectoriesSelfTest.java | 7 +-
.../collision/GridTestCollisionTaskSession.java | 1 -
...GridFifoQueueCollisionSpiConfigSelfTest.java | 7 +-
.../GridFifoQueueCollisionSpiSelfTest.java | 10 +-
...bStealingCollisionSpiAttributesSelfTest.java | 13 +-
...idJobStealingCollisionSpiConfigSelfTest.java | 7 +-
...alingCollisionSpiCustomTopologySelfTest.java | 7 +-
.../GridJobStealingCollisionSpiSelfTest.java | 14 +-
...PriorityQueueCollisionSpiConfigSelfTest.java | 7 +-
.../GridPriorityQueueCollisionSpiSelfTest.java | 23 +-
.../GridAbstractCommunicationSelfTest.java | 11 +-
.../communication/GridCacheMessageSelfTest.java | 6 +
.../tcp/GridCacheDhtLockBackupSelfTest.java | 6 +-
.../GridTcpCommunicationSpiAbstractTest.java | 9 +-
...mmunicationSpiConcurrentConnectSelfTest.java | 15 +-
.../GridTcpCommunicationSpiConfigSelfTest.java | 6 +
.../tcp/GridTcpCommunicationSpiLanLoadTest.java | 9 +-
...cpCommunicationSpiMultithreadedSelfTest.java | 9 +-
...dTcpCommunicationSpiRecoveryAckSelfTest.java | 16 +-
...tionSpiRecoveryFailureDetectionSelfTest.java | 7 +-
...GridTcpCommunicationSpiRecoverySelfTest.java | 16 +-
...unicationSpiTcpFailureDetectionSelfTest.java | 7 +-
...IgniteTcpCommunicationConnectOnInitTest.java | 172 +
...iteTcpCommunicationHandshakeWaitSslTest.java | 35 +
...IgniteTcpCommunicationHandshakeWaitTest.java | 131 +
...CommunicationRecoveryAckClosureSelfTest.java | 16 +-
.../tcp/TcpCommunicationSpiDropNodesTest.java | 6 +
.../TcpCommunicationSpiFaultyClientTest.java | 6 +
...ommunicationSpiHalfOpenedConnectionTest.java | 6 +
.../TcpCommunicationSpiSkipMessageSendTest.java | 5 +
.../tcp/TcpCommunicationStatisticsTest.java | 5 +
.../local/GridLocalDeploymentSpiSelfTest.java | 6 +
.../AbstractDiscoveryRandomStartStopTest.java | 8 +-
.../discovery/AbstractDiscoverySelfTest.java | 14 +-
.../spi/discovery/AbstractDiscoveryTest.java | 9 +-
.../discovery/AuthenticationRestartTest.java | 5 +
...ClusterMetricsSnapshotSerializeSelfTest.java | 7 +
.../FilterDataForClientNodeDiscoveryTest.java | 8 +-
.../IgniteDiscoveryCacheReuseSelfTest.java | 7 +-
.../LongClientConnectToClusterTest.java | 5 +
.../DiscoveryUnmarshalVulnerabilityTest.java | 10 +
.../discovery/tcp/IgniteClientConnectTest.java | 8 +-
...gniteClientReconnectMassiveShutdownTest.java | 7 +
...pClientDiscoveryMarshallerCheckSelfTest.java | 7 +
...ClientDiscoverySpiCoordinatorChangeTest.java | 126 +
...lientDiscoverySpiFailureTimeoutSelfTest.java | 11 +
.../tcp/TcpClientDiscoverySpiMulticastTest.java | 9 +-
.../tcp/TcpClientDiscoverySpiSelfTest.java | 57 +-
.../TcpClientDiscoveryUnresolvedHostTest.java | 5 +
.../TcpDiscoveryClientSuspensionSelfTest.java | 7 +
.../tcp/TcpDiscoveryConcurrentStartTest.java | 8 +-
.../tcp/TcpDiscoveryIpFinderCleanerTest.java | 168 +
.../TcpDiscoveryMarshallerCheckSelfTest.java | 8 +-
.../tcp/TcpDiscoveryMultiThreadedTest.java | 31 +-
...veryNodeAttributesUpdateOnReconnectTest.java | 5 +
...DiscoveryNodeConfigConsistentIdSelfTest.java | 7 +-
.../TcpDiscoveryNodeConsistentIdSelfTest.java | 7 +-
.../TcpDiscoveryPendingMessageDeliveryTest.java | 69 +-
.../discovery/tcp/TcpDiscoveryRestartTest.java | 15 +-
.../tcp/TcpDiscoverySegmentationPolicyTest.java | 5 +
.../spi/discovery/tcp/TcpDiscoverySelfTest.java | 55 +-
.../tcp/TcpDiscoverySnapshotHistoryTest.java | 10 +-
.../tcp/TcpDiscoverySpiConfigSelfTest.java | 6 +
.../TcpDiscoverySpiFailureTimeoutSelfTest.java | 9 +
.../discovery/tcp/TcpDiscoverySpiMBeanTest.java | 5 +
.../tcp/TcpDiscoverySpiReconnectDelayTest.java | 12 +
.../discovery/tcp/TcpDiscoverySpiSelfTest.java | 1 -
.../tcp/TcpDiscoverySpiWildcardSelfTest.java | 7 +-
.../tcp/TcpDiscoverySslParametersTest.java | 12 +
.../TcpDiscoverySslSecuredUnsecuredTest.java | 12 +
.../TcpDiscoverySslTrustedUntrustedTest.java | 11 +
.../tcp/TcpDiscoveryWithWrongServerTest.java | 8 +
.../TcpDiscoveryIpFinderAbstractSelfTest.java | 6 +-
.../jdbc/TcpDiscoveryJdbcIpFinderSelfTest.java | 7 +-
.../TcpDiscoveryMulticastIpFinderSelfTest.java | 9 +-
.../TcpDiscoverySharedFsIpFinderSelfTest.java | 7 +-
.../vm/TcpDiscoveryVmIpFinderSelfTest.java | 9 +-
.../KeystoreEncryptionSpiSelfTest.java | 15 +-
...MemoryEventStorageMultiThreadedSelfTest.java | 7 +-
...GridMemoryEventStorageSpiConfigSelfTest.java | 7 +-
.../GridMemoryEventStorageSpiSelfTest.java | 7 +-
.../GridAlwaysFailoverSpiConfigSelfTest.java | 7 +-
.../always/GridAlwaysFailoverSpiSelfTest.java | 11 +-
...ridJobStealingFailoverSpiConfigSelfTest.java | 7 +-
...idJobStealingFailoverSpiOneNodeSelfTest.java | 8 +-
.../GridJobStealingFailoverSpiSelfTest.java | 14 +-
.../never/GridNeverFailoverSpiSelfTest.java | 7 +-
...dAdaptiveLoadBalancingSpiConfigSelfTest.java | 7 +-
...iveLoadBalancingSpiMultipleNodeSelfTest.java | 7 +-
.../GridAdaptiveLoadBalancingSpiSelfTest.java | 9 +-
...aptiveLoadBalancingSpiStartStopSelfTest.java | 1 -
.../GridInternalTasksLoadBalancingSelfTest.java | 6 +
...alancingNotPerTaskMultithreadedSelfTest.java | 7 +-
...dRobinLoadBalancingSpiLocalNodeSelfTest.java | 7 +-
...inLoadBalancingSpiMultipleNodesSelfTest.java | 8 +-
...RobinLoadBalancingSpiNotPerTaskSelfTest.java | 10 +-
...dRobinLoadBalancingSpiStartStopSelfTest.java | 1 -
...nLoadBalancingSpiTopologyChangeSelfTest.java | 7 +-
...tedRandomLoadBalancingSpiConfigSelfTest.java | 7 +-
...dWeightedRandomLoadBalancingSpiSelfTest.java | 8 +-
...RandomLoadBalancingSpiStartStopSelfTest.java | 1 -
...dRandomLoadBalancingSpiWeightedSelfTest.java | 7 +-
.../startup/GridRandomCommandLineLoader.java | 1 -
.../ignite/startup/GridVmNodesStarter.java | 1 -
.../cmdline/GridCommandLineLoaderTest.java | 5 +
.../GridCommandLineTransformerSelfTest.java | 13 +-
.../properties/NotStringSystemPropertyTest.java | 5 +
.../startup/servlet/GridServletLoaderTest.java | 8 +-
.../stream/socket/SocketStreamerSelfTest.java | 15 +-
...ocketStreamerUnmarshalVulnerabilityTest.java | 10 +
.../testframework/GridSpiTestContext.java | 12 -
.../GridTestExternalClassLoader.java | 1 -
.../ignite/testframework/GridTestNode.java | 3 +-
.../ignite/testframework/GridTestThread.java | 4 +-
.../ignite/testframework/GridTestUtils.java | 207 +-
.../ignite/testframework/LogListener.java | 76 +-
.../testframework/MvccFeatureChecker.java | 162 +
.../ConfigVariationsFactory.java | 1 -
.../ConfigVariationsTestSuiteBuilder.java | 2 -
.../configvariations/Parameters.java | 5 -
.../testframework/junits/GridAbstractTest.java | 194 +-
...IgniteCacheConfigVariationsAbstractTest.java | 2 -
.../junits/IgniteTestResources.java | 1 -
.../cache/GridAbstractCacheStoreSelfTest.java | 10 +
.../junits/cache/TestCacheSession.java | 2 -
.../cache/TestThreadLocalCacheSession.java | 2 -
.../junits/common/GridAbstractExamplesTest.java | 5 +-
.../GridAbstractLifecycleAwareSelfTest.java | 7 +-
.../junits/common/GridCommonAbstractTest.java | 111 +-
.../multijvm/IgniteCacheProcessProxy.java | 1 -
.../junits/multijvm/IgniteProcessProxy.java | 6 +-
.../junits/spi/GridSpiAbstractTest.java | 13 +-
.../testframework/junits/spi/GridSpiTest.java | 1 -
.../junits/spi/GridSpiTestConfig.java | 3 +-
.../ConfigVariationsTestSuiteBuilderTest.java | 7 +
.../test/ListeningTestLoggerTest.java | 91 +-
.../testframework/test/ParametersTest.java | 7 +-
.../test/VariationsIteratorTest.java | 13 +-
.../ignite/testsuites/IgniteBasicTestSuite.java | 136 +-
.../IgniteBasicWithPersistenceTestSuite.java | 43 +-
.../testsuites/IgniteBinaryCacheTestSuite.java | 46 +-
.../IgniteBinaryObjectsCacheTestSuite3.java | 18 +-
...IgniteBinaryObjectsComputeGridTestSuite.java | 6 +-
.../IgniteBinaryObjectsTestSuite.java | 140 +-
...eBlockExchangeOnReadOperationsTestSuite.java | 10 +-
...eCacheDataStructuresBinarySelfTestSuite.java | 51 +
.../IgniteCacheDataStructuresSelfTestSuite.java | 154 +-
.../IgniteCacheEvictionSelfTestSuite.java | 70 +-
.../IgniteCacheFailoverTestSuite.java | 39 +-
.../IgniteCacheFailoverTestSuite2.java | 36 +-
.../IgniteCacheFailoverTestSuite3.java | 10 +-
.../IgniteCacheFailoverTestSuiteSsl.java | 6 +-
...IgniteCacheFullApiMultiJvmSelfTestSuite.java | 54 +-
.../IgniteCacheFullApiSelfTestSuite.java | 147 +-
.../IgniteCacheIteratorsSelfTestSuite.java | 14 +-
.../IgniteCacheLoadConsistencyTestSuite.java | 10 +-
.../IgniteCacheMetricsSelfTestSuite.java | 45 +-
.../testsuites/IgniteCacheMvccTestSuite.java | 41 +-
.../testsuites/IgniteCacheMvccTestSuite1.java | 245 ++
.../testsuites/IgniteCacheMvccTestSuite2.java | 198 +
.../testsuites/IgniteCacheMvccTestSuite3.java | 134 +
.../testsuites/IgniteCacheMvccTestSuite4.java | 198 +
.../testsuites/IgniteCacheMvccTestSuite5.java | 94 +
.../testsuites/IgniteCacheMvccTestSuite6.java | 93 +
.../testsuites/IgniteCacheMvccTestSuite7.java | 81 +
.../testsuites/IgniteCacheMvccTestSuite8.java | 131 +
.../testsuites/IgniteCacheMvccTestSuite9.java | 57 +
.../IgniteCacheNearOnlySelfTestSuite.java | 31 +-
.../testsuites/IgniteCacheRestartTestSuite.java | 18 +-
.../IgniteCacheRestartTestSuite2.java | 18 +-
.../IgniteCacheTcpClientDiscoveryTestSuite.java | 43 +-
.../ignite/testsuites/IgniteCacheTestSuite.java | 317 +-
.../testsuites/IgniteCacheTestSuite2.java | 324 +-
.../testsuites/IgniteCacheTestSuite3.java | 162 +-
.../testsuites/IgniteCacheTestSuite4.java | 356 +-
.../testsuites/IgniteCacheTestSuite5.java | 79 +-
.../testsuites/IgniteCacheTestSuite6.java | 91 +-
.../testsuites/IgniteCacheTestSuite7.java | 56 +-
.../testsuites/IgniteCacheTestSuite8.java | 35 +-
.../testsuites/IgniteCacheTestSuite9.java | 36 +-
.../IgniteCacheTxRecoverySelfTestSuite.java | 28 +-
.../IgniteCacheWriteBehindTestSuite.java | 33 +-
.../testsuites/IgniteClientNodesTestSuite.java | 12 +-
.../IgniteClientReconnectTestSuite.java | 34 +-
.../testsuites/IgniteComputeGridTestSuite.java | 143 +-
.../IgniteContinuousTaskSelfTestSuite.java | 11 +-
.../testsuites/IgniteDatabaseTestSuite.java | 8 +-
.../testsuites/IgniteDbMemoryLeakTestSuite.java | 16 +-
.../IgniteExternalizableSelfTestSuite.java | 5 +-
.../ignite/testsuites/IgniteIgfsTestSuite.java | 106 +-
.../IgniteIpcSharedMemorySelfTestSuite.java | 11 +-
.../IgniteJobMetricsSelfTestSuite.java | 5 +-
.../testsuites/IgniteKernalSelfTestSuite.java | 131 +-
.../testsuites/IgniteLangSelfTestSuite.java | 57 +-
.../testsuites/IgniteLoggingSelfTestSuite.java | 3 +-
.../testsuites/IgniteLostAndFoundTestSuite.java | 27 +-
.../testsuites/IgniteP2PSelfTestSuite.java | 39 +-
.../testsuites/IgnitePdsMvccTestSuite.java | 90 +
.../testsuites/IgnitePdsMvccTestSuite2.java | 97 +
.../testsuites/IgnitePdsMvccTestSuite3.java | 43 +
.../testsuites/IgnitePdsMvccTestSuite4.java | 53 +
.../ignite/testsuites/IgnitePdsTestSuite.java | 105 +-
.../ignite/testsuites/IgnitePdsTestSuite2.java | 128 +-
.../ignite/testsuites/IgnitePdsTestSuite3.java | 26 +-
.../ignite/testsuites/IgnitePdsTestSuite4.java | 43 +-
.../testsuites/IgnitePerformanceTestSuite.java | 49 +-
.../testsuites/IgnitePlatformsTestSuite.java | 5 +-
.../testsuites/IgniteReproducingSuite.java | 2 +-
.../testsuites/IgniteRestHandlerTestSuite.java | 14 +-
.../IgniteSpiCheckpointSelfTestSuite.java | 27 +-
.../IgniteSpiCollisionSelfTestSuite.java | 28 +-
.../IgniteSpiCommunicationSelfTestSuite.java | 54 +-
.../IgniteSpiDeploymentSelfTestSuite.java | 7 +-
.../IgniteSpiDiscoverySelfTestSuite.java | 95 +-
.../IgniteSpiEventStorageSelfTestSuite.java | 11 +-
.../IgniteSpiFailoverSelfTestSuite.java | 21 +-
.../IgniteSpiLoadBalancingSelfTestSuite.java | 31 +-
.../ignite/testsuites/IgniteSpiTestSuite.java | 7 +-
.../testsuites/IgniteStandByClusterSuite.java | 43 +-
.../testsuites/IgniteStartUpTestSuite.java | 3 +-
.../testsuites/IgniteStreamSelfTestSuite.java | 7 +-
.../IgniteTaskSessionSelfTestSuite.java | 41 +-
.../IgniteTimeoutProcessorSelfTestSuite.java | 5 +-
.../IgniteTopologyValidatorTestSuite.java | 34 +-
.../testsuites/IgniteUtilSelfTestSuite.java | 85 +-
.../TxDeadlockDetectionTestSuite.java | 24 +-
.../GridThreadPoolExecutorServiceSelfTest.java | 11 +-
.../apache/ignite/thread/GridThreadTest.java | 7 +-
.../ignite/thread/IgniteThreadPoolSizeTest.java | 13 +
.../util/AttributeNodeFilterSelfTest.java | 11 +-
.../ignite/util/GridCommandHandlerSslTest.java | 173 +
.../ignite/util/GridCommandHandlerTest.java | 451 ++-
...dConcurrentLinkedDequeMultiThreadedTest.java | 6 +-
.../util/GridConcurrentLinkedDequeSelfTest.java | 11 +-
...rrentLinkedHashMapMultiThreadedSelfTest.java | 14 +
.../apache/ignite/util/GridIntListSelfTest.java | 8 +
.../GridInternalTaskUnusedWalSegmentsTest.java | 5 +
.../apache/ignite/util/GridLogThrottleTest.java | 5 +
.../ignite/util/GridLongListSelfTest.java | 11 +-
.../ignite/util/GridMessageCollectionTest.java | 5 +
.../ignite/util/GridPartitionMapSelfTest.java | 10 +
.../apache/ignite/util/GridQueueSelfTest.java | 7 +-
.../apache/ignite/util/GridRandomSelfTest.java | 5 +
.../ignite/util/GridSnapshotLockSelfTest.java | 7 +-
.../util/GridSpinReadWriteLockSelfTest.java | 10 +-
.../util/GridStringBuilderFactorySelfTest.java | 7 +-
.../util/GridTopologyHeapSizeSelfTest.java | 9 +-
.../apache/ignite/util/GridTransientTest.java | 7 +-
.../util/mbeans/GridMBeanBaselineTest.java | 5 +
.../util/mbeans/GridMBeanDisableSelfTest.java | 14 +-
.../mbeans/GridMBeanExoticNamesSelfTest.java | 8 +-
.../ignite/util/mbeans/GridMBeanSelfTest.java | 10 +
.../util/mbeans/WorkersControlMXBeanTest.java | 202 +-
.../ignite/development/utils/WalStat.java | 4 +-
modules/direct-io/README.md | 62 +
modules/direct-io/pom.xml | 17 +-
.../file/AlignedBuffersDirectFileIO.java | 112 +-
.../file/AlignedBuffersDirectFileIOFactory.java | 25 +-
.../persistence/file/IgniteNativeIoLib.java | 2 +-
...kPageCompressionIntegrationDirectIOTest.java | 31 +
...lWalModeChangeDuringRebalancingSelfTest.java | 6 +
.../persistence/file/IgniteFileIOTest.java | 23 +
.../IgniteNativeIoWithNoPersistenceTest.java | 5 +
.../testsuites/IgnitePdsNativeIoTestSuite.java | 9 +-
.../testsuites/IgnitePdsNativeIoTestSuite2.java | 16 +-
.../IgnitePdsReplacementNativeIoTest.java | 5 +
.../tests/p2p/GridExternalAffinityFunction.java | 1 -
.../ignite/tests/p2p/JobStealingTask.java | 2 -
.../uri/tasks/GridUriDeploymentTestTask1.java | 1 -
.../uri/tasks/GridUriDeploymentTestTask2.java | 1 -
.../apache/ignite/sink/flink/IgniteSink.java | 1 -
.../sink/flink/FlinkIgniteSinkSelfTest.java | 8 +-
.../flink/FlinkIgniteSinkSelfTestSuite.java | 7 +-
.../ignite/stream/flume/IgniteSinkTest.java | 5 +
.../stream/flume/IgniteSinkTestSuite.java | 6 +-
.../ignite/testsuites/IgniteGCETestSuite.java | 8 +-
.../query/h2/H2IndexingAbstractGeoSelfTest.java | 15 +-
.../testsuites/GeoSpatialIndexingTestSuite.java | 10 +-
.../hadoop/fs/v1/IgniteHadoopFileSystem.java | 7 -
.../hadoop/fs/v2/IgniteHadoopFileSystem.java | 2 -
.../IgniteHadoopClientProtocolProvider.java | 1 -
.../planner/HadoopAbstractMapReducePlanner.java | 1 -
.../processors/hadoop/HadoopSplitWrapper.java | 1 -
.../hadoop/delegate/HadoopDelegateUtils.java | 1 -
.../hadoop/impl/igfs/HadoopIgfsUtils.java | 1 -
.../processors/hadoop/impl/v2/HadoopDaemon.java | 1 -
.../hadoop/impl/v2/HadoopV2CleanupTask.java | 1 -
.../processors/hadoop/impl/v2/HadoopV2Job.java | 2 +-
.../hadoop/impl/v2/HadoopV2MapTask.java | 2 +-
.../hadoop/impl/v2/HadoopV2ReduceTask.java | 2 +-
.../hadoop/impl/v2/HadoopV2SetupTask.java | 1 -
.../hadoop/impl/v2/HadoopV2TaskContext.java | 1 -
.../hadoop/jobtracker/HadoopJobTracker.java | 5 +-
.../hadoop/proto/HadoopProtocolTaskAdapter.java | 1 -
.../hadoop/shuffle/HadoopShuffleJob.java | 3 -
.../shuffle/collections/HadoopSkipList.java | 1 -
.../hadoop/taskexecutor/HadoopRunnableTask.java | 1 -
.../child/HadoopChildProcessRunner.java | 1 -
.../HadoopExternalCommunication.java | 1 -
.../hadoop/impl/HadoopCommandLineTest.java | 8 +-
.../hadoop/impl/HadoopFileSystemsTest.java | 7 +-
.../hadoop/impl/HadoopGroupingTest.java | 10 +-
.../hadoop/impl/HadoopJobTrackerSelfTest.java | 8 +-
.../impl/HadoopMapReduceEmbeddedSelfTest.java | 8 +-
.../HadoopMapReduceErrorResilienceTest.java | 12 +-
.../hadoop/impl/HadoopMapReduceTest.java | 7 +-
.../impl/HadoopNoHadoopMapReduceTest.java | 5 +
.../HadoopSerializationWrapperSelfTest.java | 8 +-
.../hadoop/impl/HadoopSnappyTest.java | 5 +
.../hadoop/impl/HadoopSortingTest.java | 7 +-
.../hadoop/impl/HadoopSplitWrapperSelfTest.java | 7 +-
.../processors/hadoop/impl/HadoopStartup.java | 1 -
.../impl/HadoopTaskExecutionSelfTest.java | 11 +-
.../impl/HadoopTasksVersionsAbstractTest.java | 8 +
.../hadoop/impl/HadoopTeraSortTest.java | 6 +
.../hadoop/impl/HadoopTxConfigCacheTest.java | 9 +-
.../hadoop/impl/HadoopUserLibsSelfTest.java | 10 +
.../hadoop/impl/HadoopV2JobSelfTest.java | 7 +-
.../hadoop/impl/HadoopValidationSelfTest.java | 7 +-
.../HadoopWeightedMapReducePlannerTest.java | 7 +
...opClientProtocolMultipleServersSelfTest.java | 13 +-
.../client/HadoopClientProtocolSelfTest.java | 9 +-
...KerberosHadoopFileSystemFactorySelfTest.java | 9 +-
.../impl/igfs/Hadoop1OverIgfsProxyTest.java | 7 +-
.../igfs/HadoopFIleSystemFactorySelfTest.java | 6 +-
.../HadoopIgfs20FileSystemAbstractSelfTest.java | 62 +
.../igfs/HadoopIgfsDualAbstractSelfTest.java | 7 +-
...oopSecondaryFileSystemConfigurationTest.java | 9 +-
.../hadoop/impl/igfs/IgfsEventsTestSuite.java | 21 +-
.../igfs/IgfsNearOnlyMultiNodeSelfTest.java | 5 +
.../IgniteHadoopFileSystemAbstractSelfTest.java | 78 +-
...opFileSystemClientBasedAbstractSelfTest.java | 8 +-
...niteHadoopFileSystemClientBasedOpenTest.java | 7 +
.../IgniteHadoopFileSystemClientSelfTest.java | 7 +-
...IgniteHadoopFileSystemHandshakeSelfTest.java | 9 +-
.../IgniteHadoopFileSystemIpcCacheSelfTest.java | 7 +-
.../IgniteHadoopFileSystemLoggerSelfTest.java | 10 +-
...niteHadoopFileSystemLoggerStateSelfTest.java | 14 +-
...teHadoopFileSystemShmemAbstractSelfTest.java | 8 +-
...emShmemExternalToClientAbstractSelfTest.java | 8 +-
.../HadoopConcurrentHashMultimapSelftest.java | 8 +-
.../collections/HadoopHashMapSelfTest.java | 7 +-
.../collections/HadoopSkipListSelfTest.java | 8 +-
.../streams/HadoopDataStreamSelfTest.java | 9 +-
.../taskexecutor/HadoopExecutorServiceTest.java | 7 +-
.../HadoopExternalTaskExecutionSelfTest.java | 8 +-
.../HadoopExternalCommunicationSelfTest.java | 8 +-
.../impl/util/BasicUserNameMapperSelfTest.java | 7 +
.../util/ChainedUserNameMapperSelfTest.java | 9 +-
.../util/KerberosUserNameMapperSelfTest.java | 8 +
.../testsuites/IgniteHadoopTestSuite.java | 135 +-
.../IgniteIgfsLinuxAndMacOSTestSuite.java | 25 +-
.../hibernate/CacheHibernateBlobStore.java | 6 +-
.../config/factory-incorrect-store-cache.xml | 4 +
.../HibernateL2CacheConfigurationSelfTest.java | 23 +-
.../hibernate/HibernateL2CacheMultiJvmTest.java | 33 +-
.../hibernate/HibernateL2CacheSelfTest.java | 14 +-
.../HibernateL2CacheStrategySelfTest.java | 7 +-
.../CacheHibernateBlobStoreSelfTest.java | 4 -
.../CacheHibernateStoreFactorySelfTest.java | 11 +-
.../testsuites/IgniteHibernateTestSuite.java | 22 +-
.../hibernate/CacheHibernateBlobStore.java | 6 +-
.../config/factory-incorrect-store-cache.xml | 4 +
.../HibernateL2CacheConfigurationSelfTest.java | 23 +-
.../hibernate/HibernateL2CacheMultiJvmTest.java | 32 +-
.../hibernate/HibernateL2CacheSelfTest.java | 14 +-
.../HibernateL2CacheStrategySelfTest.java | 7 +-
.../CacheHibernateBlobStoreSelfTest.java | 10 +-
.../CacheHibernateStoreFactorySelfTest.java | 13 +-
.../testsuites/IgniteHibernate5TestSuite.java | 24 +-
modules/hibernate-5.3/licenses/apache-2.0.txt | 202 +
modules/hibernate-5.3/pom.xml | 183 +
.../cache/hibernate/HibernateKeyWrapper.java | 109 +
.../ignite/cache/hibernate/HibernateRegion.java | 74 +
.../cache/hibernate/HibernateRegionFactory.java | 154 +
.../hibernate/IgniteCachedDomainDataAccess.java | 121 +
.../hibernate/IgniteCollectionDataAccess.java | 61 +
.../cache/hibernate/IgniteDomainDataRegion.java | 182 +
.../cache/hibernate/IgniteEntityDataAccess.java | 80 +
.../hibernate/IgniteGeneralDataRegion.java | 89 +
.../hibernate/IgniteNaturalIdDataAccess.java | 80 +
.../hibernate/IgniteQueryResultsRegion.java | 70 +
.../cache/hibernate/IgniteTimestampsRegion.java | 39 +
.../ignite/cache/hibernate/package-info.java | 24 +
.../hibernate/CacheHibernateBlobStore.java | 545 +++
.../hibernate/CacheHibernateBlobStoreEntry.java | 89 +
.../CacheHibernateBlobStoreFactory.java | 235 ++
.../CacheHibernateStoreSessionListener.java | 226 ++
.../cache/store/hibernate/package-info.java | 22 +
.../CacheHibernateBlobStoreEntry.hbm.xml | 31 +
.../src/test/config/factory-cache.xml | 59 +
.../src/test/config/factory-cache1.xml | 61 +
.../config/factory-incorrect-store-cache.xml | 60 +
.../HibernateL2CacheConfigurationSelfTest.java | 409 +++
.../hibernate/HibernateL2CacheMultiJvmTest.java | 441 +++
.../hibernate/HibernateL2CacheSelfTest.java | 1991 ++++++++++
.../HibernateL2CacheStrategySelfTest.java | 570 +++
.../HibernateL2CacheTransactionalSelfTest.java | 154 +
...nateL2CacheTransactionalUseSyncSelfTest.java | 31 +
.../CacheHibernateBlobStoreNodeRestartTest.java | 46 +
.../CacheHibernateBlobStoreSelfTest.java | 118 +
.../CacheHibernateStoreFactorySelfTest.java | 336 ++
...heHibernateStoreSessionListenerSelfTest.java | 242 ++
.../cache/store/hibernate/hibernate.cfg.xml | 41 +
.../cache/store/hibernate/package-info.java | 22 +
.../IgniteBinaryHibernate53TestSuite.java | 37 +
.../testsuites/IgniteHibernate53TestSuite.java | 61 +
.../cache/store/hibernate/hibernate.cfg.xml | 41 +
.../HibernateAccessStrategyAdapter.java | 18 +-
.../HibernateAccessStrategyFactory.java | 144 +-
.../cache/hibernate/HibernateCacheProxy.java | 270 +-
.../HibernateNonStrictAccessStrategy.java | 8 +-
.../HibernateReadOnlyAccessStrategy.java | 8 +-
.../HibernateReadWriteAccessStrategy.java | 40 +-
.../HibernateTransactionalAccessStrategy.java | 26 +-
.../cache/query/CacheQueryPartitionInfo.java | 143 -
.../cache/query/GridCacheTwoStepQuery.java | 25 +-
.../processors/cache/query/QueryTable.java | 2 +
.../processors/query/h2/ConnectionManager.java | 513 +++
.../query/h2/DmlStatementsProcessor.java | 77 +-
.../query/h2/H2ResultSetIterator.java | 1 -
.../processors/query/h2/H2RowCache.java | 19 +-
.../processors/query/h2/H2RowCacheRegistry.java | 46 +-
.../internal/processors/query/h2/H2Schema.java | 13 +-
.../processors/query/h2/H2StatementCache.java | 3 +-
.../processors/query/h2/H2TableDescriptor.java | 206 +-
.../processors/query/h2/H2TableEngine.java | 2 +-
.../internal/processors/query/h2/H2Utils.java | 321 +-
.../processors/query/h2/IgniteH2Indexing.java | 2011 +++-------
.../processors/query/h2/IndexBuildClosure.java | 54 +
.../query/h2/IndexRebuildFullClosure.java | 49 +
.../query/h2/IndexRebuildPartialClosure.java | 76 +
.../query/h2/RebuildIndexFromHashClosure.java | 47 -
.../processors/query/h2/SchemaManager.java | 716 ++++
.../processors/query/h2/UpdateResult.java | 1 -
.../query/h2/affinity/PartitionAllNode.java | 47 +
.../h2/affinity/PartitionCompositeNode.java | 314 ++
.../PartitionCompositeNodeOperator.java | 44 +
.../h2/affinity/PartitionConstantNode.java | 60 +
.../query/h2/affinity/PartitionExtractor.java | 369 ++
.../query/h2/affinity/PartitionGroupNode.java | 118 +
.../query/h2/affinity/PartitionNode.java | 45 +
.../query/h2/affinity/PartitionNoneNode.java | 48 +
.../h2/affinity/PartitionParameterNode.java | 81 +
.../query/h2/affinity/PartitionResult.java | 64 +
.../query/h2/affinity/PartitionSingleNode.java | 89 +
.../h2/affinity/PartitionTableDescriptor.java | 73 +
.../query/h2/database/H2PkHashIndex.java | 1 -
.../processors/query/h2/database/H2Tree.java | 98 +-
.../query/h2/database/H2TreeClientIndex.java | 114 +
.../query/h2/database/H2TreeIndex.java | 269 +-
.../query/h2/database/H2TreeIndexBase.java | 53 +
.../query/h2/ddl/DdlStatementsProcessor.java | 122 +-
.../processors/query/h2/dml/DmlBatchSender.java | 2 +-
.../h2/dml/DmlPageProcessingErrorResult.java | 1 -
.../query/h2/dml/DmlPageProcessingResult.java | 1 -
.../processors/query/h2/dml/DmlUtils.java | 2 +-
.../processors/query/h2/dml/FastUpdate.java | 2 +-
.../processors/query/h2/dml/UpdatePlan.java | 48 +-
.../query/h2/dml/UpdatePlanBuilder.java | 80 +-
.../query/h2/opt/GridH2CollocationModel.java | 10 +-
.../query/h2/opt/GridH2DefaultTableEngine.java | 4 +-
.../query/h2/opt/GridH2IndexBase.java | 6 +-
.../query/h2/opt/GridH2KeyValueRowOnheap.java | 12 +-
.../query/h2/opt/GridH2PrimaryScanIndex.java | 1 -
.../query/h2/opt/GridH2RowDescriptor.java | 144 +-
.../query/h2/opt/GridH2SystemIndexFactory.java | 10 +-
.../processors/query/h2/opt/GridH2Table.java | 166 +-
.../query/h2/opt/GridLuceneLockFactory.java | 1 -
.../query/h2/sql/GridSqlQueryParser.java | 73 +-
.../query/h2/sql/GridSqlQuerySplitter.java | 340 +-
.../query/h2/twostep/GridMapQueryExecutor.java | 7 +-
.../query/h2/twostep/GridMergeIndex.java | 1 -
.../h2/twostep/GridReduceQueryExecutor.java | 637 +---
.../query/h2/twostep/MapQueryResults.java | 1 -
.../h2/twostep/ReducePartitionMapResult.java | 73 +
.../query/h2/twostep/ReducePartitionMapper.java | 641 ++++
.../h2/twostep/ReducePartitionsSpecializer.java | 61 +
.../h2/twostep/msg/GridH2IndexRangeRequest.java | 2 +
.../twostep/msg/GridH2IndexRangeResponse.java | 2 +
.../h2/twostep/msg/GridH2QueryRequest.java | 6 +-
.../h2/twostep/msg/GridH2ValueMessage.java | 2 +
.../visor/verify/ValidateIndexesClosure.java | 18 +-
.../visor/verify/VisorValidateIndexesTask.java | 29 +
...ityKeyNameAndValueFieldNameConflictTest.java | 275 ++
.../processors/cache/BigEntryQueryTest.java | 5 +
...MetadataConcurrentUpdateWithIndexesTest.java | 5 +
.../cache/BinarySerializationQuerySelfTest.java | 9 +
.../cache/BinaryTypeMismatchLoggingTest.java | 15 +-
...CacheAbstractQueryDetailMetricsSelfTest.java | 35 +-
.../CacheAbstractQueryMetricsSelfTest.java | 32 +-
.../CacheBinaryKeyConcurrentQueryTest.java | 5 +
.../cache/CacheConfigurationP2PTest.java | 7 +-
.../cache/CacheIndexStreamerTest.java | 6 +
.../cache/CacheIteratorScanQueryTest.java | 6 +
.../CacheOffheapBatchIndexingMultiTypeTest.java | 8 +-
...CacheOffheapBatchIndexingSingleTypeTest.java | 9 +-
.../CacheOperationsWithExpirationTest.java | 6 +
.../cache/CacheQueryBuildValueTest.java | 5 +
.../cache/CacheQueryEvictDataLostTest.java | 5 +
.../cache/CacheQueryFilterExpiredTest.java | 5 +
.../cache/CacheQueryNewClientSelfTest.java | 6 +
.../CacheRandomOperationsMultithreadedTest.java | 8 +
...CacheScanPartitionQueryFallbackSelfTest.java | 13 +-
.../cache/CacheSqlQueryValueCopySelfTest.java | 12 +
.../ClientReconnectAfterClusterRestartTest.java | 5 +
.../cache/ClusterReadOnlyModeSqlTest.java | 5 +
.../cache/DdlTransactionSelfTest.java | 10 +
.../cache/GridCacheCrossCacheQuerySelfTest.java | 7 +
...dCacheDynamicLoadOnClientPersistentTest.java | 44 +
.../cache/GridCacheDynamicLoadOnClientTest.java | 328 ++
.../cache/GridCacheFullTextQuerySelfTest.java | 11 +-
...GridCacheLazyQueryPartitionsReleaseTest.java | 6 +
.../cache/GridCacheOffHeapSelfTest.java | 7 +-
.../GridCacheOffheapIndexEntryEvictTest.java | 8 +-
.../cache/GridCacheOffheapIndexGetSelfTest.java | 9 +-
.../GridCacheQueryIndexDisabledSelfTest.java | 13 +-
.../GridCacheQuerySerializationSelfTest.java | 7 +-
.../cache/GridCacheQuerySimpleBenchmark.java | 7 +-
.../cache/GridIndexingWithNoopSwapSelfTest.java | 7 +-
.../IgniteBinaryObjectFieldsQuerySelfTest.java | 12 +
.../IgniteBinaryObjectQueryArgumentsTest.java | 13 +
...eBinaryWrappedObjectFieldsQuerySelfTest.java | 2 +-
.../IgniteCacheAbstractFieldsQuerySelfTest.java | 31 +-
.../cache/IgniteCacheAbstractQuerySelfTest.java | 107 +-
.../IgniteCacheCollocatedQuerySelfTest.java | 6 +
.../IgniteCacheConfigVariationsQueryTest.java | 14 +-
...acheConfigurationPrimitiveTypesSelfTest.java | 8 +-
.../IgniteCacheCrossCacheJoinRandomTest.java | 8 +
.../IgniteCacheDeleteSqlQuerySelfTest.java | 7 +
...acheDistributedJoinCollocatedAndNotTest.java | 7 +
...acheDistributedJoinCustomAffinityMapper.java | 5 +
.../IgniteCacheDistributedJoinNoIndexTest.java | 5 +
...ributedJoinPartitionedAndReplicatedTest.java | 7 +
...CacheDistributedJoinQueryConditionsTest.java | 9 +
.../cache/IgniteCacheDistributedJoinTest.java | 5 +
...cheDuplicateEntityConfigurationSelfTest.java | 6 +
.../IgniteCacheFieldsQueryNoDataSelfTest.java | 7 +-
...teCacheFullTextQueryNodeJoiningSelfTest.java | 7 +-
.../cache/IgniteCacheGroupsSqlTest.java | 11 +
.../IgniteCacheInsertSqlQuerySelfTest.java | 16 +-
...PartitionedAndReplicatedCollocationTest.java | 5 +
...teCacheJoinPartitionedAndReplicatedTest.java | 6 +
...IgniteCacheJoinQueryWithAffinityKeyTest.java | 10 +
.../cache/IgniteCacheLargeResultSelfTest.java | 7 +-
...PartitionOnAffinityRunAtomicCacheOpTest.java | 7 +
...niteCacheLockPartitionOnAffinityRunTest.java | 15 +
...titionOnAffinityRunWithCollisionSpiTest.java | 6 +
.../cache/IgniteCacheMergeSqlQuerySelfTest.java | 11 +
.../IgniteCacheMultipleIndexedTypesTest.java | 5 +
.../cache/IgniteCacheNoClassQuerySelfTest.java | 7 +-
.../IgniteCacheObjectKeyIndexingSelfTest.java | 9 +-
.../cache/IgniteCacheOffheapEvictQueryTest.java | 5 +
.../cache/IgniteCacheOffheapIndexScanTest.java | 7 +-
...niteCacheP2pUnmarshallingQueryErrorTest.java | 6 +
...hePartitionedQueryMultiThreadedSelfTest.java | 7 +-
...IgniteCachePrimitiveFieldsQuerySelfTest.java | 7 +-
.../cache/IgniteCacheQueriesLoadTest1.java | 5 +
.../IgniteCacheQueryH2IndexingLeakTest.java | 19 +-
.../cache/IgniteCacheQueryIndexSelfTest.java | 8 +-
.../cache/IgniteCacheQueryLoadSelfTest.java | 12 +-
.../IgniteCacheQueryMultiThreadedSelfTest.java | 19 +-
.../cache/IgniteCacheSqlQueryErrorSelfTest.java | 13 +
...gniteCacheSqlQueryMultiThreadedSelfTest.java | 8 +-
.../IgniteCacheStarvationOnRebalanceTest.java | 12 +-
.../cache/IgniteCacheUnionDuplicatesTest.java | 6 +-
.../IgniteCacheUpdateSqlQuerySelfTest.java | 10 +
...CheckClusterStateBeforeExecuteQueryTest.java | 5 +
...ClientReconnectCacheQueriesFailoverTest.java | 8 +-
.../cache/IgniteClientReconnectQueriesTest.java | 11 +-
.../cache/IgniteCrossCachesJoinsQueryTest.java | 11 +-
.../cache/IgniteDynamicSqlRestoreTest.java | 193 +-
.../cache/IgniteErrorOnRebalanceTest.java | 9 +
.../cache/IncorrectQueryEntityTest.java | 5 +
...ndexingCachePartitionLossPolicySelfTest.java | 89 +-
.../cache/QueryEntityCaseMismatchTest.java | 6 +-
.../QueryJoinWithDifferentNodeFiltersTest.java | 7 +-
.../cache/SqlFieldsQuerySelfTest.java | 7 +
.../cache/StartCachesInParallelTest.java | 155 +
.../authentication/SqlUserCommandSelfTest.java | 11 +
.../CacheBlockOnCreateDestoryIndexTest.java | 36 +
.../distributed/CacheBlockOnSqlQueryTest.java | 14 +
...lientQueryReplicatedNodeRestartSelfTest.java | 7 +-
...utedPartitionQueryConfigurationSelfTest.java | 7 +-
...butedPartitionQueryNodeRestartsSelfTest.java | 7 +-
...eCacheDistributedPartitionQuerySelfTest.java | 13 +-
...niteCacheDistributedQueryCancelSelfTest.java | 6 +
...butedQueryStopOnCancelOrTimeoutSelfTest.java | 20 +-
...niteCachePartitionedFieldsQuerySelfTest.java | 8 +-
.../IgniteCachePartitionedQuerySelfTest.java | 2 +-
.../IgniteCacheQueryNoRebalanceSelfTest.java | 5 +
.../near/IgniteCacheQueryNodeFailTest.java | 6 +
...QueryNodeRestartDistributedJoinSelfTest.java | 8 +-
.../IgniteCacheQueryNodeRestartSelfTest.java | 7 +-
.../IgniteCacheQueryNodeRestartSelfTest2.java | 5 +
...nCancelOrTimeoutDistributedJoinSelfTest.java | 13 +-
.../near/IgniteSqlQueryWithBaselineTest.java | 9 +-
...ldsQueryJoinNoPrimaryPartitionsSelfTest.java | 7 +-
...gniteCacheReplicatedFieldsQuerySelfTest.java | 7 +-
.../IgniteCacheReplicatedQuerySelfTest.java | 24 +-
.../cache/index/BasicIndexMultinodeTest.java | 28 +
.../processors/cache/index/BasicIndexTest.java | 357 +-
.../index/ComplexPrimaryKeyUnwrapSelfTest.java | 348 ++
.../ComplexSecondaryKeyUnwrapSelfTest.java | 255 ++
.../index/DuplicateKeyValueClassesSelfTest.java | 6 +
...ynamicColumnsAbstractConcurrentSelfTest.java | 21 +-
.../cache/index/DynamicColumnsAbstractTest.java | 2 -
.../DynamicIndexAbstractBasicSelfTest.java | 75 +-
.../DynamicIndexAbstractConcurrentSelfTest.java | 19 +-
.../index/DynamicIndexAbstractSelfTest.java | 2 +-
.../cache/index/H2ConnectionLeaksSelfTest.java | 10 +-
.../H2DynamicColumnsAbstractBasicSelfTest.java | 37 +-
.../index/H2DynamicIndexAbstractSelfTest.java | 11 +
.../H2DynamicIndexingComplexAbstractTest.java | 6 +-
.../cache/index/H2DynamicTableSelfTest.java | 127 +-
.../cache/index/H2RowCachePageEvictionTest.java | 8 +
.../cache/index/H2RowCacheSelfTest.java | 12 +
.../cache/index/IgniteDecimalSelfTest.java | 16 +-
.../index/IoStatisticsBasicIndexSelfTest.java | 500 +++
.../cache/index/LongIndexNameTest.java | 5 +
.../index/MvccEmptyTransactionSelfTest.java | 5 +
.../index/OptimizedMarshallerIndexNameTest.java | 5 +
.../index/QueryEntityValidationSelfTest.java | 8 +-
.../cache/index/SchemaExchangeSelfTest.java | 165 +-
...sactionCommandsWithMvccDisabledSelfTest.java | 7 +
...sactionsCommandsWithMvccEnabledSelfTest.java | 11 +-
.../cache/index/SqlTransactionsSelfTest.java | 13 +-
.../IgniteCacheLocalFieldsQuerySelfTest.java | 7 +-
...eCacheLocalQueryCancelOrTimeoutSelfTest.java | 9 +-
.../local/IgniteCacheLocalQuerySelfTest.java | 7 +
...acheMvccAbstractContinuousQuerySelfTest.java | 16 +-
...eMvccAbstractSqlCoordinatorFailoverTest.java | 180 +-
.../mvcc/CacheMvccBackupsAbstractTest.java | 19 +
.../mvcc/CacheMvccBasicContinuousQueryTest.java | 373 ++
.../cache/mvcc/CacheMvccBulkLoadTest.java | 7 +
...ContinuousWithTransformerClientSelfTest.java | 5 +
...nuousWithTransformerPartitionedSelfTest.java | 5 +
...inuousWithTransformerReplicatedSelfTest.java | 5 +
.../cache/mvcc/CacheMvccDmlSimpleTest.java | 8 +
...MvccPartitionedSelectForUpdateQueryTest.java | 8 +-
...ccPartitionedSqlCoordinatorFailoverTest.java | 71 +-
...cPartitionedSqlTxQueriesWithReducerTest.java | 7 +-
.../CacheMvccReplicatedSqlTxQueriesTest.java | 9 +-
...cheMvccSelectForUpdateQueryAbstractTest.java | 15 +-
.../cache/mvcc/CacheMvccSizeTest.java | 11 +
...CacheMvccSqlConfigurationValidationTest.java | 7 +
.../cache/mvcc/CacheMvccSqlLockTimeoutTest.java | 10 +
.../mvcc/CacheMvccSqlQueriesAbstractTest.java | 31 +
.../mvcc/CacheMvccSqlTxQueriesAbstractTest.java | 62 +-
...MvccSqlTxQueriesWithReducerAbstractTest.java | 20 +
.../mvcc/CacheMvccSqlUpdateCountersTest.java | 9 +
.../mvcc/CacheMvccStreamingInsertTest.java | 6 +
.../cache/mvcc/CacheMvccTxNodeMappingTest.java | 6 +
.../cache/mvcc/CacheMvccTxRecoveryTest.java | 15 +
.../mvcc/MvccRepeatableReadBulkOpsTest.java | 16 +
.../mvcc/MvccRepeatableReadOperationsTest.java | 9 +-
.../db/wal/IgniteWalRecoveryTest.java | 1157 +++---
.../transaction/DmlInsideTransactionTest.java | 247 ++
.../cache/ttl/CacheTtlAbstractSelfTest.java | 13 +-
...onnectorConfigurationValidationSelfTest.java | 25 +-
.../client/IgniteDataStreamerTest.java | 5 +
...gniteDbSingleNodeWithIndexingPutGetTest.java | 6 +
...eDbSingleNodeWithIndexingWalRestoreTest.java | 6 +
...oreQueryWithMultipleClassesPerCacheTest.java | 7 +-
.../IgnitePersistentStoreSchemaLoadTest.java | 8 +-
.../IgniteTwoRegionsRebuildIndexTest.java | 5 +
...iteCacheGroupsSqlSegmentedIndexSelfTest.java | 5 +
.../query/IgniteCachelessQueriesSelfTest.java | 26 +-
.../query/IgniteQueryDedicatedPoolTest.java | 7 +
.../query/IgniteSqlDefaultValueTest.java | 9 +
.../query/IgniteSqlDistributedJoinSelfTest.java | 5 +
.../IgniteSqlEntryCacheModeAgnosticTest.java | 5 +
.../IgniteSqlGroupConcatCollocatedTest.java | 7 +
.../IgniteSqlGroupConcatNotCollocatedTest.java | 7 +
.../query/IgniteSqlKeyValueFieldsTest.java | 795 ++--
.../query/IgniteSqlNotNullConstraintTest.java | 46 +
.../query/IgniteSqlParameterizedQueryTest.java | 5 +
.../query/IgniteSqlQueryParallelismTest.java | 8 +-
.../processors/query/IgniteSqlRoutingTest.java | 18 +
.../query/IgniteSqlSchemaIndexingTest.java | 18 +-
.../query/IgniteSqlSegmentedIndexSelfTest.java | 10 +
...teSqlSkipReducerOnUpdateDmlFlagSelfTest.java | 24 +
...IgniteSqlSkipReducerOnUpdateDmlSelfTest.java | 15 +-
.../query/IgniteSqlSplitterSelfTest.java | 52 +-
.../processors/query/LazyQuerySelfTest.java | 9 +-
.../MultipleStatementsSqlQuerySelfTest.java | 8 +
.../processors/query/RunningQueriesTest.java | 98 +
.../query/SqlIllegalSchemaSelfTest.java | 188 +-
.../query/SqlNestedQuerySelfTest.java | 80 +
.../query/SqlPushDownFunctionTest.java | 5 +
.../processors/query/SqlSchemaSelfTest.java | 37 +-
.../query/SqlSystemViewsSelfTest.java | 12 +-
.../query/h2/GridIndexRebuildSelfTest.java | 16 +-
...GridIndexRebuildWithMvccEnabledSelfTest.java | 5 +
.../h2/GridIndexingSpiAbstractSelfTest.java | 644 +---
...H2ResultSetIteratorNullifyOnEndSelfTest.java | 194 +-
.../query/h2/H2StatementCacheSelfTest.java | 9 +-
.../query/h2/IgniteSqlBigIntegerKeyTest.java | 7 +
.../query/h2/IgniteSqlQueryMinMaxTest.java | 13 +
.../query/h2/PreparedStatementExSelfTest.java | 8 +-
.../query/h2/ThreadLocalObjectPoolSelfTest.java | 9 +
.../h2/database/InlineIndexHelperTest.java | 30 +
.../h2/sql/AbstractH2CompareQueryTest.java | 2 -
.../query/h2/sql/BaseH2CompareQueryTest.java | 21 +-
.../query/h2/sql/ExplainSelfTest.java | 160 +
.../query/h2/sql/GridQueryParsingTest.java | 37 +-
.../query/h2/sql/H2CompareBigQueryTest.java | 7 +-
.../AndOperationExtractPartitionSelfTest.java | 261 ++
.../h2/twostep/CacheQueryMemoryLeakTest.java | 5 +
.../twostep/CreateTableWithDateKeySelfTest.java | 7 +
...sappearedCacheCauseRetryMessageSelfTest.java | 11 +-
...appearedCacheWasNotFoundMessageSelfTest.java | 17 +-
.../InOperationExtractPartitionSelfTest.java | 13 +-
.../query/h2/twostep/JoinSqlTestHelper.java | 72 +-
.../NonCollocatedRetryMessageSelfTest.java | 9 +-
.../h2/twostep/RetryCauseMessageSelfTest.java | 18 +-
.../h2/twostep/TableViewSubquerySelfTest.java | 5 +
...ePartitionedAtomicColumnConstraintsTest.java | 438 ++-
...ionedTransactionalColumnConstraintsTest.java | 4 +-
...ansactionalSnapshotColumnConstraintTest.java | 142 +
...ansactionalSnapshotColumnConstraintTest.java | 142 +
.../sql/IgniteSQLColumnConstraintsTest.java | 307 +-
...gniteTransactionSQLColumnConstraintTest.java | 77 +
...onnectorConfigurationValidationSelfTest.java | 13 +-
.../FetchingQueryCursorStressTest.java | 2 -
.../tcp/GridOrderedMessageCancelSelfTest.java | 8 +-
.../org/apache/ignite/sqltests/BaseSqlTest.java | 24 +-
.../ignite/sqltests/PartitionedSqlTest.java | 10 +
.../ignite/sqltests/ReplicatedSqlTest.java | 19 +
.../IgniteBinaryCacheQueryTestSuite.java | 509 ++-
.../IgniteBinaryCacheQueryTestSuite2.java | 107 +-
.../IgniteCacheAffinityRunTestSuite.java | 18 +-
...ockExchangeOnSqlReadOperationsTestSuite.java | 5 +-
.../testsuites/IgniteCacheMvccSqlTestSuite.java | 101 +-
.../IgniteCacheQuerySelfTestSuite.java | 495 ---
.../IgniteCacheQuerySelfTestSuite2.java | 130 -
.../IgniteCacheQuerySelfTestSuite3.java | 146 +-
.../IgniteCacheQuerySelfTestSuite4.java | 24 +-
.../IgniteCacheQuerySelfTestSuite5.java | 73 +
.../IgniteCacheQuerySelfTestSuite6.java | 73 +
...acheWithIndexingAndPersistenceTestSuite.java | 8 +-
.../IgniteCacheWithIndexingTestSuite.java | 55 +-
...IgniteDbMemoryLeakWithIndexingTestSuite.java | 8 +-
.../IgnitePdsWithIndexingCoreTestSuite.java | 57 +-
.../IgnitePdsWithIndexingTestSuite.java | 20 +-
.../util/GridCommandHandlerIndexingTest.java | 13 +-
...ityWithJsr310Java8DateTimeApiFieldsTest.java | 12 +
...yJsr310Java8DateTimeApiSupportTestSuite.java | 3 +-
.../apache/ignite/logger/jcl/JclLoggerTest.java | 7 +-
.../ignite/testsuites/IgniteJclTestSuite.java | 8 +-
.../stream/jms11/IgniteJmsStreamerTest.java | 26 +-
.../cache/jta/websphere/WebSphereTmFactory.java | 1 -
.../cache/CacheJndiTmFactorySelfTest.java | 6 +
...CacheJtaConfigurationValidationSelfTest.java | 5 +
...CacheJtaFactoryConfigValidationSelfTest.java | 7 +
.../cache/GridJtaLifecycleAwareSelfTest.java | 8 +
.../GridJtaTransactionManagerSelfTest.java | 6 +
.../cache/jta/AbstractCacheJtaSelfTest.java | 1 -
...titionedCacheJtaLookupClassNameSelfTest.java | 2 +-
.../ignite/testsuites/IgniteJtaTestSuite.java | 18 +-
modules/kafka/pom.xml | 1 +
.../kafka/IgniteKafkaStreamerSelfTestSuite.java | 10 +-
.../kafka/KafkaIgniteStreamerSelfTest.java | 5 +
.../kafka/connect/IgniteSinkConnectorTest.java | 10 +-
.../connect/IgniteSourceConnectorTest.java | 7 +-
modules/kubernetes/pom.xml | 6 +
.../TcpDiscoveryKubernetesIpFinderSelfTest.java | 7 +-
.../testsuites/IgniteKubernetesTestSuite.java | 8 +-
.../logger/log4j/GridLog4jConfigUpdateTest.java | 12 +-
.../log4j/GridLog4jCorrectFileNameTest.java | 24 +-
.../logger/log4j/GridLog4jInitializedTest.java | 7 +-
.../logger/log4j/GridLog4jLoggingFileTest.java | 17 +-
.../logger/log4j/GridLog4jLoggingPathTest.java | 17 +-
.../logger/log4j/GridLog4jLoggingUrlTest.java | 17 +-
.../log4j/GridLog4jNotInitializedTest.java | 7 +-
.../logger/log4j2/Log4j2ConfigUpdateTest.java | 10 +-
.../logger/log4j2/Log4j2LoggerMarkerTest.java | 24 +-
.../logger/log4j2/Log4j2LoggerSelfTest.java | 26 +-
.../log4j2/Log4j2LoggerVerboseModeSelfTest.java | 11 +-
.../testsuites/IgniteLog4j2TestSuite.java | 14 +-
modules/mesos/pom.xml | 48 -
.../ignite/mesos/resource/IgniteProvider.java | 1 -
.../org/apache/ignite/IgniteMesosTestSuite.java | 8 +-
modules/ml/pom.xml | 13 +
.../main/java/org/apache/ignite/ml/Model.java | 11 +
.../ml/clustering/kmeans/KMeansTrainer.java | 9 +-
.../ml/composition/BaggingModelTrainer.java | 200 -
.../boosting/GDBBinaryClassifierTrainer.java | 12 +-
.../boosting/GDBLearningStrategy.java | 21 +-
.../boosting/GDBRegressionTrainer.java | 6 +
.../ml/composition/boosting/GDBTrainer.java | 20 +-
.../convergence/ConvergenceChecker.java | 10 +-
.../mean/MeanAbsValueConvergenceChecker.java | 2 +-
.../simple/ConvergenceCheckerStub.java | 5 +-
.../stacking/SimpleStackedDatasetTrainer.java | 125 +
.../stacking/StackedDatasetTrainer.java | 412 +++
.../ml/composition/stacking/StackedModel.java | 106 +
.../stacking/StackedVectorDatasetTrainer.java | 151 +
.../ml/composition/stacking/package-info.java | 22 +
.../org/apache/ignite/ml/dataset/Dataset.java | 61 +-
.../ignite/ml/dataset/DatasetBuilder.java | 22 +-
.../ignite/ml/dataset/DatasetFactory.java | 184 +-
.../ml/dataset/PartitionContextBuilder.java | 28 +-
.../ignite/ml/dataset/PartitionDataBuilder.java | 31 +-
.../ignite/ml/dataset/UpstreamTransformer.java | 50 +
.../ml/dataset/UpstreamTransformerBuilder.java | 72 +
.../BootstrappedDatasetBuilder.java | 15 +-
.../dataset/impl/cache/CacheBasedDataset.java | 48 +-
.../impl/cache/CacheBasedDatasetBuilder.java | 33 +-
.../dataset/impl/cache/util/ComputeUtils.java | 133 +-
.../ml/dataset/impl/local/LocalDataset.java | 20 +-
.../dataset/impl/local/LocalDatasetBuilder.java | 91 +-
.../ml/dataset/primitive/DatasetWrapper.java | 5 +-
...eatureMatrixWithLabelsOnHeapDataBuilder.java | 7 +-
.../builder/context/EmptyContextBuilder.java | 3 +-
.../builder/data/SimpleDatasetDataBuilder.java | 5 +-
.../data/SimpleLabeledDatasetDataBuilder.java | 5 +-
.../DefaultLearningEnvironmentBuilder.java | 178 +
.../ml/environment/LearningEnvironment.java | 19 +-
.../environment/LearningEnvironmentBuilder.java | 167 +-
.../ml/environment/logging/ConsoleLogger.java | 3 +
.../parallelism/DefaultParallelismStrategy.java | 1 +
.../parallelism/ParallelismStrategy.java | 1 -
.../apache/ignite/ml/inference/InfModel.java | 37 +
.../ignite/ml/inference/ModelDescriptor.java | 94 +
.../ignite/ml/inference/ModelSignature.java | 62 +
.../inference/builder/AsyncInfModelBuilder.java | 43 +
.../IgniteDistributedInfModelBuilder.java | 368 ++
.../builder/SingleInfModelBuilder.java | 34 +
.../inference/builder/SyncInfModelBuilder.java | 42 +
.../builder/ThreadedInfModelBuilder.java | 86 +
.../ml/inference/builder/package-info.java | 22 +
.../ignite/ml/inference/package-info.java | 22 +
.../parser/IgniteFunctionInfModelParser.java | 76 +
.../ml/inference/parser/InfModelParser.java | 38 +
.../parser/TensorFlowBaseInfModelParser.java | 216 ++
.../parser/TensorFlowGraphInfModelParser.java | 40 +
.../TensorFlowSavedModelInfModelParser.java | 70 +
.../ml/inference/parser/package-info.java | 22 +
.../reader/FileSystemInfModelReader.java | 61 +
.../reader/InMemoryInfModelReader.java | 67 +
.../ml/inference/reader/InfModelReader.java | 33 +
.../reader/ModelStorageInfModelReader.java | 64 +
.../ml/inference/reader/package-info.java | 22 +
.../IgniteModelDescriptorStorage.java | 66 +
.../descriptor/LocalModelDescriptorStorage.java | 52 +
.../descriptor/ModelDescriptorStorage.java | 58 +
.../ModelDescriptorStorageFactory.java | 43 +
.../storage/descriptor/package-info.java | 22 +
.../storage/model/DefaultModelStorage.java | 313 ++
.../ml/inference/storage/model/Directory.java | 42 +
.../ignite/ml/inference/storage/model/File.java | 48 +
.../storage/model/FileOrDirectory.java | 41 +
.../model/IgniteModelStorageProvider.java | 58 +
.../model/LocalModelStorageProvider.java | 56 +
.../inference/storage/model/ModelStorage.java | 115 +
.../storage/model/ModelStorageFactory.java | 42 +
.../storage/model/ModelStorageProvider.java | 56 +
.../inference/storage/model/package-info.java | 22 +
.../ml/inference/storage/package-info.java | 22 +
.../ml/inference/util/DirectorySerializer.java | 133 +
.../ignite/ml/inference/util/package-info.java | 22 +
.../java/org/apache/ignite/ml/knn/KNNUtils.java | 9 +-
.../ml/knn/ann/ANNClassificationTrainer.java | 10 +-
.../KNNClassificationTrainer.java | 10 +-
.../ml/knn/regression/KNNRegressionTrainer.java | 9 +-
.../exceptions/preprocessing/package-info.java | 22 +
.../ml/math/functions/IgniteFunction.java | 21 +
.../ignite/ml/math/isolve/lsqr/LSQROnHeap.java | 6 +-
.../primitives/matrix/impl/DenseMatrix.java | 2 +-
.../ml/math/primitives/vector/VectorUtils.java | 83 +-
.../vector/storage/DenseVectorStorage.java | 2 +-
.../ignite/ml/multiclass/MultiClassModel.java | 115 +
.../ignite/ml/multiclass/OneVsRestTrainer.java | 148 +
.../ignite/ml/multiclass/package-info.java | 22 +
.../discrete/DiscreteNaiveBayesModel.java | 127 +
.../discrete/DiscreteNaiveBayesSumsHolder.java | 54 +
.../discrete/DiscreteNaiveBayesTrainer.java | 233 ++
.../ml/naivebayes/discrete/package-info.java | 22 +
.../gaussian/GaussianNaiveBayesModel.java | 8 +-
.../gaussian/GaussianNaiveBayesSumsHolder.java | 6 +-
.../gaussian/GaussianNaiveBayesTrainer.java | 33 +-
.../org/apache/ignite/ml/nn/MLPTrainer.java | 1 +
.../org/apache/ignite/ml/pipeline/Pipeline.java | 16 +-
.../ml/preprocessing/PreprocessingTrainer.java | 66 +-
.../binarization/BinarizationTrainer.java | 5 +-
.../encoding/EncoderSortingStrategy.java | 31 +
.../preprocessing/encoding/EncoderTrainer.java | 37 +-
.../preprocessing/imputing/ImputerTrainer.java | 10 +-
.../maxabsscaling/MaxAbsScalerTrainer.java | 10 +-
.../minmaxscaling/MinMaxScalerTrainer.java | 12 +-
.../normalization/NormalizationTrainer.java | 5 +-
.../standardscaling/StandardScalerData.java | 56 +
.../StandardScalerPreprocessor.java | 91 +
.../standardscaling/StandardScalerTrainer.java | 105 +
.../standardscaling/package-info.java | 22 +
.../linear/LinearRegressionLSQRTrainer.java | 3 +-
.../logistic/LogisticRegressionModel.java | 205 ++
.../logistic/LogisticRegressionSGDTrainer.java | 245 ++
.../binomial/LogisticRegressionModel.java | 205 --
.../binomial/LogisticRegressionSGDTrainer.java | 247 --
.../logistic/binomial/package-info.java | 22 -
.../LogRegressionMultiClassModel.java | 115 -
.../LogRegressionMultiClassTrainer.java | 268 --
.../logistic/multiclass/package-info.java | 22 -
.../ml/selection/cv/CrossValidationResult.java | 4 +-
.../cursor/CacheBasedLabelPairCursor.java | 6 +-
.../BinaryClassificationEvaluator.java | 184 +
.../selection/scoring/evaluator/Evaluator.java | 104 -
.../scoring/evaluator/package-info.java | 22 +
.../ml/selection/scoring/metric/Accuracy.java | 5 +
.../BinaryClassificationMetricValues.java | 185 +
.../metric/BinaryClassificationMetrics.java | 86 +
.../selection/scoring/metric/ClassMetric.java | 37 +
.../ml/selection/scoring/metric/Fmeasure.java | 22 +-
.../ml/selection/scoring/metric/Metric.java | 9 +
.../ml/selection/scoring/metric/Precision.java | 23 +-
.../ml/selection/scoring/metric/Recall.java | 22 +-
.../metric/UnknownClassLabelException.java | 38 +
.../LabelPartitionDataBuilderOnHeap.java | 8 +-
...abeledDatasetPartitionDataBuilderOnHeap.java | 7 +-
.../svm/SVMLinearBinaryClassificationModel.java | 194 -
.../SVMLinearBinaryClassificationTrainer.java | 355 --
.../ml/svm/SVMLinearClassificationModel.java | 194 +
.../ml/svm/SVMLinearClassificationTrainer.java | 356 ++
.../SVMLinearMultiClassClassificationModel.java | 114 -
...VMLinearMultiClassClassificationTrainer.java | 268 --
.../ml/trainers/AdaptableDatasetModel.java | 98 +
.../ml/trainers/AdaptableDatasetTrainer.java | 120 +
.../ignite/ml/trainers/DatasetTrainer.java | 62 +-
.../ignite/ml/trainers/TrainerTransformers.java | 320 ++
.../BaggingUpstreamTransformer.java | 79 +
.../ml/trainers/transformers/package-info.java | 22 +
.../org/apache/ignite/ml/tree/DecisionTree.java | 11 +-
.../tree/DecisionTreeClassificationTrainer.java | 6 +
.../ml/tree/DecisionTreeRegressionTrainer.java | 6 +
.../GDBBinaryClassifierOnTreesTrainer.java | 6 +
.../boosting/GDBOnTreesLearningStrategy.java | 3 +-
.../boosting/GDBRegressionOnTreesTrainer.java | 6 +
.../ml/tree/data/DecisionTreeDataBuilder.java | 7 +-
.../impurity/ImpurityMeasureCalculator.java | 9 +
.../RandomForestClassifierTrainer.java | 6 +
.../tree/randomforest/RandomForestTrainer.java | 1 +
.../impurity/ImpurityHistogramsComputer.java | 2 +-
.../ignite/ml/util/MLSandboxDatasets.java | 90 +
.../org/apache/ignite/ml/util/MnistUtils.java | 79 +-
.../apache/ignite/ml/util/SandboxMLCache.java | 133 +
.../java/org/apache/ignite/ml/util/Utils.java | 32 +
.../apache/ignite/ml/util/plugin/MLPlugin.java | 30 +
.../ml/util/plugin/MLPluginConfiguration.java | 77 +
.../ignite/ml/util/plugin/MLPluginProvider.java | 195 +
.../org.apache.ignite.plugin.PluginProvider | 1 +
.../datasets/boston_housing_dataset.txt | 505 +++
.../resources/datasets/cleared_machines.csv | 209 ++
.../english_vs_scottish_binary_dataset.csv | 14 +
.../resources/datasets/glass_identification.csv | 116 +
modules/ml/src/main/resources/datasets/iris.txt | 150 +
.../main/resources/datasets/mortalitydata.csv | 53 +
.../ml/src/main/resources/datasets/titanic.csv | 1310 +++++++
.../resources/datasets/two_classed_iris.csv | 100 +
modules/ml/src/main/resources/datasets/wine.txt | 178 +
.../org/apache/ignite/ml/IgniteMLTestSuite.java | 55 +-
.../java/org/apache/ignite/ml/TestUtils.java | 117 +-
.../ignite/ml/common/CollectionsTest.java | 19 +-
.../ignite/ml/common/LocalModelsTest.java | 54 +-
.../apache/ignite/ml/common/TrainerTest.java | 29 +
.../ignite/ml/composition/BaggingTest.java | 217 ++
.../ml/composition/CompositionTestSuite.java | 4 +-
.../ignite/ml/composition/StackingTest.java | 172 +
.../MeanAbsValueConvergenceCheckerTest.java | 10 +-
.../MedianOfMedianConvergenceCheckerTest.java | 10 +-
.../OnMajorityPredictionsAggregatorTest.java | 3 +
.../ignite/ml/dataset/DatasetTestSuite.java | 40 +-
.../cache/CacheBasedDatasetBuilderTest.java | 11 +-
.../impl/cache/CacheBasedDatasetTest.java | 11 +-
.../impl/cache/util/ComputeUtilsTest.java | 17 +-
.../impl/local/LocalDatasetBuilderTest.java | 14 +-
.../ml/dataset/primitive/SimpleDatasetTest.java | 2 +
.../primitive/SimpleLabeledDatasetTest.java | 11 +-
.../LearningEnvironmentBuilderTest.java | 36 +-
.../ml/environment/LearningEnvironmentTest.java | 130 +-
.../ignite/ml/inference/InferenceTestSuite.java | 50 +
.../IgniteDistributedInfModelBuilderTest.java | 70 +
.../builder/InfModelBuilderTestUtil.java | 53 +
.../builder/SingleInfModelBuilderTest.java | 42 +
.../builder/ThreadedInfModelBuilderTest.java | 44 +
.../storage/model/AbstractModelStorageTest.java | 142 +
.../storage/model/DefaultModelStorageTest.java | 143 +
.../inference/util/DirectorySerializerTest.java | 126 +
.../ignite/ml/knn/LabeledVectorSetTest.java | 1 +
.../ml/math/isolve/lsqr/LSQROnHeapTest.java | 4 +
.../matrix/SparseMatrixConstructorTest.java | 1 -
.../primitives/vector/AbstractVectorTest.java | 5 +-
.../primitives/vector/MatrixVectorViewTest.java | 10 -
.../primitives/vector/VectorAttributesTest.java | 2 +-
.../primitives/vector/VectorFoldMapTest.java | 2 +-
.../vector/VectorImplementationsTest.java | 8 +-
.../ml/multiclass/MultiClassTestSuite.java | 32 +
.../ml/multiclass/OneVsRestTrainerTest.java | 126 +
.../discrete/DiscreteNaiveBayesModelTest.java | 45 +
.../discrete/DiscreteNaiveBayesTest.java | 67 +
.../discrete/DiscreteNaiveBayesTrainerTest.java | 185 +
.../gaussian/GaussianNaiveBayesModelTest.java | 1 -
.../gaussian/GaussianNaiveBayesTrainerTest.java | 1 +
.../org/apache/ignite/ml/nn/MLPTestSuite.java | 27 +-
.../ignite/ml/nn/MLPTrainerIntegrationTest.java | 2 +-
.../MLPTrainerMnistIntegrationTest.java | 4 +-
.../ml/nn/performance/MLPTrainerMnistTest.java | 2 +-
.../ignite/ml/pipeline/PipelineMdlTest.java | 2 +-
.../apache/ignite/ml/pipeline/PipelineTest.java | 4 +-
.../binarization/BinarizationTrainerTest.java | 3 +
.../encoding/EncoderTrainerTest.java | 32 +
.../imputing/ImputerTrainerTest.java | 2 +
.../maxabsscaling/MaxAbsScalerTrainerTest.java | 2 +
.../minmaxscaling/MinMaxScalerTrainerTest.java | 2 +
.../normalization/NormalizationTrainerTest.java | 2 +
.../StandardScalerPreprocessorTest.java | 58 +
.../StandardScalerTrainerTest.java | 87 +
.../ml/regressions/RegressionsTestSuite.java | 4 +-
.../linear/LinearRegressionLSQRTrainerTest.java | 6 +-
.../linear/LinearRegressionModelTest.java | 23 +-
.../logistic/LogRegMultiClassTrainerTest.java | 141 -
.../logistic/LogisticRegressionModelTest.java | 1 -
.../LogisticRegressionSGDTrainerTest.java | 8 +-
.../ignite/ml/selection/SelectionTestSuite.java | 41 +-
.../scoring/evaluator/EvaluatorTest.java | 17 +-
.../ignite/ml/svm/SVMBinaryTrainerTest.java | 14 +-
.../org/apache/ignite/ml/svm/SVMModelTest.java | 36 +-
.../ignite/ml/svm/SVMMultiClassTrainerTest.java | 100 -
.../org/apache/ignite/ml/svm/SVMTestSuite.java | 1 -
...reeClassificationTrainerIntegrationTest.java | 2 +-
...ionTreeRegressionTrainerIntegrationTest.java | 2 +-
.../ignite/ml/tree/DecisionTreeTestSuite.java | 40 +-
.../DecisionTreeMNISTIntegrationTest.java | 2 +-
.../RandomForestClassifierTrainerTest.java | 4 +-
modules/ml/xgboost-model-parser/pom.xml | 55 +
.../ignite/ml/xgboost/MapBasedXGObject.java | 61 +
.../apache/ignite/ml/xgboost/XGLeafNode.java | 38 +
.../org/apache/ignite/ml/xgboost/XGModel.java | 53 +
.../org/apache/ignite/ml/xgboost/XGNode.java | 29 +
.../org/apache/ignite/ml/xgboost/XGObject.java | 33 +
.../apache/ignite/ml/xgboost/XGSplitNode.java | 74 +
.../apache/ignite/ml/xgboost/package-info.java | 22 +
.../xgboost/parser/XGBoostModelBaseVisitor.java | 78 +
.../ml/xgboost/parser/XGBoostModelLexer.java | 210 ++
.../ml/xgboost/parser/XGBoostModelListener.java | 98 +
.../ml/xgboost/parser/XGBoostModelParser.java | 966 +++++
.../ml/xgboost/parser/XGBoostModelVisitor.java | 71 +
.../ignite/ml/xgboost/parser/XGModelParser.java | 87 +
.../ignite/ml/xgboost/parser/package-info.java | 22 +
.../xgboost/parser/visitor/XGModelVisitor.java | 43 +
.../xgboost/parser/visitor/XGTreeVisitor.java | 82 +
.../ml/xgboost/parser/visitor/package-info.java | 22 +
.../ml/xgboost/IgniteMLXGBoostTestSuite.java | 31 +
.../xgboost/parser/XGBoostModelParserTest.java | 85 +
.../test/resources/datasets/agaricus-model.txt | 714 ++++
.../resources/datasets/agaricus-test-data.txt | 1611 ++++++++
.../datasets/agaricus-test-expected-results.txt | 1611 ++++++++
.../stream/mqtt/IgniteMqttStreamerTest.java | 23 +-
.../include/ignite/binary/binary_object.h | 1 +
.../include/ignite/binary/binary_raw_reader.h | 20 +
.../include/ignite/binary/binary_raw_writer.h | 38 +-
.../include/ignite/binary/binary_reader.h | 26 +-
.../include/ignite/binary/binary_writer.h | 42 +-
.../cpp/common/include/ignite/common/utils.h | 56 +
.../cpp/odbc-test/src/meta_queries_test.cpp | 43 +
.../cpp/odbc-test/src/sql_get_info_test.cpp | 2 +-
modules/platforms/cpp/odbc/Makefile.am | 3 +-
modules/platforms/cpp/odbc/include/Makefile.am | 2 +-
.../cpp/odbc/include/ignite/odbc/ssl/ssl_api.h | 32 +
.../odbc/include/ignite/odbc/ssl/ssl_bindings.h | 357 --
.../odbc/include/ignite/odbc/ssl/ssl_gateway.h | 117 +-
.../platforms/cpp/odbc/project/vs/odbc.vcxproj | 3 +-
.../cpp/odbc/project/vs/odbc.vcxproj.filters | 9 +-
.../cpp/odbc/src/config/connection_info.cpp | 2 +-
modules/platforms/cpp/odbc/src/connection.cpp | 4 +-
.../cpp/odbc/src/ssl/secure_socket_client.cpp | 158 +-
modules/platforms/cpp/odbc/src/ssl/ssl_api.cpp | 33 +
.../platforms/cpp/odbc/src/ssl/ssl_gateway.cpp | 639 +++-
.../thin-client-test/src/cache_client_test.cpp | 27 +
.../cpp/thin-client-test/src/ssl_test.cpp | 2 +-
modules/platforms/cpp/thin-client/Makefile.am | 1 +
.../cpp/thin-client/include/Makefile.am | 3 +-
.../thin-client/project/vs/thin-client.vcxproj | 5 +-
.../project/vs/thin-client.vcxproj.filters | 11 +-
.../cpp/thin-client/src/impl/data_channel.cpp | 4 +-
.../src/impl/ssl/secure_socket_client.cpp | 139 +-
.../cpp/thin-client/src/impl/ssl/ssl_api.cpp | 36 +
.../cpp/thin-client/src/impl/ssl/ssl_api.h | 36 +
.../cpp/thin-client/src/impl/ssl/ssl_bindings.h | 360 --
.../thin-client/src/impl/ssl/ssl_gateway.cpp | 632 +++-
.../cpp/thin-client/src/impl/ssl/ssl_gateway.h | 120 +
.../Apache.Ignite.Core.Tests.DotNetCore.csproj | 1 +
.../Apache.Ignite.Core.Tests.csproj | 2 +
.../ApiParity/CacheConfigurationParityTest.cs | 4 +-
.../ApiParity/DataStorageMetricsParityTest.cs | 5 +-
.../ApiParity/IgniteConfigurationParityTest.cs | 3 +-
.../ApiParity/TcpCommunicationSpiParityTest.cs | 84 +
.../Cache/Query/CacheQueriesTest.cs | 4 +
.../Query/CacheQueriesWithRestartServerTest.cs | 160 +
.../Query/Linq/CacheLinqTest.Introspection.cs | 4 +
.../Cache/Query/Linq/CacheLinqTest.Misc.cs | 3 +-
.../FailureHandlerTest.cs | 2 +
.../IgniteConfigurationTest.cs | 16 +-
.../Apache.Ignite.Core.Tests/ReconnectTest.cs | 70 +-
.../Cache/Query/SqlFieldsQuery.cs | 3 +
.../Apache.Ignite.Core/Cache/Query/SqlQuery.cs | 5 +
.../Communication/Tcp/TcpCommunicationSpi.cs | 99 +-
.../Impl/Binary/BinaryFullTypeDescriptor.cs | 11 +
.../Impl/Binary/Marshaller.cs | 36 +-
.../Binary/Structure/BinaryStructureTracker.cs | 3 +-
.../Apache.Ignite.Core/Impl/Cache/CacheImpl.cs | 2 +
.../Impl/Client/Cache/CacheClient.cs | 4 +
.../Common/CopyOnWriteConcurrentDictionary.cs | 18 +-
.../Impl/Common/DelegateConverter.cs | 1 +
.../Impl/Datastream/DataStreamerImpl.cs | 1 +
.../dotnet/Apache.Ignite.Core/Impl/Ignite.cs | 2 +
.../Impl/CacheFieldsQueryExecutor.cs | 2 +
.../dotnet/Apache.Ignite.Linq/QueryOptions.cs | 1 +
.../docs/source/pyignite.datatypes.base.rst | 7 +
.../python/docs/source/pyignite.datatypes.rst | 1 +
.../platforms/python/pyignite/datatypes/base.py | 24 +
.../python/pyignite/datatypes/complex.py | 23 +-
.../python/pyignite/datatypes/internal.py | 19 +-
.../python/pyignite/datatypes/null_object.py | 3 +-
.../python/pyignite/datatypes/primitive.py | 3 +-
.../pyignite/datatypes/primitive_arrays.py | 3 +-
.../pyignite/datatypes/primitive_objects.py | 3 +-
.../python/pyignite/datatypes/standard.py | 9 +-
modules/platforms/python/pyignite/utils.py | 6 +-
modules/platforms/python/setup.py | 2 +-
.../platforms/python/tests/test_key_value.py | 75 +-
.../http/jetty/GridJettyRestHandler.java | 17 +-
.../http/jetty/GridJettyRestProtocol.java | 2 -
.../protocols/http/jetty/GridRestSuite.java | 3 +-
.../http/jetty/RestSetupSimpleTest.java | 5 +
.../stream/rocketmq/RocketMQStreamerTest.java | 6 +-
.../rocketmq/RocketMQStreamerTestSuite.java | 6 +-
.../schedule/GridScheduleSelfTest.java | 13 +-
.../testsuites/IgniteSchedulerTestSuite.java | 8 +-
.../logger/slf4j/Slf4jLoggerMarkerTest.java | 5 +
.../ignite/testsuites/IgniteSlf4jTestSuite.java | 3 +-
.../spark/JavaEmbeddedIgniteRDDSelfTest.java | 10 +-
.../spark/JavaStandaloneIgniteRDDSelfTest.java | 11 +-
.../ignite/testsuites/IgniteRDDTestSuite.java | 8 +-
.../IgniteSpringDataCrudSelfTest.java | 10 +
.../IgniteSpringDataQueriesSelfTest.java | 23 +
.../testsuites/IgniteSpringData2TestSuite.java | 8 +-
.../IgniteSpringDataCrudSelfTest.java | 10 +
.../IgniteSpringDataQueriesSelfTest.java | 24 +
.../testsuites/IgniteSpringDataTestSuite.java | 8 +-
.../GridSpringCacheManagerAbstractTest.java | 19 +
.../GridSpringCacheManagerMultiJvmSelfTest.java | 5 +
.../SpringCacheManagerContextInjectionTest.java | 6 +
.../ignite/cache/spring/SpringCacheTest.java | 12 +
.../jdbc/CacheJdbcBlobStoreFactorySelfTest.java | 9 +-
.../jdbc/CacheJdbcPojoStoreFactorySelfTest.java | 9 +-
.../SpringEncryptedCacheRestartTest.java | 9 +
.../ignite/internal/GridFactorySelfTest.java | 27 +-
.../GridSpringBeanSerializationSelfTest.java | 5 +
.../internal/IgniteDynamicCacheConfigTest.java | 10 +
.../ignite/internal/IgniteSpringBeanTest.java | 6 +
.../resource/GridLoggerInjectionSelfTest.java | 9 +-
.../resource/GridResourceProcessorSelfTest.java | 20 +-
.../resource/GridServiceInjectionSelfTest.java | 16 +-
.../GridSpringResourceInjectionSelfTest.java | 20 +-
.../GridTransformSpringInjectionSelfTest.java | 5 +
.../p2p/GridP2PUserVersionChangeSelfTest.java | 13 +-
.../IgniteExcludeInConfigurationTest.java | 8 +-
.../IgniteStartFromStreamConfigurationTest.java | 7 +-
.../GridServiceInjectionSpringResourceTest.java | 5 +
...teSpringBeanSpringResourceInjectionTest.java | 6 +
.../testsuites/IgniteResourceSelfTestSuite.java | 14 +-
.../testsuites/IgniteSpringTestSuite.java | 55 +-
...ridSpringTransactionManagerAbstractTest.java | 9 +
...gTransactionManagerContextInjectionTest.java | 8 +-
.../util/nodestart/StartNodeCallableImpl.java | 107 +-
.../internal/IgniteNodeStartUtilsSelfTest.java | 7 +-
...gniteProjectionStartStopRestartSelfTest.java | 216 +-
.../IgniteStartStopRestartTestSuite.java | 8 +-
.../storm/IgniteStormStreamerSelfTestSuite.java | 7 +-
.../storm/StormIgniteStreamerSelfTest.java | 6 +-
.../tfrunning/TensorFlowServerManager.java | 2 +-
.../TensorFlowServerScriptFormatter.java | 2 +-
.../cluster/util/TensorFlowClusterResolver.java | 12 +-
.../util/TensorFlowProcessBuilderSupplier.java | 14 +-
.../twitter/IgniteTwitterStreamerTest.java | 8 +-
.../twitter/IgniteTwitterStreamerTestSuite.java | 6 +-
.../uri/GridUriDeploymentDiscovery.java | 1 -
.../uri/GridUriDeploymentFileProcessor.java | 1 -
.../spi/deployment/uri/UriDeploymentSpi.java | 2 -
.../scanners/http/UriDeploymentHttpScanner.java | 4 +-
.../GridTaskUriDeploymentDeadlockSelfTest.java | 7 +-
.../ignite/p2p/GridP2PDisabledSelfTest.java | 11 +-
...loymentClassLoaderMultiThreadedSelfTest.java | 7 +-
.../GridUriDeploymentClassLoaderSelfTest.java | 8 +-
...riDeploymentClassloaderRegisterSelfTest.java | 8 +-
.../uri/GridUriDeploymentConfigSelfTest.java | 7 +-
.../GridUriDeploymentFileProcessorSelfTest.java | 8 +
.../uri/GridUriDeploymentMd5CheckSelfTest.java | 6 +
...loymentMultiScannersErrorThrottlingTest.java | 5 +
.../GridUriDeploymentMultiScannersSelfTest.java | 7 +-
.../uri/GridUriDeploymentSimpleSelfTest.java | 12 +-
.../file/GridFileDeploymentSelfTest.java | 11 +
.../GridFileDeploymentUndeploySelfTest.java | 7 +-
.../http/GridHttpDeploymentSelfTest.java | 6 +
.../testsuites/IgniteToolsSelfTestSuite.java | 8 +-
.../IgniteUriDeploymentTestSuite.java | 34 +-
.../apache/ignite/tools/GridToolsSelfTest.java | 15 +-
.../commands/cache/VisorCacheCommand.scala | 76 +-
.../VisorCacheToggleStatisticsCommand.scala | 152 +
modules/web-console/DEVNOTES.txt | 13 -
.../web-console/backend/app/browsersHandler.js | 5 +
modules/web-console/backend/app/schemas.js | 8 +-
modules/web-console/backend/app/settings.js | 12 +-
modules/web-console/backend/index.js | 10 +-
modules/web-console/backend/launch-tools.js | 20 +-
.../web-console/backend/routes/activities.js | 4 +-
.../web-console/backend/services/activities.js | 8 +-
.../docker/compose/docker-compose.yml | 3 +-
.../web-console/docker/standalone/Dockerfile | 76 -
.../docker/standalone/docker-entrypoint.sh | 23 -
.../docker/standalone/nginx/nginx.conf | 55 -
.../docker/standalone/nginx/web-console.conf | 62 -
.../e2e/testcafe/components/FormField.js | 11 +-
.../e2e/testcafe/components/topNavigation.js | 6 +-
.../e2e/testcafe/components/userMenu.js | 2 +-
.../e2e/testcafe/page-models/pageSignup.js | 14 +-
modules/web-console/frontend/app/app.config.js | 7 +
modules/web-console/frontend/app/app.js | 10 +-
.../activities-user-dialog.controller.js | 6 +-
.../activities-user-dialog.tpl.pug | 2 +-
.../components/cluster-selector/controller.js | 17 +-
.../connected-clusters-badge/controller.js | 11 +-
.../connected-clusters-badge/style.scss | 34 +-
.../connected-clusters-badge/template.pug | 5 +-
.../components/list/controller.js | 2 +-
.../components/form-field-size/controller.js | 25 +-
.../components/form-field-size/index.js | 3 +-
.../components/form-field-size/style.scss | 15 +
.../components/form-field-size/template.pug | 2 +
.../form-field/showValidationError.directive.js | 21 +-
.../app/components/ignite-chart/controller.js | 49 +-
.../input-dialog/input-dialog.tpl.pug | 1 -
.../frontend/app/components/page-admin/index.js | 16 +-
.../components/cache-edit-form/controller.js | 10 +-
.../cache-edit-form/templates/memory.pug | 37 +
.../components/cluster-edit-form/controller.js | 17 +-
.../templates/data-storage.pug | 9 +
.../cluster-edit-form/templates/failover.pug | 9 +
.../cluster-edit-form/templates/service.pug | 4 +-
.../cluster-edit-form/templates/ssl.pug | 2 +-
.../controller.js | 36 +-
.../controller.js | 29 +-
.../page-configure-advanced-igfs/controller.js | 49 +-
.../controller.js | 45 +-
.../page-configure-basic/controller.js | 87 +-
.../page-configure-basic/controller.spec.js | 6 +-
.../page-configure-overview/controller.js | 11 +-
.../components/modal-import-models/component.js | 111 +-
.../components/modal-import-models/service.js | 48 +-
.../page-configure/components/pcValidation.js | 18 +-
.../app/components/page-configure/controller.js | 15 +-
.../page-configure/icons/configuration.icon.svg | 13 +
.../app/components/page-configure/index.d.ts | 29 +-
.../app/components/page-configure/index.js | 192 -
.../app/components/page-configure/index.ts | 186 +
.../services/ConfigChangesGuard.js | 11 +-
.../services/ConfigSelectionManager.js | 75 +-
.../page-configure/services/ConfigureState.js | 11 +-
.../page-configure/services/PageConfigure.js | 49 +-
.../services/PageConfigure.spec.js | 17 +-
.../app/components/page-configure/states.js | 62 +-
.../components/page-configure/store/effects.js | 638 ++--
.../page-configure/store/effects.spec.js | 7 +-
.../page-configure/store/selectors.js | 159 +-
.../page-forgot-password/controller.js | 8 +-
.../app/components/page-forgot-password/run.js | 11 +-
.../components/page-forgot-password/style.scss | 38 +-
.../page-forgot-password/template.pug | 53 +-
.../app/components/page-landing/index.js | 11 +-
.../app/components/page-landing/public.pug | 21 +
.../app/components/page-landing/style.scss | 12 +
.../app/components/page-landing/template.pug | 8 -
.../page-password-changed/controller.js | 26 -
.../page-password-changed/controller.ts | 32 +
.../components/page-password-changed/index.js | 10 +-
.../components/page-password-changed/style.scss | 13 +-
.../page-password-changed/template.pug | 9 +-
.../page-password-reset/controller.js | 11 +-
.../app/components/page-password-reset/index.js | 10 +-
.../components/page-password-reset/style.scss | 15 +-
.../components/page-password-reset/template.pug | 102 +-
.../app/components/page-profile/controller.js | 12 +-
.../app/components/page-profile/template.pug | 5 +-
.../query-actions-button/component.ts | 28 +
.../query-actions-button/controller.ts | 53 +
.../query-actions-button/template.pug | 28 +
.../components/queries-notebook/controller.js | 1978 ----------
.../components/queries-notebook/controller.ts | 2001 ++++++++++
.../components/queries-notebook/index.js | 2 +
.../queries-notebook/template.tpl.pug | 54 +-
.../app/components/page-queries/index.js | 87 -
.../app/components/page-queries/index.ts | 110 +
.../components/page-queries/notebook.data.js | 3 -
.../app/components/page-signin/controller.ts | 10 +-
.../frontend/app/components/page-signin/run.ts | 10 +-
.../app/components/page-signin/style.scss | 33 +-
.../app/components/page-signin/template.pug | 73 +-
.../app/components/page-signup/controller.ts | 11 +-
.../frontend/app/components/page-signup/run.js | 11 +-
.../app/components/page-signup/style.scss | 26 +-
.../app/components/page-signup/template.pug | 36 +-
.../permanent-notifications/component.ts | 25 +
.../permanent-notifications/controller.ts | 28 +
.../components/permanent-notifications/index.ts | 21 +
.../permanent-notifications/style.scss | 54 +
.../permanent-notifications/template.pug | 23 +
.../components/timed-redirection/component.ts | 29 +
.../components/timed-redirection/controller.ts | 60 +
.../app/components/timed-redirection/index.ts | 23 +
.../app/components/timed-redirection/style.scss | 48 +
.../components/timed-redirection/template.pug | 22 +
.../app/components/ui-grid/component.js | 1 +
.../app/components/ui-grid/controller.js | 10 +
.../frontend/app/components/ui-grid/style.scss | 1 +
.../components/web-console-footer/component.js | 4 +-
.../web-console-footer-links/component.js | 23 -
.../web-console-footer-links/style.scss | 31 -
.../web-console-footer-links/template.pug | 17 -
.../components/web-console-footer/controller.ts | 27 +
.../app/components/web-console-footer/index.js | 11 +-
.../components/web-console-footer/style.scss | 93 +-
.../components/web-console-footer/template.pug | 20 +-
.../components/web-console-header/component.js | 53 -
.../components/web-console-header/component.ts | 43 +
.../components/demo-mode-button/component.ts | 24 +
.../components/demo-mode-button/controller.ts | 46 +
.../components/demo-mode-button/template.pug | 20 +
.../components/user-menu/component.ts | 25 +
.../components/user-menu/controller.ts | 53 +
.../components/user-menu/style.scss | 28 +
.../components/user-menu/template.pug | 26 +
.../web-console-header-content/component.ts | 25 +
.../web-console-header-content/controller.ts | 45 +
.../web-console-header-content/style.scss | 44 +
.../web-console-header-content/template.pug | 24 +
.../web-console-header-extension/component.js | 22 -
.../web-console-header-extension/template.pug | 15 -
.../app/components/web-console-header/index.js | 8 +-
.../components/web-console-header/style.scss | 168 +-
.../components/web-console-header/template.pug | 32 +-
.../components/web-console-sidebar/component.ts | 25 +
.../web-console-sidebar/controller.ts | 30 +
.../app/components/web-console-sidebar/index.ts | 25 +
.../components/web-console-sidebar/style.scss | 44 +
.../components/web-console-sidebar/template.pug | 22 +
.../web-console-sidebar-navigation/component.ts | 28 +
.../controller.ts | 24 +
.../web-console-sidebar-navigation/style.scss | 109 +
.../web-console-sidebar-navigation/template.pug | 35 +
.../web-console-sidebar-overflow/component.ts | 26 +
.../web-console-sidebar-overflow/controller.ts | 50 +
.../web-console-sidebar-overflow/style.scss | 52 +
.../web-console-sidebar-overflow/template.pug | 18 +
modules/web-console/frontend/app/data/i18n.js | 25 +-
.../app/modules/agent/AgentManager.service.js | 88 +-
.../agent/components/cluster-login/service.js | 5 +
.../app/modules/branding/branding.module.js | 10 +-
.../app/modules/branding/branding.service.js | 4 -
.../app/modules/branding/footer.directive.js | 39 -
.../modules/branding/header-logo.directive.js | 39 -
.../app/modules/branding/header-logo.pug | 18 -
.../modules/branding/header-title.directive.js | 44 -
.../branding/powered-by-apache.directive.js | 39 -
.../app/modules/branding/powered-by-apache.pug | 18 -
.../app/modules/cluster/CacheMetrics.js | 3 +
.../generator/ConfigurationGenerator.js | 22 +-
.../configuration/generator/Maven.service.js | 3 +
.../generator/defaults/Cache.service.js | 5 +-
.../frontend/app/modules/demo/Demo.module.js | 28 -
.../app/modules/navbar/Navbar.provider.js | 30 -
.../app/modules/navbar/navbar.directive.js | 32 -
.../app/modules/navbar/navbar.module.js | 9 +-
.../app/modules/navbar/userbar.directive.js | 59 -
.../frontend/app/modules/states/errors.state.js | 18 +-
.../frontend/app/modules/user/User.service.js | 2 +-
.../frontend/app/modules/user/user.module.js | 8 -
.../app/primitives/datepicker/index.pug | 6 +-
.../app/primitives/form-field/dropdown.pug | 6 +-
.../app/primitives/form-field/email.pug | 6 +-
.../app/primitives/form-field/number.pug | 6 +-
.../app/primitives/form-field/password.pug | 8 +-
.../app/primitives/form-field/phone.pug | 5 +-
.../frontend/app/primitives/form-field/text.pug | 6 +-
.../app/primitives/form-field/typeahead.pug | 6 +-
.../frontend/app/primitives/modal/index.scss | 26 +-
.../app/primitives/timepicker/index.pug | 6 +-
.../web-console/frontend/app/services/Caches.js | 8 +
.../frontend/app/services/Clusters.js | 9 +-
.../frontend/app/services/Version.service.js | 8 +-
.../web-console/frontend/app/services/store.ts | 73 +
.../frontend/app/store/actions/ui.ts | 36 +
.../frontend/app/store/actions/user.ts | 24 +
.../frontend/app/store/effects/ui.ts | 32 +
modules/web-console/frontend/app/store/index.ts | 48 +
.../web-console/frontend/app/store/ofType.ts | 26 +
.../frontend/app/store/reducers/ui.ts | 50 +
.../frontend/app/store/reduxDebug.ts | 45 +
.../frontend/app/store/selectors/ui.ts | 29 +
modules/web-console/frontend/app/types/index.ts | 39 +-
.../frontend/app/utils/SimpleWorkerPool.js | 19 +-
modules/web-console/frontend/app/vendor.js | 2 +
modules/web-console/frontend/package.json | 9 +-
.../public/images/icons/cluster.icon.svg | 10 +
.../images/icons/connectedClusters.icon.svg | 1 -
.../public/images/icons/downloadAgent.icon.svg | 16 +
.../frontend/public/images/icons/index.js | 5 +-
.../frontend/public/images/icons/menu.icon.svg | 7 +
.../frontend/public/images/icons/sql.icon.svg | 3 +
.../frontend/public/stylesheets/style.scss | 132 +-
modules/web-console/frontend/test/ci/Dockerfile | 6 +-
modules/web-console/frontend/views/403.tpl.pug | 24 -
modules/web-console/frontend/views/404.tpl.pug | 24 -
modules/web-console/frontend/views/base.pug | 11 +-
.../frontend/views/includes/header-left.pug | 42 -
.../frontend/views/includes/header-right.pug | 35 -
modules/web-console/frontend/views/index.pug | 4 -
modules/web-console/frontend/views/public.pug | 20 +
modules/web-console/pom.xml | 38 -
.../web-agent/bin/ignite-web-agent.sh | 38 +-
.../console/agent/handlers/ClusterListener.java | 10 +
.../ignite/console/agent/rest/RestExecutor.java | 24 +-
.../service/DemoRandomCacheLoadService.java | 22 +-
.../cache/websession/WebSessionFilter.java | 4 -
.../ignite/startup/servlet/ServletStartup.java | 1 -
.../IgniteWebSessionSelfTestSuite.java | 19 +-
.../internal/websession/WebSessionSelfTest.java | 16 +-
modules/yardstick/DEVNOTES.txt | 2 +-
.../config/benchmark-select.properties | 159 +
modules/yardstick/config/ignite-base-config.xml | 3 +
.../yardstick/IgniteAbstractBenchmark.java | 43 +-
.../yardstick/IgniteBenchmarkArguments.java | 16 +-
.../org/apache/ignite/yardstick/IgniteNode.java | 6 +-
.../cache/IgniteGetAllTxBenchmark.java | 50 +
.../cache/IgniteSqlQueryFullScanBenchmark.java | 97 +
.../apache/ignite/yardstick/cache/Loader.java | 4 +-
.../yardstick/cache/model/PersonNoIndex.java | 215 ++
.../jdbc/JdbcSqlQueryRangeBenchmark.java | 29 +-
.../apache/ignite/yardstick/jdbc/JdbcUtils.java | 25 +-
.../jdbc/NativeSqlQueryRangeBenchmark.java | 24 +-
.../ignite/yardstick/jdbc/SelectCommand.java | 85 +
.../ignite/yardstick/upload/model/Values10.java | 1 -
.../org/apache/ignite/IgniteYarnTestSuite.java | 8 +-
.../yarn/IgniteApplicationMasterSelfTest.java | 28 +-
.../stream/zeromq/IgniteZeroMqStreamerTest.java | 8 +
.../zeromq/IgniteZeroMqStreamerTestSuite.java | 6 +-
.../spi/discovery/zk/ZookeeperDiscoverySpi.java | 7 +
.../zk/internal/ZookeeperDiscoveryImpl.java | 28 +-
.../tcp/ipfinder/zk/ZookeeperIpFinderTest.java | 12 +
...CacheEntryListenerWithZkDiscoAtomicTest.java | 5 +
.../zk/ZookeeperDiscoverySpiTestSuite1.java | 12 +-
.../zk/ZookeeperDiscoverySpiTestSuite2.java | 59 +-
.../zk/ZookeeperDiscoverySpiTestSuite3.java | 63 +
.../zk/ZookeeperDiscoverySpiTestSuite4.java | 58 +
...ZookeeperDiscoverySuitePreprocessorTest.java | 5 +
.../zk/internal/ZookeeperClientTest.java | 22 +
...ZookeeperDiscoverySpiSaslFailedAuthTest.java | 5 +
...eeperDiscoverySpiSaslSuccessfulAuthTest.java | 6 +
.../zk/internal/ZookeeperDiscoverySpiTest.java | 116 +-
parent/pom.xml | 12 +-
pom.xml | 4 +
4154 files changed, 131201 insertions(+), 43850 deletions(-)
----------------------------------------------------------------------
[51/52] [abbrv] ignite git commit: merge
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/404a9f3b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/404a9f3b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/404a9f3b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
index dc98854,072918e..dcea831
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
@@@ -923,12 -911,9 +919,11 @@@ public class GridNearAtomicUpdateFutur
* @return Mapping.
* @throws Exception If failed.
*/
- @SuppressWarnings("ForLoopReplaceableByForEach")
- private Map<UUID, PrimaryRequestState> mapUpdate(Collection<ClusterNode> topNodes,
+ private Map<UUID, PrimaryRequestState> mapUpdate(
+ Collection<ClusterNode> topNodes,
AffinityTopologyVersion topVer,
Long futId,
+ boolean remap,
@Nullable Collection<KeyCacheObject> remapKeys,
boolean mappingKnown) throws Exception {
Iterator<?> it = null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/404a9f3b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/404a9f3b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheEntry.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/404a9f3b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheValueConsistencyAbstractSelfTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheValueConsistencyAbstractSelfTest.java
index 462ca31,6cb9d05..7c5c953
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheValueConsistencyAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheValueConsistencyAbstractSelfTest.java
@@@ -219,7 -235,11 +235,8 @@@ public abstract class GridCacheValueCon
/**
* @throws Exception If failed.
*/
+ @Test
public void testPutConsistencyMultithreaded() throws Exception {
- if (nearEnabled())
- fail("https://issues.apache.org/jira/browse/IGNITE-627");
-
for (int i = 0; i < 20; i++) {
log.info("Iteration: " + i);
@@@ -269,8 -289,12 +286,9 @@@
/**
* @throws Exception If failed.
*/
+ @Test
public void testPutRemoveConsistencyMultithreaded() throws Exception {
- for (int i = 0; i < 10; i++) {
- if (nearEnabled())
- fail("https://issues.apache.org/jira/browse/IGNITE-627");
-
+ for (int i = 0; i < SF.applyLB(10, 2); i++) {
log.info("Iteration: " + i);
putRemoveConsistencyMultithreaded();
http://git-wip-us.apache.org/repos/asf/ignite/blob/404a9f3b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/IgniteCacheAtomicProtocolTest.java
----------------------------------------------------------------------
[45/52] [abbrv] ignite git commit: IGNITE-9893 IGNITE-1757
IGNITE-10723 Adding hibernate-5.3 module
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateCacheProxy.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateCacheProxy.java b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateCacheProxy.java
index 1752313..f53a14c 100644
--- a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateCacheProxy.java
+++ b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateCacheProxy.java
@@ -24,6 +24,7 @@ import java.util.LinkedList;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
+import java.util.function.Supplier;
import javax.cache.Cache;
import javax.cache.expiry.ExpiryPolicy;
import javax.cache.processor.EntryProcessor;
@@ -51,23 +52,30 @@ import org.jetbrains.annotations.Nullable;
* Hibernate cache proxy used to substitute hibernate keys with ignite keys.
*/
public class HibernateCacheProxy implements IgniteInternalCache<Object, Object> {
- /** Delegate. */
- private final IgniteInternalCache<Object, Object> delegate;
+ /** Delegate is lazily loaded which allows for creation of caches after the SPI is bootstrapped */
+ private final Supplier<IgniteInternalCache<Object, Object>> delegate;
/** Transformer. */
private final HibernateKeyTransformer keyTransformer;
+ /** */
+ private String cacheName;
+
/**
+ * @param cacheName Cache name. Should match delegate.get().name(). Needed for lazy loading.
* @param delegate Delegate.
* @param keyTransformer Key keyTransformer.
*/
HibernateCacheProxy(
- IgniteInternalCache<Object, Object> delegate,
+ String cacheName,
+ Supplier<IgniteInternalCache<Object, Object>> delegate,
HibernateKeyTransformer keyTransformer
) {
+ assert cacheName != null;
assert delegate != null;
assert keyTransformer != null;
+ this.cacheName = cacheName;
this.delegate = delegate;
this.keyTransformer = keyTransformer;
}
@@ -81,42 +89,42 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
/** {@inheritDoc} */
@Override public String name() {
- return delegate.name();
+ return cacheName;
}
/** {@inheritDoc} */
@Override public boolean skipStore() {
- return delegate.skipStore();
+ return delegate.get().skipStore();
}
/** {@inheritDoc} */
@Override public IgniteInternalCache setSkipStore(boolean skipStore) {
- return delegate.setSkipStore(skipStore);
+ return delegate.get().setSkipStore(skipStore);
}
/** {@inheritDoc} */
@Override public boolean isEmpty() {
- return delegate.isEmpty();
+ return delegate.get().isEmpty();
}
/** {@inheritDoc} */
@Override public boolean containsKey(Object key) {
- return delegate.containsKey(keyTransformer.transform(key));
+ return delegate.get().containsKey(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Boolean> containsKeyAsync(Object key) {
- return delegate.containsKeyAsync(keyTransformer.transform(key));
+ return delegate.get().containsKeyAsync(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public boolean containsKeys(Collection keys) {
- return delegate.containsKey(transform(keys));
+ return delegate.get().containsKey(transform(keys));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Boolean> containsKeysAsync(Collection keys) {
- return delegate.containsKeysAsync(transform(keys));
+ return delegate.get().containsKeysAsync(transform(keys));
}
/** {@inheritDoc} */
@@ -124,147 +132,147 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
Object key,
CachePeekMode[] peekModes
) throws IgniteCheckedException {
- return delegate.localPeek(keyTransformer.transform(key), peekModes);
+ return delegate.get().localPeek(keyTransformer.transform(key), peekModes);
}
/** {@inheritDoc} */
@Override public Iterable<Cache.Entry<Object, Object>> localEntries(
CachePeekMode[] peekModes
) throws IgniteCheckedException {
- return delegate.localEntries(peekModes);
+ return delegate.get().localEntries(peekModes);
}
/** {@inheritDoc} */
@Nullable @Override public Object get(Object key) throws IgniteCheckedException {
- return delegate.get(keyTransformer.transform(key));
+ return delegate.get().get(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Nullable @Override public CacheEntry getEntry(Object key) throws IgniteCheckedException {
- return delegate.getEntry(keyTransformer.transform(key));
+ return delegate.get().getEntry(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture getAsync(Object key) {
- return delegate.getAsync(keyTransformer.transform(key));
+ return delegate.get().getAsync(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<CacheEntry<Object, Object>> getEntryAsync(Object key) {
- return delegate.getEntryAsync(keyTransformer.transform(key));
+ return delegate.get().getEntryAsync(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public Map getAll(@Nullable Collection keys) throws IgniteCheckedException {
- return delegate.getAll(transform(keys));
+ return delegate.get().getAll(transform(keys));
}
/** {@inheritDoc} */
@Override public Collection<CacheEntry<Object, Object>> getEntries(
@Nullable Collection keys) throws IgniteCheckedException {
- return delegate.getEntries(transform(keys));
+ return delegate.get().getEntries(transform(keys));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Map<Object, Object>> getAllAsync(@Nullable Collection keys) {
- return delegate.getAllAsync(transform(keys));
+ return delegate.get().getAllAsync(transform(keys));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Collection<CacheEntry<Object,Object>>> getEntriesAsync(
@Nullable Collection keys
) {
- return delegate.getEntriesAsync(transform(keys));
+ return delegate.get().getEntriesAsync(transform(keys));
}
/** {@inheritDoc} */
@Nullable @Override public Object getAndPut(Object key, Object val) throws IgniteCheckedException {
- return delegate.getAndPut(keyTransformer.transform(key), val);
+ return delegate.get().getAndPut(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture getAndPutAsync(Object key, Object val) {
- return delegate.getAndPutAsync(keyTransformer.transform(key), val);
+ return delegate.get().getAndPutAsync(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public boolean put(Object key, Object val) throws IgniteCheckedException {
- return delegate.put(keyTransformer.transform(key), val);
+ return delegate.get().put(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Boolean> putAsync(Object key, Object val) {
- return delegate.putAsync(keyTransformer.transform(key), val);
+ return delegate.get().putAsync(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Nullable @Override public Object getAndPutIfAbsent(Object key, Object val) throws IgniteCheckedException {
- return delegate.getAndPutIfAbsent(keyTransformer.transform(key), val);
+ return delegate.get().getAndPutIfAbsent(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture getAndPutIfAbsentAsync(Object key, Object val) {
- return delegate.getAndPutIfAbsentAsync(keyTransformer.transform(key), val);
+ return delegate.get().getAndPutIfAbsentAsync(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public boolean putIfAbsent(Object key, Object val) throws IgniteCheckedException {
- return delegate.putIfAbsent(keyTransformer.transform(key), val);
+ return delegate.get().putIfAbsent(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Boolean> putIfAbsentAsync(Object key, Object val) {
- return delegate.putIfAbsentAsync(keyTransformer.transform(key), val);
+ return delegate.get().putIfAbsentAsync(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Nullable @Override public Object getAndReplace(Object key, Object val) throws IgniteCheckedException {
- return delegate.getAndReplace(keyTransformer.transform(key), val);
+ return delegate.get().getAndReplace(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture getAndReplaceAsync(Object key, Object val) {
- return delegate.getAndReplaceAsync(keyTransformer.transform(key), val);
+ return delegate.get().getAndReplaceAsync(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public boolean replace(Object key, Object val) throws IgniteCheckedException {
- return delegate.replace(keyTransformer.transform(key), val);
+ return delegate.get().replace(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Boolean> replaceAsync(Object key, Object val) {
- return delegate.replaceAsync(keyTransformer.transform(key), val);
+ return delegate.get().replaceAsync(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public boolean replace(Object key, Object oldVal, Object newVal) throws IgniteCheckedException {
- return delegate.replace(keyTransformer.transform(key), oldVal, newVal);
+ return delegate.get().replace(keyTransformer.transform(key), oldVal, newVal);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Boolean> replaceAsync(Object key, Object oldVal, Object newVal) {
- return delegate.replaceAsync(keyTransformer.transform(key), oldVal, newVal);
+ return delegate.get().replaceAsync(keyTransformer.transform(key), oldVal, newVal);
}
/** {@inheritDoc} */
@Override public void putAll(@Nullable Map m) throws IgniteCheckedException {
- delegate.putAll(transform(m));
+ delegate.get().putAll(transform(m));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> putAllAsync(@Nullable Map m) {
- return delegate.putAllAsync(transform(m));
+ return delegate.get().putAllAsync(transform(m));
}
/** {@inheritDoc} */
@Override public Set keySet() {
- return delegate.keySet();
+ return delegate.get().keySet();
}
/** {@inheritDoc} */
@Override public Set<Cache.Entry<Object, Object>> entrySet() {
- return delegate.entrySet();
+ return delegate.get().entrySet();
}
/** {@inheritDoc} */
@@ -272,7 +280,7 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
TransactionConcurrency concurrency,
TransactionIsolation isolation
) {
- return delegate.txStart(concurrency, isolation);
+ return delegate.get().txStart(concurrency, isolation);
}
/** {@inheritDoc} */
@@ -280,7 +288,7 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
TransactionConcurrency concurrency,
TransactionIsolation isolation
) {
- return delegate.txStartEx(concurrency, isolation);
+ return delegate.get().txStartEx(concurrency, isolation);
}
/** {@inheritDoc} */
@@ -290,337 +298,337 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
long timeout,
int txSize
) {
- return delegate.txStart(concurrency, isolation, timeout, txSize);
+ return delegate.get().txStart(concurrency, isolation, timeout, txSize);
}
/** {@inheritDoc} */
@Nullable @Override public GridNearTxLocal tx() {
- return delegate.tx();
+ return delegate.get().tx();
}
/** {@inheritDoc} */
@Override public boolean evict(Object key) {
- return delegate.evict(keyTransformer.transform(key));
+ return delegate.get().evict(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public void evictAll(@Nullable Collection keys) {
- delegate.evictAll(transform(keys));
+ delegate.get().evictAll(transform(keys));
}
/** {@inheritDoc} */
@Override public void clearLocally(boolean srv, boolean near, boolean readers) {
- delegate.clearLocally(srv, near, readers);
+ delegate.get().clearLocally(srv, near, readers);
}
/** {@inheritDoc} */
@Override public boolean clearLocally(Object key) {
- return delegate.clearLocally(keyTransformer.transform(key));
+ return delegate.get().clearLocally(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public void clearLocallyAll(Set keys, boolean srv, boolean near, boolean readers) {
- delegate.clearLocallyAll((Set<?>)transform(keys), srv, near, readers);
+ delegate.get().clearLocallyAll((Set<?>)transform(keys), srv, near, readers);
}
/** {@inheritDoc} */
@Override public void clear(Object key) throws IgniteCheckedException {
- delegate.clear(keyTransformer.transform(key));
+ delegate.get().clear(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public void clearAll(Set keys) throws IgniteCheckedException {
- delegate.clearAll((Set<?>)transform(keys));
+ delegate.get().clearAll((Set<?>)transform(keys));
}
/** {@inheritDoc} */
@Override public void clear() throws IgniteCheckedException {
- delegate.clear();
+ delegate.get().clear();
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> clearAsync() {
- return delegate.clearAsync();
+ return delegate.get().clearAsync();
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> clearAsync(Object key) {
- return delegate.clearAsync(keyTransformer.transform(key));
+ return delegate.get().clearAsync(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> clearAllAsync(Set keys) {
- return delegate.clearAllAsync((Set<?>)transform(keys));
+ return delegate.get().clearAllAsync((Set<?>)transform(keys));
}
/** {@inheritDoc} */
@Nullable @Override public Object getAndRemove(Object key) throws IgniteCheckedException {
- return delegate.getAndRemove(keyTransformer.transform(key));
+ return delegate.get().getAndRemove(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture getAndRemoveAsync(Object key) {
- return delegate.getAndRemoveAsync(keyTransformer.transform(key));
+ return delegate.get().getAndRemoveAsync(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public boolean remove(Object key) throws IgniteCheckedException {
- return delegate.remove(keyTransformer.transform(key));
+ return delegate.get().remove(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Boolean> removeAsync(Object key) {
- return delegate.removeAsync(keyTransformer.transform(key));
+ return delegate.get().removeAsync(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public boolean remove(Object key, Object val) throws IgniteCheckedException {
- return delegate.remove(keyTransformer.transform(key), val);
+ return delegate.get().remove(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Boolean> removeAsync(Object key, Object val) {
- return delegate.removeAsync(keyTransformer.transform(key), val);
+ return delegate.get().removeAsync(keyTransformer.transform(key), val);
}
/** {@inheritDoc} */
@Override public void removeAll(@Nullable Collection keys) throws IgniteCheckedException {
- delegate.removeAll(transform(keys));
+ delegate.get().removeAll(transform(keys));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> removeAllAsync(@Nullable Collection keys) {
- return delegate.removeAllAsync(transform(keys));
+ return delegate.get().removeAllAsync(transform(keys));
}
/** {@inheritDoc} */
@Override public void removeAll() throws IgniteCheckedException {
- delegate.removeAll();
+ delegate.get().removeAll();
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> removeAllAsync() {
- return delegate.removeAllAsync();
+ return delegate.get().removeAllAsync();
}
/** {@inheritDoc} */
@Override public boolean lock(Object key, long timeout) throws IgniteCheckedException {
- return delegate.lock(keyTransformer.transform(key), timeout);
+ return delegate.get().lock(keyTransformer.transform(key), timeout);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Boolean> lockAsync(Object key, long timeout) {
- return delegate.lockAsync(keyTransformer.transform(key), timeout);
+ return delegate.get().lockAsync(keyTransformer.transform(key), timeout);
}
/** {@inheritDoc} */
@Override public boolean lockAll(@Nullable Collection keys, long timeout) throws IgniteCheckedException {
- return delegate.lockAll(transform(keys), timeout);
+ return delegate.get().lockAll(transform(keys), timeout);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Boolean> lockAllAsync(@Nullable Collection keys, long timeout) {
- return delegate.lockAllAsync(transform(keys), timeout);
+ return delegate.get().lockAllAsync(transform(keys), timeout);
}
/** {@inheritDoc} */
@Override public void unlock(Object key) throws IgniteCheckedException {
- delegate.unlock(keyTransformer.transform(key));
+ delegate.get().unlock(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public void unlockAll(@Nullable Collection keys) throws IgniteCheckedException {
- delegate.unlockAll(transform(keys));
+ delegate.get().unlockAll(transform(keys));
}
/** {@inheritDoc} */
@Override public boolean isLocked(Object key) {
- return delegate.isLocked(keyTransformer.transform(key));
+ return delegate.get().isLocked(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public boolean isLockedByThread(Object key) {
- return delegate.isLockedByThread(keyTransformer.transform(key));
+ return delegate.get().isLockedByThread(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public int size() {
- return delegate.size();
+ return delegate.get().size();
}
/** {@inheritDoc} */
@Override public long sizeLong() {
- return delegate.sizeLong();
+ return delegate.get().sizeLong();
}
/** {@inheritDoc} */
@Override public int localSize(CachePeekMode[] peekModes) throws IgniteCheckedException {
- return delegate.localSize(peekModes);
+ return delegate.get().localSize(peekModes);
}
/** {@inheritDoc} */
@Override public long localSizeLong(CachePeekMode[] peekModes) throws IgniteCheckedException {
- return delegate.localSizeLong(peekModes);
+ return delegate.get().localSizeLong(peekModes);
}
/** {@inheritDoc} */
@Override public long localSizeLong(int partition, CachePeekMode[] peekModes) throws IgniteCheckedException {
- return delegate.localSizeLong(partition, peekModes);
+ return delegate.get().localSizeLong(partition, peekModes);
}
/** {@inheritDoc} */
@Override public int size(CachePeekMode[] peekModes) throws IgniteCheckedException {
- return delegate.size(peekModes);
+ return delegate.get().size(peekModes);
}
/** {@inheritDoc} */
@Override public long sizeLong(CachePeekMode[] peekModes) throws IgniteCheckedException {
- return delegate.sizeLong(peekModes);
+ return delegate.get().sizeLong(peekModes);
}
/** {@inheritDoc} */
@Override public long sizeLong(int partition, CachePeekMode[] peekModes) throws IgniteCheckedException {
- return delegate.sizeLong(partition, peekModes);
+ return delegate.get().sizeLong(partition, peekModes);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Integer> sizeAsync(CachePeekMode[] peekModes) {
- return delegate.sizeAsync(peekModes);
+ return delegate.get().sizeAsync(peekModes);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Long> sizeLongAsync(CachePeekMode[] peekModes) {
- return delegate.sizeLongAsync(peekModes);
+ return delegate.get().sizeLongAsync(peekModes);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Long> sizeLongAsync(int partition, CachePeekMode[] peekModes) {
- return delegate.sizeLongAsync(partition, peekModes);
+ return delegate.get().sizeLongAsync(partition, peekModes);
}
/** {@inheritDoc} */
@Override public int nearSize() {
- return delegate.nearSize();
+ return delegate.get().nearSize();
}
/** {@inheritDoc} */
@Override public int primarySize() {
- return delegate.primarySize();
+ return delegate.get().primarySize();
}
/** {@inheritDoc} */
@Override public long primarySizeLong() {
- return delegate.primarySizeLong();
+ return delegate.get().primarySizeLong();
}
/** {@inheritDoc} */
@Override public CacheConfiguration configuration() {
- return delegate.configuration();
+ return delegate.get().configuration();
}
/** {@inheritDoc} */
@Override public Affinity affinity() {
- return delegate.affinity();
+ return delegate.get().affinity();
}
/** {@inheritDoc} */
@Override public CacheMetrics clusterMetrics() {
- return delegate.clusterMetrics();
+ return delegate.get().clusterMetrics();
}
/** {@inheritDoc} */
@Override public CacheMetrics clusterMetrics(ClusterGroup grp) {
- return delegate.clusterMetrics(grp);
+ return delegate.get().clusterMetrics(grp);
}
/** {@inheritDoc} */
@Override public CacheMetrics localMetrics() {
- return delegate.localMetrics();
+ return delegate.get().localMetrics();
}
/** {@inheritDoc} */
@Override public CacheMetricsMXBean clusterMxBean() {
- return delegate.clusterMxBean();
+ return delegate.get().clusterMxBean();
}
/** {@inheritDoc} */
@Override public CacheMetricsMXBean localMxBean() {
- return delegate.localMxBean();
+ return delegate.get().localMxBean();
}
/** {@inheritDoc} */
@Override public long offHeapEntriesCount() {
- return delegate.offHeapEntriesCount();
+ return delegate.get().offHeapEntriesCount();
}
/** {@inheritDoc} */
@Override public long offHeapAllocatedSize() {
- return delegate.offHeapAllocatedSize();
+ return delegate.get().offHeapAllocatedSize();
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> rebalance() {
- return delegate.rebalance();
+ return delegate.get().rebalance();
}
/** {@inheritDoc} */
@Override public IgniteInternalCache forSubjectId(UUID subjId) {
- return delegate.forSubjectId(subjId);
+ return delegate.get().forSubjectId(subjId);
}
/** {@inheritDoc} */
@Nullable @Override public Object getForcePrimary(Object key) throws IgniteCheckedException {
- return delegate.getForcePrimary(keyTransformer.transform(key));
+ return delegate.get().getForcePrimary(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture getForcePrimaryAsync(Object key) {
- return delegate.getForcePrimaryAsync(keyTransformer.transform(key));
+ return delegate.get().getForcePrimaryAsync(keyTransformer.transform(key));
}
/** {@inheritDoc} */
@Override public Map getAllOutTx(Set keys) throws IgniteCheckedException {
- return delegate.getAllOutTx((Set<?>)transform(keys));
+ return delegate.get().getAllOutTx((Set<?>)transform(keys));
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Map<Object, Object>> getAllOutTxAsync(Set keys) {
- return delegate.getAllOutTxAsync((Set<?>)transform(keys));
+ return delegate.get().getAllOutTxAsync((Set<?>)transform(keys));
}
/** {@inheritDoc} */
@Override public boolean isIgfsDataCache() {
- return delegate.isIgfsDataCache();
+ return delegate.get().isIgfsDataCache();
}
/** {@inheritDoc} */
@Override public long igfsDataSpaceUsed() {
- return delegate.igfsDataSpaceUsed();
+ return delegate.get().igfsDataSpaceUsed();
}
/** {@inheritDoc} */
@Nullable @Override public ExpiryPolicy expiry() {
- return delegate.expiry();
+ return delegate.get().expiry();
}
/** {@inheritDoc} */
@Override public IgniteInternalCache withExpiryPolicy(ExpiryPolicy plc) {
- return delegate.withExpiryPolicy(plc);
+ return delegate.get().withExpiryPolicy(plc);
}
/** {@inheritDoc} */
@Override public IgniteInternalCache withNoRetries() {
- return delegate.withNoRetries();
+ return delegate.get().withNoRetries();
}
/** {@inheritDoc} */
@Override public <K1, V1> IgniteInternalCache<K1, V1> withAllowAtomicOpsInTx() {
- return delegate.withAllowAtomicOpsInTx();
+ return delegate.get().withAllowAtomicOpsInTx();
}
/** {@inheritDoc} */
@Override public GridCacheContext context() {
- return delegate.context();
+ return delegate.get().context();
}
/** {@inheritDoc} */
@@ -628,7 +636,7 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
@Nullable IgniteBiPredicate p,
@Nullable Object... args
) throws IgniteCheckedException {
- delegate.localLoadCache(p, args);
+ delegate.get().localLoadCache(p, args);
}
/** {@inheritDoc} */
@@ -636,27 +644,27 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
@Nullable IgniteBiPredicate p,
@Nullable Object... args
) {
- return delegate.localLoadCacheAsync(p, args);
+ return delegate.get().localLoadCacheAsync(p, args);
}
/** {@inheritDoc} */
@Override public Collection<Integer> lostPartitions() {
- return delegate.lostPartitions();
+ return delegate.get().lostPartitions();
}
/** {@inheritDoc} */
@Override public void preloadPartition(int part) throws IgniteCheckedException {
- delegate.preloadPartition(part);
+ delegate.get().preloadPartition(part);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> preloadPartitionAsync(int part) throws IgniteCheckedException {
- return delegate.preloadPartitionAsync(part);
+ return delegate.get().preloadPartitionAsync(part);
}
/** {@inheritDoc} */
@Override public boolean localPreloadPartition(int part) throws IgniteCheckedException {
- return delegate.localPreloadPartition(part);
+ return delegate.get().localPreloadPartition(part);
}
/** {@inheritDoc} */
@@ -666,27 +674,27 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
EntryProcessor entryProcessor,
Object... args
) throws IgniteCheckedException {
- return delegate.invoke(topVer, key, entryProcessor, args);
+ return delegate.get().invoke(topVer, key, entryProcessor, args);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Map> invokeAllAsync(Map map, Object... args) {
- return delegate.invokeAllAsync(map, args);
+ return delegate.get().invokeAllAsync(map, args);
}
/** {@inheritDoc} */
@Override public Map invokeAll(Map map, Object... args) throws IgniteCheckedException {
- return delegate.invokeAll(map, args);
+ return delegate.get().invokeAll(map, args);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<Map> invokeAllAsync(Set keys, EntryProcessor entryProcessor, Object... args) {
- return delegate.invokeAllAsync((Set<?>)transform(keys), entryProcessor, args);
+ return delegate.get().invokeAllAsync((Set<?>)transform(keys), entryProcessor, args);
}
/** {@inheritDoc} */
@Override public Map invokeAll(Set keys, EntryProcessor entryProcessor, Object... args) throws IgniteCheckedException {
- return delegate.invokeAll((Set<?>)transform(keys), entryProcessor, args);
+ return delegate.get().invokeAll((Set<?>)transform(keys), entryProcessor, args);
}
/** {@inheritDoc} */
@@ -695,7 +703,7 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
EntryProcessor entryProcessor,
Object... args
) {
- return delegate.invokeAsync(keyTransformer.transform(key), entryProcessor, args);
+ return delegate.get().invokeAsync(keyTransformer.transform(key), entryProcessor, args);
}
/** {@inheritDoc} */
@@ -704,7 +712,7 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
EntryProcessor entryProcessor,
Object... args
) throws IgniteCheckedException {
- return delegate.invoke(keyTransformer.transform(key), entryProcessor, args);
+ return delegate.get().invoke(keyTransformer.transform(key), entryProcessor, args);
}
/** {@inheritDoc} */
@@ -712,42 +720,42 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
boolean keepBinary,
@Nullable IgniteBiPredicate p
) throws IgniteCheckedException {
- return delegate.scanIterator(keepBinary, p);
+ return delegate.get().scanIterator(keepBinary, p);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> removeAllConflictAsync(Map drMap) throws IgniteCheckedException {
- return delegate.removeAllConflictAsync(drMap);
+ return delegate.get().removeAllConflictAsync(drMap);
}
/** {@inheritDoc} */
@Override public void removeAllConflict(Map drMap) throws IgniteCheckedException {
- delegate.removeAllConflictAsync(drMap);
+ delegate.get().removeAllConflictAsync(drMap);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> putAllConflictAsync(Map drMap) throws IgniteCheckedException {
- return delegate.putAllConflictAsync(drMap);
+ return delegate.get().putAllConflictAsync(drMap);
}
/** {@inheritDoc} */
@Override public void putAllConflict(Map drMap) throws IgniteCheckedException {
- delegate.putAllConflict(drMap);
+ delegate.get().putAllConflict(drMap);
}
/** {@inheritDoc} */
@Override public IgniteInternalCache keepBinary() {
- return delegate.keepBinary();
+ return delegate.get().keepBinary();
}
/** {@inheritDoc} */
@Override public IgniteInternalCache cache() {
- return delegate.cache();
+ return delegate.get().cache();
}
/** {@inheritDoc} */
@Override public Iterator iterator() {
- return delegate.iterator();
+ return delegate.get().iterator();
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateNonStrictAccessStrategy.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateNonStrictAccessStrategy.java b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateNonStrictAccessStrategy.java
index 06c6f3d..b7d27fe 100644
--- a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateNonStrictAccessStrategy.java
+++ b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateNonStrictAccessStrategy.java
@@ -109,6 +109,9 @@ public class HibernateNonStrictAccessStrategy extends HibernateAccessStrategyAda
@Override public boolean afterUpdate(Object key, Object val) {
WriteContext ctx = writeCtx.get();
+ if (log.isDebugEnabled())
+ log.debug("Put after update [cache=" + cache.name() + ", key=" + key + ", val=" + val + ']');
+
if (ctx != null) {
ctx.updated(key, val);
@@ -127,6 +130,9 @@ public class HibernateNonStrictAccessStrategy extends HibernateAccessStrategyAda
/** {@inheritDoc} */
@Override public boolean afterInsert(Object key, Object val) {
+ if (log.isDebugEnabled())
+ log.debug("Put after insert [cache=" + cache.name() + ", key=" + key + ", val=" + val + ']');
+
try {
cache.put(key, val);
@@ -227,4 +233,4 @@ public class HibernateNonStrictAccessStrategy extends HibernateAccessStrategyAda
return S.toString(WriteContext.class, this);
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadOnlyAccessStrategy.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadOnlyAccessStrategy.java b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadOnlyAccessStrategy.java
index a0957fd..07570ba 100644
--- a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadOnlyAccessStrategy.java
+++ b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadOnlyAccessStrategy.java
@@ -55,7 +55,8 @@ public class HibernateReadOnlyAccessStrategy extends HibernateAccessStrategyAdap
* @param cache Cache.
* @param eConverter Exception converter.
*/
- public HibernateReadOnlyAccessStrategy(Ignite ignite,
+ public HibernateReadOnlyAccessStrategy(
+ Ignite ignite,
HibernateCacheProxy cache,
HibernateExceptionConverter eConverter) {
super(ignite, cache, eConverter);
@@ -68,6 +69,9 @@ public class HibernateReadOnlyAccessStrategy extends HibernateAccessStrategyAdap
/** {@inheritDoc} */
@Override public boolean afterInsert(Object key, Object val) {
+ if (log.isDebugEnabled())
+ log.debug("Put [cache=" + cache.name() + ", key=" + key + ']');
+
try {
cache.put(key, val);
@@ -102,4 +106,4 @@ public class HibernateReadOnlyAccessStrategy extends HibernateAccessStrategyAdap
@Override public boolean afterUpdate(Object key, Object val) {
throw new UnsupportedOperationException("Updates are not supported for read-only access strategy.");
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadWriteAccessStrategy.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadWriteAccessStrategy.java b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadWriteAccessStrategy.java
index 491553d..c3fba41 100644
--- a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadWriteAccessStrategy.java
+++ b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadWriteAccessStrategy.java
@@ -65,7 +65,8 @@ public class HibernateReadWriteAccessStrategy extends HibernateAccessStrategyAda
* @param txCtx Thread local instance used to track updates done during one Hibernate transaction.
* @param eConverter Exception converter.
*/
- protected HibernateReadWriteAccessStrategy(Ignite ignite,
+ protected HibernateReadWriteAccessStrategy(
+ Ignite ignite,
HibernateCacheProxy cache,
ThreadLocal txCtx,
HibernateExceptionConverter eConverter) {
@@ -78,12 +79,14 @@ public class HibernateReadWriteAccessStrategy extends HibernateAccessStrategyAda
@Override public Object get(Object key) {
boolean success = false;
+ Object val = null;
+
try {
- Object o = cache.get(key);
+ val = cache.get(key);
success = true;
- return o;
+ return val;
}
catch (IgniteCheckedException e) {
throw convertException(e);
@@ -91,6 +94,11 @@ public class HibernateReadWriteAccessStrategy extends HibernateAccessStrategyAda
finally {
if (!success)
rollbackCurrentTx();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Get [cache=" + cache.name() + ", key=" + key + ", val=" + val +
+ ", success=" + success + ']');
+ }
}
}
@@ -109,6 +117,11 @@ public class HibernateReadWriteAccessStrategy extends HibernateAccessStrategyAda
finally {
if (!success)
rollbackCurrentTx();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Put from load [cache=" + cache.name() + ", key=" + key + ", val=" + val +
+ ", success=" + success + ']');
+ }
}
}
@@ -134,6 +147,9 @@ public class HibernateReadWriteAccessStrategy extends HibernateAccessStrategyAda
finally {
if (!success)
rollbackCurrentTx();
+
+ if (log.isDebugEnabled())
+ log.debug("Lock [cache=" + cache.name() + ", key=" + key + ", success=" + success + ']');
}
}
@@ -155,6 +171,9 @@ public class HibernateReadWriteAccessStrategy extends HibernateAccessStrategyAda
finally {
if (!success)
rollbackCurrentTx();
+
+ if (log.isDebugEnabled())
+ log.debug("Unlock [cache=" + cache.name() + ", key=" + key + ", success=" + success + ']');
}
}
@@ -189,6 +208,11 @@ public class HibernateReadWriteAccessStrategy extends HibernateAccessStrategyAda
finally {
if (!success)
rollbackCurrentTx();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Put after update [cache=" + cache.name() + ", key=" + key + ", val=" + val +
+ ", success=" + success + ']');
+ }
}
}
@@ -214,6 +238,11 @@ public class HibernateReadWriteAccessStrategy extends HibernateAccessStrategyAda
finally {
if (!success)
rollbackCurrentTx();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Put after insert [cache=" + cache.name() + ", key=" + key + ", val=" + val +
+ ", success=" + success + ']');
+ }
}
}
@@ -235,6 +264,9 @@ public class HibernateReadWriteAccessStrategy extends HibernateAccessStrategyAda
finally {
if (!success)
rollbackCurrentTx();
+
+ if (log.isDebugEnabled())
+ log.debug("Remove [cache=" + cache.name() + ", key=" + key + ", success=" + success + ']');
}
}
@@ -323,4 +355,4 @@ public class HibernateReadWriteAccessStrategy extends HibernateAccessStrategyAda
return locked.isEmpty();
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateTransactionalAccessStrategy.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateTransactionalAccessStrategy.java b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateTransactionalAccessStrategy.java
index 6f4935b..259c6a8 100644
--- a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateTransactionalAccessStrategy.java
+++ b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateTransactionalAccessStrategy.java
@@ -68,7 +68,12 @@ public class HibernateTransactionalAccessStrategy extends HibernateAccessStrateg
/** {@inheritDoc} */
@Nullable @Override public Object get(Object key) {
try {
- return cache.get(key);
+ Object val = cache.get(key);
+
+ if (log.isDebugEnabled())
+ log.debug("Get [cache=" + cache.name() + ", key=" + key + ", val=" + val + ']');
+
+ return val;
}
catch (IgniteCheckedException e) {
throw convertException(e);
@@ -79,6 +84,9 @@ public class HibernateTransactionalAccessStrategy extends HibernateAccessStrateg
@Override public void putFromLoad(Object key, Object val) {
try {
cache.put(key, val);
+
+ if (log.isDebugEnabled())
+ log.debug("Put [cache=" + cache.name() + ", key=" + key + ", val=" + val + ']');
}
catch (IgniteCheckedException e) {
throw convertException(e);
@@ -98,9 +106,12 @@ public class HibernateTransactionalAccessStrategy extends HibernateAccessStrateg
/** {@inheritDoc} */
@Override public boolean update(Object key, Object val) {
try {
- cache.put(key, val);
+ boolean res = cache.put(key, val);
- return true;
+ if (log.isDebugEnabled())
+ log.debug("Update [cache=" + cache.name() + ", key=" + key + ", val=" + val + ", res=" + res + ']');
+
+ return res;
}
catch (IgniteCheckedException e) {
throw convertException(e);
@@ -115,9 +126,12 @@ public class HibernateTransactionalAccessStrategy extends HibernateAccessStrateg
/** {@inheritDoc} */
@Override public boolean insert(Object key, Object val) {
try {
- cache.put(key, val);
+ boolean res = cache.put(key, val);
+
+ if (log.isDebugEnabled())
+ log.debug("Insert [cache=" + cache.name() + ", key=" + key + ", val=" + val + ", res=" + res + ']');
- return true;
+ return res;
}
catch (IgniteCheckedException e) {
throw convertException(e);
@@ -138,4 +152,4 @@ public class HibernateTransactionalAccessStrategy extends HibernateAccessStrateg
throw convertException(e);
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2bcdf16..fc71761 100644
--- a/pom.xml
+++ b/pom.xml
@@ -108,6 +108,7 @@
<module>modules/geospatial</module>
<module>modules/hibernate-4.2</module>
<module>modules/hibernate-5.1</module>
+ <module>modules/hibernate-5.3</module>
<module>modules/schedule</module>
<module>modules/web-console/web-agent</module>
<module>modules/yardstick</module>
@@ -245,6 +246,7 @@
<modules>
<module>modules/hibernate-4.2</module>
<module>modules/hibernate-5.1</module>
+ <module>modules/hibernate-5.3</module>
<module>modules/geospatial</module>
<module>modules/schedule</module>
</modules>
[30/52] [abbrv] ignite git commit: IGNITE-10709 New inspections
introduced in 2018+ IntelliJ IDEA version were disabled on TC configuration,
unused Suppress removal. - Fixes #5680.
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
index 644c620..1aa6891 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
@@ -108,7 +108,6 @@ public class GridCachePutAllFailoverSelfTest extends GridCommonAbstractTest {
/** Filter to include only worker nodes. */
private static final IgnitePredicate<ClusterNode> workerNodesFilter = new PN() {
- @SuppressWarnings("unchecked")
@Override public boolean apply(ClusterNode n) {
return "worker".equals(n.attribute("segment"));
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheEntryListenerAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheEntryListenerAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheEntryListenerAbstractTest.java
index b612c6b..0641ebb 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheEntryListenerAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheEntryListenerAbstractTest.java
@@ -639,7 +639,6 @@ public abstract class IgniteCacheEntryListenerAbstractTest extends IgniteCacheAb
* @param vals Values in cache.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void checkListenerOnStart(Map<Object, Object> vals) throws Exception {
lsnrCfg = new MutableCacheEntryListenerConfiguration<>(
new CreateUpdateRemoveExpireListenerFactory(),
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInvokeAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInvokeAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInvokeAbstractTest.java
index 9557810..496af11 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInvokeAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInvokeAbstractTest.java
@@ -697,7 +697,6 @@ public abstract class IgniteCacheInvokeAbstractTest extends IgniteCacheAbstractT
* @param resMap Result map.
* @param exp Expected results.
*/
- @SuppressWarnings("unchecked")
private void checkResult(Map resMap, Map<Object, Object> exp) {
assertNotNull(resMap);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxExceptionAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxExceptionAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxExceptionAbstractSelfTest.java
index 7d62d4f..e281103 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxExceptionAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxExceptionAbstractSelfTest.java
@@ -402,7 +402,6 @@ public abstract class IgniteTxExceptionAbstractSelfTest extends GridCacheAbstrac
* @param key Key.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void checkUnlocked(final Integer key) throws Exception {
TestIndexingSpi.forceFail(false);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/WithKeepBinaryCacheFullApiTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/WithKeepBinaryCacheFullApiTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/WithKeepBinaryCacheFullApiTest.java
index d950962..a5bc773 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/WithKeepBinaryCacheFullApiTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/WithKeepBinaryCacheFullApiTest.java
@@ -806,7 +806,6 @@ public class WithKeepBinaryCacheFullApiTest extends IgniteCacheConfigVariationsA
/**
* @throws Exception If failed.
*/
- @SuppressWarnings("serial")
@Test
public void testInvokeAllTx() throws Exception {
if (!txShouldBeUsed())
@@ -998,7 +997,6 @@ public class WithKeepBinaryCacheFullApiTest extends IgniteCacheConfigVariationsA
/**
* @throws Exception If failed.
*/
- @SuppressWarnings("serial")
@Test
public void testInvokeAllAsyncTx() throws Exception {
if (!txShouldBeUsed())
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLateAffinityAssignmentTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLateAffinityAssignmentTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLateAffinityAssignmentTest.java
index df8df1f..2a97283 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLateAffinityAssignmentTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLateAffinityAssignmentTest.java
@@ -2620,7 +2620,6 @@ public class CacheLateAffinityAssignmentTest extends GridCommonAbstractTest {
* @throws Exception If failed.
* @return Affinity assignments.
*/
- @SuppressWarnings("unchecked")
private Map<String, List<List<ClusterNode>>> checkAffinity(int expNodes,
AffinityTopologyVersion topVer,
boolean expIdeal,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCachePrimarySyncTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCachePrimarySyncTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCachePrimarySyncTest.java
index 7d43bc3..2fc20c8 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCachePrimarySyncTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCachePrimarySyncTest.java
@@ -1174,7 +1174,6 @@ public class IgniteTxCachePrimarySyncTest extends GridCommonAbstractTest {
*/
private static class TestStoreFactory implements Factory<CacheStore<Object, Object>> {
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public CacheStore<Object, Object> create() {
return new TestCacheStore();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtEvictionNearReadersSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtEvictionNearReadersSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtEvictionNearReadersSelfTest.java
index fbe48f2..0ccba59 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtEvictionNearReadersSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtEvictionNearReadersSelfTest.java
@@ -134,7 +134,6 @@ public class GridCacheDhtEvictionNearReadersSelfTest extends GridCommonAbstractT
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override protected void afterTest() throws Exception {
for (int i = 0; i < GRID_CNT; i++) {
near(grid(i)).removeAll();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryTransactionalSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryTransactionalSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryTransactionalSelfTest.java
index 8c7f859..4b94905 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryTransactionalSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryTransactionalSelfTest.java
@@ -298,7 +298,6 @@ public class IgniteCachePutRetryTransactionalSelfTest extends IgniteCachePutRetr
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public Void call() throws Exception {
String key1 = "key-" + base + "-" + i;
String key2 = "key-" + base;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearMultiNodeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearMultiNodeSelfTest.java
index 0e0bc96..5fcfff1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearMultiNodeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearMultiNodeSelfTest.java
@@ -207,7 +207,7 @@ public class GridCacheNearMultiNodeSelfTest extends GridCommonAbstractTest {
* @param g Grid.
* @return Dht cache.
*/
- @SuppressWarnings({"unchecked", "TypeMayBeWeakened"})
+ @SuppressWarnings({"unchecked"})
private GridDhtCacheAdapter<Integer, String> dht(Ignite g) {
return ((GridNearCacheAdapter)((IgniteKernal)g).internalCache(DEFAULT_CACHE_NAME)).dht();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
index 103abdd..2c6b651 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
@@ -376,7 +376,6 @@ public class GridCacheNearOnlyMultiNodeFullApiSelfTest extends GridCachePartitio
storeStgy.removeFromStore(key);
assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicateX() {
- @SuppressWarnings("unchecked")
@Override public boolean applyx() throws IgniteCheckedException {
try {
Integer val = c.get(key);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxMultiNodeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxMultiNodeSelfTest.java
index f1b2de2..e7a7b31 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxMultiNodeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxMultiNodeSelfTest.java
@@ -246,7 +246,6 @@ public class GridCacheNearTxMultiNodeSelfTest extends GridCommonAbstractTest {
* @param g Grid.
* @param tm Transaction manager.
*/
- @SuppressWarnings( {"unchecked"})
private void checkTm(Ignite g, IgniteTxManager tm) {
Collection<IgniteInternalTx> txs = tm.activeTransactions();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedMultiNodeCounterSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedMultiNodeCounterSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedMultiNodeCounterSelfTest.java
index df0f5af..0e62be8 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedMultiNodeCounterSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedMultiNodeCounterSelfTest.java
@@ -67,7 +67,7 @@ import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_REA
/**
* Multiple put test.
*/
-@SuppressWarnings({"UnusedAssignment", "TooBroadScope"})
+@SuppressWarnings({"TooBroadScope"})
@RunWith(JUnit4.class)
public class GridCachePartitionedMultiNodeCounterSelfTest extends GridCommonAbstractTest {
/** Debug flag. */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/EvictionAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/EvictionAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/EvictionAbstractTest.java
index a2ec388..2136e2c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/EvictionAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/EvictionAbstractTest.java
@@ -658,7 +658,6 @@ public abstract class EvictionAbstractTest<T extends EvictionPolicy<?, ?>>
* @param c Collection.
* @return String.
*/
- @SuppressWarnings("unchecked")
protected static String string(Iterable<? extends Cache.Entry> c) {
return "[" +
F.fold(
@@ -956,7 +955,6 @@ public abstract class EvictionAbstractTest<T extends EvictionPolicy<?, ?>>
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> clazz) {
if (clazz.isAssignableFrom(IgniteCache.class))
return (T)parent;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/EvictionPolicyFactoryAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/EvictionPolicyFactoryAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/EvictionPolicyFactoryAbstractTest.java
index 47a6910..37bed2d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/EvictionPolicyFactoryAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/EvictionPolicyFactoryAbstractTest.java
@@ -645,7 +645,6 @@ public abstract class EvictionPolicyFactoryAbstractTest<T extends EvictionPolicy
* @param i Grid index.
* @return Policy.
*/
- @SuppressWarnings({"unchecked"})
protected T policy(int i) {
CacheEvictionManager evictMgr = grid(i).cachex(DEFAULT_CACHE_NAME).context().evicts();
@@ -658,7 +657,6 @@ public abstract class EvictionPolicyFactoryAbstractTest<T extends EvictionPolicy
* @param i Grid index.
* @return Policy.
*/
- @SuppressWarnings({"unchecked"})
protected T nearPolicy(int i) {
CacheEvictionManager evictMgr = grid(i).cachex(DEFAULT_CACHE_NAME).context().near().context().evicts();
@@ -686,7 +684,6 @@ public abstract class EvictionPolicyFactoryAbstractTest<T extends EvictionPolicy
* @param c Collection.
* @return String.
*/
- @SuppressWarnings("unchecked")
protected static String string(Iterable<? extends Cache.Entry> c) {
return "[" +
F.fold(
@@ -996,7 +993,6 @@ public abstract class EvictionPolicyFactoryAbstractTest<T extends EvictionPolicy
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> clazz) {
if (clazz.isAssignableFrom(IgniteCache.class))
return (T)parent;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheLocalTxMultiThreadedSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheLocalTxMultiThreadedSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheLocalTxMultiThreadedSelfTest.java
index 5babd8f..3be8f63 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheLocalTxMultiThreadedSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheLocalTxMultiThreadedSelfTest.java
@@ -40,7 +40,6 @@ public class GridCacheLocalTxMultiThreadedSelfTest extends IgniteTxMultiThreaded
}
/** {@inheritDoc} */
- @SuppressWarnings({"ConstantConditions"})
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration c = super.getConfiguration(igniteInstanceName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/memtracker/PageMemoryTrackerPluginProvider.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/memtracker/PageMemoryTrackerPluginProvider.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/memtracker/PageMemoryTrackerPluginProvider.java
index cad3b02..3bd9f4a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/memtracker/PageMemoryTrackerPluginProvider.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/memtracker/PageMemoryTrackerPluginProvider.java
@@ -76,7 +76,6 @@ public class PageMemoryTrackerPluginProvider implements PluginProvider<PageMemor
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T extends IgnitePlugin> T plugin() {
return (T)plugin;
}
@@ -117,7 +116,6 @@ public class PageMemoryTrackerPluginProvider implements PluginProvider<PageMemor
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T createComponent(PluginContext ctx, Class<T> cls) {
if (plugin != null) {
if (IgniteWriteAheadLogManager.class.equals(cls))
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousBatchAckTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousBatchAckTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousBatchAckTest.java
index 779b160..1984df3 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousBatchAckTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousBatchAckTest.java
@@ -77,7 +77,6 @@ public class CacheContinuousBatchAckTest extends GridCommonAbstractTest implemen
protected static final AtomicBoolean filterOn = new AtomicBoolean(false);
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryCounterAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryCounterAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryCounterAbstractTest.java
index 3c190e4..e86f357 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryCounterAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryCounterAbstractTest.java
@@ -82,7 +82,6 @@ public abstract class CacheContinuousQueryCounterAbstractTest extends GridCommon
private static final String NO_CACHE_IGNITE_INSTANCE_NAME = "noCacheGrid";
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBufferTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBufferTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBufferTest.java
index c86ac65..cfbc024 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBufferTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBufferTest.java
@@ -35,7 +35,6 @@ import org.junit.runners.JUnit4;
/**
*
*/
-@SuppressWarnings("unchecked")
@RunWith(JUnit4.class)
public class CacheContinuousQueryEventBufferTest extends GridCommonAbstractTest {
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/AbstractDeadlockDetectionTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/AbstractDeadlockDetectionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/AbstractDeadlockDetectionTest.java
index 05b315d..89369c4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/AbstractDeadlockDetectionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/AbstractDeadlockDetectionTest.java
@@ -125,7 +125,6 @@ public abstract class AbstractDeadlockDetectionTest extends GridCommonAbstractTe
* @param startFrom Start value for keys search.
* @return Collection of keys for which given node is primary.
*/
- @SuppressWarnings("unchecked")
private <T> List<T> findPrimaryKeys(IgniteCache<?, ?> cache, final int cnt, final T startFrom) {
A.ensure(cnt > 0, "cnt");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockCauseTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockCauseTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockCauseTest.java
index 714154a..4bbbee7 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockCauseTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockCauseTest.java
@@ -53,7 +53,6 @@ public class TxDeadlockCauseTest extends GridCommonAbstractTest {
private CacheConfiguration ccfg;
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionUnmasrhalErrorsTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionUnmasrhalErrorsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionUnmasrhalErrorsTest.java
index 5b5dddb..140c31a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionUnmasrhalErrorsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionUnmasrhalErrorsTest.java
@@ -59,7 +59,6 @@ public class TxDeadlockDetectionUnmasrhalErrorsTest extends GridCommonAbstractTe
private static boolean client;
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(gridName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionCrossCacheTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionCrossCacheTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionCrossCacheTest.java
index 5a39755..6647c56 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionCrossCacheTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionCrossCacheTest.java
@@ -54,7 +54,6 @@ public class TxPessimisticDeadlockDetectionCrossCacheTest extends GridCommonAbst
private static final int NODES_CNT = 2;
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/closure/GridClosureProcessorSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/closure/GridClosureProcessorSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/closure/GridClosureProcessorSelfTest.java
index 45289b6..249adbf 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/closure/GridClosureProcessorSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/closure/GridClosureProcessorSelfTest.java
@@ -86,7 +86,6 @@ public class GridClosureProcessorSelfTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
- @SuppressWarnings({"ConstantConditions"})
@Override protected void beforeTestsStarted() throws Exception {
assert NODES_CNT >= 2;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
index 0f04afe..c340695 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
@@ -930,7 +930,6 @@ public abstract class IgfsAbstractBaseSelfTest extends IgfsCommonAbstractTest {
* @param igfs IGFS.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
public static void clear(IgniteFileSystem igfs) throws Exception {
Field workerMapFld = IgfsImpl.class.getDeclaredField("workerMap");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryCrashDetectionSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryCrashDetectionSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryCrashDetectionSelfTest.java
index 4ed1937..7dd3d43 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryCrashDetectionSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryCrashDetectionSelfTest.java
@@ -288,7 +288,7 @@ public class IpcSharedMemoryCrashDetectionSelfTest extends GridCommonAbstractTes
* @return List of shared memory IDs created while client-server interactions.
* @throws Exception In case of any exception happen.
*/
- @SuppressWarnings({"BusyWait", "TypeMayBeWeakened"})
+ @SuppressWarnings({"BusyWait"})
private Collection<Integer> interactWithClient(IpcSharedMemoryServerEndpoint srv, boolean killClient)
throws Exception {
ProcessStartResult clientStartRes = startSharedMemoryTestClient();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/lang/IgniteUuidSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/lang/IgniteUuidSelfTest.java b/modules/core/src/test/java/org/apache/ignite/lang/IgniteUuidSelfTest.java
index 4091e1b..3d0cafb 100644
--- a/modules/core/src/test/java/org/apache/ignite/lang/IgniteUuidSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/lang/IgniteUuidSelfTest.java
@@ -226,7 +226,6 @@ public class IgniteUuidSelfTest extends GridCommonAbstractTest {
* @throws ClassNotFoundException If failed.
* @throws IOException If failed.
*/
- @SuppressWarnings({"unchecked"})
private <T> T read(byte[] bytes) throws ClassNotFoundException, IOException {
ByteArrayInputStream bin = new ByteArrayInputStream(bytes);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/loadtests/GridLoadTestStatistics.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/GridLoadTestStatistics.java b/modules/core/src/test/java/org/apache/ignite/loadtests/GridLoadTestStatistics.java
index e2494a6..711fe7d 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/GridLoadTestStatistics.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/GridLoadTestStatistics.java
@@ -74,7 +74,6 @@ public class GridLoadTestStatistics {
* @param taskTime Task execution time.
* @return Task count.
*/
- @SuppressWarnings("unchecked")
public synchronized long onTaskCompleted(@Nullable ComputeTaskFuture<?> fut, int jobNum, long taskTime) {
taskCnt++;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/loadtests/GridSingleExecutionTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/GridSingleExecutionTest.java b/modules/core/src/test/java/org/apache/ignite/loadtests/GridSingleExecutionTest.java
index 1c8ce2b..826ac2b 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/GridSingleExecutionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/GridSingleExecutionTest.java
@@ -195,7 +195,6 @@ public final class GridSingleExecutionTest {
* @return List of configurations.
* @throws IgniteCheckedException If failed..
*/
- @SuppressWarnings("unchecked")
private static Iterable<IgniteConfiguration> getConfigurations(String springCfgPath, String log) throws IgniteCheckedException {
File path = GridTestUtils.resolveIgnitePath(springCfgPath);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/loadtests/cache/GridCacheAbstractLoadTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/cache/GridCacheAbstractLoadTest.java b/modules/core/src/test/java/org/apache/ignite/loadtests/cache/GridCacheAbstractLoadTest.java
index 5e1725b..f03690a 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/cache/GridCacheAbstractLoadTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/cache/GridCacheAbstractLoadTest.java
@@ -224,7 +224,6 @@ abstract class GridCacheAbstractLoadTest {
/**
* @return Write threads count.
*/
- @SuppressWarnings({"ConstantConditions"})
protected int writeThreads() {
int ratio = (int)(threads * writeRatio);
@@ -234,7 +233,6 @@ abstract class GridCacheAbstractLoadTest {
/**
* @return Read threads count.
*/
- @SuppressWarnings({"ConstantConditions"})
protected int readThreads() {
int ratio = (int)(threads * (1 - writeRatio));
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/loadtests/direct/redeploy/GridSingleSplitsRedeployLoadTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/direct/redeploy/GridSingleSplitsRedeployLoadTest.java b/modules/core/src/test/java/org/apache/ignite/loadtests/direct/redeploy/GridSingleSplitsRedeployLoadTest.java
index 85b1b27..3a20ef3 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/direct/redeploy/GridSingleSplitsRedeployLoadTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/direct/redeploy/GridSingleSplitsRedeployLoadTest.java
@@ -172,7 +172,6 @@ public class GridSingleSplitsRedeployLoadTest extends GridCommonAbstractTest {
* @return Loaded task class.
* @throws Exception If failed.
*/
- @SuppressWarnings({"unchecked"})
private Class<? extends ComputeTask<?, ?>> loadTaskClass() throws Exception {
return (Class<? extends ComputeTask<?, ?>>)getExternalClassLoader().loadClass(TASK_NAME);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/loadtests/dsi/GridDsiClient.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/dsi/GridDsiClient.java b/modules/core/src/test/java/org/apache/ignite/loadtests/dsi/GridDsiClient.java
index e736888..42f325d 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/dsi/GridDsiClient.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/dsi/GridDsiClient.java
@@ -162,7 +162,7 @@ public class GridDsiClient implements Callable {
*/
private static void displayReqCount() {
new Thread(new Runnable() {
- @SuppressWarnings({"BusyWait", "InfiniteLoopStatement"})
+ @SuppressWarnings({"BusyWait"})
@Override public void run() {
int interval = 30;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/loadtests/dsi/GridDsiPerfJob.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/dsi/GridDsiPerfJob.java b/modules/core/src/test/java/org/apache/ignite/loadtests/dsi/GridDsiPerfJob.java
index 8c8fc74..cc1984c 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/dsi/GridDsiPerfJob.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/dsi/GridDsiPerfJob.java
@@ -341,7 +341,6 @@ public class GridDsiPerfJob extends ComputeJobAdapter {
* @param key Key.
* @return Object.
*/
- @SuppressWarnings("ConstantConditions")
private <T> Object get(Object key) {
return ignite.cache(cacheName).get(key);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerAbstractTest.java
index 10100e2..fbbb763 100644
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerAbstractTest.java
@@ -548,7 +548,6 @@ public abstract class GridMarshallerAbstractTest extends GridCommonAbstractTest
*
* @throws Exception If test failed.
*/
- @SuppressWarnings("unchecked")
@Test
public void testNodeLocalMarshalling() throws Exception {
ConcurrentMap<String, String> loc = grid().cluster().nodeLocalMap();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
index 1c03310..6a3f3b7 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
@@ -666,7 +666,6 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
/**
* @throws Exception If failed.
*/
- @SuppressWarnings("TooBroadScope")
@Test
public void testStopRemoteListen() throws Exception {
final AtomicInteger msgCnt1 = new AtomicInteger();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/p2p/GridAbstractMultinodeRedeployTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/p2p/GridAbstractMultinodeRedeployTest.java b/modules/core/src/test/java/org/apache/ignite/p2p/GridAbstractMultinodeRedeployTest.java
index b0ac19b..0bdb660 100644
--- a/modules/core/src/test/java/org/apache/ignite/p2p/GridAbstractMultinodeRedeployTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/p2p/GridAbstractMultinodeRedeployTest.java
@@ -100,7 +100,6 @@ abstract class GridAbstractMultinodeRedeployTest extends GridCommonAbstractTest
* @return Loaded class.
* @throws Exception Thrown if any exception occurs.
*/
- @SuppressWarnings({"unchecked"})
private Class<? extends ComputeTask<int[], ?>> loadTaskClass() throws Exception {
return (Class<? extends ComputeTask<int[], ?>>)new GridTestExternalClassLoader(new URL[]{
new URL(GridTestProperties.getProperty("p2p.uri.cls"))}).loadClass(TASK_NAME);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PDoubleDeploymentSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PDoubleDeploymentSelfTest.java b/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PDoubleDeploymentSelfTest.java
index 4358f02..77aefbf 100644
--- a/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PDoubleDeploymentSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PDoubleDeploymentSelfTest.java
@@ -71,7 +71,6 @@ public class GridP2PDoubleDeploymentSelfTest extends GridCommonAbstractTest {
* @param depMode deployment mode.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void processTestBothNodesDeploy(DeploymentMode depMode) throws Exception {
try {
this.depMode = depMode;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PRemoteClassLoadersSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PRemoteClassLoadersSelfTest.java b/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PRemoteClassLoadersSelfTest.java
index f761e25..17114b0 100644
--- a/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PRemoteClassLoadersSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PRemoteClassLoadersSelfTest.java
@@ -72,7 +72,6 @@ public class GridP2PRemoteClassLoadersSelfTest extends GridCommonAbstractTest {
* @param depMode deployment mode.
* @throws Exception If failed..
*/
- @SuppressWarnings("unchecked")
private void processTestSameRemoteClassLoader(DeploymentMode depMode) throws Exception {
try {
this.depMode = depMode;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PTimeoutSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PTimeoutSelfTest.java b/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PTimeoutSelfTest.java
index 0cd4e7b..74a1efe 100644
--- a/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PTimeoutSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PTimeoutSelfTest.java
@@ -99,7 +99,6 @@ public class GridP2PTimeoutSelfTest extends GridCommonAbstractTest {
* @param depMode deployment mode.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void processFilterTest(DeploymentMode depMode) throws Exception {
this.depMode = depMode;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PUndeploySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PUndeploySelfTest.java b/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PUndeploySelfTest.java
index 42eae7d..6bb4e24 100644
--- a/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PUndeploySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PUndeploySelfTest.java
@@ -71,7 +71,6 @@ public class GridP2PUndeploySelfTest extends GridCommonAbstractTest {
* @param depMode deployment mode.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void processTestUndeployLocalTasks(DeploymentMode depMode) throws Exception {
try {
this.depMode = depMode;
@@ -123,7 +122,6 @@ public class GridP2PUndeploySelfTest extends GridCommonAbstractTest {
* @param depMode deployment mode.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void processTestUndeployP2PTasks(DeploymentMode depMode) throws Exception {
try {
this.depMode = depMode;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/spi/collision/GridTestCollisionTaskSession.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/collision/GridTestCollisionTaskSession.java b/modules/core/src/test/java/org/apache/ignite/spi/collision/GridTestCollisionTaskSession.java
index 09f277f..5115fa5 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/collision/GridTestCollisionTaskSession.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/collision/GridTestCollisionTaskSession.java
@@ -169,7 +169,6 @@ public class GridTestCollisionTaskSession implements ComputeTaskSession {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> V getAttribute(K key) {
if (priAttrKey != null && priAttrKey.equals(key))
return (V)pri;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/spi/collision/priorityqueue/GridPriorityQueueCollisionSpiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/collision/priorityqueue/GridPriorityQueueCollisionSpiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/collision/priorityqueue/GridPriorityQueueCollisionSpiSelfTest.java
index 4f2a3fe..c74f738 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/collision/priorityqueue/GridPriorityQueueCollisionSpiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/collision/priorityqueue/GridPriorityQueueCollisionSpiSelfTest.java
@@ -299,7 +299,6 @@ public class GridPriorityQueueCollisionSpiSelfTest extends GridSpiAbstractTest<P
if (((GridTestCollisionTaskSession)ctx.getTaskSession()).getPriority() >= 8) {
((GridTestCollisionJobContext)ctx).setTaskSession(new GridTestCollisionTaskSession(100,
DFLT_PRIORITY_ATTRIBUTE_KEY) {
- @SuppressWarnings("unchecked")
@Override public <K, V> V getAttribute(K key) {
if (getPriorityAttributeKey() != null && getPriorityAttributeKey().equals(key))
return (V)"wrong-attr";
@@ -309,7 +308,7 @@ public class GridPriorityQueueCollisionSpiSelfTest extends GridSpiAbstractTest<P
});
((GridTestCollisionJobContext)ctx).setJobContext(new GridTestJobContext() {
- @SuppressWarnings({"unchecked", "RedundantTypeArguments"})
+ @SuppressWarnings({"RedundantTypeArguments"})
@Override public <K, V> V getAttribute(K key) {
if (DFLT_JOB_PRIORITY_ATTRIBUTE_KEY.equals(key))
return (V)"wrong-attr";
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoveryAckSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoveryAckSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoveryAckSelfTest.java
index 22d1075..4b90c91 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoveryAckSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoveryAckSelfTest.java
@@ -144,7 +144,6 @@ public class GridTcpCommunicationSpiRecoveryAckSelfTest<T extends CommunicationS
* @param msgPerIter Messages per iteration.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void checkAck(int ackCnt, int idleTimeout, int msgPerIter) throws Exception {
createSpis(ackCnt, idleTimeout, TcpCommunicationSpi.DFLT_MSG_QUEUE_LIMIT);
@@ -278,7 +277,6 @@ public class GridTcpCommunicationSpiRecoveryAckSelfTest<T extends CommunicationS
/**
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void checkOverflow() throws Exception {
TcpCommunicationSpi spi0 = spis.get(0);
TcpCommunicationSpi spi1 = spis.get(1);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySelfTest.java
index 3232ba3..9e49107 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySelfTest.java
@@ -62,7 +62,6 @@ import org.junit.runners.JUnit4;
/**
*
*/
-@SuppressWarnings("unchecked")
@GridSpiTest(spi = TcpCommunicationSpi.class, group = "Communication SPI")
@RunWith(JUnit4.class)
public class GridTcpCommunicationSpiRecoverySelfTest<T extends CommunicationSpi> extends GridSpiAbstractTest<T> {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationRecoveryAckClosureSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationRecoveryAckClosureSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationRecoveryAckClosureSelfTest.java
index e304561..49211cb 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationRecoveryAckClosureSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationRecoveryAckClosureSelfTest.java
@@ -146,7 +146,6 @@ public class IgniteTcpCommunicationRecoveryAckClosureSelfTest<T extends Communic
* @param msgPerIter Messages per iteration.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void checkAck(int ackCnt, int idleTimeout, int msgPerIter) throws Exception {
createSpis(ackCnt, idleTimeout, TcpCommunicationSpi.DFLT_MSG_QUEUE_LIMIT);
@@ -297,7 +296,6 @@ public class IgniteTcpCommunicationRecoveryAckClosureSelfTest<T extends Communic
/**
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void checkOverflow() throws Exception {
TcpCommunicationSpi spi0 = spis.get(0);
TcpCommunicationSpi spi1 = spis.get(1);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
index b52f00b..5c4a5c0 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
@@ -2371,7 +2371,6 @@ public class TcpClientDiscoverySpiSelfTest extends GridCommonAbstractTest {
* @param ignite Grid.
* @param expCnt Expected nodes count.
*/
- @SuppressWarnings("TypeMayBeWeakened")
private void checkRemoteNodes(Ignite ignite, int expCnt) {
Collection<ClusterNode> nodes = ignite.cluster().forRemotes().nodes();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/spi/failover/always/GridAlwaysFailoverSpiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/failover/always/GridAlwaysFailoverSpiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/failover/always/GridAlwaysFailoverSpiSelfTest.java
index c22a277..e1d488c 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/failover/always/GridAlwaysFailoverSpiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/failover/always/GridAlwaysFailoverSpiSelfTest.java
@@ -117,7 +117,6 @@ public class GridAlwaysFailoverSpiSelfTest extends GridSpiAbstractTest<AlwaysFai
* @param res Job result.
* @param cnt Failure count.
*/
- @SuppressWarnings("unchecked")
private void checkFailedNodes(ComputeJobResult res, int cnt) {
Collection<UUID> failedNodes =
(Collection<UUID>)res.getJobContext().getAttribute(FAILED_NODE_LIST_ATTR);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/spi/failover/jobstealing/GridJobStealingFailoverSpiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/failover/jobstealing/GridJobStealingFailoverSpiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/failover/jobstealing/GridJobStealingFailoverSpiSelfTest.java
index 4f7bc31..13aa5ec 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/failover/jobstealing/GridJobStealingFailoverSpiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/failover/jobstealing/GridJobStealingFailoverSpiSelfTest.java
@@ -228,7 +228,6 @@ public class GridJobStealingFailoverSpiSelfTest extends GridSpiAbstractTest<JobS
* @param failed Failed node.
* @param failCnt Failover count.
*/
- @SuppressWarnings("unchecked")
private void checkAttributes(ComputeJobContext ctx, ClusterNode failed, int failCnt) {
assert (Integer)ctx.getAttribute(FAILOVER_ATTEMPT_COUNT_ATTR) == failCnt;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/startup/GridVmNodesStarter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/startup/GridVmNodesStarter.java b/modules/core/src/test/java/org/apache/ignite/startup/GridVmNodesStarter.java
index b2f2f02..ca68577 100644
--- a/modules/core/src/test/java/org/apache/ignite/startup/GridVmNodesStarter.java
+++ b/modules/core/src/test/java/org/apache/ignite/startup/GridVmNodesStarter.java
@@ -192,7 +192,6 @@ public final class GridVmNodesStarter {
* @return List of configurations.
* @throws IgniteCheckedException If an error occurs.
*/
- @SuppressWarnings("unchecked")
private static Iterable<IgniteConfiguration> getConfigurations(String springCfgPath)
throws IgniteCheckedException {
File path = GridTestUtils.resolveIgnitePath(springCfgPath);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/GridSpiTestContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/GridSpiTestContext.java b/modules/core/src/test/java/org/apache/ignite/testframework/GridSpiTestContext.java
index 1b38857..da43ded 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/GridSpiTestContext.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/GridSpiTestContext.java
@@ -484,7 +484,6 @@ public class GridSpiTestContext implements IgniteSpiContext {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public <K, V> V putIfAbsent(String cacheName, K key, V val, long ttl) {
V v = get(cacheName, key);
@@ -673,7 +672,6 @@ public class GridSpiTestContext implements IgniteSpiContext {
}
/** {@inheritDoc} */
- @SuppressWarnings("ConstantConditions")
@Override public void onMessage(UUID nodeId, Object msg, byte plc) {
GridIoUserMessage ioMsg = (GridIoUserMessage)msg;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/GridTestNode.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestNode.java b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestNode.java
index 4f23825..f7d627c 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestNode.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestNode.java
@@ -130,7 +130,7 @@ public class GridTestNode extends GridMetadataAwareAdapter implements ClusterNod
}
/** {@inheritDoc} */
- @Override @SuppressWarnings("unchecked")
+ @Override
public <T> T attribute(String name) {
assert name != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
index 544e8f0..d1b0cbe 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
@@ -564,7 +564,6 @@ public final class GridTestUtils {
* @param it Input iterable of elements.
* @param ps Array of predicates (by number of elements in iterable).
*/
- @SuppressWarnings("ConstantConditions")
public static <T> void assertOneToOne(Iterable<T> it, IgnitePredicate<T>... ps) {
Collection<IgnitePredicate<T>> ps0 = new ArrayList<>(Arrays.asList(ps));
Collection<T2<IgnitePredicate<T>, T>> passed = new ArrayList<>();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariationsTestSuiteBuilder.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariationsTestSuiteBuilder.java b/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariationsTestSuiteBuilder.java
index 4a60671..a322ca1 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariationsTestSuiteBuilder.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariationsTestSuiteBuilder.java
@@ -34,12 +34,10 @@ public class ConfigVariationsTestSuiteBuilder {
private final TestSuite suite;
/** */
- @SuppressWarnings("unchecked")
private ConfigParameter<IgniteConfiguration>[][] igniteParams =
ConfigVariations.igniteBasicSet();
/** */
- @SuppressWarnings("unchecked")
private ConfigParameter<CacheConfiguration>[][] cacheParams;
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/Parameters.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/Parameters.java b/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/Parameters.java
index 27c0a48..69bf209 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/Parameters.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/Parameters.java
@@ -48,7 +48,6 @@ public class Parameters {
/**
* @return Array of configuration processors for given enum.
*/
- @SuppressWarnings("unchecked")
public static <T> ConfigParameter<T>[] enumParameters(String mtdName, Class<?> enumCls) {
return enumParameters(false, mtdName, enumCls);
}
@@ -56,7 +55,6 @@ public class Parameters {
/**
* @return Array of configuration processors for given enum.
*/
- @SuppressWarnings("unchecked")
public static <T> ConfigParameter<T>[] enumParameters(boolean withNull, String mtdName, Class<?> enumCls) {
return parameters0(mtdName, withNull, enumCls.getEnumConstants());
}
@@ -113,7 +111,6 @@ public class Parameters {
/**
* @return Array of configuration processors for given enum.
*/
- @SuppressWarnings("unchecked")
public static <T> ConfigParameter<T>[] booleanParameters(String mtdName) {
return parameters0(mtdName, false, new Boolean[] {true, false});
}
@@ -121,7 +118,6 @@ public class Parameters {
/**
* @return Array of configuration processors for given enum.
*/
- @SuppressWarnings("unchecked")
public static <T> ConfigParameter<T>[] booleanParameters(boolean withNull, String mtdName) {
return parameters0(mtdName, withNull, new Boolean[] {true, false});
}
@@ -172,7 +168,6 @@ public class Parameters {
/**
* Reflection configuration applier.
*/
- @SuppressWarnings("serial")
private static class ReflectionParameter<T> implements ConfigParameter<T> {
/** Classes of marameters cache. */
private static final ConcurrentMap<T2<Class, String>, Class> paramClassesCache = new ConcurrentHashMap();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index 241211c..2b083ca 100755
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -1142,7 +1142,6 @@ public abstract class GridAbstractTest extends TestCase {
* @param igniteInstanceName Ignite instance name.
* @param cancel Cancel flag.
*/
- @SuppressWarnings({"deprecation"})
protected void stopGrid(@Nullable String igniteInstanceName, boolean cancel) {
stopGrid(igniteInstanceName, cancel, true);
}
@@ -1152,7 +1151,6 @@ public abstract class GridAbstractTest extends TestCase {
* @param cancel Cancel flag.
* @param awaitTop Await topology change flag.
*/
- @SuppressWarnings({"deprecation"})
protected void stopGrid(@Nullable String igniteInstanceName, boolean cancel, boolean awaitTop) {
try {
IgniteEx ignite = grid(igniteInstanceName);
@@ -1624,7 +1622,7 @@ public abstract class GridAbstractTest extends TestCase {
* @param marshaller Marshaller to get checkpoint path for.
* @return Path for specific marshaller.
*/
- @SuppressWarnings({"IfMayBeConditional", "deprecation"})
+ @SuppressWarnings({"IfMayBeConditional"})
protected String getDefaultCheckpointPath(Marshaller marshaller) {
if (marshaller instanceof JdkMarshaller)
return SharedFsCheckpointSpi.DFLT_DIR_PATH + "/jdk/";
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteCacheConfigVariationsAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteCacheConfigVariationsAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteCacheConfigVariationsAbstractTest.java
index fa287bd..c1a408b 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteCacheConfigVariationsAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteCacheConfigVariationsAbstractTest.java
@@ -436,7 +436,6 @@ public abstract class IgniteCacheConfigVariationsAbstractTest extends IgniteConf
/**
* @return Default cache instance.
*/
- @SuppressWarnings({"unchecked"})
@Override protected <K, V> IgniteCache<K, V> jcache() {
return jcache(testedNodeIdx);
}
@@ -466,7 +465,6 @@ public abstract class IgniteCacheConfigVariationsAbstractTest extends IgniteConf
* @param idx Index of grid.
* @return Default cache.
*/
- @SuppressWarnings({"unchecked"})
@Override protected <K, V> IgniteCache<K, V> jcache(int idx) {
return ignite(idx).cache(cacheName());
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
index 59e2994..156f99b 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
@@ -242,7 +242,6 @@ public class IgniteTestResources {
* @return Marshaller.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
public static synchronized Marshaller getMarshaller() throws IgniteCheckedException {
String marshallerName =
System.getProperty(MARSH_CLASS_NAME, GridTestProperties.getProperty(GridTestProperties.MARSH_CLASS_NAME));
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/junits/cache/TestCacheSession.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/cache/TestCacheSession.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/cache/TestCacheSession.java
index 6f7c9b3..874559f 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/cache/TestCacheSession.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/cache/TestCacheSession.java
@@ -66,13 +66,11 @@ public class TestCacheSession implements CacheStoreSession {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T attachment() {
return (T)attachment;
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> Map<K, V> properties() {
if (props == null)
props = U.newHashMap(1);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/junits/cache/TestThreadLocalCacheSession.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/cache/TestThreadLocalCacheSession.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/cache/TestThreadLocalCacheSession.java
index 8e0ae2d..5952453 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/cache/TestThreadLocalCacheSession.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/cache/TestThreadLocalCacheSession.java
@@ -60,7 +60,6 @@ public class TestThreadLocalCacheSession implements CacheStoreSession {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T attachment() {
TestCacheSession ses = sesHolder.get();
@@ -68,7 +67,6 @@ public class TestThreadLocalCacheSession implements CacheStoreSession {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> Map<K, V> properties() {
TestCacheSession ses = sesHolder.get();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
index e32617d..54cb358 100755
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
@@ -411,7 +411,6 @@ public abstract class GridCommonAbstractTest extends GridAbstractTest {
* @param replaceExistingValues Replace existing values.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
protected static <K> void loadAll(Cache<K, ?> cache, final Set<K> keys, final boolean replaceExistingValues)
throws Exception {
IgniteCache<K, Object> cacheCp = (IgniteCache<K, Object>)cache;
@@ -1079,7 +1078,6 @@ public abstract class GridCommonAbstractTest extends GridAbstractTest {
* @param startFrom Start value for keys search.
* @return Collection of keys for which given cache is primary.
*/
- @SuppressWarnings("unchecked")
protected List<Integer> primaryKeys(IgniteCache<?, ?> cache, final int cnt, final int startFrom) {
return findKeys(cache, cnt, startFrom, 0);
}
@@ -1090,7 +1088,6 @@ public abstract class GridCommonAbstractTest extends GridAbstractTest {
* @param startFrom Start value for keys search.
* @return Collection of keys for which given cache is primary.
*/
- @SuppressWarnings("unchecked")
protected List<Integer> findKeys(IgniteCache<?, ?> cache, final int cnt, final int startFrom, final int type) {
assert cnt > 0 : cnt;
@@ -1171,7 +1168,6 @@ public abstract class GridCommonAbstractTest extends GridAbstractTest {
* @param startFrom Start value for keys search.
* @return Collection of keys for which given cache is backup.
*/
- @SuppressWarnings("unchecked")
protected List<Integer> backupKeys(IgniteCache<?, ?> cache, int cnt, int startFrom) {
return findKeys(cache, cnt, startFrom, 1);
}
@@ -1183,7 +1179,6 @@ public abstract class GridCommonAbstractTest extends GridAbstractTest {
* @return Collection of keys for which given cache is neither primary nor backup.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
protected List<Integer> nearKeys(IgniteCache<?, ?> cache, int cnt, int startFrom)
throws IgniteCheckedException {
return findKeys(cache, cnt, startFrom, 2);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
index 18a2f7c..f9432ed 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
@@ -591,7 +591,6 @@ public class IgniteCacheProcessProxy<K, V> implements IgniteCache<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> clazz) {
if (Ignite.class.equals(clazz))
return (T)igniteProxy;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java
index 52aace7..4d33367 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java
@@ -101,7 +101,6 @@ public abstract class GridSpiAbstractTest<T extends IgniteSpi> extends GridAbstr
/**
* @return Test data.
*/
- @SuppressWarnings({"unchecked"})
protected TestData<T> getTestData() throws IgniteCheckedException {
TestData<T> data = (TestData<T>)tests.get(getClass());
@@ -174,7 +173,6 @@ public abstract class GridSpiAbstractTest<T extends IgniteSpi> extends GridAbstr
/**
* @throws Exception If failed.
*/
- @SuppressWarnings({"unchecked"})
protected final void spiStart() throws Exception {
GridSpiTest spiTest = GridTestUtils.getAnnotation(getClass(), GridSpiTest.class);
@@ -453,7 +451,6 @@ public abstract class GridSpiAbstractTest<T extends IgniteSpi> extends GridAbstr
*
* @return Class of the SPI implementation.
*/
- @SuppressWarnings({"unchecked"})
protected final Class<? extends T> getSpiClass() {
GridSpiTest spiTest = GridTestUtils.getAnnotation(getClass(), GridSpiTest.class);
[42/52] [abbrv] ignite git commit: IGNITE-10262: MVCC TX: Client
operation may hangs if all data nodes left the grid. This closes #5693.
Posted by sb...@apache.org.
IGNITE-10262: MVCC TX: Client operation may hangs if all data nodes left the grid. This closes #5693.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7b6e17b2
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7b6e17b2
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7b6e17b2
Branch: refs/heads/ignite-627
Commit: 7b6e17b216d82e69610da0432b1b37b70a5b8492
Parents: 664fb93
Author: rkondakov <ko...@mail.ru>
Authored: Wed Dec 19 15:50:31 2018 +0300
Committer: Igor Seliverstov <gv...@gmail.com>
Committed: Wed Dec 19 15:50:31 2018 +0300
----------------------------------------------------------------------
.../near/GridNearTxEnlistFuture.java | 3 +-
.../near/GridNearTxQueryEnlistFuture.java | 5 +
.../GridNearTxQueryResultsEnlistFuture.java | 3 +-
.../IgniteClientCacheStartFailoverTest.java | 4 +-
.../processors/query/h2/IgniteH2Indexing.java | 12 +-
...eMvccAbstractSqlCoordinatorFailoverTest.java | 161 +++++++++++++++++++
6 files changed, 181 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7b6e17b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistFuture.java
index 789cd3c..8cbe93e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistFuture.java
@@ -31,6 +31,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
+import org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException;
import org.apache.ignite.internal.processors.cache.CacheEntryPredicate;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheMessage;
@@ -217,7 +218,7 @@ public class GridNearTxEnlistFuture extends GridNearTxAbstractEnlistFuture<GridC
ClusterNode node = cctx.affinity().primaryByKey(key, topVer);
if (node == null)
- throw new ClusterTopologyCheckedException("Failed to get primary node " +
+ throw new ClusterTopologyServerNotFoundException("Failed to get primary node " +
"[topVer=" + topVer + ", key=" + key + ']');
tx.markQueryEnlisted(null);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7b6e17b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxQueryEnlistFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxQueryEnlistFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxQueryEnlistFuture.java
index 030a432..245ef39 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxQueryEnlistFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxQueryEnlistFuture.java
@@ -23,6 +23,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
+import org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException;
import org.apache.ignite.internal.processors.affinity.AffinityAssignment;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheMessage;
@@ -119,6 +120,10 @@ public class GridNearTxQueryEnlistFuture extends GridNearTxQueryAbstractEnlistFu
updateMappings(pNode);
}
+ if (primary.isEmpty())
+ throw new ClusterTopologyServerNotFoundException("Failed to find data nodes for cache (all partition " +
+ "nodes left the grid).");
+
boolean locallyMapped = primary.contains(cctx.localNode());
if (locallyMapped)
http://git-wip-us.apache.org/repos/asf/ignite/blob/7b6e17b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxQueryResultsEnlistFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxQueryResultsEnlistFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxQueryResultsEnlistFuture.java
index 316aae5..e4d74f2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxQueryResultsEnlistFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxQueryResultsEnlistFuture.java
@@ -31,6 +31,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
+import org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheMessage;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
@@ -203,7 +204,7 @@ public class GridNearTxQueryResultsEnlistFuture extends GridNearTxQueryAbstractE
ClusterNode node = cctx.affinity().primaryByPartition(key.partition(), topVer);
if (node == null)
- throw new ClusterTopologyCheckedException("Failed to get primary node " +
+ throw new ClusterTopologyServerNotFoundException("Failed to get primary node " +
"[topVer=" + topVer + ", key=" + key + ']');
if (!sequential)
http://git-wip-us.apache.org/repos/asf/ignite/blob/7b6e17b2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheStartFailoverTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheStartFailoverTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheStartFailoverTest.java
index de18c44..69df748 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheStartFailoverTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheStartFailoverTest.java
@@ -41,8 +41,8 @@ import org.apache.ignite.internal.IgniteNodeAttributes;
import org.apache.ignite.internal.TestRecordingCommunicationSpi;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtAffinityAssignmentResponse;
-import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionTopology;
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsFullMessage;
+import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionTopology;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiPredicate;
@@ -192,8 +192,6 @@ public class IgniteClientCacheStartFailoverTest extends GridCommonAbstractTest {
*/
@Test
public void testClientStartLastServerFailsMvccTx() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-10262");
-
clientStartLastServerFails(TRANSACTIONAL_SNAPSHOT);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7b6e17b2/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index c2f3f89..29f39b9 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -1140,8 +1140,16 @@ public class IgniteH2Indexing implements GridQueryIndexing {
return new Iterable<List<?>>() {
@SuppressWarnings("NullableProblems")
@Override public Iterator<List<?>> iterator() {
- return rdcQryExec.query(schemaName, qry, keepCacheObj, enforceJoinOrder, opTimeout,
- cancel, params, parts, lazy, tracker);
+ try {
+ return rdcQryExec.query(schemaName, qry, keepCacheObj, enforceJoinOrder, opTimeout,
+ cancel, params, parts, lazy, tracker);
+ }
+ catch (Throwable e) {
+ if (tracker != null)
+ tracker.onDone();
+
+ throw e;
+ }
}
};
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7b6e17b2/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccAbstractSqlCoordinatorFailoverTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccAbstractSqlCoordinatorFailoverTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccAbstractSqlCoordinatorFailoverTest.java
index b14dc07..e986f44 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccAbstractSqlCoordinatorFailoverTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccAbstractSqlCoordinatorFailoverTest.java
@@ -17,10 +17,26 @@
package org.apache.ignite.internal.processors.cache.mvcc;
+import java.util.concurrent.Callable;
+import javax.cache.CacheException;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheServerNotFoundException;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.IgniteNodeAttributes;
+import org.apache.ignite.internal.TestRecordingCommunicationSpi;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtAffinityAssignmentResponse;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.testframework.GridTestUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
import static org.apache.ignite.internal.processors.cache.mvcc.CacheMvccAbstractTest.ReadMode.SCAN;
import static org.apache.ignite.internal.processors.cache.mvcc.CacheMvccAbstractTest.ReadMode.SQL;
import static org.apache.ignite.internal.processors.cache.mvcc.CacheMvccAbstractTest.WriteMode.DML;
@@ -152,4 +168,149 @@ public abstract class CacheMvccAbstractSqlCoordinatorFailoverTest extends CacheM
public void testCoordinatorChangeActiveQueryClientFails_SimpleScan() throws Exception {
checkCoordinatorChangeActiveQueryClientFails_Simple(new InitIndexing(Integer.class, Integer.class), SCAN, DML);
}
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testStartLastServerFails() throws Exception {
+ testSpi = true;
+
+ startGrids(3);
+
+ CacheConfiguration<Object, Object> cfg = cacheConfiguration(cacheMode(), FULL_SYNC, 0, DFLT_PARTITION_COUNT)
+ .setIndexedTypes(Integer.class, Integer.class);
+
+ cfg.setNodeFilter(new TestNodeFilter(getTestIgniteInstanceName(1)));
+
+ Ignite srv1 = ignite(1);
+
+ srv1.createCache(cfg);
+
+ client = true;
+
+ final Ignite c = startGrid(3);
+
+ client = false;
+
+ TestRecordingCommunicationSpi.spi(srv1).blockMessages(GridDhtAffinityAssignmentResponse.class, c.name());
+
+ IgniteInternalFuture<?> fut = GridTestUtils.runAsync(new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ c.cache(DEFAULT_CACHE_NAME);
+
+ return null;
+ }
+ }, "start-cache");
+
+ U.sleep(1000);
+
+ assertFalse(fut.isDone());
+
+ stopGrid(1);
+
+ fut.get();
+
+ final IgniteCache<Object, Object> clientCache = c.cache(DEFAULT_CACHE_NAME);
+
+ for (int i = 0; i < 10; i++) {
+ final int k = i;
+
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ clientCache.get(k);
+
+ return null;
+ }
+ }, CacheServerNotFoundException.class, null);
+
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ clientCache.put(k, k);
+
+ return null;
+ }
+ }, CacheServerNotFoundException.class, null);
+
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ clientCache.remove(k);
+
+ return null;
+ }
+ }, CacheServerNotFoundException.class, null);
+
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ clientCache.query(new SqlFieldsQuery("SELECT * FROM INTEGER")).getAll();
+
+ return null;
+ }
+ }, CacheException.class, "Failed to find data nodes for cache"); // TODO IGNITE-10377 should be CacheServerNotFoundException.
+
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ clientCache.query(new SqlFieldsQuery("SELECT * FROM INTEGER ORDER BY _val")).getAll();
+
+ return null;
+ }
+ }, CacheException.class, "Failed to find data nodes for cache"); // TODO IGNITE-10377 should be CacheServerNotFoundException.
+
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ clientCache.query(new SqlFieldsQuery("DELETE FROM Integer WHERE 1 = 1")).getAll();
+
+ return null;
+ }
+ }, CacheException.class, "Failed to find data nodes for cache"); // TODO IGNITE-10377 should be CacheServerNotFoundException.
+
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ clientCache.query(new SqlFieldsQuery("INSERT INTO Integer (_key, _val) VALUES (1, 2)")).getAll();
+
+ return null;
+ }
+ }, CacheException.class, "Failed to get primary node"); // TODO IGNITE-10377 should be CacheServerNotFoundException.
+
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ clientCache.query(new SqlFieldsQuery("UPDATE Integer SET _val=42 WHERE _key IN (SELECT DISTINCT _val FROM INTEGER)")).getAll();
+
+ return null;
+ }
+ }, CacheException.class, "Failed to find data nodes for cache"); // TODO IGNITE-10377 should be CacheServerNotFoundException.
+ }
+
+ startGrid(1);
+
+ awaitPartitionMapExchange();
+
+ for (int i = 0; i < 100; i++) {
+ assertNull(clientCache.get(i));
+
+ clientCache.put(i, i);
+
+ assertEquals(i, clientCache.get(i));
+ }
+ }
+
+ /**
+ *
+ */
+ private static class TestNodeFilter implements IgnitePredicate<ClusterNode> {
+ /** */
+ private final String includeName;
+
+ /**
+ * @param includeName Node to include.
+ */
+ public TestNodeFilter(String includeName) {
+ this.includeName = includeName;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean apply(ClusterNode node) {
+ return includeName.equals(node.attribute(IgniteNodeAttributes.ATTR_IGNITE_INSTANCE_NAME));
+ }
+ }
}
[34/52] [abbrv] ignite git commit: IGNITE-10709 New inspections
introduced in 2018+ IntelliJ IDEA version were disabled on TC configuration,
unused Suppress removal. - Fixes #5680.
Posted by sb...@apache.org.
IGNITE-10709 New inspections introduced in 2018+ IntelliJ IDEA version were disabled on TC configuration, unused Suppress removal. - Fixes #5680.
Signed-off-by: Dmitriy Pavlov <dp...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ad9d5610
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ad9d5610
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ad9d5610
Branch: refs/heads/ignite-627
Commit: ad9d5610e9f2f72a42d50630949293f3120bebc6
Parents: c48f3bc
Author: Maxim Muzafarov <ma...@gmail.com>
Authored: Tue Dec 18 19:21:40 2018 +0300
Committer: Dmitriy Pavlov <dp...@apache.org>
Committed: Tue Dec 18 19:23:56 2018 +0300
----------------------------------------------------------------------
idea/ignite_inspections_teamcity.xml | 13 +++++++++++++
.../org/apache/ignite/IgniteJdbcThinDataSource.java | 1 -
.../java/org/apache/ignite/cache/CacheManager.java | 1 -
.../apache/ignite/cache/affinity/AffinityKey.java | 1 -
.../cache/eviction/fifo/FifoEvictionPolicy.java | 1 -
.../cache/eviction/lru/LruEvictionPolicy.java | 1 -
.../cache/eviction/sorted/SortedEvictionPolicy.java | 4 ----
.../apache/ignite/compute/ComputeJobAdapter.java | 1 -
.../ignite/configuration/CacheConfiguration.java | 4 ----
.../java/org/apache/ignite/events/CacheEvent.java | 1 -
.../local/LocalIgfsSecondaryFileSystem.java | 1 -
.../apache/ignite/internal/AsyncSupportAdapter.java | 2 --
.../apache/ignite/internal/GridJobContextImpl.java | 1 -
.../ignite/internal/GridKernalContextImpl.java | 2 --
.../apache/ignite/internal/GridTaskSessionImpl.java | 3 ---
.../apache/ignite/internal/IgniteComponentType.java | 2 --
.../apache/ignite/internal/IgniteComputeImpl.java | 3 ---
.../apache/ignite/internal/IgniteEventsImpl.java | 1 -
.../org/apache/ignite/internal/IgniteKernal.java | 5 -----
.../apache/ignite/internal/IgniteServicesImpl.java | 1 -
.../java/org/apache/ignite/internal/IgnitionEx.java | 1 -
.../ignite/internal/binary/BinaryEnumCache.java | 1 -
.../internal/binary/BinaryEnumObjectImpl.java | 1 -
.../ignite/internal/binary/BinaryFieldImpl.java | 1 -
.../ignite/internal/binary/BinaryObjectExImpl.java | 1 -
.../ignite/internal/binary/BinaryObjectImpl.java | 7 -------
.../internal/binary/BinaryObjectOffheapImpl.java | 6 ------
.../ignite/internal/binary/BinaryReaderExImpl.java | 3 ---
.../ignite/internal/binary/BinaryReaderHandles.java | 1 -
.../ignite/internal/binary/BinaryTreeMap.java | 1 -
.../apache/ignite/internal/binary/BinaryUtils.java | 3 ---
.../ignite/internal/binary/BinaryWriterExImpl.java | 3 ---
.../ignite/internal/binary/BinaryWriterHandles.java | 1 -
.../internal/binary/GridBinaryMarshaller.java | 3 ---
.../binary/builder/BinaryObjectBuilderImpl.java | 1 -
.../internal/client/impl/GridClientDataImpl.java | 1 -
.../internal/client/impl/GridClientNodeImpl.java | 1 -
.../marshaller/jdk/GridClientJdkMarshaller.java | 1 -
.../ignite/internal/client/thin/ClientBinary.java | 1 -
.../ignite/internal/client/thin/ClientUtils.java | 1 -
.../ignite/internal/client/thin/TcpClientCache.java | 1 -
.../internal/client/util/GridConcurrentHashSet.java | 2 --
.../internal/direct/state/DirectMessageState.java | 2 --
.../stream/v1/DirectByteBufferStreamImplV1.java | 6 ------
.../stream/v2/DirectByteBufferStreamImplV2.java | 7 -------
.../internal/igfs/common/IgfsControlResponse.java | 1 -
.../apache/ignite/internal/jdbc/JdbcResultSet.java | 1 -
.../internal/jdbc/thin/JdbcThinConnection.java | 2 --
.../jdbc/thin/JdbcThinDatabaseMetadata.java | 1 -
.../jdbc/thin/JdbcThinParameterMetadata.java | 1 -
.../jdbc/thin/JdbcThinPreparedStatement.java | 1 -
.../internal/jdbc/thin/JdbcThinResultSet.java | 2 --
.../internal/jdbc/thin/JdbcThinStatement.java | 1 -
.../ignite/internal/jdbc2/JdbcConnection.java | 1 -
.../ignite/internal/jdbc2/JdbcDatabaseMetadata.java | 1 -
.../apache/ignite/internal/jdbc2/JdbcResultSet.java | 2 --
.../internal/jdbc2/JdbcResultSetMetadata.java | 1 -
.../apache/ignite/internal/jdbc2/JdbcStatement.java | 1 -
.../managers/communication/GridIoManager.java | 16 +++-------------
.../managers/deployment/GridDeployment.java | 3 ---
.../deployment/GridDeploymentLocalStore.java | 1 -
.../eventstorage/GridEventStorageManager.java | 4 ----
.../marshaller/optimized/OptimizedMarshaller.java | 2 --
.../optimized/OptimizedObjectInputStream.java | 4 ----
.../processors/affinity/GridAffinityProcessor.java | 1 -
.../IgniteAuthenticationProcessor.java | 2 --
.../internal/processors/cache/CacheEntryImpl.java | 1 -
.../internal/processors/cache/CacheEntryImpl0.java | 1 -
.../processors/cache/CacheEvictableEntryImpl.java | 2 --
.../internal/processors/cache/CacheInvokeEntry.java | 1 -
.../processors/cache/CacheInvokeResult.java | 1 -
.../internal/processors/cache/CacheLazyEntry.java | 2 --
.../internal/processors/cache/CacheObjectImpl.java | 1 -
.../internal/processors/cache/CacheObjectUtils.java | 1 -
.../cache/CachePartialUpdateCheckedException.java | 1 -
.../internal/processors/cache/GridCacheAdapter.java | 7 +------
.../internal/processors/cache/GridCacheContext.java | 4 ----
.../processors/cache/GridCacheEvictionManager.java | 1 -
.../processors/cache/GridCacheIoManager.java | 4 ----
.../processors/cache/GridCacheMapEntry.java | 13 ++-----------
.../processors/cache/GridCacheMvccManager.java | 6 ------
.../processors/cache/GridCacheProcessor.java | 6 ------
.../processors/cache/GridCacheProxyImpl.java | 2 --
.../internal/processors/cache/GridCacheReturn.java | 3 ---
.../processors/cache/GridCacheUtilityKey.java | 1 -
.../internal/processors/cache/GridCacheUtils.java | 6 ------
.../cache/IgniteCacheOffheapManagerImpl.java | 2 --
.../internal/processors/cache/IgniteCacheProxy.java | 2 --
.../processors/cache/IgniteCacheProxyImpl.java | 3 ---
.../processors/cache/KeyCacheObjectImpl.java | 1 -
.../cache/affinity/GridCacheAffinityProxy.java | 1 -
.../binary/CacheObjectBinaryProcessorImpl.java | 2 --
.../processors/cache/binary/IgniteBinaryImpl.java | 1 -
.../datastructures/CacheDataStructuresManager.java | 4 ----
.../dht/CacheDistributedGetFutureAdapter.java | 1 -
.../cache/distributed/dht/GridDhtCacheAdapter.java | 2 +-
.../cache/distributed/dht/GridDhtCacheEntry.java | 4 +---
.../cache/distributed/dht/GridDhtLockFuture.java | 2 --
.../dht/GridDhtTxAbstractEnlistFuture.java | 2 --
.../distributed/dht/GridDhtTxFinishFuture.java | 3 ---
.../cache/distributed/dht/GridDhtTxLocal.java | 2 --
.../distributed/dht/GridDhtTxPrepareFuture.java | 1 -
.../dht/NearTxQueryEnlistResultHandler.java | 1 -
.../cache/distributed/dht/NearTxResultHandler.java | 1 -
.../distributed/dht/atomic/GridDhtAtomicCache.java | 3 ---
.../dht/atomic/GridNearAtomicFullUpdateRequest.java | 2 --
.../atomic/GridNearAtomicSingleUpdateFuture.java | 1 -
.../dht/atomic/GridNearAtomicUpdateFuture.java | 5 -----
.../dht/colocated/GridDhtColocatedCache.java | 1 -
.../dht/preloader/GridDhtForceKeysFuture.java | 2 --
.../dht/preloader/GridDhtPartitionSupplier.java | 1 -
.../preloader/GridDhtPartitionsSingleMessage.java | 1 -
.../dht/topology/GridClientPartitionTopology.java | 2 --
.../dht/topology/GridDhtPartitionTopologyImpl.java | 2 --
.../cache/distributed/near/GridNearAtomicCache.java | 4 ----
.../cache/distributed/near/GridNearGetFuture.java | 1 -
.../cache/distributed/near/GridNearLockFuture.java | 1 -
.../distributed/near/GridNearTxFinishFuture.java | 2 --
.../cache/distributed/near/GridNearTxLocal.java | 3 ---
.../cache/local/atomic/GridLocalAtomicCache.java | 8 --------
.../processors/cache/mvcc/MvccProcessorImpl.java | 2 --
.../cache/persistence/pagemem/PageMemoryImpl.java | 1 -
.../cache/persistence/tree/BPlusTree.java | 16 ----------------
.../cache/persistence/tree/io/PageIO.java | 2 --
.../query/GridCacheDistributedQueryFuture.java | 3 ---
.../query/GridCacheDistributedQueryManager.java | 4 ----
.../cache/query/GridCacheQueryAdapter.java | 5 +----
.../cache/query/GridCacheQueryFutureAdapter.java | 3 ---
.../cache/query/GridCacheQueryManager.java | 2 +-
.../cache/query/GridCacheQueryResponse.java | 1 -
.../cache/query/GridCacheQueryResponseEntry.java | 1 -
.../continuous/CacheContinuousQueryEventBuffer.java | 1 -
.../continuous/CacheContinuousQueryHandler.java | 1 -
.../continuous/CacheContinuousQueryHandlerV3.java | 2 --
.../continuous/CacheContinuousQueryManager.java | 2 --
.../cache/store/GridCacheWriteBehindStore.java | 1 -
.../cache/transactions/IgniteTxAdapter.java | 2 +-
.../cache/transactions/IgniteTxLocalAdapter.java | 1 -
.../cache/transactions/IgniteTxManager.java | 7 -------
.../cache/transactions/TxDeadlockDetection.java | 1 -
.../version/GridCacheLazyPlainVersionedEntry.java | 1 -
.../processors/cluster/ClusterProcessor.java | 1 -
.../continuous/GridContinuousMessage.java | 1 -
.../continuous/GridContinuousProcessor.java | 3 ---
.../processors/continuous/StartRequestData.java | 1 -
.../processors/datastreamer/DataStreamerImpl.java | 1 -
.../datastructures/DataStructuresProcessor.java | 4 ----
.../GridCacheAtomicReferenceValue.java | 1 -
.../datastructures/GridCacheAtomicStampedValue.java | 1 -
.../datastructures/GridCacheCountDownLatchImpl.java | 1 -
.../processors/igfs/IgfsAbstractOutputStream.java | 1 -
.../internal/processors/igfs/IgfsDataManager.java | 1 -
.../ignite/internal/processors/igfs/IgfsImpl.java | 4 ----
.../processors/igfs/IgfsInputStreamImpl.java | 1 -
.../platform/client/ClientResourceRegistry.java | 1 -
.../platform/dotnet/PlatformDotNetCacheStore.java | 1 -
.../dotnet/PlatformDotNetConfigurationClosure.java | 1 -
.../processors/platform/events/PlatformEvents.java | 10 ++++------
.../processors/platform/utils/PlatformUtils.java | 1 -
.../processors/plugin/CachePluginManager.java | 3 +--
.../processors/plugin/IgnitePluginProcessor.java | 2 --
.../query/GridQueryCacheObjectsIterator.java | 1 -
.../processors/query/GridQueryProcessor.java | 1 -
.../processors/query/QueryKeyValueIterator.java | 1 -
.../processors/query/QueryTypeDescriptorImpl.java | 1 -
.../query/property/QueryBinaryProperty.java | 1 -
.../client/message/GridClientTaskResultBean.java | 1 -
.../processors/service/GridServiceProcessor.java | 6 ------
.../processors/service/GridServiceProxy.java | 1 -
.../processors/service/ServiceContextImpl.java | 1 -
.../processors/service/ServiceDescriptorImpl.java | 1 -
.../internal/processors/task/GridTaskProcessor.java | 3 ---
.../internal/processors/task/GridTaskWorker.java | 3 ---
.../org/apache/ignite/internal/util/GridArrays.java | 1 -
.../internal/util/GridBoundedLinkedHashMap.java | 1 -
.../internal/util/GridBoundedLinkedHashSet.java | 1 -
.../internal/util/GridConcurrentSkipListSet.java | 2 +-
.../apache/ignite/internal/util/GridLeanMap.java | 2 +-
.../apache/ignite/internal/util/GridLeanSet.java | 1 -
.../apache/ignite/internal/util/GridListSet.java | 3 ---
.../apache/ignite/internal/util/GridSetWrapper.java | 2 --
.../apache/ignite/internal/util/IgniteUtils.java | 12 ------------
.../util/StripedCompositeReadWriteLock.java | 1 -
.../internal/util/future/GridCompoundFuture.java | 3 ---
.../internal/util/future/GridFinishedFuture.java | 2 --
.../internal/util/future/GridFutureAdapter.java | 2 --
.../internal/util/future/IgniteFutureImpl.java | 1 -
.../apache/ignite/internal/util/lang/GridFunc.java | 11 -----------
.../util/lang/GridMetadataAwareAdapter.java | 7 -------
.../apache/ignite/internal/util/lang/GridTuple.java | 1 -
.../ignite/internal/util/lang/GridTuple3.java | 1 -
.../ignite/internal/util/lang/GridTuple4.java | 1 -
.../ignite/internal/util/lang/GridTuple5.java | 1 -
.../ignite/internal/util/lang/GridTuple6.java | 1 -
.../util/lang/gridfunc/PredicateMapView.java | 4 ----
.../util/lang/gridfunc/TransformMapView.java | 4 ----
.../util/lang/gridfunc/TransformMapView2.java | 4 ----
.../ignite/internal/util/nio/GridNioServer.java | 5 -----
.../org/apache/ignite/internal/util/typedef/X.java | 3 ---
.../java/org/apache/ignite/lang/IgniteBiTuple.java | 1 -
.../org/apache/ignite/logger/java/JavaLogger.java | 1 -
.../apache/ignite/marshaller/jdk/JdkMarshaller.java | 1 -
.../apache/ignite/spi/discovery/tcp/ClientImpl.java | 1 -
.../apache/ignite/spi/discovery/tcp/ServerImpl.java | 1 -
.../ignite/spi/discovery/tcp/TcpDiscoverySpi.java | 2 --
.../discovery/tcp/internal/TcpDiscoveryNode.java | 1 -
.../multicast/TcpDiscoveryMulticastIpFinder.java | 1 -
.../java/org/jsr166/ConcurrentLinkedHashMap.java | 12 +-----------
.../java/org/apache/ignite/GridTestIoUtils.java | 3 ---
.../java/org/apache/ignite/GridTestJobContext.java | 1 -
.../java/org/apache/ignite/GridTestTaskSession.java | 1 -
.../RendezvousAffinityFunctionSimpleBenchmark.java | 1 -
.../ignite/internal/ClusterGroupSelfTest.java | 1 -
...ridEventStorageRuntimeConfigurationSelfTest.java | 1 -
.../GridMultipleVersionsDeploymentSelfTest.java | 2 --
.../org/apache/ignite/internal/GridSelfTest.java | 1 -
.../IgniteClientReconnectApiExceptionTest.java | 2 --
.../IgniteExplicitImplicitDeploymentSelfTest.java | 4 ----
.../binary/BinaryObjectTypeCompatibilityTest.java | 1 -
...rectByteBufferStreamImplV2ByteOrderSelfTest.java | 1 -
.../GridAffinityProcessorAbstractSelfTest.java | 1 -
.../cache/CacheConcurrentReadThroughTest.java | 1 -
.../processors/cache/CacheMetricsManageTest.java | 1 -
.../cache/GridCacheAbstractFullApiSelfTest.java | 1 -
.../cache/GridCacheAbstractMetricsSelfTest.java | 1 -
.../GridCacheConcurrentTxMultiNodeLoadTest.java | 2 +-
.../cache/GridCacheDeploymentSelfTest.java | 2 --
.../cache/GridCacheInterceptorAbstractSelfTest.java | 6 ------
.../processors/cache/GridCacheMvccSelfTest.java | 1 -
.../cache/GridCachePutAllFailoverSelfTest.java | 1 -
.../cache/IgniteCacheEntryListenerAbstractTest.java | 1 -
.../cache/IgniteCacheInvokeAbstractTest.java | 1 -
.../cache/IgniteTxExceptionAbstractSelfTest.java | 1 -
.../cache/WithKeepBinaryCacheFullApiTest.java | 2 --
.../CacheLateAffinityAssignmentTest.java | 1 -
.../distributed/IgniteTxCachePrimarySyncTest.java | 1 -
.../GridCacheDhtEvictionNearReadersSelfTest.java | 1 -
.../IgniteCachePutRetryTransactionalSelfTest.java | 1 -
.../near/GridCacheNearMultiNodeSelfTest.java | 2 +-
.../GridCacheNearOnlyMultiNodeFullApiSelfTest.java | 1 -
.../near/GridCacheNearTxMultiNodeSelfTest.java | 1 -
...ridCachePartitionedMultiNodeCounterSelfTest.java | 2 +-
.../cache/eviction/EvictionAbstractTest.java | 2 --
.../eviction/EvictionPolicyFactoryAbstractTest.java | 4 ----
.../GridCacheLocalTxMultiThreadedSelfTest.java | 1 -
.../memtracker/PageMemoryTrackerPluginProvider.java | 2 --
.../continuous/CacheContinuousBatchAckTest.java | 1 -
.../CacheContinuousQueryCounterAbstractTest.java | 1 -
.../CacheContinuousQueryEventBufferTest.java | 1 -
.../transactions/AbstractDeadlockDetectionTest.java | 1 -
.../cache/transactions/TxDeadlockCauseTest.java | 1 -
.../TxDeadlockDetectionUnmasrhalErrorsTest.java | 1 -
...xPessimisticDeadlockDetectionCrossCacheTest.java | 1 -
.../closure/GridClosureProcessorSelfTest.java | 1 -
.../processors/igfs/IgfsAbstractBaseSelfTest.java | 1 -
.../IpcSharedMemoryCrashDetectionSelfTest.java | 2 +-
.../org/apache/ignite/lang/IgniteUuidSelfTest.java | 1 -
.../ignite/loadtests/GridLoadTestStatistics.java | 1 -
.../ignite/loadtests/GridSingleExecutionTest.java | 1 -
.../loadtests/cache/GridCacheAbstractLoadTest.java | 2 --
.../redeploy/GridSingleSplitsRedeployLoadTest.java | 1 -
.../apache/ignite/loadtests/dsi/GridDsiClient.java | 2 +-
.../apache/ignite/loadtests/dsi/GridDsiPerfJob.java | 1 -
.../marshaller/GridMarshallerAbstractTest.java | 1 -
.../ignite/messaging/GridMessagingSelfTest.java | 1 -
.../p2p/GridAbstractMultinodeRedeployTest.java | 1 -
.../ignite/p2p/GridP2PDoubleDeploymentSelfTest.java | 1 -
.../p2p/GridP2PRemoteClassLoadersSelfTest.java | 1 -
.../apache/ignite/p2p/GridP2PTimeoutSelfTest.java | 1 -
.../apache/ignite/p2p/GridP2PUndeploySelfTest.java | 2 --
.../spi/collision/GridTestCollisionTaskSession.java | 1 -
.../GridPriorityQueueCollisionSpiSelfTest.java | 3 +--
.../GridTcpCommunicationSpiRecoveryAckSelfTest.java | 2 --
.../GridTcpCommunicationSpiRecoverySelfTest.java | 1 -
...eTcpCommunicationRecoveryAckClosureSelfTest.java | 2 --
.../tcp/TcpClientDiscoverySpiSelfTest.java | 1 -
.../always/GridAlwaysFailoverSpiSelfTest.java | 1 -
.../GridJobStealingFailoverSpiSelfTest.java | 1 -
.../apache/ignite/startup/GridVmNodesStarter.java | 1 -
.../ignite/testframework/GridSpiTestContext.java | 2 --
.../apache/ignite/testframework/GridTestNode.java | 2 +-
.../apache/ignite/testframework/GridTestUtils.java | 1 -
.../ConfigVariationsTestSuiteBuilder.java | 2 --
.../testframework/configvariations/Parameters.java | 5 -----
.../testframework/junits/GridAbstractTest.java | 4 +---
.../IgniteCacheConfigVariationsAbstractTest.java | 2 --
.../testframework/junits/IgniteTestResources.java | 1 -
.../junits/cache/TestCacheSession.java | 2 --
.../junits/cache/TestThreadLocalCacheSession.java | 2 --
.../junits/common/GridCommonAbstractTest.java | 5 -----
.../junits/multijvm/IgniteCacheProcessProxy.java | 1 -
.../junits/spi/GridSpiAbstractTest.java | 3 ---
292 files changed, 40 insertions(+), 604 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/idea/ignite_inspections_teamcity.xml
----------------------------------------------------------------------
diff --git a/idea/ignite_inspections_teamcity.xml b/idea/ignite_inspections_teamcity.xml
index 759b138..3b58d3a 100644
--- a/idea/ignite_inspections_teamcity.xml
+++ b/idea/ignite_inspections_teamcity.xml
@@ -121,6 +121,7 @@
<inspection_tool class="CanBeParameter" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="CanBePrimaryConstructorProperty" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="CanBeVal" enabled="false" level="WARNING" enabled_by_default="false"/>
+ <inspection_tool class="CastCanBeRemovedNarrowingVariableType" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="CastConflictsWithInstanceof" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="CastThatLosesPrecision" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="CastToConcreteClass" enabled="false" level="WARNING" enabled_by_default="false"/>
@@ -132,6 +133,7 @@
<inspection_tool class="ChannelResource" enabled="false" level="WARNING" enabled_by_default="false">
<option name="insideTryAllowed" value="false"/>
</inspection_tool>
+ <inspection_tool class="CharsetObjectCanBeUsed" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="CharUsedInArithmeticContext" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="CharacterComparison" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="CheckDtdRefs" enabled="false" level="ERROR" enabled_by_default="false"/>
@@ -203,6 +205,8 @@
<option name="IGNORE_NON_PUBLIC" value="true"/>
</inspection_tool>
<inspection_tool class="ComponentRegistrationProblems" enabled="false" level="ERROR" enabled_by_default="false"/>
+ <inspection_tool class="ConditionalBreakInInfiniteLoop" enabled="false" level="WARNING" enabled_by_default="false" />
+ <inspection_tool class="ConditionCoveredByFurtherCondition" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ConditionSignal" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="ConditionalExpression" enabled="false" level="WARNING" enabled_by_default="false">
<option name="ignoreSimpleAssignmentsAndReturns" value="false"/>
@@ -256,6 +260,7 @@
<inspection_tool class="ConvertJavadoc" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="ConvertOldAnnotations" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="ConvertToStringTemplate" enabled="false" level="INFO" enabled_by_default="false"/>
+ <inspection_tool class="CopyConstructorMissesField" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="CovariantCompareTo" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="CovariantEquals" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="CyclicClassDependency" enabled="false" level="WARNING" enabled_by_default="false"/>
@@ -301,6 +306,7 @@
<inspection_tool class="DuplicateCondition" enabled="false" level="WARNING" enabled_by_default="false">
<option name="ignoreMethodCalls" value="false"/>
</inspection_tool>
+ <inspection_tool class="DuplicateExpressions" enabled="false" level="WEAK WARNING" enabled_by_default="false"/>
<inspection_tool class="DuplicateMnemonic" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="DuplicatePropertyInspection" enabled="false" level="WARNING" enabled_by_default="false">
<option name="CURRENT_FILE" value="true"/>
@@ -943,6 +949,9 @@
<option name="IGNORE_ANNOTATED_METHODS" value="true"/>
<option name="IGNORE_SUSPICIOUS_METHOD_CALLS" value="true"/>
</inspection_tool>
+ <inspection_tool class="RedundantClassCall" enabled="false" level="WARNING" enabled_by_default="false"/>
+ <inspection_tool class="RedundantCollectionOperation" enabled="false" level="WARNING" enabled_by_default="false"/>
+ <inspection_tool class="RedundantCompareCall" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="RedundantFieldInitialization" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="RedundantImplements" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="RedundantLambdaParameterType" enabled="false" level="INFORMATION" enabled_by_default="false"/>
@@ -1076,6 +1085,7 @@
<option name="processLiterals" value="true"/>
<option name="processComments" value="true"/>
</inspection_tool>
+ <inspection_tool class="SortedCollectionWithNonComparableKeys" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SpringAopErrorsInspection" enabled="false" level="ERROR" enabled_by_default="false"/>
<inspection_tool class="SpringAopWarningsInspection" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="SpringBatchModel" enabled="false" level="ERROR" enabled_by_default="false"/>
@@ -1125,6 +1135,7 @@
<inspection_tool class="SpringTransactionalComponentInspection" enabled="false" level="ERROR" enabled_by_default="false"/>
<inspection_tool class="SpringWebServiceAnnotationsInconsistencyInspection" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="SpringWebServicesConfigurationsInspection" enabled="false" level="ERROR" enabled_by_default="false"/>
+ <inspection_tool class="SpringXmlModelInspection" enabled="false" level="ERROR" enabled_by_default="false"/>
<inspection_tool class="SqlAddNotNullColumnInspection" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="SqlAmbiguousColumnInspection" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="SqlAutoIncrementDuplicateInspection" enabled="false" level="WARNING" enabled_by_default="false"/>
@@ -1251,6 +1262,7 @@
<inspection_tool class="ThrowableNotThrown" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ThrowablePrintedToSystemOut" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ThrowableResultOfMethodCallIgnored" enabled="false" level="WARNING" enabled_by_default="false" />
+ <inspection_tool class="ToArrayCallWithZeroLengthArrayArgument" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="TrivialIf" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="TryFinallyCanBeTryWithResources" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="TryStatementWithMultipleResources" enabled="false" level="INFORMATION" enabled_by_default="false" />
@@ -1404,6 +1416,7 @@
<inspection_tool class="WhileLoopSpinsOnField" enabled="false" level="WARNING" enabled_by_default="false">
<option name="ignoreNonEmtpyLoops" value="false"/>
</inspection_tool>
+ <inspection_tool class="WrapperTypeMayBePrimitive" enabled="false" level="WARNING" enabled_by_default="false"/>
<inspection_tool class="WrongImportPackage" enabled="false" level="ERROR" enabled_by_default="false"/>
<inspection_tool class="WrongPackageStatement" enabled="false" level="ERROR" enabled_by_default="false"/>
<inspection_tool class="WrongPropertyKeyValueDelimiter" enabled="false" level="WEAK WARNING" enabled_by_default="false"/>
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/IgniteJdbcThinDataSource.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteJdbcThinDataSource.java b/modules/core/src/main/java/org/apache/ignite/IgniteJdbcThinDataSource.java
index 610ff99..05c37a5 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteJdbcThinDataSource.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteJdbcThinDataSource.java
@@ -63,7 +63,6 @@ public class IgniteJdbcThinDataSource implements DataSource, Serializable {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("DataSource is not a wrapper for " + iface.getName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/cache/CacheManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheManager.java b/modules/core/src/main/java/org/apache/ignite/cache/CacheManager.java
index b376755..7b6b4dd 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/CacheManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/CacheManager.java
@@ -148,7 +148,6 @@ public class CacheManager implements javax.cache.CacheManager {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V, C extends Configuration<K, V>> Cache<K, V> createCache(String cacheName, C cacheCfg)
throws IllegalArgumentException {
kernalGateway.readLock();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKey.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKey.java b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKey.java
index 4215b05..054ff13 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKey.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKey.java
@@ -127,7 +127,6 @@ public class AffinityKey<K> implements Externalizable {
*
* @return Affinity key to use for affinity mapping.
*/
- @SuppressWarnings({"unchecked"})
public <T> T affinityKey() {
A.notNull(key, "key");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java
index f6e1a15..b634bd0 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java
@@ -115,7 +115,6 @@ public class FifoEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> imple
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected boolean removeMeta(Object meta) {
return queue.unlinkx((Node<EvictableEntry<K, V>>)meta);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java
index d571e8c..57b4395 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java
@@ -103,7 +103,6 @@ public class LruEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> implem
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected boolean removeMeta(Object meta) {
return queue.unlinkx((Node<EvictableEntry<K, V>>)meta);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java
index 02a6d2b..f189e08 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java
@@ -244,7 +244,6 @@ public class SortedEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> imp
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
super.readExternal(in);
@@ -256,7 +255,6 @@ public class SortedEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> imp
*
* @param meta Holder.
*/
- @SuppressWarnings("unchecked")
@Override protected boolean removeMeta(Object meta) {
Holder<K, V> holder = (Holder<K, V>)meta;
@@ -297,7 +295,6 @@ public class SortedEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> imp
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public boolean equals(Object obj) {
if (this == obj)
return true;
@@ -353,7 +350,6 @@ public class SortedEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> imp
private static final long serialVersionUID = 0L;
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public int compare(Holder<K, V> h1, Holder<K, V> h2) {
if (h1 == h2)
return 0;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/compute/ComputeJobAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/compute/ComputeJobAdapter.java b/modules/core/src/main/java/org/apache/ignite/compute/ComputeJobAdapter.java
index 3d1c308..cd23021 100644
--- a/modules/core/src/main/java/org/apache/ignite/compute/ComputeJobAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/compute/ComputeJobAdapter.java
@@ -109,7 +109,6 @@ public abstract class ComputeJobAdapter implements ComputeJob, Callable<Object>
* @throws NullPointerException Thrown in case when there no arguments set.
* @throws IllegalArgumentException Thrown if index is invalid.
*/
- @SuppressWarnings("unchecked")
@Nullable public <T> T argument(int idx) {
A.notNull(args, "args");
A.ensure(idx >= 0 && idx < args.length, "idx >= 0 && idx < args.length");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
index e27961d..10cbedd 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
@@ -798,7 +798,6 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
*
* @return Eviction filter or {@code null}.
*/
- @SuppressWarnings("unchecked")
public EvictionFilter<K, V> getEvictionFilter() {
return (EvictionFilter<K, V>)evictFilter;
}
@@ -895,7 +894,6 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
*
* @return Cache store factory.
*/
- @SuppressWarnings("unchecked")
public Factory<CacheStore<? super K, ? super V>> getCacheStoreFactory() {
return (Factory<CacheStore<? super K, ? super V>>)storeFactory;
}
@@ -906,7 +904,6 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
* @param storeFactory Cache store factory.
* @return {@code this} for chaining.
*/
- @SuppressWarnings("unchecked")
public CacheConfiguration<K, V> setCacheStoreFactory(
Factory<? extends CacheStore<? super K, ? super V>> storeFactory) {
this.storeFactory = storeFactory;
@@ -1040,7 +1037,6 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
* @param atomicityMode Cache atomicity mode.
* @return {@code this} for chaining.
*/
- @SuppressWarnings("unchecked")
public CacheConfiguration<K, V> setAtomicityMode(CacheAtomicityMode atomicityMode) {
this.atomicityMode = atomicityMode;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/events/CacheEvent.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/events/CacheEvent.java b/modules/core/src/main/java/org/apache/ignite/events/CacheEvent.java
index 92b2ade..7a4d24d 100644
--- a/modules/core/src/main/java/org/apache/ignite/events/CacheEvent.java
+++ b/modules/core/src/main/java/org/apache/ignite/events/CacheEvent.java
@@ -229,7 +229,6 @@ public class CacheEvent extends EventAdapter {
*
* @return Cache entry associated with event.
*/
- @SuppressWarnings({"unchecked"})
public <K> K key() {
return (K)key;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/igfs/secondary/local/LocalIgfsSecondaryFileSystem.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igfs/secondary/local/LocalIgfsSecondaryFileSystem.java b/modules/core/src/main/java/org/apache/ignite/igfs/secondary/local/LocalIgfsSecondaryFileSystem.java
index f5ddb1c..17cc076 100644
--- a/modules/core/src/main/java/org/apache/ignite/igfs/secondary/local/LocalIgfsSecondaryFileSystem.java
+++ b/modules/core/src/main/java/org/apache/ignite/igfs/secondary/local/LocalIgfsSecondaryFileSystem.java
@@ -137,7 +137,6 @@ public class LocalIgfsSecondaryFileSystem implements IgfsSecondaryFileSystem, Li
}
/** {@inheritDoc} */
- @SuppressWarnings("ConstantConditions")
@Override public boolean delete(IgfsPath path, boolean recursive) {
File f = fileForPath(path);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/AsyncSupportAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/AsyncSupportAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/AsyncSupportAdapter.java
index 409a3d2..6fe54b2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/AsyncSupportAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/AsyncSupportAdapter.java
@@ -45,7 +45,6 @@ public class AsyncSupportAdapter<T extends IgniteAsyncSupport> implements Ignite
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public T withAsync() {
if (isAsync())
return (T)this;
@@ -79,7 +78,6 @@ public class AsyncSupportAdapter<T extends IgniteAsyncSupport> implements Ignite
*
* @return Future for previous asynchronous operation.
*/
- @SuppressWarnings("unchecked")
public <R> IgniteFuture<R> future(boolean reset) {
if (curFut == null)
throw new IllegalStateException("Asynchronous mode is disabled.");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/GridJobContextImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridJobContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/GridJobContextImpl.java
index dbfa0b1..b4b2be7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridJobContextImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridJobContextImpl.java
@@ -137,7 +137,6 @@ public class GridJobContextImpl implements ComputeJobContext, Externalizable {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> V getAttribute(K key) {
A.notNull(key, "key");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
index 4b4fbca..8131899 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
@@ -852,7 +852,6 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> DataStreamProcessor<K, V> dataStream() {
return (DataStreamProcessor<K, V>)dataLdrProc;
}
@@ -980,7 +979,6 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T createComponent(Class<T> cls) {
T res = pluginProc.createComponent(cls);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionImpl.java
index ce6e831..88091ea 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionImpl.java
@@ -285,7 +285,6 @@ public class GridTaskSessionImpl implements GridTaskSessionInternal {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> V waitForAttribute(K key, long timeout) throws InterruptedException {
A.notNull(key, "key");
@@ -549,7 +548,6 @@ public class GridTaskSessionImpl implements GridTaskSessionInternal {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> V getAttribute(K key) {
A.notNull(key, "key");
@@ -727,7 +725,6 @@ public class GridTaskSessionImpl implements GridTaskSessionInternal {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T loadCheckpoint(String key) {
return loadCheckpoint0(this, key);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
index 65cbb90..190ff9a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
@@ -242,7 +242,6 @@ public enum IgniteComponentType {
* @return Created component or no-op implementation.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
private <T> T createOptional0(@Nullable GridKernalContext ctx) throws IgniteCheckedException {
Class<?> cls;
@@ -283,7 +282,6 @@ public enum IgniteComponentType {
* @return Component instance.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
private <T> T create0(@Nullable GridKernalContext ctx, String clsName) throws IgniteCheckedException {
try {
Class<?> cls = Class.forName(clsName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/IgniteComputeImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComputeImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComputeImpl.java
index 762d9a1..c1809fe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComputeImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComputeImpl.java
@@ -453,7 +453,6 @@ public class IgniteComputeImpl extends AsyncSupportAdapter<IgniteCompute>
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T, R> R execute(String taskName, @Nullable T arg) {
try {
return (R)saveOrGet(executeAsync0(taskName, arg));
@@ -475,7 +474,6 @@ public class IgniteComputeImpl extends AsyncSupportAdapter<IgniteCompute>
* @param arg Argument.
* @return Internal future.
*/
- @SuppressWarnings("unchecked")
private <T, R> IgniteInternalFuture<R> executeAsync0(String taskName, @Nullable T arg) {
A.notNull(taskName, "taskName");
@@ -515,7 +513,6 @@ public class IgniteComputeImpl extends AsyncSupportAdapter<IgniteCompute>
* @param arg Argument.
* @return Internal future.
*/
- @SuppressWarnings("unchecked")
private <T, R> IgniteInternalFuture<R> executeAsync0(Class<? extends ComputeTask<T, R>> taskCls, @Nullable T arg) {
A.notNull(taskCls, "taskCls");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/IgniteEventsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteEventsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteEventsImpl.java
index 030e2db..c91792d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteEventsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteEventsImpl.java
@@ -195,7 +195,6 @@ public class IgniteEventsImpl extends AsyncSupportAdapter<IgniteEvents> implemen
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public IgniteFuture<Void> stopRemoteListenAsync(UUID opId) throws IgniteException {
A.notNull(opId, "consumeId");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index d1d0ce5..cc0363c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -660,7 +660,6 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public List<String> getUserAttributesFormatted() {
assert cfg != null;
@@ -774,7 +773,6 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
* @param hnd Default uncaught exception handler used by thread pools.
* @throws IgniteCheckedException Thrown in case of any errors.
*/
- @SuppressWarnings({"unchecked"})
public void start(
final IgniteConfiguration cfg,
ExecutorService utilityCachePool,
@@ -1460,7 +1458,6 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
* @param notifyEnabled Update notifier flag.
* @throws IgniteCheckedException thrown if was unable to set up attribute.
*/
- @SuppressWarnings({"unchecked", "TypeMayBeWeakened"})
private void fillNodeAttributes(boolean notifyEnabled) throws IgniteCheckedException {
ctx.addNodeAttribute(ATTR_REBALANCE_POOL_SIZE, configuration().getRebalanceThreadPoolSize());
ctx.addNodeAttribute(ATTR_DATA_STREAMER_POOL_SIZE, configuration().getDataStreamerThreadPoolSize());
@@ -2817,7 +2814,6 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public String executeTask(String taskName, String arg) throws JMException {
try {
return compute().execute(taskName, arg);
@@ -3008,7 +3004,6 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> IgniteBiTuple<IgniteCache<K, V>, Boolean> getOrCreateCache0(
CacheConfiguration<K, V> cacheCfg, boolean sql) {
A.notNull(cacheCfg, "cacheCfg");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/IgniteServicesImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteServicesImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteServicesImpl.java
index 7cbd4b5..59d6136 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteServicesImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteServicesImpl.java
@@ -41,7 +41,6 @@ import org.jetbrains.annotations.Nullable;
/**
* {@link org.apache.ignite.IgniteServices} implementation.
*/
-@SuppressWarnings("unchecked")
public class IgniteServicesImpl extends AsyncSupportAdapter implements IgniteServices, Externalizable {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
index adc0068..559b3bb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
@@ -1749,7 +1749,6 @@ public class IgnitionEx {
* @param startCtx Starting context.
* @throws IgniteCheckedException If start failed.
*/
- @SuppressWarnings({"TooBroadScope"})
private void start0(GridStartContext startCtx) throws IgniteCheckedException {
assert grid == null : "Grid is already started: " + name;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
index 895782e..ae8b824 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
@@ -37,7 +37,6 @@ public class BinaryEnumCache {
* @return Value.
* @throws BinaryObjectException In case of invalid ordinal.
*/
- @SuppressWarnings("unchecked")
public static <T> T get(Class<?> cls, int ord) throws BinaryObjectException {
assert cls != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
index 2751695..dd99787 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
@@ -174,7 +174,6 @@ public class BinaryEnumObjectImpl implements BinaryObjectEx, Externalizable, Cac
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T deserialize() throws BinaryObjectException {
Class cls = BinaryUtils.resolveClass(ctx, typeId, clsName, ctx.configuration().getClassLoader(), true);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldImpl.java
index de0b2d0..7713f58 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldImpl.java
@@ -102,7 +102,6 @@ public class BinaryFieldImpl implements BinaryFieldEx {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T value(BinaryObject obj) {
BinaryObjectExImpl obj0 = (BinaryObjectExImpl)obj;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
index f213ad9..51599f8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
@@ -247,7 +247,6 @@ public abstract class BinaryObjectExImpl implements BinaryObjectEx {
* @param ctx Reader context.
* @param handles Handles for already traversed objects.
*/
- @SuppressWarnings("unchecked")
private void appendValue(Object val, SB buf, BinaryReaderHandles ctx,
IdentityHashMap<BinaryObject, Integer> handles) {
if (val instanceof byte[])
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
index 65fb349..3081f4f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
@@ -135,7 +135,6 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
Object obj0 = obj;
@@ -303,13 +302,11 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <F> F field(String fieldName) throws BinaryObjectException {
return (F) reader(null, false).unmarshalField(fieldName);
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <F> F field(int fieldId) throws BinaryObjectException {
return (F) reader(null, false).unmarshalField(fieldId);
}
@@ -352,7 +349,6 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <F> F fieldByOrder(int order) {
if (order == BinarySchema.ORDER_NOT_FOUND)
return null;
@@ -504,7 +500,6 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
}
/** {@inheritDoc} */
- @SuppressWarnings("IfMayBeConditional")
@Override public boolean writeFieldByOrder(int order, ByteBuffer buf) {
// Calculate field position.
int schemaOffset = BinaryPrimitives.readInt(arr, start + GridBinaryMarshaller.SCHEMA_OR_RAW_OFF_POS);
@@ -621,7 +616,6 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override protected <F> F field(BinaryReaderHandles rCtx, String fieldName) {
return (F)reader(rCtx, false).unmarshalField(fieldName);
}
@@ -632,7 +626,6 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T deserialize() throws BinaryObjectException {
Object obj0 = obj;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
index 7063c56..6f0176c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
@@ -197,13 +197,11 @@ public class BinaryObjectOffheapImpl extends BinaryObjectExImpl implements Exter
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <F> F field(String fieldName) throws BinaryObjectException {
return (F) reader(null, false).unmarshalField(fieldName);
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <F> F field(int fieldId) throws BinaryObjectException {
return (F) reader(null, false).unmarshalField(fieldId);
}
@@ -246,7 +244,6 @@ public class BinaryObjectOffheapImpl extends BinaryObjectExImpl implements Exter
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <F> F fieldByOrder(int order) {
if (order == BinarySchema.ORDER_NOT_FOUND)
return null;
@@ -408,7 +405,6 @@ public class BinaryObjectOffheapImpl extends BinaryObjectExImpl implements Exter
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override protected <F> F field(BinaryReaderHandles rCtx, String fieldName) {
return (F)reader(rCtx, false).unmarshalField(fieldName);
}
@@ -419,7 +415,6 @@ public class BinaryObjectOffheapImpl extends BinaryObjectExImpl implements Exter
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T deserialize() throws BinaryObjectException {
return (T)deserializeValue();
}
@@ -445,7 +440,6 @@ public class BinaryObjectOffheapImpl extends BinaryObjectExImpl implements Exter
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
return (T)deserializeValue();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
index 601141c..9d44e3c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
@@ -1307,7 +1307,6 @@ public class BinaryReaderExImpl implements BinaryReader, BinaryRawReaderEx, Bina
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T readObject(String fieldName) throws BinaryObjectException {
try {
return findFieldByName(fieldName) ? (T)BinaryUtils.doReadObject(in, ctx, ldr, this) : null;
@@ -2311,13 +2310,11 @@ public class BinaryReaderExImpl implements BinaryReader, BinaryRawReaderEx, Bina
}
/** {@inheritDoc} */
- @SuppressWarnings("NullableProblems")
@Override public void readFully(byte[] b) throws IOException {
readFully(b, 0, b.length);
}
/** {@inheritDoc} */
- @SuppressWarnings("NullableProblems")
@Override public void readFully(byte[] b, int off, int len) throws IOException {
int cnt = in.read(b, off, len);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java
index 27a9918..f3ee443 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java
@@ -50,7 +50,6 @@ public class BinaryReaderHandles {
* @param pos Position.
* @return Object.
*/
- @SuppressWarnings("unchecked")
@Nullable public <T> T get(int pos) {
switch (mode) {
case MODE_EMPTY:
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMap.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMap.java
index 3dae8ce..3fa30fa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMap.java
@@ -57,7 +57,6 @@ public class BinaryTreeMap implements Binarylizable, Serializable {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void writeBinary(BinaryWriter writer) throws BinaryObjectException {
BinaryRawWriter rawWriter = writer.rawWriter();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index 77dce56..640cf1b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -656,7 +656,6 @@ public class BinaryUtils {
* @param map Map.
* @return New map of the same type or null.
*/
- @SuppressWarnings("unchecked")
public static <K, V> Map<K, V> newKnownMap(Object map) {
Class<?> cls = map == null ? null : map.getClass();
@@ -748,7 +747,6 @@ public class BinaryUtils {
* @param col Collection.
* @return New empty collection.
*/
- @SuppressWarnings("unchecked")
public static <V> Collection<V> newKnownCollection(Object col) {
Class<?> cls = col == null ? null : col.getClass();
@@ -1074,7 +1072,6 @@ public class BinaryUtils {
* @param cls Class.
* @return Mode.
*/
- @SuppressWarnings("IfMayBeConditional")
public static BinaryWriteMode mode(Class<?> cls) {
assert cls != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
index d882b17..29f8e73 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
@@ -1736,7 +1736,6 @@ public class BinaryWriterExImpl implements BinaryWriter, BinaryRawWriterEx, Obje
}
/** {@inheritDoc} */
- @SuppressWarnings("NullableProblems")
@Override public void writeBytes(String s) throws IOException {
int len = s.length();
@@ -1747,7 +1746,6 @@ public class BinaryWriterExImpl implements BinaryWriter, BinaryRawWriterEx, Obje
}
/** {@inheritDoc} */
- @SuppressWarnings("NullableProblems")
@Override public void writeChars(String s) throws IOException {
int len = s.length();
@@ -1758,7 +1756,6 @@ public class BinaryWriterExImpl implements BinaryWriter, BinaryRawWriterEx, Obje
}
/** {@inheritDoc} */
- @SuppressWarnings("NullableProblems")
@Override public void writeUTF(String s) throws IOException {
writeString(s);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterHandles.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterHandles.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterHandles.java
index 3be3898..2cbce96 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterHandles.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterHandles.java
@@ -51,7 +51,6 @@ public class BinaryWriterHandles {
* @param pos Position.
* @return Old position.
*/
- @SuppressWarnings("unchecked")
public int put(Object obj, int pos) {
assert obj != null;
assert pos >= 0;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
index 7439589..aca48ea 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
@@ -262,7 +262,6 @@ public class GridBinaryMarshaller {
* @return Binary object.
* @throws org.apache.ignite.binary.BinaryObjectException In case of error.
*/
- @SuppressWarnings("unchecked")
@Nullable public <T> T unmarshal(byte[] bytes, @Nullable ClassLoader clsLdr) throws BinaryObjectException {
assert bytes != null;
@@ -281,7 +280,6 @@ public class GridBinaryMarshaller {
* @return Binary object.
* @throws org.apache.ignite.binary.BinaryObjectException In case of error.
*/
- @SuppressWarnings("unchecked")
@Nullable public <T> T unmarshal(BinaryInputStream in) throws BinaryObjectException {
BinaryContext oldCtx = pushContext(ctx);
@@ -299,7 +297,6 @@ public class GridBinaryMarshaller {
* @return Deserialized object.
* @throws org.apache.ignite.binary.BinaryObjectException In case of error.
*/
- @SuppressWarnings("unchecked")
@Nullable public <T> T deserialize(byte[] arr, @Nullable ClassLoader ldr) throws BinaryObjectException {
assert arr != null;
assert arr.length > 0;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
index ce3807d..a21e74b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
@@ -531,7 +531,6 @@ public class BinaryObjectBuilderImpl implements BinaryObjectBuilder {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T getField(String name) {
Object val;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientDataImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientDataImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientDataImpl.java
index a2a9754..21c09c2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientDataImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientDataImpl.java
@@ -256,7 +256,6 @@ public class GridClientDataImpl extends GridClientAbstractProjection<GridClientD
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K> UUID affinity(K key) throws GridClientException {
A.notNull(key, "key");
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientNodeImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientNodeImpl.java
index 4365c45..2be1bce 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientNodeImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientNodeImpl.java
@@ -145,7 +145,6 @@ public class GridClientNodeImpl implements GridClientNode {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T attribute(String name) {
return (T)attrs.get(name);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/jdk/GridClientJdkMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/jdk/GridClientJdkMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/jdk/GridClientJdkMarshaller.java
index bd89e80..dc59254 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/jdk/GridClientJdkMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/jdk/GridClientJdkMarshaller.java
@@ -76,7 +76,6 @@ public class GridClientJdkMarshaller implements GridClientMarshaller {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unmarshal(byte[] bytes) throws IOException {
ByteArrayInputStream tmp = new ByteArrayInputStream(bytes);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
index 6024f55..4655cbf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
@@ -50,7 +50,6 @@ class ClientBinary implements IgniteBinary {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T toBinary(Object obj) {
if (obj == null)
return null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
index d218e45..8e2d61a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
@@ -496,7 +496,6 @@ final class ClientUtils {
}
/** Read Ignite binary object from input stream. */
- @SuppressWarnings("unchecked")
<T> T readObject(BinaryInputStream in, boolean keepBinary) {
Object val = marsh.unmarshal(in);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java
index 2da3b8f..b60b618 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java
@@ -375,7 +375,6 @@ class TcpClientCache<K, V> implements ClientCache<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K1, V1> ClientCache<K1, V1> withKeepBinary() {
TcpClientCache<K1, V1> binCache;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/client/util/GridConcurrentHashSet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/util/GridConcurrentHashSet.java b/modules/core/src/main/java/org/apache/ignite/internal/client/util/GridConcurrentHashSet.java
index 44fa209..3225a4a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/util/GridConcurrentHashSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/util/GridConcurrentHashSet.java
@@ -45,7 +45,6 @@ public class GridConcurrentHashSet<E> extends AbstractSet<E> {
*
* @param map Map to be used for set implementation.
*/
- @SuppressWarnings({"unchecked"})
public GridConcurrentHashSet(ConcurrentMap<E, ?> map) {
this.map = (ConcurrentMap<E, Object>)map;
}
@@ -55,7 +54,6 @@ public class GridConcurrentHashSet<E> extends AbstractSet<E> {
*
* @return Wrapped map.
*/
- @SuppressWarnings({"unchecked"})
protected final <T extends Map<E, Object>> T map() {
return (T)map;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/direct/state/DirectMessageState.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/state/DirectMessageState.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/state/DirectMessageState.java
index 58f625f..b92f600 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/state/DirectMessageState.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/state/DirectMessageState.java
@@ -44,7 +44,6 @@ public class DirectMessageState<T extends DirectMessageStateItem> {
* @param cls State item type.
* @param factory Item factory.
*/
- @SuppressWarnings("unchecked")
public DirectMessageState(Class<T> cls, IgniteOutClosure<T> factory) {
this.factory = factory;
@@ -63,7 +62,6 @@ public class DirectMessageState<T extends DirectMessageStateItem> {
/**
* Go forward.
*/
- @SuppressWarnings("unchecked")
public void forward() {
pos++;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v1/DirectByteBufferStreamImplV1.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v1/DirectByteBufferStreamImplV1.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v1/DirectByteBufferStreamImplV1.java
index 118e1f1..75ac038 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v1/DirectByteBufferStreamImplV1.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v1/DirectByteBufferStreamImplV1.java
@@ -584,7 +584,6 @@ public class DirectByteBufferStreamImplV1 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> void writeMap(Map<K, V> map, MessageCollectionItemType keyType,
MessageCollectionItemType valType, MessageWriter writer) {
if (map != null) {
@@ -823,7 +822,6 @@ public class DirectByteBufferStreamImplV1 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T extends Message> T readMessage(MessageReader reader) {
if (!msgTypeDone) {
if (buf.remaining() < Message.DIRECT_TYPE_SIZE) {
@@ -867,7 +865,6 @@ public class DirectByteBufferStreamImplV1 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T[] readObjectArray(MessageCollectionItemType itemType, Class<T> itemCls,
MessageReader reader) {
if (readSize == -1) {
@@ -907,7 +904,6 @@ public class DirectByteBufferStreamImplV1 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <C extends Collection<?>> C readCollection(MessageCollectionItemType itemType,
MessageReader reader) {
if (readSize == -1) {
@@ -947,7 +943,6 @@ public class DirectByteBufferStreamImplV1 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <M extends Map<?, ?>> M readMap(MessageCollectionItemType keyType,
MessageCollectionItemType valType, boolean linked, MessageReader reader) {
if (readSize == -1) {
@@ -1056,7 +1051,6 @@ public class DirectByteBufferStreamImplV1 implements DirectByteBufferStream {
* @param off Base offset.
* @return Array or special value if it was not fully read.
*/
- @SuppressWarnings("unchecked")
private <T> T readArray(ArrayCreator<T> creator, int lenShift, long off) {
assert creator != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2.java
index fd93cfb..ef6e01f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2.java
@@ -788,7 +788,6 @@ public class DirectByteBufferStreamImplV2 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> void writeMap(Map<K, V> map, MessageCollectionItemType keyType,
MessageCollectionItemType valType, MessageWriter writer) {
if (map != null) {
@@ -1164,7 +1163,6 @@ public class DirectByteBufferStreamImplV2 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T extends Message> T readMessage(MessageReader reader) {
if (!msgTypeDone) {
if (buf.remaining() < Message.DIRECT_TYPE_SIZE) {
@@ -1208,7 +1206,6 @@ public class DirectByteBufferStreamImplV2 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T[] readObjectArray(MessageCollectionItemType itemType, Class<T> itemCls,
MessageReader reader) {
if (readSize == -1) {
@@ -1248,7 +1245,6 @@ public class DirectByteBufferStreamImplV2 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <C extends Collection<?>> C readCollection(MessageCollectionItemType itemType,
MessageReader reader) {
if (readSize == -1) {
@@ -1288,7 +1284,6 @@ public class DirectByteBufferStreamImplV2 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <M extends Map<?, ?>> M readMap(MessageCollectionItemType keyType,
MessageCollectionItemType valType, boolean linked, MessageReader reader) {
if (readSize == -1) {
@@ -1466,7 +1461,6 @@ public class DirectByteBufferStreamImplV2 implements DirectByteBufferStream {
* @param off Base offset.
* @return Array or special value if it was not fully read.
*/
- @SuppressWarnings("unchecked")
<T> T readArray(ArrayCreator<T> creator, int lenShift, long off) {
assert creator != null;
@@ -1530,7 +1524,6 @@ public class DirectByteBufferStreamImplV2 implements DirectByteBufferStream {
* @param off Base offset.
* @return Array or special value if it was not fully read.
*/
- @SuppressWarnings("unchecked")
<T> T readArrayLE(ArrayCreator<T> creator, int typeSize, int lenShift, long off) {
assert creator != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsControlResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsControlResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsControlResponse.java
index 2614cf7..2ad8dbe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsControlResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsControlResponse.java
@@ -388,7 +388,6 @@ public class IgfsControlResponse extends IgfsMessage {
* @param out Data output.
* @throws IOException If error occurred.
*/
- @SuppressWarnings("unchecked")
public void writeExternal(ObjectOutput out) throws IOException {
byte[] hdr = new byte[RES_HEADER_SIZE];
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc/JdbcResultSet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/JdbcResultSet.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/JdbcResultSet.java
index 544207e..9a6a388 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/JdbcResultSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/JdbcResultSet.java
@@ -1502,7 +1502,6 @@ public class JdbcResultSet implements ResultSet {
* @return Casted field value.
* @throws SQLException In case of error.
*/
- @SuppressWarnings("unchecked")
private <T> T getTypedValue(int colIdx, Class<T> cls) throws SQLException {
ensureNotClosed();
ensureHasCurrentRow();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
index 6878c8f..110cc74 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
@@ -654,7 +654,6 @@ public class JdbcThinConnection implements Connection {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Connection is not a wrapper for " + iface.getName());
@@ -739,7 +738,6 @@ public class JdbcThinConnection implements Connection {
* @return Server response.
* @throws SQLException On any error.
*/
- @SuppressWarnings("unchecked")
<R extends JdbcResult> R sendRequest(JdbcRequest req) throws SQLException {
ensureConnected();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinDatabaseMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinDatabaseMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinDatabaseMetadata.java
index f79b16d..d1a5f6d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinDatabaseMetadata.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinDatabaseMetadata.java
@@ -1502,7 +1502,6 @@ public class JdbcThinDatabaseMetadata implements DatabaseMetaData {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Database meta data is not a wrapper for " + iface.getName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinParameterMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinParameterMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinParameterMetadata.java
index 8647258..093637b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinParameterMetadata.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinParameterMetadata.java
@@ -86,7 +86,6 @@ public class JdbcThinParameterMetadata implements ParameterMetaData {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Parameters metadata is not a wrapper for " + iface.getName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinPreparedStatement.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinPreparedStatement.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinPreparedStatement.java
index d18788c..b9ed4ba 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinPreparedStatement.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinPreparedStatement.java
@@ -507,7 +507,6 @@ public class JdbcThinPreparedStatement extends JdbcThinStatement implements Prep
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Prepared statement is not a wrapper for " + iface.getName());
[43/52] [abbrv] ignite git commit: IGNITE-10264: MVCC TX: Unmute
tests. This closes #5685.
Posted by sb...@apache.org.
IGNITE-10264: MVCC TX: Unmute tests. This closes #5685.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/83859936
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/83859936
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/83859936
Branch: refs/heads/ignite-627
Commit: 8385993697fefc38543d80e7412dfce22d920752
Parents: 7b6e17b
Author: rkondakov <ko...@mail.ru>
Authored: Wed Dec 19 15:54:59 2018 +0300
Committer: Igor Seliverstov <gv...@gmail.com>
Committed: Wed Dec 19 15:54:59 2018 +0300
----------------------------------------------------------------------
.../internal/processors/cache/IgniteCacheIncrementTxTest.java | 7 -------
1 file changed, 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/83859936/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheIncrementTxTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheIncrementTxTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheIncrementTxTest.java
index d595cc9..f7c3160 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheIncrementTxTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheIncrementTxTest.java
@@ -36,7 +36,6 @@ import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.testframework.MvccFeatureChecker;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.transactions.Transaction;
import org.junit.Test;
@@ -95,9 +94,6 @@ public class IgniteCacheIncrementTxTest extends GridCommonAbstractTest {
*/
@Test
public void testIncrementTxTopologyChange1() throws Exception {
- if (MvccFeatureChecker.forcedMvcc())
- fail("https://issues.apache.org/jira/browse/IGNITE-10264");
-
nodeJoin(cacheConfiguration(1));
}
@@ -106,9 +102,6 @@ public class IgniteCacheIncrementTxTest extends GridCommonAbstractTest {
*/
@Test
public void testIncrementTxTopologyChange2() throws Exception {
- if (MvccFeatureChecker.forcedMvcc())
- fail("https://issues.apache.org/jira/browse/IGNITE-10264");
-
nodeJoin(cacheConfiguration(2));
}
[38/52] [abbrv] ignite git commit: IGNITE-9839 Web Console: update to
RxJS 6.
Posted by sb...@apache.org.
IGNITE-9839 Web Console: update to RxJS 6.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7d4e1fd1
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7d4e1fd1
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7d4e1fd1
Branch: refs/heads/ignite-627
Commit: 7d4e1fd118845f6e14638520ac10881deadd570c
Parents: 388f7ff
Author: Ilya Borisov <kl...@gmail.com>
Authored: Wed Dec 19 10:03:31 2018 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Wed Dec 19 10:03:31 2018 +0700
----------------------------------------------------------------------
.../components/cluster-selector/controller.js | 17 +-
.../connected-clusters-badge/controller.js | 11 +-
.../components/cache-edit-form/controller.js | 10 +-
.../components/cluster-edit-form/controller.js | 10 +-
.../controller.js | 36 +-
.../controller.js | 29 +-
.../page-configure-advanced-igfs/controller.js | 49 +-
.../controller.js | 45 +-
.../page-configure-basic/controller.js | 87 ++-
.../page-configure-basic/controller.spec.js | 6 +-
.../page-configure-overview/controller.js | 11 +-
.../components/modal-import-models/component.js | 111 ++--
.../app/components/page-configure/controller.js | 15 +-
.../app/components/page-configure/index.d.ts | 29 +-
.../app/components/page-configure/index.ts | 26 +-
.../services/ConfigChangesGuard.js | 11 +-
.../services/ConfigSelectionManager.js | 75 +--
.../page-configure/services/ConfigureState.js | 11 +-
.../page-configure/services/PageConfigure.js | 49 +-
.../services/PageConfigure.spec.js | 17 +-
.../app/components/page-configure/states.js | 62 +-
.../components/page-configure/store/effects.js | 638 ++++++++++---------
.../page-configure/store/effects.spec.js | 7 +-
.../page-configure/store/selectors.js | 159 ++---
.../components/queries-notebook/controller.ts | 30 +-
.../app/modules/agent/AgentManager.service.js | 25 +-
.../frontend/app/modules/user/User.service.js | 2 +-
.../frontend/app/services/Clusters.js | 9 +-
.../frontend/app/services/Version.service.js | 2 +-
.../web-console/frontend/app/services/store.ts | 10 +-
.../web-console/frontend/app/store/ofType.ts | 2 +-
.../frontend/app/utils/SimpleWorkerPool.js | 19 +-
modules/web-console/frontend/package.json | 4 +-
33 files changed, 869 insertions(+), 755 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/cluster-selector/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/cluster-selector/controller.js b/modules/web-console/frontend/app/components/cluster-selector/controller.js
index fb64b9f..484a5eb 100644
--- a/modules/web-console/frontend/app/components/cluster-selector/controller.js
+++ b/modules/web-console/frontend/app/components/cluster-selector/controller.js
@@ -17,8 +17,8 @@
import _ from 'lodash';
-import { BehaviorSubject } from 'rxjs/BehaviorSubject';
-import 'rxjs/add/operator/combineLatest';
+import { BehaviorSubject } from 'rxjs';
+import {tap, filter, combineLatest} from 'rxjs/operators';
export default class {
static $inject = ['AgentManager', 'IgniteConfirm', 'IgniteVersion', 'IgniteMessages'];
@@ -46,15 +46,16 @@ export default class {
this.inProgress$ = this._inProgressSubject.asObservable();
- this.clusters$ = this.agentMgr.connectionSbj
- .combineLatest(this.inProgress$)
- .do(([sbj, inProgress]) => this.inProgress = inProgress)
- .filter(([sbj, inProgress]) => !inProgress)
- .do(([{cluster, clusters}]) => {
+ this.clusters$ = this.agentMgr.connectionSbj.pipe(
+ combineLatest(this.inProgress$),
+ tap(([sbj, inProgress]) => this.inProgress = inProgress),
+ filter(([sbj, inProgress]) => !inProgress),
+ tap(([{cluster, clusters}]) => {
this.cluster = cluster ? {...cluster} : null;
this.clusters = _.orderBy(clusters, ['name'], ['asc']);
})
- .subscribe(() => {});
+ )
+ .subscribe(() => {});
}
$onDestroy() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/connected-clusters-badge/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/connected-clusters-badge/controller.js b/modules/web-console/frontend/app/components/connected-clusters-badge/controller.js
index 807c3ba..294f955 100644
--- a/modules/web-console/frontend/app/components/connected-clusters-badge/controller.js
+++ b/modules/web-console/frontend/app/components/connected-clusters-badge/controller.js
@@ -15,6 +15,8 @@
* limitations under the License.
*/
+import {tap} from 'rxjs/operators';
+
export default class {
static $inject = ['AgentManager', 'ConnectedClustersDialog'];
@@ -36,10 +38,11 @@ export default class {
}
$onInit() {
- this.connectedClusters$ = this.agentMgr.connectionSbj
- .do(({ clusters }) => this.connectedClusters = clusters.length)
- .do(({ clusters }) => this.clusters = clusters)
- .subscribe();
+ this.connectedClusters$ = this.agentMgr.connectionSbj.pipe(
+ tap(({ clusters }) => this.connectedClusters = clusters.length),
+ tap(({ clusters }) => this.clusters = clusters)
+ )
+ .subscribe();
}
$onDestroy() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure-advanced/components/cache-edit-form/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cache-edit-form/controller.js b/modules/web-console/frontend/app/components/page-configure-advanced/components/cache-edit-form/controller.js
index e044a70..c1beec6 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cache-edit-form/controller.js
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cache-edit-form/controller.js
@@ -17,6 +17,7 @@
import cloneDeep from 'lodash/cloneDeep';
import get from 'lodash/get';
+import {tap} from 'rxjs/operators';
export default class CacheEditFormController {
/** @type {ig.menu<string>} */
@@ -61,10 +62,11 @@ export default class CacheEditFormController {
};
- this.subscription = this.IgniteVersion.currentSbj
- .do(rebuildDropdowns)
- .do(filterModel)
- .subscribe();
+ this.subscription = this.IgniteVersion.currentSbj.pipe(
+ tap(rebuildDropdowns),
+ tap(filterModel)
+ )
+ .subscribe();
// TODO: Do we really need this?
this.$scope.ui = this.IgniteFormUtils.formUI();
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/controller.js b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/controller.js
index 5020d7b..7400b43 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/controller.js
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/controller.js
@@ -19,6 +19,7 @@ import cloneDeep from 'lodash/cloneDeep';
import get from 'lodash/get';
import isEqual from 'lodash/isEqual';
import _ from 'lodash';
+import {tap} from 'rxjs/operators';
export default class ClusterEditFormController {
/** @type {Array<ig.config.cache.ShortCache>} */
@@ -86,10 +87,11 @@ export default class ClusterEditFormController {
}
};
- this.subscription = this.IgniteVersion.currentSbj
- .do(rebuildDropdowns)
- .do(() => filterModel(this.clonedCluster))
- .subscribe();
+ this.subscription = this.IgniteVersion.currentSbj.pipe(
+ tap(rebuildDropdowns),
+ tap(() => filterModel(this.clonedCluster))
+ )
+ .subscribe();
this.supportedJdbcTypes = this.IgniteLegacyUtils.mkOptions(this.IgniteLegacyUtils.SUPPORTED_JDBC_TYPES);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-caches/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-caches/controller.js b/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-caches/controller.js
index da17c67..2cfe08a 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-caches/controller.js
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-caches/controller.js
@@ -15,10 +15,9 @@
* limitations under the License.
*/
-import {Subject} from 'rxjs/Subject';
-import {merge} from 'rxjs/observable/merge';
+import {Subject, merge, combineLatest} from 'rxjs';
+import {tap, map, refCount, pluck, publishReplay, switchMap, distinctUntilChanged} from 'rxjs/operators';
import naturalCompare from 'natural-compare-lite';
-import {combineLatest} from 'rxjs/observable/combineLatest';
import {removeClusterItems, advancedSaveCache} from 'app/components/page-configure/store/actionCreators';
import ConfigureState from 'app/components/page-configure/services/ConfigureState';
import ConfigSelectors from 'app/components/page-configure/store/selectors';
@@ -103,16 +102,23 @@ export default class Controller {
}
$onInit() {
- const cacheID$ = this.$uiRouter.globals.params$.pluck('cacheID').publishReplay(1).refCount();
+ const cacheID$ = this.$uiRouter.globals.params$.pipe(
+ pluck('cacheID'),
+ publishReplay(1),
+ refCount()
+ );
- this.shortCaches$ = this.ConfigureState.state$.let(this.ConfigSelectors.selectCurrentShortCaches);
- this.shortModels$ = this.ConfigureState.state$.let(this.ConfigSelectors.selectCurrentShortModels);
- this.shortIGFSs$ = this.ConfigureState.state$.let(this.ConfigSelectors.selectCurrentShortIGFSs);
- this.originalCache$ = cacheID$.distinctUntilChanged().switchMap((id) => {
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectCacheToEdit(id));
- });
+ this.shortCaches$ = this.ConfigureState.state$.pipe(this.ConfigSelectors.selectCurrentShortCaches);
+ this.shortModels$ = this.ConfigureState.state$.pipe(this.ConfigSelectors.selectCurrentShortModels);
+ this.shortIGFSs$ = this.ConfigureState.state$.pipe(this.ConfigSelectors.selectCurrentShortIGFSs);
+ this.originalCache$ = cacheID$.pipe(
+ distinctUntilChanged(),
+ switchMap((id) => {
+ return this.ConfigureState.state$.pipe(this.ConfigSelectors.selectCacheToEdit(id));
+ })
+ );
- this.isNew$ = cacheID$.map((id) => id === 'new');
+ this.isNew$ = cacheID$.pipe(map((id) => id === 'new'));
this.itemEditTitle$ = combineLatest(this.isNew$, this.originalCache$, (isNew, cache) => {
return `${isNew ? 'Create' : 'Edit'} cache ${!isNew && cache.name ? `‘${cache.name}’` : ''}`;
});
@@ -125,13 +131,13 @@ export default class Controller {
this.subscription = merge(
this.originalCache$,
- this.selectionManager.editGoes$.do((id) => this.edit(id)),
- this.selectionManager.editLeaves$.do((options) => this.$state.go('base.configuration.edit.advanced.caches', null, options))
+ this.selectionManager.editGoes$.pipe(tap((id) => this.edit(id))),
+ this.selectionManager.editLeaves$.pipe(tap((options) => this.$state.go('base.configuration.edit.advanced.caches', null, options)))
).subscribe();
this.isBlocked$ = cacheID$;
- this.tableActions$ = this.selectionManager.selectedItemIDs$.map((selectedItems) => [
+ this.tableActions$ = this.selectionManager.selectedItemIDs$.pipe(map((selectedItems) => [
{
action: 'Clone',
click: () => this.clone(selectedItems),
@@ -144,7 +150,7 @@ export default class Controller {
},
available: true
}
- ]);
+ ]));
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-cluster/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-cluster/controller.js b/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-cluster/controller.js
index f0348c3..2aae041 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-cluster/controller.js
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-cluster/controller.js
@@ -18,7 +18,7 @@
import {default as ConfigSelectors} from 'app/components/page-configure/store/selectors';
import {default as ConfigureState} from 'app/components/page-configure/services/ConfigureState';
import {advancedSaveCluster} from 'app/components/page-configure/store/actionCreators';
-import 'rxjs/add/operator/publishReplay';
+import {take, pluck, switchMap, map, filter, distinctUntilChanged, publishReplay, refCount} from 'rxjs/operators';
// Controller for Clusters screen.
export default class PageConfigureAdvancedCluster {
@@ -36,12 +36,27 @@ export default class PageConfigureAdvancedCluster {
}
$onInit() {
- const clusterID$ = this.$uiRouter.globals.params$.take(1).pluck('clusterID').filter((v) => v).take(1);
- this.shortCaches$ = this.ConfigureState.state$.let(this.ConfigSelectors.selectCurrentShortCaches);
- this.originalCluster$ = clusterID$.distinctUntilChanged().switchMap((id) => {
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectClusterToEdit(id));
- }).distinctUntilChanged().publishReplay(1).refCount();
- this.isNew$ = this.$uiRouter.globals.params$.pluck('clusterID').map((id) => id === 'new');
+ const clusterID$ = this.$uiRouter.globals.params$.pipe(
+ take(1),
+ pluck('clusterID'),
+ filter((v) => v),
+ take(1)
+ );
+
+ this.shortCaches$ = this.ConfigureState.state$.pipe(this.ConfigSelectors.selectCurrentShortCaches);
+
+ this.originalCluster$ = clusterID$.pipe(
+ distinctUntilChanged(),
+ switchMap((id) => {
+ return this.ConfigureState.state$.pipe(this.ConfigSelectors.selectClusterToEdit(id));
+ }),
+ distinctUntilChanged(),
+ publishReplay(1),
+ refCount()
+ );
+
+ this.isNew$ = this.$uiRouter.globals.params$.pipe(pluck('clusterID'), map((id) => id === 'new'));
+
this.isBlocked$ = clusterID$;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-igfs/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-igfs/controller.js b/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-igfs/controller.js
index 50eee7c..0e6345b 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-igfs/controller.js
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-igfs/controller.js
@@ -15,11 +15,9 @@
* limitations under the License.
*/
-import {Observable} from 'rxjs/Observable';
-import {Subject} from 'rxjs/Subject';
-import {combineLatest} from 'rxjs/observable/combineLatest';
+import {Observable, Subject, combineLatest, merge} from 'rxjs';
+import {tap, map, distinctUntilChanged, pluck, publishReplay, refCount, switchMap} from 'rxjs/operators';
import naturalCompare from 'natural-compare-lite';
-import {merge} from 'rxjs/observable/merge';
import get from 'lodash/get';
import {removeClusterItems, advancedSaveIGFS} from 'app/components/page-configure/store/actionCreators';
import ConfigureState from 'app/components/page-configure/services/ConfigureState';
@@ -82,31 +80,44 @@ export default class PageConfigureAdvancedIGFS {
width: 130
}
];
- this.itemID$ = this.$uiRouter.globals.params$.pluck('igfsID');
+
+ this.itemID$ = this.$uiRouter.globals.params$.pipe(pluck('igfsID'));
/** @type {Observable<ig.config.igfs.ShortIGFS>} */
- this.shortItems$ = this.ConfigureState.state$
- .let(this.ConfigSelectors.selectCurrentShortIGFSs)
- .map((items = []) => items.map((i) => ({
+ this.shortItems$ = this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectCurrentShortIGFSs,
+ map((items = []) => items.map((i) => ({
_id: i._id,
name: i.name,
affinnityGroupSize: i.affinnityGroupSize || this.IGFSs.affinnityGroupSize.default,
defaultMode: i.defaultMode || this.IGFSs.defaultMode.default
- })));
- this.originalItem$ = this.itemID$.distinctUntilChanged().switchMap((id) => {
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectIGFSToEdit(id));
- }).distinctUntilChanged().publishReplay(1).refCount();
- this.isNew$ = this.itemID$.map((id) => id === 'new');
+ })))
+ );
+
+ this.originalItem$ = this.itemID$.pipe(
+ distinctUntilChanged(),
+ switchMap((id) => {
+ return this.ConfigureState.state$.pipe(this.ConfigSelectors.selectIGFSToEdit(id));
+ }),
+ distinctUntilChanged(),
+ publishReplay(1),
+ refCount()
+ );
+
+ this.isNew$ = this.itemID$.pipe(map((id) => id === 'new'));
+
this.itemEditTitle$ = combineLatest(this.isNew$, this.originalItem$, (isNew, item) => {
return `${isNew ? 'Create' : 'Edit'} IGFS ${!isNew && get(item, 'name') ? `‘${get(item, 'name')}’` : ''}`;
});
+
this.selectionManager = this.configSelectionManager({
itemID$: this.itemID$,
selectedItemRows$: this.selectedRows$,
visibleRows$: this.visibleRows$,
loadedItems$: this.shortItems$
});
- this.tableActions$ = this.selectionManager.selectedItemIDs$.map((selectedItems) => [
+
+ this.tableActions$ = this.selectionManager.selectedItemIDs$.pipe(map((selectedItems) => [
{
action: 'Clone',
click: () => this.clone(selectedItems),
@@ -119,19 +130,23 @@ export default class PageConfigureAdvancedIGFS {
},
available: true
}
- ]);
+ ]));
+
this.subscription = merge(
this.originalItem$,
- this.selectionManager.editGoes$.do((id) => this.edit(id)),
- this.selectionManager.editLeaves$.do((options) => this.$state.go('base.configuration.edit.advanced.igfs', null, options))
+ this.selectionManager.editGoes$.pipe(tap((id) => this.edit(id))),
+ this.selectionManager.editLeaves$.pipe(tap((options) => this.$state.go('base.configuration.edit.advanced.igfs', null, options)))
).subscribe();
}
+
edit(igfsID) {
this.$state.go('base.configuration.edit.advanced.igfs.igfs', {igfsID});
}
+
save({igfs, download}) {
this.ConfigureState.dispatchAction(advancedSaveIGFS(igfs, download));
}
+
remove(itemIDs) {
this.ConfigureState.dispatchAction(
removeClusterItems(this.$uiRouter.globals.params.clusterID, 'igfss', itemIDs, true, true)
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-models/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-models/controller.js b/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-models/controller.js
index fd1ccaa..c2e30cf 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-models/controller.js
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/page-configure-advanced-models/controller.js
@@ -15,10 +15,9 @@
* limitations under the License.
*/
-import {Subject} from 'rxjs/Subject';
-import {Observable} from 'rxjs/Observable';
-import {combineLatest} from 'rxjs/observable/combineLatest';
-import {merge} from 'rxjs/observable/merge';
+import {Subject, Observable, combineLatest, merge} from 'rxjs';
+import {pluck, tap, publishReplay, refCount, distinctUntilChanged, switchMap, map} from 'rxjs/operators';
+
import get from 'lodash/get';
import hasIndexTemplate from './hasIndex.template.pug';
@@ -100,25 +99,33 @@ export default class PageConfigureAdvancedModels {
];
/** @type {Observable<string>} */
- this.itemID$ = this.$uiRouter.globals.params$.pluck('modelID');
+ this.itemID$ = this.$uiRouter.globals.params$.pipe(pluck('modelID'));
/** @type {Observable<Array<ig.config.model.ShortDomainModel>>} */
- this.shortItems$ = this.ConfigureState.state$.let(this.ConfigSelectors.selectCurrentShortModels)
- .do((shortModels = []) => {
+ this.shortItems$ = this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectCurrentShortModels,
+ tap((shortModels = []) => {
const value = shortModels.every((m) => m.hasIndex);
this.columnDefs[0].visible = !value;
- })
- .publishReplay(1)
- .refCount();
+ }),
+ publishReplay(1),
+ refCount()
+ );
- this.shortCaches$ = this.ConfigureState.state$.let(this.ConfigSelectors.selectCurrentShortCaches);
+ this.shortCaches$ = this.ConfigureState.state$.pipe(this.ConfigSelectors.selectCurrentShortCaches);
/** @type {Observable<ig.config.model.DomainModel>} */
- this.originalItem$ = this.itemID$.distinctUntilChanged().switchMap((id) => {
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectModelToEdit(id));
- }).distinctUntilChanged().publishReplay(1).refCount();
+ this.originalItem$ = this.itemID$.pipe(
+ distinctUntilChanged(),
+ switchMap((id) => {
+ return this.ConfigureState.state$.pipe(this.ConfigSelectors.selectModelToEdit(id));
+ }),
+ distinctUntilChanged(),
+ publishReplay(1),
+ refCount()
+ );
- this.isNew$ = this.itemID$.map((id) => id === 'new');
+ this.isNew$ = this.itemID$.pipe(map((id) => id === 'new'));
this.itemEditTitle$ = combineLatest(this.isNew$, this.originalItem$, (isNew, item) => {
return `${isNew ? 'Create' : 'Edit'} model ${!isNew && get(item, 'valueType') ? `‘${get(item, 'valueType')}’` : ''}`;
@@ -131,7 +138,7 @@ export default class PageConfigureAdvancedModels {
loadedItems$: this.shortItems$
});
- this.tableActions$ = this.selectionManager.selectedItemIDs$.map((selectedItems) => [
+ this.tableActions$ = this.selectionManager.selectedItemIDs$.pipe(map((selectedItems) => [
{
action: 'Clone',
click: () => this.clone(selectedItems),
@@ -144,12 +151,12 @@ export default class PageConfigureAdvancedModels {
},
available: true
}
- ]);
+ ]));
this.subscription = merge(
this.originalItem$,
- this.selectionManager.editGoes$.do((id) => this.edit(id)),
- this.selectionManager.editLeaves$.do((options) => this.$state.go('base.configuration.edit.advanced.models', null, options))
+ this.selectionManager.editGoes$.pipe(tap((id) => this.edit(id))),
+ this.selectionManager.editLeaves$.pipe(tap((options) => this.$state.go('base.configuration.edit.advanced.models', null, options)))
).subscribe();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure-basic/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-basic/controller.js b/modules/web-console/frontend/app/components/page-configure-basic/controller.js
index f5515fb..14b3a69 100644
--- a/modules/web-console/frontend/app/components/page-configure-basic/controller.js
+++ b/modules/web-console/frontend/app/components/page-configure-basic/controller.js
@@ -15,8 +15,8 @@
* limitations under the License.
*/
-import {Observable} from 'rxjs/Observable';
-import 'rxjs/add/operator/map';
+import {forkJoin, merge} from 'rxjs';
+import {map, tap, pluck, take, filter, distinctUntilChanged, switchMap, publishReplay, refCount} from 'rxjs/operators';
import cloneDeep from 'lodash/cloneDeep';
import get from 'lodash/get';
import naturalCompare from 'natural-compare-lite';
@@ -88,45 +88,64 @@ export default class PageConfigureBasicController {
$transition$.onSuccess({}, () => this.reset());
- return Observable.forkJoin(
- this.ConfigureState.state$.pluck('edit', 'changes').take(1),
- this.clusterID$.switchMap((id) => this.ConfigureState.state$.let(this.ConfigSelectors.selectClusterShortCaches(id))).take(1),
- this.shortCaches$.take(1)
- ).toPromise()
- .then(([changes, originalShortCaches, currentCaches]) => {
- return this.ConfigChangesGuard.guard(
- {
- cluster: this.Clusters.normalize(this.originalCluster),
- caches: originalShortCaches.map(this.Caches.normalize)
- },
- {
- cluster: {...this.Clusters.normalize(this.clonedCluster), caches: changes.caches.ids},
- caches: currentCaches.map(this.Caches.normalize)
- }
- );
- });
+ return forkJoin(
+ this.ConfigureState.state$.pipe(pluck('edit', 'changes'), take(1)),
+ this.clusterID$.pipe(
+ switchMap((id) => this.ConfigureState.state$.pipe(this.ConfigSelectors.selectClusterShortCaches(id))),
+ take(1)
+ ),
+ this.shortCaches$.pipe(take(1))
+ )
+ .toPromise()
+ .then(([changes, originalShortCaches, currentCaches]) => {
+ return this.ConfigChangesGuard.guard(
+ {
+ cluster: this.Clusters.normalize(this.originalCluster),
+ caches: originalShortCaches.map(this.Caches.normalize)
+ },
+ {
+ cluster: {...this.Clusters.normalize(this.clonedCluster), caches: changes.caches.ids},
+ caches: currentCaches.map(this.Caches.normalize)
+ }
+ );
+ });
}
$onInit() {
this.onBeforeTransition = this.$uiRouter.transitionService.onBefore({}, (t) => this._uiCanExit(t));
- this.memorySizeInputVisible$ = this.IgniteVersion.currentSbj
- .map((version) => this.IgniteVersion.since(version.ignite, '2.0.0'));
+ this.memorySizeInputVisible$ = this.IgniteVersion.currentSbj.pipe(
+ map((version) => this.IgniteVersion.since(version.ignite, '2.0.0'))
+ );
- const clusterID$ = this.$uiRouter.globals.params$.take(1).pluck('clusterID').filter((v) => v).take(1);
+ const clusterID$ = this.$uiRouter.globals.params$.pipe(
+ take(1),
+ pluck('clusterID'),
+ filter((v) => v),
+ take(1)
+ );
this.clusterID$ = clusterID$;
- this.isNew$ = this.$uiRouter.globals.params$.pluck('clusterID').map((id) => id === 'new');
- this.shortCaches$ = this.ConfigureState.state$.let(this.ConfigSelectors.selectCurrentShortCaches);
- this.shortClusters$ = this.ConfigureState.state$.let(this.ConfigSelectors.selectShortClustersValue());
- this.originalCluster$ = clusterID$.distinctUntilChanged().switchMap((id) => {
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectClusterToEdit(id));
- }).distinctUntilChanged().publishReplay(1).refCount();
-
- this.subscription = Observable.merge(
- this.shortCaches$.map((caches) => caches.sort((a, b) => naturalCompare(a.name, b.name))).do((v) => this.shortCaches = v),
- this.shortClusters$.do((v) => this.shortClusters = v),
- this.originalCluster$.do((v) => {
+ this.isNew$ = this.$uiRouter.globals.params$.pipe(pluck('clusterID'), map((id) => id === 'new'));
+ this.shortCaches$ = this.ConfigureState.state$.pipe(this.ConfigSelectors.selectCurrentShortCaches);
+ this.shortClusters$ = this.ConfigureState.state$.pipe(this.ConfigSelectors.selectShortClustersValue());
+ this.originalCluster$ = clusterID$.pipe(
+ distinctUntilChanged(),
+ switchMap((id) => {
+ return this.ConfigureState.state$.pipe(this.ConfigSelectors.selectClusterToEdit(id));
+ }),
+ distinctUntilChanged(),
+ publishReplay(1),
+ refCount()
+ );
+
+ this.subscription = merge(
+ this.shortCaches$.pipe(
+ map((caches) => caches.sort((a, b) => naturalCompare(a.name, b.name))),
+ tap((v) => this.shortCaches = v)
+ ),
+ this.shortClusters$.pipe(tap((v) => this.shortClusters = v)),
+ this.originalCluster$.pipe(tap((v) => {
this.originalCluster = v;
// clonedCluster should be set only when particular cluster edit starts.
//
@@ -136,7 +155,7 @@ export default class PageConfigureBasicController {
// made by user and we don't want that. Advanced configuration forms do the same too.
if (get(v, '_id') !== get(this.clonedCluster, '_id')) this.clonedCluster = cloneDeep(v);
this.defaultMemoryPolicy = this.Clusters.getDefaultClusterMemoryPolicy(this.clonedCluster);
- })
+ }))
).subscribe();
this.formActionsMenu = [
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure-basic/controller.spec.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-basic/controller.spec.js b/modules/web-console/frontend/app/components/page-configure-basic/controller.spec.js
index a35eb50..a4a1d30 100644
--- a/modules/web-console/frontend/app/components/page-configure-basic/controller.spec.js
+++ b/modules/web-console/frontend/app/components/page-configure-basic/controller.spec.js
@@ -19,10 +19,8 @@ import {suite, test} from 'mocha';
import {assert} from 'chai';
import {spy} from 'sinon';
-import {TestScheduler} from 'rxjs/testing/TestScheduler';
-import {Subject} from 'rxjs/Subject';
-import {BehaviorSubject} from 'rxjs/BehaviorSubject';
-import {Subscriber} from 'rxjs/Subscriber';
+import {TestScheduler} from 'rxjs/testing';
+import {Subscriber, Subject, BehaviorSubject} from 'rxjs';
import Controller from './controller';
const mocks = () => new Map([
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure-overview/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-overview/controller.js b/modules/web-console/frontend/app/components/page-configure-overview/controller.js
index e49e5c6..e170112 100644
--- a/modules/web-console/frontend/app/components/page-configure-overview/controller.js
+++ b/modules/web-console/frontend/app/components/page-configure-overview/controller.js
@@ -15,7 +15,8 @@
* limitations under the License.
*/
-import {Subject} from 'rxjs/Subject';
+import {Subject} from 'rxjs';
+import {map} from 'rxjs/operators';
import naturalCompare from 'natural-compare-lite';
const cellTemplate = (state) => `
@@ -81,7 +82,7 @@ export default class PageConfigureOverviewController {
}
$onInit() {
- this.shortClusters$ = this.ConfigureState.state$.let(this.ConfigSelectors.selectShortClustersValue());
+ this.shortClusters$ = this.ConfigureState.state$.pipe(this.ConfigSelectors.selectShortClustersValue());
/** @type {Array<uiGrid.IColumnDefOf<ig.config.cluster.ShortCluster>>} */
this.clustersColumnDefs = [
@@ -140,9 +141,9 @@ export default class PageConfigureOverviewController {
/** @type {Subject<Array<ig.config.cluster.ShortCluster>>} */
this.selectedRows$ = new Subject();
- this.selectedRowsIDs$ = this.selectedRows$.map((selectedClusters) => selectedClusters.map((cluster) => cluster._id));
+ this.selectedRowsIDs$ = this.selectedRows$.pipe(map((selectedClusters) => selectedClusters.map((cluster) => cluster._id)));
- this.actions$ = this.selectedRows$.map((selectedClusters) => [
+ this.actions$ = this.selectedRows$.pipe(map((selectedClusters) => [
{
action: 'Edit',
click: () => this.editCluster(selectedClusters[0]),
@@ -163,6 +164,6 @@ export default class PageConfigureOverviewController {
click: () => this.removeClusters(selectedClusters),
available: true
}
- ]);
+ ]));
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/components/modal-import-models/component.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/components/modal-import-models/component.js b/modules/web-console/frontend/app/components/page-configure/components/modal-import-models/component.js
index e4b8253..7181b54 100644
--- a/modules/web-console/frontend/app/components/page-configure/components/modal-import-models/component.js
+++ b/modules/web-console/frontend/app/components/page-configure/components/modal-import-models/component.js
@@ -21,7 +21,8 @@ import _ from 'lodash';
import naturalCompare from 'natural-compare-lite';
import find from 'lodash/fp/find';
import get from 'lodash/fp/get';
-import {Observable} from 'rxjs/Observable';
+import {race, timer, merge, of, from, combineLatest} from 'rxjs';
+import {tap, filter, take, pluck, switchMap} from 'rxjs/operators';
import ObjectID from 'bson-objectid';
import {uniqueName} from 'app/utils/uniqueName';
import {defaultNames} from '../../defaultNames';
@@ -126,34 +127,34 @@ export class ModalImportModels {
}
loadData() {
- return Observable.of(this.clusterID)
- .switchMap((id = 'new') => {
- return this.ConfigureState.state$.let(this.ConfigSelectors.selectClusterToEdit(id, defaultNames.importedCluster));
- })
- .switchMap((cluster) => {
- return (!(cluster.caches || []).length && !(cluster.models || []).length)
- ? Observable.of({
- cluster,
- caches: [],
- models: []
- })
- : Observable.fromPromise(Promise.all([
- this.ConfigEffects.etp('LOAD_SHORT_CACHES', {ids: cluster.caches || [], clusterID: cluster._id}),
- this.ConfigEffects.etp('LOAD_SHORT_MODELS', {ids: cluster.models || [], clusterID: cluster._id})
- ]))
- .switchMap(() => {
- return Observable.combineLatest(
- this.ConfigureState.state$.let(this.ConfigSelectors.selectShortCachesValue()),
- this.ConfigureState.state$.let(this.ConfigSelectors.selectShortModelsValue()),
- (caches, models) => ({
- cluster,
- caches,
- models
- })
- ).take(1);
- });
- })
- .take(1);
+ return of(this.clusterID).pipe(
+ switchMap((id = 'new') => {
+ return this.ConfigureState.state$.pipe(this.ConfigSelectors.selectClusterToEdit(id, defaultNames.importedCluster));
+ }),
+ switchMap((cluster) => {
+ return (!(cluster.caches || []).length && !(cluster.models || []).length)
+ ? of({
+ cluster,
+ caches: [],
+ models: []
+ })
+ : from(Promise.all([
+ this.ConfigEffects.etp('LOAD_SHORT_CACHES', {ids: cluster.caches || [], clusterID: cluster._id}),
+ this.ConfigEffects.etp('LOAD_SHORT_MODELS', {ids: cluster.models || [], clusterID: cluster._id})
+ ])).pipe(switchMap(() => {
+ return combineLatest(
+ this.ConfigureState.state$.pipe(this.ConfigSelectors.selectShortCachesValue()),
+ this.ConfigureState.state$.pipe(this.ConfigSelectors.selectShortModelsValue()),
+ (caches, models) => ({
+ cluster,
+ caches,
+ models
+ })
+ ).pipe(take(1));
+ }));
+ }),
+ take(1)
+ );
}
saveBatch(batch) {
@@ -169,15 +170,20 @@ export class ModalImportModels {
prevActions: []
});
- this.saveSubscription = Observable.race(
- this.ConfigureState.actions$.filter((a) => a.type === 'ADVANCED_SAVE_COMPLETE_CONFIGURATION_OK')
- .do(() => this.onHide()),
- this.ConfigureState.actions$.filter((a) => a.type === 'ADVANCED_SAVE_COMPLETE_CONFIGURATION_ERR')
+ this.saveSubscription = race(
+ this.ConfigureState.actions$.pipe(
+ filter((a) => a.type === 'ADVANCED_SAVE_COMPLETE_CONFIGURATION_OK'),
+ tap(() => this.onHide())
+ ),
+ this.ConfigureState.actions$.pipe(
+ filter((a) => a.type === 'ADVANCED_SAVE_COMPLETE_CONFIGURATION_ERR')
+ )
+ ).pipe(
+ take(1),
+ tap(() => {
+ this.Loading.finish('importDomainFromDb');
+ })
)
- .take(1)
- .do(() => {
- this.Loading.finish('importDomainFromDb');
- })
.subscribe();
}
@@ -231,18 +237,23 @@ export class ModalImportModels {
if (this.loadedCaches[cacheID])
return;
- return this.onCacheSelectSubcription = Observable.merge(
- Observable.timer(0, 1).take(1)
- .do(() => this.ConfigureState.dispatchAction({type: 'LOAD_CACHE', cacheID})),
- Observable.race(
- this.ConfigureState.actions$
- .filter((a) => a.type === 'LOAD_CACHE_OK' && a.cache._id === cacheID).pluck('cache')
- .do((cache) => {
+ return this.onCacheSelectSubcription = merge(
+ timer(0, 1).pipe(
+ take(1),
+ tap(() => this.ConfigureState.dispatchAction({type: 'LOAD_CACHE', cacheID}))
+ ),
+ race(
+ this.ConfigureState.actions$.pipe(
+ filter((a) => a.type === 'LOAD_CACHE_OK' && a.cache._id === cacheID),
+ pluck('cache'),
+ tap((cache) => {
this.loadedCaches[cacheID] = cache;
- }),
- this.ConfigureState.actions$
- .filter((a) => a.type === 'LOAD_CACHE_ERR' && a.action.cacheID === cacheID)
- ).take(1)
+ })
+ ),
+ this.ConfigureState.actions$.pipe(
+ filter((a) => a.type === 'LOAD_CACHE_ERR' && a.action.cacheID === cacheID)
+ )
+ ).pipe(take(1))
)
.subscribe();
}
@@ -291,7 +302,7 @@ export class ModalImportModels {
this.$scope.importCommon = {};
- this.subscription = this.loadData().do((data) => {
+ this.subscription = this.loadData().pipe(tap((data) => {
this.$scope.caches = _mapCaches(data.caches);
this.$scope.domains = data.models;
this.caches = data.caches;
@@ -306,7 +317,7 @@ export class ModalImportModels {
}
this.$scope.$watch('importCommon.action', this._fillCommonCachesOrTemplates(this.$scope.importCommon), true);
this.$scope.importCommon.action = IMPORT_DM_NEW_CACHE;
- }).subscribe();
+ })).subscribe();
// New
this.loadedCaches = {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/controller.js b/modules/web-console/frontend/app/components/page-configure/controller.js
index 91bdf50..7a83aa6 100644
--- a/modules/web-console/frontend/app/components/page-configure/controller.js
+++ b/modules/web-console/frontend/app/components/page-configure/controller.js
@@ -16,10 +16,8 @@
*/
import get from 'lodash/get';
-import {Observable} from 'rxjs/Observable';
-import 'rxjs/add/observable/merge';
-import {combineLatest} from 'rxjs/observable/combineLatest';
-import 'rxjs/add/operator/distinctUntilChanged';
+import {Observable, combineLatest} from 'rxjs';
+import {pluck, switchMap, map} from 'rxjs/operators';
import {default as ConfigureState} from './services/ConfigureState';
import {default as ConfigSelectors} from './store/selectors';
@@ -39,9 +37,12 @@ export default class PageConfigureController {
$onInit() {
/** @type {Observable<string>} */
- this.clusterID$ = this.$uiRouter.globals.params$.pluck('clusterID');
- const cluster$ = this.clusterID$.switchMap((id) => this.ConfigureState.state$.let(this.ConfigSelectors.selectCluster(id)));
- const isNew$ = this.clusterID$.map((v) => v === 'new');
+ this.clusterID$ = this.$uiRouter.globals.params$.pipe(pluck('clusterID'));
+
+ const cluster$ = this.clusterID$.pipe(switchMap((id) => this.ConfigureState.state$.pipe(this.ConfigSelectors.selectCluster(id))));
+
+ const isNew$ = this.clusterID$.pipe(map((v) => v === 'new'));
+
this.clusterName$ = combineLatest(cluster$, isNew$, (cluster, isNew) => {
return `${isNew ? 'Create' : 'Edit'} cluster configuration ${isNew ? '' : `‘${get(cluster, 'name')}’`}`;
});
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/index.d.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/index.d.ts b/modules/web-console/frontend/app/components/page-configure/index.d.ts
index 96773fa..c0eca6a 100644
--- a/modules/web-console/frontend/app/components/page-configure/index.d.ts
+++ b/modules/web-console/frontend/app/components/page-configure/index.d.ts
@@ -15,11 +15,10 @@
* limitations under the License.
*/
-import {Observable} from 'rxjs/Observable'
/// <reference path="./types/uirouter.d.ts" />
declare namespace ig {
- type menu<T> = Array<{value: T, label: string}>
+ type menu < T > = Array<{value: T, label: string}>;
namespace config {
namespace formFieldSize {
@@ -27,11 +26,12 @@ declare namespace ig {
label: string,
value: number
}
- type ISizeType = Array<ISizeTypeOption>
+ type ISizeType = Array<ISizeTypeOption>;
interface ISizeTypes {
[name: string]: ISizeType
}
}
+
namespace cluster {
export type DiscoveryKinds = 'Vm'
| 'Multicast'
@@ -41,14 +41,14 @@ declare namespace ig {
| 'Jdbc'
| 'SharedFs'
| 'ZooKeeper'
- | 'Kubernetes'
+ | 'Kubernetes';
export type LoadBalancingKinds = 'RoundRobin'
| 'Adaptive'
| 'WeightedRandom'
- | 'Custom'
+ | 'Custom';
- export type FailoverSPIs = 'JobStealing' | 'Never' | 'Always' | 'Custom'
+ export type FailoverSPIs = 'JobStealing' | 'Never' | 'Always' | 'Custom';
export interface ShortCluster {
_id: string,
@@ -59,9 +59,10 @@ declare namespace ig {
igfs: number
}
}
+
namespace cache {
- type CacheModes = 'PARTITIONED' | 'REPLICATED' | 'LOCAL'
- type AtomicityModes = 'ATOMIC' | 'TRANSACTIONAL'
+ type CacheModes = 'PARTITIONED' | 'REPLICATED' | 'LOCAL';
+ type AtomicityModes = 'ATOMIC' | 'TRANSACTIONAL';
export interface ShortCache {
_id: string,
cacheMode: CacheModes,
@@ -69,9 +70,10 @@ declare namespace ig {
backups: number
}
}
+
namespace model {
- type QueryMetadataTypes = 'Annotations' | 'Configuration'
- type DomainModelKinds = 'query' | 'store' | 'both'
+ type QueryMetadataTypes = 'Annotations' | 'Configuration';
+ type DomainModelKinds = 'query' | 'store' | 'both';
export interface KeyField {
databaseFieldName: string,
databaseFieldType: string,
@@ -92,7 +94,7 @@ declare namespace ig {
field: string,
alias: string
}
- type IndexTypes = 'SORTED' | 'FULLTEXT' | 'GEOSPATIAL'
+ type IndexTypes = 'SORTED' | 'FULLTEXT' | 'GEOSPATIAL';
export interface IndexField {
_id: string,
name?: string,
@@ -135,8 +137,9 @@ declare namespace ig {
hasIndex: boolean
}
}
+
namespace igfs {
- type DefaultModes = 'PRIMARY' | 'PROXY' | 'DUAL_SYNC' | 'DUAL_ASYNC'
+ type DefaultModes = 'PRIMARY' | 'PROXY' | 'DUAL_SYNC' | 'DUAL_ASYNC';
export interface ShortIGFS {
_id: string,
name: string,
@@ -148,4 +151,4 @@ declare namespace ig {
}
export as namespace ig
-export = ig
\ No newline at end of file
+export = ig
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/index.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/index.ts b/modules/web-console/frontend/app/components/page-configure/index.ts
index dd2ad20..a2f76e1 100644
--- a/modules/web-console/frontend/app/components/page-configure/index.ts
+++ b/modules/web-console/frontend/app/components/page-configure/index.ts
@@ -49,23 +49,15 @@ import pcSplitButton from './components/pc-split-button';
import {errorState} from './transitionHooks/errorState';
import {default as ActivitiesData} from 'app/core/activities/Activities.data';
-import 'rxjs/add/operator/withLatestFrom';
-import 'rxjs/add/operator/skip';
-
-import {Observable} from 'rxjs/Observable';
+import {withLatestFrom, tap, filter, scan} from 'rxjs/operators';
import {navigationMenuItem, AppStore} from '../../store';
import {default as configurationIcon} from './icons/configuration.icon.svg';
import {default as IconsService} from '../ignite-icon/service';
-Observable.prototype.debug = function(l) {
- return this.do((v) => console.log(l, v), (e) => console.error(l, e), () => console.log(l, 'completed'));
-};
-
import {
editReducer2,
shortObjectsReducer,
- reducer,
editReducer,
loadingReducer,
itemsEditReducerFactory,
@@ -83,7 +75,6 @@ import {
refsReducer
} from './reducer';
-import {reducer as reduxDevtoolsReducer, devTools} from './reduxDevtoolsIntegration';
import {registerStates} from './states';
/**
@@ -156,18 +147,19 @@ export default angular
}
});
- const la = ConfigureState.actions$.scan((acc, action) => [...acc, action], []);
+ const la = ConfigureState.actions$.pipe(scan((acc, action) => [...acc, action], []));
- ConfigureState.actions$
- .filter((a) => a.type === 'UNDO_ACTIONS')
- .withLatestFrom(la, ({actions}, actionsWindow, initialState) => {
+ ConfigureState.actions$.pipe(
+ filter((a) => a.type === 'UNDO_ACTIONS'),
+ withLatestFrom(la, ({actions}, actionsWindow, initialState) => {
return {
type: 'APPLY_ACTIONS_UNDO',
state: actionsWindow.filter((a) => !actions.includes(a)).reduce(ConfigureState._combinedReducer, {})
};
- })
- .do((a) => ConfigureState.dispatchAction(a))
- .subscribe();
+ }),
+ tap((a) => ConfigureState.dispatchAction(a))
+ )
+ .subscribe();
ConfigEffects.connect();
store.dispatch(navigationMenuItem({
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/services/ConfigChangesGuard.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/services/ConfigChangesGuard.js b/modules/web-console/frontend/app/components/page-configure/services/ConfigChangesGuard.js
index 7e2df80..cda9965 100644
--- a/modules/web-console/frontend/app/components/page-configure/services/ConfigChangesGuard.js
+++ b/modules/web-console/frontend/app/components/page-configure/services/ConfigChangesGuard.js
@@ -15,7 +15,8 @@
* limitations under the License.
*/
-import {of} from 'rxjs/observable/of';
+import {of} from 'rxjs';
+import {switchMap, catchError} from 'rxjs/operators';
import {Confirm} from 'app/services/Confirm.service';
import {DiffPatcher} from 'jsondiffpatch';
import {html} from 'jsondiffpatch/public/build/jsondiffpatch-formatters.js';
@@ -92,9 +93,9 @@ export default class ConfigChangesGuard {
if (!a && !b)
return Promise.resolve(true);
- return of(this._hasChanges(a, b))
- .switchMap((changes) => changes ? this._confirm(changes).then(() => true) : of(true))
- .catch(() => of(false))
- .toPromise();
+ return of(this._hasChanges(a, b)).pipe(
+ switchMap((changes) => changes ? this._confirm(changes).then(() => true) : of(true)),
+ catchError(() => of(false))
+ ).toPromise();
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/services/ConfigSelectionManager.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/services/ConfigSelectionManager.js b/modules/web-console/frontend/app/components/page-configure/services/ConfigSelectionManager.js
index 243302a..b5b46d6 100644
--- a/modules/web-console/frontend/app/components/page-configure/services/ConfigSelectionManager.js
+++ b/modules/web-console/frontend/app/components/page-configure/services/ConfigSelectionManager.js
@@ -15,12 +15,9 @@
* limitations under the License.
*/
-import {Observable} from 'rxjs/Observable';
-import {merge} from 'rxjs/observable/merge';
+import {Observable, merge} from 'rxjs';
+import {share, distinctUntilChanged, startWith, filter, map, pluck, withLatestFrom, mapTo} from 'rxjs/operators';
import {RejectType} from '@uirouter/angularjs';
-import 'rxjs/add/operator/share';
-import 'rxjs/add/operator/mapTo';
-import 'rxjs/add/operator/startWith';
import isEqual from 'lodash/isEqual';
/**
@@ -35,57 +32,63 @@ export default function configSelectionManager($transitions) {
// but decides to stay after screen asks for leave confirmation.
const abortedTransitions$ = Observable.create((observer) => {
return $transitions.onError({}, (t) => observer.next(t));
- })
- .filter((t) => t.error().type === RejectType.ABORTED);
+ }).pipe(filter((t) => t.error().type === RejectType.ABORTED));
- const firstItemID$ = visibleRows$.withLatestFrom(itemID$, loadedItems$)
- .filter(([rows, id, items]) => !id && rows && rows.length === items.length)
- .pluck('0', '0', 'entity', '_id');
+ const firstItemID$ = visibleRows$.pipe(
+ withLatestFrom(itemID$, loadedItems$),
+ filter(([rows, id, items]) => !id && rows && rows.length === items.length),
+ pluck('0', '0', 'entity', '_id')
+ );
- const selectedItemRowsIDs$ = selectedItemRows$.map((rows) => rows.map((r) => r._id)).share();
- const singleSelectionEdit$ = selectedItemRows$.filter((r) => r && r.length === 1).pluck('0', '_id');
- const selectedMultipleOrNone$ = selectedItemRows$.filter((r) => r.length > 1 || r.length === 0);
- const loadedItemIDs$ = loadedItems$.map((rows) => new Set(rows.map((r) => r._id))).share();
- const currentItemWasRemoved$ = loadedItemIDs$
- .withLatestFrom(
- itemID$.filter((v) => v && v !== 'new'),
+ const selectedItemRowsIDs$ = selectedItemRows$.pipe(map((rows) => rows.map((r) => r._id)), share());
+ const singleSelectionEdit$ = selectedItemRows$.pipe(filter((r) => r && r.length === 1), pluck('0', '_id'));
+ const selectedMultipleOrNone$ = selectedItemRows$.pipe(filter((r) => r.length > 1 || r.length === 0));
+ const loadedItemIDs$ = loadedItems$.pipe(map((rows) => new Set(rows.map((r) => r._id))), share());
+ const currentItemWasRemoved$ = loadedItemIDs$.pipe(
+ withLatestFrom(
+ itemID$.pipe(filter((v) => v && v !== 'new')),
/**
* Without startWith currentItemWasRemoved$ won't emit in the following scenario:
* 1. User opens items page (no item id in location).
* 2. Selection manager commands to edit first item.
* 3. User removes said item.
*/
- selectedItemRowsIDs$.startWith([])
- )
- .filter(([existingIDs, itemID, selectedIDs]) => !existingIDs.has(itemID))
- .map(([existingIDs, itemID, selectedIDs]) => selectedIDs.filter((id) => id !== itemID))
- .share();
+ selectedItemRowsIDs$.pipe(startWith([]))
+ ),
+ filter(([existingIDs, itemID, selectedIDs]) => !existingIDs.has(itemID)),
+ map(([existingIDs, itemID, selectedIDs]) => selectedIDs.filter((id) => id !== itemID)),
+ share()
+ );
// Edit first loaded item or when there's only one item selected
- const editGoes$ = merge(firstItemID$, singleSelectionEdit$)
+ const editGoes$ = merge(firstItemID$, singleSelectionEdit$).pipe(
// Don't go to non-existing items.
// Happens when user naviagtes to older history and some items were already removed.
- .withLatestFrom(loadedItemIDs$).filter(([id, loaded]) => id && loaded.has(id)).pluck('0');
+ withLatestFrom(loadedItemIDs$),
+ filter(([id, loaded]) => id && loaded.has(id)),
+ pluck('0')
+ );
// Stop edit when multiple or none items are selected or when current item was removed
const editLeaves$ = merge(
- selectedMultipleOrNone$.mapTo({}),
- currentItemWasRemoved$.mapTo({location: 'replace', custom: {justIDUpdate: true}})
- ).share();
+ selectedMultipleOrNone$.pipe(mapTo({})),
+ currentItemWasRemoved$.pipe(mapTo({location: 'replace', custom: {justIDUpdate: true}}))
+ ).pipe(share());
const selectedItemIDs$ = merge(
// Select nothing when creating an item or select current item
- itemID$.filter((id) => id).map((id) => id === 'new' ? [] : [id]),
+ itemID$.pipe(filter((id) => id), map((id) => id === 'new' ? [] : [id])),
// Restore previous item selection when transition gets aborted
- abortedTransitions$.withLatestFrom(itemID$, (_, id) => [id]),
+ abortedTransitions$.pipe(withLatestFrom(itemID$, (_, id) => [id])),
// Select all incoming selected rows
selectedItemRowsIDs$
- )
- // If nothing's selected and there are zero rows, ui-grid will behave as if all rows are selected
- .startWith([])
- // Some scenarios cause same item to be selected multiple times in a row,
- // so it makes sense to filter out duplicate entries
- .distinctUntilChanged(isEqual)
- .share();
+ ).pipe(
+ // If nothing's selected and there are zero rows, ui-grid will behave as if all rows are selected
+ startWith([]),
+ // Some scenarios cause same item to be selected multiple times in a row,
+ // so it makes sense to filter out duplicate entries
+ distinctUntilChanged(isEqual),
+ share()
+ );
return {selectedItemIDs$, editGoes$, editLeaves$};
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/services/ConfigureState.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/services/ConfigureState.js b/modules/web-console/frontend/app/components/page-configure/services/ConfigureState.js
index ed911be..143944c 100644
--- a/modules/web-console/frontend/app/components/page-configure/services/ConfigureState.js
+++ b/modules/web-console/frontend/app/components/page-configure/services/ConfigureState.js
@@ -15,10 +15,8 @@
* limitations under the License.
*/
-import {Subject} from 'rxjs/Subject';
-import {BehaviorSubject} from 'rxjs/BehaviorSubject';
-import 'rxjs/add/operator/do';
-import 'rxjs/add/operator/scan';
+import {Subject, BehaviorSubject} from 'rxjs';
+import {tap, scan} from 'rxjs/operators';
export default class ConfigureState {
constructor() {
@@ -38,7 +36,10 @@ export default class ConfigureState {
}
};
- this.actions$.scan(reducer, {}).do((v) => this.state$.next(v)).subscribe();
+ this.actions$.pipe(
+ scan(reducer, {}),
+ tap((v) => this.state$.next(v))
+ ).subscribe();
}
addReducer(combineFn) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/services/PageConfigure.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/services/PageConfigure.js b/modules/web-console/frontend/app/components/page-configure/services/PageConfigure.js
index d81921e..5eaedde 100644
--- a/modules/web-console/frontend/app/components/page-configure/services/PageConfigure.js
+++ b/modules/web-console/frontend/app/components/page-configure/services/PageConfigure.js
@@ -15,21 +15,11 @@
* limitations under the License.
*/
-import {Observable} from 'rxjs/Observable';
-import 'rxjs/add/operator/filter';
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/take';
-import 'rxjs/add/operator/switchMap';
-import 'rxjs/add/operator/merge';
-import 'rxjs/add/operator/catch';
-import 'rxjs/add/operator/withLatestFrom';
-import 'rxjs/add/observable/empty';
-import 'rxjs/add/observable/of';
-import 'rxjs/add/observable/from';
-import 'rxjs/add/observable/forkJoin';
-import 'rxjs/add/observable/timer';
import cloneDeep from 'lodash/cloneDeep';
+import {merge, timer} from 'rxjs';
+import {take, tap, ignoreElements, filter, map, pluck} from 'rxjs/operators';
+
import {
ofType
} from '../store/effects';
@@ -50,20 +40,25 @@ export default class PageConfigure {
}
getClusterConfiguration({clusterID, isDemo}) {
- return Observable.merge(
- Observable
- .timer(1)
- .take(1)
- .do(() => this.ConfigureState.dispatchAction({type: 'LOAD_COMPLETE_CONFIGURATION', clusterID, isDemo}))
- .ignoreElements(),
- this.ConfigureState.actions$.let(ofType('LOAD_COMPLETE_CONFIGURATION_ERR')).take(1).pluck('error').map((e) => Promise.reject(e)),
- this.ConfigureState.state$
- .let(this.ConfigSelectors.selectCompleteClusterConfiguration({clusterID, isDemo}))
- .filter((c) => c.__isComplete)
- .take(1)
- .map((data) => ({...data, clusters: [cloneDeep(data.cluster)]}))
- )
- .take(1)
+ return merge(
+ timer(1).pipe(
+ take(1),
+ tap(() => this.ConfigureState.dispatchAction({type: 'LOAD_COMPLETE_CONFIGURATION', clusterID, isDemo})),
+ ignoreElements()
+ ),
+ this.ConfigureState.actions$.pipe(
+ ofType('LOAD_COMPLETE_CONFIGURATION_ERR'),
+ take(1),
+ pluck('error'),
+ map((e) => Promise.reject(e))
+ ),
+ this.ConfigureState.state$.pipe(
+ this.ConfigSelectors.selectCompleteClusterConfiguration({clusterID, isDemo}),
+ filter((c) => c.__isComplete),
+ take(1),
+ map((data) => ({...data, clusters: [cloneDeep(data.cluster)]}))
+ )
+ ).pipe(take(1))
.toPromise();
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/services/PageConfigure.spec.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/services/PageConfigure.spec.js b/modules/web-console/frontend/app/components/page-configure/services/PageConfigure.spec.js
index bc72cd3..145eed6 100644
--- a/modules/web-console/frontend/app/components/page-configure/services/PageConfigure.spec.js
+++ b/modules/web-console/frontend/app/components/page-configure/services/PageConfigure.spec.js
@@ -18,11 +18,8 @@
import {suite, test} from 'mocha';
import {assert} from 'chai';
import {spy} from 'sinon';
-import {TestScheduler} from 'rxjs/testing/TestScheduler';
-import {Observable} from 'rxjs/Observable';
-
-import 'rxjs/add/observable/of';
-import 'rxjs/add/observable/throw';
+import {of, throwError} from 'rxjs';
+import {TestScheduler} from 'rxjs/testing';
const mocks = () => new Map([
['IgniteConfigurationResource', {}],
@@ -79,7 +76,7 @@ suite.skip('PageConfigure service', () => {
const deps = mocks()
.set('Clusters', {
- saveCluster$: (c) => Observable.of({data: 99})
+ saveCluster$: (c) => of({data: 99})
})
.set('ConfigureState', {
actions$: testScheduler.createHotObservable(actions, values),
@@ -135,8 +132,8 @@ suite.skip('PageConfigure service', () => {
const deps = mocks()
.set('Clusters', {
saveCluster$: (c) => c.name === values.b.clusters[0].name
- ? Observable.of({data: 99})
- : Observable.throw()
+ ? of({data: 99})
+ : throwError()
})
.set('ConfigureState', {
actions$: testScheduler.createHotObservable(actions, values),
@@ -188,7 +185,7 @@ suite.skip('PageConfigure service', () => {
dispatchAction: spy()
})
.set('Clusters', {
- removeCluster$: (v) => Observable.of(v)
+ removeCluster$: (v) => of(v)
});
const s = new PageConfigure(...deps.values());
@@ -232,7 +229,7 @@ suite.skip('PageConfigure service', () => {
dispatchAction: spy()
})
.set('Clusters', {
- removeCluster$: (v) => v._id % 2 ? Observable.of(v) : Observable.throw()
+ removeCluster$: (v) => v._id % 2 ? of(v) : throwError()
});
const s = new PageConfigure(...deps.values());
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d4e1fd1/modules/web-console/frontend/app/components/page-configure/states.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/states.js b/modules/web-console/frontend/app/components/page-configure/states.js
index 3ba5bb7..3b8dec9 100644
--- a/modules/web-console/frontend/app/components/page-configure/states.js
+++ b/modules/web-console/frontend/app/components/page-configure/states.js
@@ -20,19 +20,21 @@ import pageConfigureAdvancedModelsComponent from '../page-configure-advanced/com
import pageConfigureAdvancedCachesComponent from '../page-configure-advanced/components/page-configure-advanced-caches/component';
import pageConfigureAdvancedIGFSComponent from '../page-configure-advanced/components/page-configure-advanced-igfs/component';
-import {Observable} from 'rxjs/Observable';
+import {Observable, from, combineLatest} from 'rxjs';
+import {switchMap, take, map} from 'rxjs/operators';
const idRegex = `new|[a-z0-9]+`;
const shortCachesResolve = ['ConfigSelectors', 'ConfigureState', 'ConfigEffects', '$transition$', function(ConfigSelectors, ConfigureState, {etp}, $transition$) {
if ($transition$.params().clusterID === 'new')
return Promise.resolve();
- return Observable.fromPromise($transition$.injector().getAsync('_cluster'))
- .switchMap(() => ConfigureState.state$.let(ConfigSelectors.selectCluster($transition$.params().clusterID)).take(1))
- .switchMap((cluster) => {
+ return from($transition$.injector().getAsync('_cluster')).pipe(
+ switchMap(() => ConfigureState.state$.pipe(ConfigSelectors.selectCluster($transition$.params().clusterID), take(1))),
+ switchMap((cluster) => {
return etp('LOAD_SHORT_CACHES', {ids: cluster.caches, clusterID: cluster._id});
})
- .toPromise();
+ )
+ .toPromise();
}];
function registerStates($stateProvider) {
@@ -77,17 +79,19 @@ function registerStates($stateProvider) {
redirectTo: ($transition$) => {
const [ConfigureState, ConfigSelectors] = ['ConfigureState', 'ConfigSelectors'].map((t) => $transition$.injector().get(t));
const waitFor = ['_cluster', '_shortClusters'].map((t) => $transition$.injector().getAsync(t));
- return Observable.fromPromise(Promise.all(waitFor)).switchMap(() => {
- return Observable.combineLatest(
- ConfigureState.state$.let(ConfigSelectors.selectCluster($transition$.params().clusterID)).take(1),
- ConfigureState.state$.let(ConfigSelectors.selectShortClusters()).take(1)
- );
- })
- .map(([cluster = {caches: []}, clusters]) => {
- return (clusters.value.size > 10 || cluster.caches.length > 5)
- ? 'base.configuration.edit.advanced'
- : 'base.configuration.edit.basic';
- })
+ return from(Promise.all(waitFor)).pipe(
+ switchMap(() => {
+ return combineLatest(
+ ConfigureState.state$.pipe(ConfigSelectors.selectCluster($transition$.params().clusterID), take(1)),
+ ConfigureState.state$.pipe(ConfigSelectors.selectShortClusters(), take(1))
+ );
+ }),
+ map(([cluster = {caches: []}, clusters]) => {
+ return (clusters.value.size > 10 || cluster.caches.length > 5)
+ ? 'base.configuration.edit.advanced'
+ : 'base.configuration.edit.basic';
+ })
+ )
.toPromise();
},
failState: 'signin',
@@ -138,16 +142,17 @@ function registerStates($stateProvider) {
if ($transition$.params().clusterID === 'new')
return Promise.resolve();
- return Observable.fromPromise($transition$.injector().getAsync('_cluster'))
- .switchMap(() => ConfigureState.state$.let(ConfigSelectors.selectCluster($transition$.params().clusterID)).take(1))
- .map((cluster) => {
+ return from($transition$.injector().getAsync('_cluster')).pipe(
+ switchMap(() => ConfigureState.state$.pipe(ConfigSelectors.selectCluster($transition$.params().clusterID), take(1))),
+ map((cluster) => {
return Promise.all([
etp('LOAD_SHORT_CACHES', {ids: cluster.caches, clusterID: cluster._id}),
etp('LOAD_SHORT_MODELS', {ids: cluster.models, clusterID: cluster._id}),
etp('LOAD_SHORT_IGFSS', {ids: cluster.igfss, clusterID: cluster._id})
]);
})
- .toPromise();
+ )
+ .toPromise();
}]
},
resolvePolicy: {
@@ -163,6 +168,7 @@ function registerStates($stateProvider) {
resolve: {
_cache: ['ConfigEffects', '$transition$', ({etp}, $transition$) => {
const {clusterID, cacheID} = $transition$.params();
+
if (cacheID === 'new')
return Promise.resolve();
@@ -188,15 +194,15 @@ function registerStates($stateProvider) {
if ($transition$.params().clusterID === 'new')
return Promise.resolve();
- return Observable.fromPromise($transition$.injector().getAsync('_cluster'))
- .switchMap(() => ConfigureState.state$.let(ConfigSelectors.selectCluster($transition$.params().clusterID)).take(1))
- .map((cluster) => {
+ return from($transition$.injector().getAsync('_cluster')).pipe(
+ switchMap(() => ConfigureState.state$.pipe(ConfigSelectors.selectCluster($transition$.params().clusterID), take(1))),
+ map((cluster) => {
return Promise.all([
etp('LOAD_SHORT_CACHES', {ids: cluster.caches, clusterID: cluster._id}),
etp('LOAD_SHORT_MODELS', {ids: cluster.models, clusterID: cluster._id})
]);
})
- .toPromise();
+ ).toPromise();
}]
},
resolvePolicy: {
@@ -235,14 +241,14 @@ function registerStates($stateProvider) {
if ($transition$.params().clusterID === 'new')
return Promise.resolve();
- return Observable.fromPromise($transition$.injector().getAsync('_cluster'))
- .switchMap(() => ConfigureState.state$.let(ConfigSelectors.selectCluster($transition$.params().clusterID)).take(1))
- .map((cluster) => {
+ return from($transition$.injector().getAsync('_cluster')).pipe(
+ switchMap(() => ConfigureState.state$.pipe(ConfigSelectors.selectCluster($transition$.params().clusterID), take(1))),
+ map((cluster) => {
return Promise.all([
etp('LOAD_SHORT_IGFSS', {ids: cluster.igfss, clusterID: cluster._id})
]);
})
- .toPromise();
+ ).toPromise();
}]
},
resolvePolicy: {
[13/52] [abbrv] ignite git commit: IGNITE-4890 Support Cassandra
message 'unconfigured columnfamily'. Fixes #1719.
Posted by sb...@apache.org.
IGNITE-4890 Support Cassandra message 'unconfigured columnfamily'. Fixes #1719.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/84a8e810
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/84a8e810
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/84a8e810
Branch: refs/heads/ignite-627
Commit: 84a8e8108f973719f1f05e41818ec3ac93312d1b
Parents: 0eb5bcc
Author: Venky Kandaswamy <vk...@172.28.88.26>
Authored: Tue Dec 18 10:54:36 2018 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Tue Dec 18 10:54:36 2018 +0700
----------------------------------------------------------------------
.../ignite/cache/store/cassandra/common/CassandraHelper.java | 4 ++++
1 file changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/84a8e810/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/CassandraHelper.java
----------------------------------------------------------------------
diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/CassandraHelper.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/CassandraHelper.java
index 9492cec..c3981b3 100644
--- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/CassandraHelper.java
+++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/CassandraHelper.java
@@ -49,6 +49,9 @@ public class CassandraHelper {
/** Cassandra error message if specified table doesn't exist. */
private static final String TABLE_EXIST_ERROR2 = "Error preparing query, got ERROR INVALID: unconfigured table";
+
+ /** Cassandra error message if specified table doesn't exist. */
+ private static final Pattern TABLE_EXIST_ERROR3 = Pattern.compile("unconfigured columnfamily [0-9a-zA-Z_]+");
/** Cassandra error message if trying to use prepared statement created from another session. */
private static final String PREP_STATEMENT_CLUSTER_INSTANCE_ERROR = "You may have used a PreparedStatement that " +
@@ -97,6 +100,7 @@ public class CassandraHelper {
while (e != null) {
if (e instanceof InvalidQueryException &&
(TABLE_EXIST_ERROR1.matcher(e.getMessage()).matches() ||
+ TABLE_EXIST_ERROR3.matcher(e.getMessage()).matches() ||
KEYSPACE_EXIST_ERROR1.matcher(e.getMessage()).matches() ||
KEYSPACE_EXIST_ERROR2.matcher(e.getMessage()).matches()))
return true;
[02/52] [abbrv] ignite git commit: IGNITE-10239 Update navigation and
top menu. - Fixes #5630.
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/permanent-notifications/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/permanent-notifications/style.scss b/modules/web-console/frontend/app/components/permanent-notifications/style.scss
new file mode 100644
index 0000000..e40f21a
--- /dev/null
+++ b/modules/web-console/frontend/app/components/permanent-notifications/style.scss
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+permanent-notifications {
+ display: block;
+
+ @import "./../../../public/stylesheets/variables.scss";
+
+ .wch-notification {
+ line-height: 16px;
+ padding: 7px;
+ background: $brand-warning;
+ font-size: 16px;
+ text-align: center;
+
+ a {
+ color: $brand-info;
+ }
+
+ &+.wch-notification {
+ border-top: 1px solid darken($brand-warning, 15%);
+ }
+ }
+
+ .wch-notification.wch-notification--demo {
+ color: white;
+ background: $ignite-brand-success;
+ border: none;
+
+ a {
+ color: white;
+ text-decoration: underline;
+
+ &:hover {
+ color: #ffab40;
+ text-decoration: none;
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/permanent-notifications/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/permanent-notifications/template.pug b/modules/web-console/frontend/app/components/permanent-notifications/template.pug
new file mode 100644
index 0000000..6abe611
--- /dev/null
+++ b/modules/web-console/frontend/app/components/permanent-notifications/template.pug
@@ -0,0 +1,23 @@
+//-
+ 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.
+
+.wch-notification(ng-show='$ctrl.UserNotifications.isShown && $ctrl.UserNotifications.message' ng-bind-html='$ctrl.UserNotifications.message')
+
+.wch-notification(ng-show='$ctrl.$rootScope.user.becomeUsed')
+ | You are currently viewing user #[strong {{$ctrl.$rootScope.user.firstName}} {{$ctrl.$rootScope.user.lastName}}] as administrator. #[a(ng-click='$ctrl.$rootScope.revertIdentity()') Revert to your identity?]
+
+.wch-notification.wch-notification--demo(ng-if='$ctrl.$rootScope.IgniteDemoMode')
+ | You are now in #[b Demo Mode]. #[a(ng-click='$ctrl.closeDemo()') Close Demo?]
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/timed-redirection/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/timed-redirection/style.scss b/modules/web-console/frontend/app/components/timed-redirection/style.scss
index 5b0ecfd..487fa2d 100644
--- a/modules/web-console/frontend/app/components/timed-redirection/style.scss
+++ b/modules/web-console/frontend/app/components/timed-redirection/style.scss
@@ -23,6 +23,7 @@ timed-redirection {
display: flex;
flex-direction: column;
flex: 1;
+ min-height: 100%;
.timed-redirection--wrapper {
text-align: center;
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-footer/component.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-footer/component.js b/modules/web-console/frontend/app/components/web-console-footer/component.js
index 40a1051..bb2f7f7 100644
--- a/modules/web-console/frontend/app/components/web-console-footer/component.js
+++ b/modules/web-console/frontend/app/components/web-console-footer/component.js
@@ -17,7 +17,9 @@
import template from './template.pug';
import './style.scss';
+import controller from './controller';
export default {
- template
+ template,
+ controller
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/component.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/component.js b/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/component.js
deleted file mode 100644
index 40a1051..0000000
--- a/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/component.js
+++ /dev/null
@@ -1,23 +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 template from './template.pug';
-import './style.scss';
-
-export default {
- template
-};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/style.scss b/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/style.scss
deleted file mode 100644
index 47b88af..0000000
--- a/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/style.scss
+++ /dev/null
@@ -1,31 +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.
- */
-
-web-console-footer-links {
- margin-left: auto;
-
- a + a {
- margin-left: 5px;
-
- &:before {
- content: '|';
- display: inline-block;
- margin-right: 5px;
- color: #fafafa;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/template.pug b/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/template.pug
deleted file mode 100644
index 5c04467..0000000
--- a/modules/web-console/frontend/app/components/web-console-footer/components/web-console-footer-links/template.pug
+++ /dev/null
@@ -1,17 +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.
-
-a(href="/api/v1/downloads/agent" target="_self") Download Agent
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-footer/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-footer/controller.ts b/modules/web-console/frontend/app/components/web-console-footer/controller.ts
new file mode 100644
index 0000000..0811748
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-footer/controller.ts
@@ -0,0 +1,27 @@
+/*
+ * 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 {default as Version} from '../../services/Version.service';
+
+export default class WebConsoleFooter {
+ static $inject = ['IgniteVersion', '$rootScope']
+ constructor(private Version: Version, private $root: ng.IRootScopeService) {}
+ year = new Date().getFullYear()
+ get userIsAuthorized() {
+ return !!this.$root.user;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-footer/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-footer/index.js b/modules/web-console/frontend/app/components/web-console-footer/index.js
index e26b602..4fa4617 100644
--- a/modules/web-console/frontend/app/components/web-console-footer/index.js
+++ b/modules/web-console/frontend/app/components/web-console-footer/index.js
@@ -17,9 +17,16 @@
import angular from 'angular';
import component from './component';
-import componentLinks from './components/web-console-footer-links/component';
export default angular
.module('ignite-console.web-console-footer', [])
.component('webConsoleFooter', component)
- .component('webConsoleFooterLinks', componentLinks);
+ .directive('webConsoleFooterPageBottom', function() {
+ return {
+ restrict: 'C',
+ link(scope, el) {
+ el.parent().addClass('wrapper-public');
+ scope.$on('$destroy', () => el.parent().removeClass('wrapper-public'));
+ }
+ };
+ });
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-footer/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-footer/style.scss b/modules/web-console/frontend/app/components/web-console-footer/style.scss
index f3de59f..fe5eb64 100644
--- a/modules/web-console/frontend/app/components/web-console-footer/style.scss
+++ b/modules/web-console/frontend/app/components/web-console-footer/style.scss
@@ -16,46 +16,87 @@
*/
web-console-footer {
- display: block;
- color: #fafafa;
- background: linear-gradient(to bottom, #5f5e5e, #393939);
- font-family: Roboto;
font-size: 12px;
- font-weight: 300;
- padding-top: 12px;
- padding-bottom: 12px;
- p {
- margin-bottom: 0;
+ .#{&}__legal {
+ color: rgba(0, 0, 0, 0.54);
+ }
+
+ &.web-console-footer__sidebar-closed {
+ width: var(--width-narrow);
+ border-top: 1px solid #dddddd;
+
+ a {
+ color: var(--inactive-link-color);
+ margin-left: auto;
+ margin-right: auto;
+ width: 40px;
+ height: 40px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
- &:first-of-type {
- margin-bottom: 5px;
+ &:hover, &:focus {
+ color: var(--active-link-color);
+ }
+ [ignite-icon] {
+ transform: scale(1.25);
+ }
+ }
+
+ .web-console-footer__sidebar-stuff {
+ position: sticky;
+ display: grid;
+ grid-row-gap: 15px;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ }
+
+ .web-console-footer__regular-stuff {
+ display: none;
}
}
- .wcf-content {
+ &.web-console-footer__sidebar-opened {
+ width: var(--width-wide);
display: flex;
- flex-direction: row;
- align-items: center;
+ flex-direction: column;
+ padding: 27px 18px 27px 27px;
- & > :nth-child(2) {
- margin-left: auto;
+ .web-console-footer__sidebar-stuff {
+ display: none;
+ }
+
+ .web-console-footer__regular-stuff {
+ display: block;
}
}
+}
+
+.web-console-footer__page-bottom {
+ grid-area: footer;
+ color: #fafafa;
+ background: #393939;
+ font-size: 12px;
+ font-weight: 300;
+ padding: 12px var(--page-side-padding);
+
+ .web-console-footer__sidebar-stuff {
+ display: none;
+ }
- ignite-powered-by-apache {
- & > a {
- margin-left: 40px;
- }
+ p {
+ margin: 0;
}
a {
- color: #ee8e89;
-
- &:hover, &.hover,
- &:focus, &.focus {
- color: #ee2b27;
- text-decoration: none;
+ color: #ee8e89 !important;
+ &:hover, &:focus {
+ color: #ee2b27 !important;
}
}
+
+ .web-console-footer__legal {
+ color: inherit;
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-footer/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-footer/template.pug b/modules/web-console/frontend/app/components/web-console-footer/template.pug
index aa2812a..2c1495e 100644
--- a/modules/web-console/frontend/app/components/web-console-footer/template.pug
+++ b/modules/web-console/frontend/app/components/web-console-footer/template.pug
@@ -14,7 +14,19 @@
See the License for the specific language governing permissions and
limitations under the License.
-.container--responsive.wcf-content
- ignite-footer
- web-console-footer-links(ng-if='$parent.user')
- ignite-powered-by-apache
\ No newline at end of file
+
+.web-console-footer__sidebar-stuff
+ a(
+ href="/api/v1/downloads/agent"
+ target="_self"
+ ng-if='$ctrl.userIsAuthorized'
+ title='Download Agent'
+ )
+ svg(ignite-icon='downloadAgent')
+
+.web-console-footer__regular-stuff
+ p Apache Ignite Web Console ({{$ctrl.Version.webConsole}})
+ p © {{::$ctrl.year}} The Apache Software Foundation.
+ p.web-console-footer__legal Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are trademarks of The Apache Software Foundation.
+
+ a(href="/api/v1/downloads/agent" target="_self" ng-if='$ctrl.userIsAuthorized') Download Agent
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/component.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/component.js b/modules/web-console/frontend/app/components/web-console-header/component.js
deleted file mode 100644
index 02b3080..0000000
--- a/modules/web-console/frontend/app/components/web-console-header/component.js
+++ /dev/null
@@ -1,53 +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 template from './template.pug';
-import './style.scss';
-
-export default {
- template,
- controller: class {
- static $inject = ['$rootScope', '$scope', '$state', 'IgniteBranding', 'UserNotifications'];
-
- static connectedClustersUnvisibleStates = [
- '403', '404', 'signin'
- ];
-
- constructor($rootScope, $scope, $state, branding, UserNotifications) {
- Object.assign(this, {$rootScope, $scope, $state, branding, UserNotifications});
- }
-
- setConnectedClustersVisible() {
- this.isConnectedClustersVisible =
- !this.constructor.connectedClustersUnvisibleStates.some((state) => this.$state.includes(state));
- }
-
- isAuthorized() {
- return !!this.$rootScope.user;
- }
-
- $onInit() {
- this.setConnectedClustersVisible();
-
- this.$scope.$on('$stateChangeSuccess', () => this.setConnectedClustersVisible());
- }
- },
- transclude: {
- slotLeft: '?webConsoleHeaderLeft',
- slotRight: '?webConsoleHeaderRight'
- }
-};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/component.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/component.ts b/modules/web-console/frontend/app/components/web-console-header/component.ts
new file mode 100644
index 0000000..ad7e8a7
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/component.ts
@@ -0,0 +1,43 @@
+/*
+ * 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 template from './template.pug';
+import './style.scss';
+import {AppStore, toggleSidebar} from '../../store';
+
+export default {
+ template,
+ controller: class {
+ static $inject = ['$rootScope', '$scope', '$state', 'IgniteBranding', 'UserNotifications', 'Store'];
+
+ constructor($rootScope, $scope, $state, branding, UserNotifications, private store: AppStore) {
+ Object.assign(this, {$rootScope, $scope, $state, branding, UserNotifications});
+ }
+
+ toggleSidebar() {
+ this.store.dispatch(toggleSidebar());
+ }
+
+ isAuthorized() {
+ return !!this.$rootScope.user;
+ }
+ },
+ transclude: true,
+ bindings: {
+ hideMenuButton: '<?'
+ }
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/component.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/component.ts b/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/component.ts
new file mode 100644
index 0000000..e24b551
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/component.ts
@@ -0,0 +1,24 @@
+/*
+ * 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 template from './template.pug';
+import controller from './controller';
+
+export const component: ng.IComponentOptions = {
+ template,
+ controller
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/controller.ts b/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/controller.ts
new file mode 100644
index 0000000..1a1bd1e
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/controller.ts
@@ -0,0 +1,46 @@
+/*
+ * 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 {StateService} from '@uirouter/angularjs';
+import {default as LegacyConfirmFactory} from 'app/services/Confirm.service';
+
+export default class DemoModeButton {
+ static $inject = ['$rootScope', '$state', '$window', 'IgniteConfirm'];
+ constructor(
+ private $root: ng.IRootScopeService,
+ private $state: StateService,
+ private $window: ng.IWindowService,
+ private Confirm: ReturnType<typeof LegacyConfirmFactory>
+ ) {}
+
+ private _openTab(stateName: string) {
+ this.$window.open(this.$state.href(stateName, {}), '_blank');
+ }
+
+ startDemo() {
+ if (!this.$root.user.demoCreated)
+ return this._openTab('demo.reset');
+
+ this.Confirm.confirm('Would you like to continue with previous demo session?', true, false)
+ .then((resume) => {
+ if (resume)
+ return this._openTab('demo.resume');
+
+ this._openTab('demo.reset');
+ });
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/template.pug b/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/template.pug
new file mode 100644
index 0000000..f566ac4
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/template.pug
@@ -0,0 +1,20 @@
+//-
+ 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.
+
+
+button.btn-ignite.btn-ignite--success(
+ ng-click='$ctrl.startDemo()'
+) Start Demo
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/user-menu/component.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/user-menu/component.ts b/modules/web-console/frontend/app/components/web-console-header/components/user-menu/component.ts
new file mode 100644
index 0000000..f6141d9
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/user-menu/component.ts
@@ -0,0 +1,25 @@
+/*
+ * 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 template from './template.pug';
+import controller from './controller';
+import './style.scss';
+
+export default {
+ template,
+ controller
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/user-menu/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/user-menu/controller.ts b/modules/web-console/frontend/app/components/web-console-header/components/user-menu/controller.ts
new file mode 100644
index 0000000..812d3b5
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/user-menu/controller.ts
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+
+export default class UserMenu {
+ static $inject = ['$rootScope', 'IgniteUserbar', 'AclService', '$state', 'gettingStarted']
+ constructor(
+ private $root: ng.IRootScopeService,
+ private IgniteUserbar: any,
+ private AclService: any,
+ private $state: any,
+ private gettingStarted: any
+ ) {}
+ $onInit() {
+ this.items = [
+ {text: 'Profile', sref: 'base.settings.profile'},
+ {text: 'Getting started', click: '$ctrl.gettingStarted.tryShow(true)'}
+ ];
+
+ const _rebuildSettings = () => {
+ this.items.splice(2);
+
+ if (this.AclService.can('admin_page'))
+ this.items.push({text: 'Admin panel', sref: 'base.settings.admin'});
+
+ this.items.push(...this.IgniteUserbar);
+
+ if (this.AclService.can('logout'))
+ this.items.push({text: 'Log out', sref: 'logout'});
+ };
+
+ if (this.$root.user)
+ _rebuildSettings(null, this.$root.user);
+
+ this.$root.$on('user', _rebuildSettings);
+ }
+ get user() {
+ return this.$root.user;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/user-menu/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/user-menu/style.scss b/modules/web-console/frontend/app/components/web-console-header/components/user-menu/style.scss
new file mode 100644
index 0000000..898047b
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/user-menu/style.scss
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+user-menu {
+ --active-link-color: #ee2b27;
+ font-size: 14px;
+
+ &>.active {
+ color: var(--active-link-color)
+ }
+ .caret {
+ margin-left: 8px;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/user-menu/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/user-menu/template.pug b/modules/web-console/frontend/app/components/web-console-header/components/user-menu/template.pug
new file mode 100644
index 0000000..e946c78
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/user-menu/template.pug
@@ -0,0 +1,26 @@
+//-
+ 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.
+
+div(
+ ng-class='{active: $ctrl.$state.includes("base.settings")}'
+ ng-click='$event.stopPropagation()'
+ bs-dropdown='$ctrl.items'
+ data-placement='bottom-right'
+ data-trigger='hover focus'
+ data-container='self'
+)
+ span {{$ctrl.user.firstName}} {{$ctrl.user.lastName}}
+ span.caret
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/component.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/component.ts b/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/component.ts
new file mode 100644
index 0000000..e86d3e5
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/component.ts
@@ -0,0 +1,25 @@
+/*
+ * 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 template from './template.pug';
+import controller from './controller';
+import './style.scss';
+
+export const component: ng.IComponentOptions = {
+ template,
+ controller
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/controller.ts b/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/controller.ts
new file mode 100644
index 0000000..4345553
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/controller.ts
@@ -0,0 +1,45 @@
+/*
+ * 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 {StateService} from '@uirouter/angularjs';
+
+export default class WebConsoleHeaderContent {
+ static $inject = ['$rootScope', '$state']
+ constructor(
+ private $rootScope: ng.IRootScopeService,
+ private $state: StateService
+ ) {}
+
+ static connectedClusterInvisibleStates = [
+ '403', '404', 'signin'
+ ];
+
+ get showConnectedClusters(): boolean {
+ return this.$rootScope.user &&
+ !this.$rootScope.IgniteDemoMode &&
+ !this.constructor.connectedClusterInvisibleStates.some((state) => this.$state.includes(state)) &&
+ !this.$rootScope.user.becomeUsed;
+ }
+
+ get showUserMenu(): boolean {
+ return !!this.$rootScope.user;
+ }
+
+ get showDemoModeButton(): boolean {
+ return this.$rootScope.user && !this.$rootScope.user.becomeUsed && !this.$rootScope.IgniteDemoMode;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/style.scss b/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/style.scss
new file mode 100644
index 0000000..f483614
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/style.scss
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+web-console-header-content {
+ display: flex;
+ flex: 1;
+
+ .web-console-header-content__right {
+ margin-left: auto;
+ display: flex;
+ }
+
+ .web-console-header-item {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ padding: 0 20px;
+ border-left: 1px solid #dddddd;
+ height: 100%;
+ }
+}
+
+.web-console-header-content__title {
+ display: flex;
+ align-items: center;
+ margin-left: 80px;
+ font-size: 1.4em;
+ margin-right: auto;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/template.pug b/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/template.pug
new file mode 100644
index 0000000..8f1d4f8
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/template.pug
@@ -0,0 +1,24 @@
+//-
+ 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.
+
+.web-console-header-content__right
+ .web-console-header-item(ng-if='$ctrl.showConnectedClusters')
+ connected-clusters
+ .web-console-header-item(ng-if='$ctrl.showDemoModeButton')
+ demo-mode-button
+
+.web-console-header-item(ng-if='$ctrl.showUserMenu')
+ user-menu
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-extension/component.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-extension/component.js b/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-extension/component.js
deleted file mode 100644
index 1621adc..0000000
--- a/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-extension/component.js
+++ /dev/null
@@ -1,22 +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 template from './template.pug';
-
-export default {
- template
-};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-extension/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-extension/template.pug b/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-extension/template.pug
deleted file mode 100644
index 0545db1..0000000
--- a/modules/web-console/frontend/app/components/web-console-header/components/web-console-header-extension/template.pug
+++ /dev/null
@@ -1,15 +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.
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/index.js b/modules/web-console/frontend/app/components/web-console-header/index.js
index 3fc5c66..2a106d4 100644
--- a/modules/web-console/frontend/app/components/web-console-header/index.js
+++ b/modules/web-console/frontend/app/components/web-console-header/index.js
@@ -17,9 +17,13 @@
import angular from 'angular';
import component from './component';
-import componentExtension from './components/web-console-header-extension/component';
+import userMenu from './components/user-menu/component';
+import {component as content} from './components/web-console-header-content/component';
+import {component as demo} from './components/demo-mode-button/component';
export default angular
.module('ignite-console.web-console-header', [])
.component('webConsoleHeader', component)
- .component('webConsoleHeaderExtension', componentExtension);
+ .component('webConsoleHeaderContent', content)
+ .component('userMenu', userMenu)
+ .component('demoModeButton', demo);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/style.scss b/modules/web-console/frontend/app/components/web-console-header/style.scss
index 4edf6fd..e343284 100644
--- a/modules/web-console/frontend/app/components/web-console-header/style.scss
+++ b/modules/web-console/frontend/app/components/web-console-header/style.scss
@@ -21,13 +21,24 @@ web-console-header {
$nav-item-margin: 30px;
$bottom-border-width: 4px;
- display: block;
- min-height: 85px;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ height: 62px;
font-family: Roboto;
font-size: 16px;
border-bottom: $bottom-border-width solid red;
background: white;
position: relative;
+ padding-left: 16px;
+
+ &>ng-transclude {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-end;
+ height: 100%;
+ flex: 1;
+ }
&:after {
// Shows header shadow over absolutely positioned child content,
@@ -39,6 +50,7 @@ web-console-header {
position: absolute;
overflow: hidden;
bottom: -4px;
+ pointer-events: none;
}
.wch-slot {
@@ -59,154 +71,26 @@ web-console-header {
}
}
- .wch-content {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- align-items: center;
- padding: 18px 30px;
- position: relative;
- height: 81px;
- }
-
.wch-logo {
height: 40px;
}
- .wch-nav-item,
- .wch-nav-item > a {
- cursor: pointer;
- white-space: nowrap;
-
- &, &.active {
- font-size: 16px;
- font-weight: normal;
- text-decoration: none;
- }
-
- $color-default: $text-color;
- $color-hover: $brand-primary;
- $color-active: $brand-primary;
-
- &, a {
- color: $color-default;
- text-decoration: none;
- }
-
- &, ul {
- margin: 0;
- list-style: none;
- -webkit-padding-start: 0;
- }
-
- &:hover {
- color: $color-hover;
- }
-
- &:focus, :focus,
- &.active, .active {
- color: $color-active;
- text-decoration: none;
- }
-
- &[disabled] {
- opacity: 0.5;
- cursor: default;
- }
-
- .caret {
- margin-left: 4px;
- }
-
- &:not(:last-child) {
- margin-right: $nav-item-margin;
- }
-
- .dropdown-menu {
- a {
- &:hover, &:focus {
- color: inherit;
- }
- }
- li.active a {
- color: inherit;
- }
- }
-
- .user-name-wrapper {
- display: flex;
- align-items: center;
-
- & > span {
- max-width: 180px;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- }
- }
-
- .wch-demo-toggle {
- margin-right: 10px;
-
- // When in demo mode and clusters are hidden
- &:nth-last-child(2) {
- margin-right: $nav-item-margin;
- }
- }
-
- .wch-notification {
- line-height: 16px;
- padding: 7px;
- background: $brand-warning;
- font-size: 16px;
- text-align: center;
-
- a {
- color: $brand-info;
- }
-
- &+.wch-notification {
- border-top: 1px solid darken($brand-warning, 15%);
- }
- }
-
- .wch-notification.wch-notification--demo {
- z-index: 10000000;
- position: fixed;
- top: 0;
- width: 100%;
-
- color: white;
- background: $ignite-brand-success;
- border: none;
-
- box-shadow: 0 0 15px #008eff;
- animation: pulse 2s infinite;
-
- a {
- color: white;
- text-decoration: underline;
-
- &:hover {
- color: #ffab40;
- text-decoration: none;
- }
- }
- }
-
.wch-additional-nav-items {
display: flex;
}
-}
-@keyframes pulse {
- 0% {
- box-shadow: 0 1px 2px #008eff;
- }
- 50% {
- box-shadow: 0 1px 15px #008eff;
+ .web-console-header__togle-menu-button {
+ width: 40px;
+ height: 40px;
+ background: none !important;
+ border: none !important;
+ margin: 0 !important;
+ padding: 0 !important;
+ outline: none !important;
+ color: rgba(0, 0, 0, 0.54);
+ margin-right: 5px;
}
- 100% {
- box-shadow: 0 1px 2px #008eff;
+ .web-console-header__togle-menu-button-hidden {
+ visibility: hidden;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-header/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-header/template.pug b/modules/web-console/frontend/app/components/web-console-header/template.pug
index 1d25b13..940f3a4 100644
--- a/modules/web-console/frontend/app/components/web-console-header/template.pug
+++ b/modules/web-console/frontend/app/components/web-console-header/template.pug
@@ -14,23 +14,15 @@
See the License for the specific language governing permissions and
limitations under the License.
-.wch-notification(ng-show='$ctrl.UserNotifications.isShown && $ctrl.UserNotifications.message' ng-bind-html='$ctrl.UserNotifications.message')
-
-.wch-notification(ng-show='$root.user.becomeUsed')
- | You are currently viewing user #[strong {{$root.user.firstName}} {{$root.user.lastName}}] as administrator. #[a(ng-click='$root.revertIdentity()') Revert to your identity?]
-
-.wch-notification.wch-notification--demo(ng-if='$root.IgniteDemoMode')
- div(ng-controller='demoController')
- | You are now in #[b Demo Mode]. #[a(ng-click='closeDemo();') Close Demo?]
-
-.wch-content
- connected-clusters(ng-if='$ctrl.$rootScope.user && !$ctrl.$rootScope.IgniteDemoMode && $ctrl.isConnectedClustersVisible && !$root.user.becomeUsed')
-
- a(ui-sref='default-state' ng-if='$ctrl.isAuthorized()').wch-logo-anchor
- img.wch-logo(ng-src='{{::$ctrl.branding.headerLogo}}')
-
- a(ui-sref='landing' ng-if='!$ctrl.isAuthorized()').wch-logo-anchor
- img.wch-logo(ng-src='{{::$ctrl.branding.headerLogo}}')
-
- .wch-slot.wch-slot-left(ng-transclude='slotLeft')
- .wch-slot.wch-slot-right(ng-transclude='slotRight')
+button.web-console-header__togle-menu-button(
+ type='button'
+ title='Toggle menu'
+ ng-click='$ctrl.toggleSidebar()'
+ ng-class='::{"web-console-header__togle-menu-button-hidden": $ctrl.hideMenuButton}'
+)
+ svg(ignite-icon='menu')
+
+a(ui-sref='{{$ctrl.isAuthorized() ? "default-state" : "landing"}}').wch-logo-anchor
+ img.wch-logo(src='/images/ignite-logo.svg')
+
+ng-transclude
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/component.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/component.ts b/modules/web-console/frontend/app/components/web-console-sidebar/component.ts
new file mode 100644
index 0000000..e86d3e5
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/component.ts
@@ -0,0 +1,25 @@
+/*
+ * 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 template from './template.pug';
+import controller from './controller';
+import './style.scss';
+
+export const component: ng.IComponentOptions = {
+ template,
+ controller
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/controller.ts b/modules/web-console/frontend/app/components/web-console-sidebar/controller.ts
new file mode 100644
index 0000000..bdf606b
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/controller.ts
@@ -0,0 +1,30 @@
+/*
+ * 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 {AppStore, selectSidebarOpened} from '../../store';
+
+export default class WebConsoleSidebar {
+ static $inject = ['$rootScope', 'Store']
+ constructor(
+ private $rootScope: ng.IRootScopeService,
+ private store: AppStore
+ ) {}
+ sidebarOpened$ = this.store.state$.pipe(selectSidebarOpened())
+ get showNavigation(): boolean {
+ return !!this.$rootScope.user;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/index.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/index.ts b/modules/web-console/frontend/app/components/web-console-sidebar/index.ts
new file mode 100644
index 0000000..717dca5
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/index.ts
@@ -0,0 +1,25 @@
+/*
+ * 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 {component as overflow} from './web-console-sidebar-overflow/component';
+import {component as nav} from './web-console-sidebar-navigation/component';
+import {component as sidebar} from './component';
+
+export default angular.module('sidebar', [])
+ .component('webConsoleSidebarOverflow', overflow)
+ .component('webConsoleSidebarNavigation', nav)
+ .component('webConsoleSidebar', sidebar);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/style.scss b/modules/web-console/frontend/app/components/web-console-sidebar/style.scss
new file mode 100644
index 0000000..b625333
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/style.scss
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+web-console-sidebar {
+ display: flex;
+ flex-direction: column;
+ background: white;
+ border-right: 1px #dddddd solid;
+ --width-narrow: 75px;
+ --width-wide: 280px;
+ --active-link-color: #ee2b27;
+ --inactive-link-color: #757575;
+ // Does not include notifications height
+ max-height: calc(100vh - var(--header-height));
+ position: -webkit-sticky;
+ position: sticky;
+ top: var(--header-height);
+
+ web-console-sidebar-overflow {
+ flex: 1;
+ }
+
+ web-console-footer {
+ flex: 0 0 auto;
+
+ &:first-child {
+ margin-top: auto;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/template.pug b/modules/web-console/frontend/app/components/web-console-sidebar/template.pug
new file mode 100644
index 0000000..f02f2c4
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/template.pug
@@ -0,0 +1,22 @@
+//-
+ 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.
+
+web-console-sidebar-overflow
+ web-console-sidebar-navigation(opened='$ctrl.sidebarOpened$|async:this' ng-if='$ctrl.showNavigation')
+web-console-footer(ng-class=`{
+ "web-console-footer__sidebar-opened": ($ctrl.sidebarOpened$|async:this),
+ "web-console-footer__sidebar-closed": !($ctrl.sidebarOpened$|async:this)
+}`)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/component.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/component.ts b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/component.ts
new file mode 100644
index 0000000..4e4647f
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/component.ts
@@ -0,0 +1,28 @@
+/*
+ * 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 './style.scss';
+import template from './template.pug';
+import controller from './controller';
+
+export const component = {
+ controller,
+ template,
+ bindings: {
+ opened: '<'
+ }
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/controller.ts b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/controller.ts
new file mode 100644
index 0000000..8b5355a
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/controller.ts
@@ -0,0 +1,24 @@
+/*
+ * 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 {AppStore, selectNavigationMenu} from '../../../store';
+
+export default class WebConsoleSidebarNavigation {
+ static $inject = ['Store']
+ constructor(private store: AppStore) {}
+ menu$ = this.store.state$.pipe(selectNavigationMenu())
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/style.scss b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/style.scss
new file mode 100644
index 0000000..83c21a3
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/style.scss
@@ -0,0 +1,108 @@
+/*
+ * 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.
+ */
+
+web-console-sidebar-navigation {
+ display: flex;
+ flex-direction: column;
+ padding-top: 14px;
+
+ nav {
+ display: flex;
+ flex-direction: column;
+ list-style-type: none;
+
+ &>li {
+ display: flex;
+ }
+ }
+
+ .web-console-sidebar-navigation__link-icon {
+ width: 20px;
+ height: auto;
+ color: var(--inactive-link-color);
+ }
+
+ .web-console-sidebar-navigation__link-narrow {
+ height: var(--width-narrow);
+ width: var(--width-narrow);
+ color: var(--inactive-link-color);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ &:hover, &:focus {
+ color: var(--active-link-color);
+
+ }
+
+ &.web-console-sidebar-navigation__link-active {
+ color: var(--active-link-color);
+ position: relative;
+
+ &:after {
+ content: '';
+ display: block;
+ width: 2px;
+ // Line can't be outside of scrollable container
+ right: 0;
+ top: 0;
+ bottom: 0;
+ position: absolute;
+ background: var(--active-link-color);
+ }
+ .web-console-sidebar-navigation__link-icon {
+ color: inherit;
+ }
+ }
+ .web-console-sidebar-navigation__link-content {
+ display: none;
+ }
+ }
+ .web-console-sidebar-navigation__link-wide {
+ color: #393939;
+ text-decoration: none !important;
+ line-height: 19px;
+ font-size: 16px;
+ padding: 10px 28px 11px;
+ width: var(--width-wide);
+ display: inline-flex;
+ align-items: center;
+
+ &:first-of-type {
+ margin-top: 18px;
+ }
+
+ &:hover, &:focus {
+ color: var(--active-link-color);
+
+ .web-console-sidebar-navigation__link-icon {
+ color: inherit;
+ }
+ }
+ &.web-console-sidebar-navigation__link-active {
+ color: white;
+ background: var(--active-link-color);
+
+ .web-console-sidebar-navigation__link-icon {
+ color: inherit;
+ }
+ }
+ .web-console-sidebar-navigation__link-icon {
+ margin-right: 12px;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/template.pug b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/template.pug
new file mode 100644
index 0000000..c35de9d
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/template.pug
@@ -0,0 +1,35 @@
+//-
+ 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.
+
+nav
+ li(
+ ng-repeat='item in $ctrl.menu$|async:this track by item.sref'
+ ng-if='!item.hidden'
+ )
+ a.web-console-sidebar-navigation__link(
+ ui-sref='{{item.sref}}'
+ ui-sref-active=`{
+ "web-console-sidebar-navigation__link-active": item.activeSref
+ }`
+ title='{{item.label|translate}}'
+ ng-class=`{
+ 'web-console-sidebar-navigation__link-narrow': !$ctrl.opened,
+ 'web-console-sidebar-navigation__link-wide': $ctrl.opened
+ }`
+ tabindex='0'
+ )
+ svg.web-console-sidebar-navigation__link-icon(ignite-icon='{{item.icon}}')
+ span.web-console-sidebar-navigation__link-content(translate='{{item.label}}')
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/component.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/component.ts b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/component.ts
new file mode 100644
index 0000000..0f69e2d
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/component.ts
@@ -0,0 +1,26 @@
+/*
+ * 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 controller from './controller';
+import template from './template.pug';
+import './style.scss';
+
+export const component: ng.IComponentOptions = {
+ controller,
+ transclude: true,
+ template
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/controller.ts b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/controller.ts
new file mode 100644
index 0000000..d5403f4
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/controller.ts
@@ -0,0 +1,50 @@
+/*
+ * 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 ResizeObserver from 'resize-observer-polyfill';
+
+export default class WebCOnsoleSidebarOverflow {
+ static $inject = ['$element', 'gridUtil', '$window']
+ constructor(private el: JQLite, private gridUtil: {getScrollbarWidth(): number}, private $win: ng.IWindowService) {}
+ scrollEl!: JQLite
+ resizeObserver: ResizeObserver
+ $onInit() {
+ this.el.css('--scrollbar-width', this.gridUtil.getScrollbarWidth());
+ }
+ $postLink() {
+ this.scrollEl[0].addEventListener('scroll', this.onScroll, {passive: true});
+ this.resizeObserver = new ResizeObserver(() => this.applyStyles(this.scrollEl[0]));
+ this.resizeObserver.observe(this.el[0]);
+ }
+ $onDestroy() {
+ this.scrollEl[0].removeEventListener('scroll', this.onScroll);
+ this.resizeObserver.disconnect();
+ }
+ applyStyles(target: HTMLElement) {
+ const {offsetHeight, scrollTop, scrollHeight} = target;
+ const top = scrollTop !== 0;
+ const bottom = Math.floor((offsetHeight + scrollTop)) !== Math.floor(scrollHeight);
+
+ target.classList.toggle('top', top);
+ target.classList.toggle('bottom', bottom);
+ }
+ onScroll = (e: UIEvent) => {
+ this.$win.requestAnimationFrame(() => {
+ this.applyStyles(e.target as HTMLElement);
+ });
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/style.scss b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/style.scss
new file mode 100644
index 0000000..cbc6adc
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/style.scss
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+
+web-console-sidebar-overflow {
+ overflow: hidden;
+ position: relative;
+ display: flex;
+
+ &>.web-console-sidebar-overflow__scroll-root {
+ overflow-x: hidden;
+ overflow-y: scroll;
+ margin-right: calc(-1 * var(--scrollbar-width));
+
+ &.top:before {
+ display: block;
+ width: 100%;
+ content: '';
+ height: 1px;
+ position: absolute;
+ top: -1px;
+ box-shadow: 0 0 9px 1px #a0a0a0;
+ transform: translateZ(1px);
+ }
+ &.bottom:after {
+ display: block;
+ width: 100%;
+ content: '';
+ position: absolute;
+ bottom: 0;
+ box-shadow: 0 0 9px 1px #a0a0a0;
+ transform: translateZ(1px);
+ }
+
+ &>ng-transclude {
+ display: block;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/template.pug b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/template.pug
new file mode 100644
index 0000000..5b70da6
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/template.pug
@@ -0,0 +1,18 @@
+//-
+ 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.
+
+.web-console-sidebar-overflow__scroll-root(ng-ref='$ctrl.scrollEl' ng-ref-read='$element')
+ ng-transclude(ng-style='::{"--scrollbar-width": $ctrl.SCROLLBAR_WIDTH}')
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/branding/branding.module.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/branding/branding.module.js b/modules/web-console/frontend/app/modules/branding/branding.module.js
index 20cd93e..8b23d04 100644
--- a/modules/web-console/frontend/app/modules/branding/branding.module.js
+++ b/modules/web-console/frontend/app/modules/branding/branding.module.js
@@ -19,12 +19,8 @@ import angular from 'angular';
import IgniteBranding from './branding.service';
-import igniteHeaderLogo from './header-logo.directive';
-import igniteHeaderTitle from './header-title.directive';
import igniteTerms from './terms.directive';
import igniteFeatures from './features.directive';
-import igniteFooter from './footer.directive';
-import ignitePoweredByApache from './powered-by-apache.directive';
angular
.module('ignite-console.branding', [
@@ -41,9 +37,5 @@ angular
tfMetaTagsProvider.setTitleSuffix(' – Apache Ignite Web Console');
}])
-.directive('ignitePoweredByApache', ignitePoweredByApache)
-.directive('igniteHeaderLogo', igniteHeaderLogo)
-.directive('igniteHeaderTitle', igniteHeaderTitle)
.directive('igniteTerms', igniteTerms)
-.directive('igniteFeatures', igniteFeatures)
-.directive('igniteFooter', igniteFooter);
+.directive('igniteFeatures', igniteFeatures);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/branding/branding.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/branding/branding.service.js b/modules/web-console/frontend/app/modules/branding/branding.service.js
index 667dbfd..f184a4d 100644
--- a/modules/web-console/frontend/app/modules/branding/branding.service.js
+++ b/modules/web-console/frontend/app/modules/branding/branding.service.js
@@ -24,10 +24,6 @@ export default class {
constructor(Version) {
this.titleSuffix = ' - Apache Ignite Web Console';
- this.headerLogo = '/images/ignite-logo.svg';
-
- this.headerText = 'Management console for Apache Ignite';
-
this.showIgniteLogo = false;
this.footerHtml = [
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/branding/footer.directive.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/branding/footer.directive.js b/modules/web-console/frontend/app/modules/branding/footer.directive.js
deleted file mode 100644
index 3c0bb83..0000000
--- a/modules/web-console/frontend/app/modules/branding/footer.directive.js
+++ /dev/null
@@ -1,39 +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.
- */
-
-const template = '<div class="footer" ng-bind-html="footer.html"></div>';
-
-/**
- * @param {import('./branding.service').default} branding
- */
-export default function factory(branding) {
- function controller() {
- const ctrl = this;
-
- ctrl.html = branding.footerHtml;
- }
-
- return {
- restrict: 'E',
- template,
- controller,
- controllerAs: 'footer',
- replace: true
- };
-}
-
-factory.$inject = ['IgniteBranding'];
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/modules/branding/header-logo.directive.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/branding/header-logo.directive.js b/modules/web-console/frontend/app/modules/branding/header-logo.directive.js
deleted file mode 100644
index 60e5d5d..0000000
--- a/modules/web-console/frontend/app/modules/branding/header-logo.directive.js
+++ /dev/null
@@ -1,39 +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 template from './header-logo.pug';
-
-/**
- * @param {import('./branding.service').default} branding
- */
-export default function factory(branding) {
- function controller() {
- const ctrl = this;
-
- ctrl.url = branding.headerLogo;
- }
-
- return {
- restrict: 'E',
- template,
- controller,
- controllerAs: 'logo',
- replace: true
- };
-}
-
-factory.$inject = ['IgniteBranding'];
[40/52] [abbrv] ignite git commit: IGNITE-10572: MVCC TX: Possible
race on invokeAll operations. This closes #5608.
Posted by sb...@apache.org.
IGNITE-10572: MVCC TX: Possible race on invokeAll operations. This closes #5608.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9dc6d086
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9dc6d086
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9dc6d086
Branch: refs/heads/ignite-627
Commit: 9dc6d0864fb007fcab97eccee964d1df75fbd75c
Parents: ca8a80b
Author: Andrey V. Mashenkov <an...@gmail.com>
Authored: Wed Dec 19 14:44:16 2018 +0300
Committer: Igor Seliverstov <gv...@gmail.com>
Committed: Wed Dec 19 14:44:16 2018 +0300
----------------------------------------------------------------------
.../near/GridNearTxEnlistFuture.java | 20 +++++++++++---------
.../near/GridNearTxEnlistResponse.java | 2 +-
.../cache/distributed/near/GridNearTxLocal.java | 2 +-
3 files changed, 13 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc6d086/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistFuture.java
index 35a8cfa..789cd3c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistFuture.java
@@ -26,6 +26,7 @@ import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
+import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.IgniteInternalFuture;
@@ -69,6 +70,10 @@ public class GridNearTxEnlistFuture extends GridNearTxAbstractEnlistFuture<GridC
private static final AtomicIntegerFieldUpdater<GridNearTxEnlistFuture> SKIP_UPD =
AtomicIntegerFieldUpdater.newUpdater(GridNearTxEnlistFuture.class, "skipCntr");
+ /** Res field updater. */
+ private static final AtomicReferenceFieldUpdater<GridNearTxEnlistFuture, GridCacheReturn> RES_UPD =
+ AtomicReferenceFieldUpdater.newUpdater(GridNearTxEnlistFuture.class, GridCacheReturn.class, "res");
+
/** Marker object. */
private static final Object FINISHED = new Object();
@@ -598,20 +603,17 @@ public class GridNearTxEnlistFuture extends GridNearTxAbstractEnlistFuture<GridC
assert res != null;
- if (res.result().invokeResult()) {
- if(this.res == null)
- this.res = new GridCacheReturn(true, true);
-
- this.res.success(this.res.success() && err == null && res.result().success());
+ if (this.res != null || !RES_UPD.compareAndSet(this, null, res.result())) {
+ GridCacheReturn res0 = this.res;
- this.res.mergeEntryProcessResults(res.result());
+ if (res.result().invokeResult())
+ res0.mergeEntryProcessResults(res.result());
+ else if (res0.success() && !res.result().success())
+ res0.success(false);
}
- else
- this.res = res.result();
assert this.res != null && (this.res.emptyResult() || needRes || this.res.invokeResult() || !this.res.success());
-
tx.hasRemoteLocks(true);
return true;
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc6d086/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistResponse.java
index cf00186..93df0c2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxEnlistResponse.java
@@ -158,7 +158,7 @@ public class GridNearTxEnlistResponse extends GridCacheIdMessage implements Exce
}
/** {@inheritDoc} */
- @Nullable @Override public Throwable error() {
+ @Override public @Nullable Throwable error() {
return err;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc6d086/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index fb2f8e3..7d50947 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -2089,7 +2089,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou
Object val = futRes.value();
- if (futRes.invokeResult()) {
+ if (futRes.invokeResult() && val != null) {
assert val instanceof Map;
val = cacheCtx.unwrapInvokeResult((Map)val, keepBinary);
[23/52] [abbrv] ignite git commit: IGNITE-10289: [ML] Import models
from XGBoost
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-test-expected-results.txt
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-test-expected-results.txt b/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-test-expected-results.txt
new file mode 100644
index 0000000..b6947fd
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-test-expected-results.txt
@@ -0,0 +1,1611 @@
+0.00025412877
+0.99888784
+0.00025412877
+0.00020371929
+0.0016852723
+0.004336959
+0.99888605
+0.00025412877
+0.99888784
+0.0007407177
+0.99888784
+0.00048179296
+6.019019e-06
+0.00025412877
+7.060129e-06
+0.0003617697
+0.00047204422
+0.99879885
+0.0012118616
+0.00040873847
+0.00047204422
+0.0003617697
+0.00025412877
+0.0004505964
+0.00031991434
+0.9996768
+0.004901804
+0.00052038184
+0.0004505964
+6.019019e-06
+0.00020371929
+0.00052038184
+0.00065504765
+0.0011316377
+0.0002305175
+0.00047204422
+0.004901804
+0.9993381
+0.0002305175
+0.00047204422
+0.0011316377
+0.00020371929
+0.00019959644
+0.0002305175
+0.0002305175
+0.0021919373
+0.0008000284
+0.0051317057
+0.0012118616
+0.00052038184
+0.0003617697
+0.00019959644
+0.99951875
+0.00040873847
+0.00022004127
+0.00039074913
+0.00020371929
+0.00019959644
+0.00040873847
+0.00052038184
+0.0014905198
+7.905719e-06
+0.9994962
+7.905719e-06
+0.99888784
+0.0004505964
+0.9994567
+0.00052038184
+0.00019959644
+0.0004370383
+0.00065504765
+0.0023671745
+0.00019959644
+7.060129e-06
+0.0011316377
+0.00025412877
+0.00065504765
+5.322418e-06
+0.00037842535
+6.243038e-06
+0.0008000284
+0.0013067605
+0.00040873847
+0.0017210845
+0.00025412877
+0.00022004127
+0.9993862
+0.99888784
+0.00019959644
+0.0003455418
+0.0007407177
+0.0002305175
+0.00022004127
+0.0007075034
+0.00019959644
+0.0002305175
+0.0004370383
+0.0004505964
+0.0016852723
+0.0011316377
+0.0002352789
+0.0057994546
+0.0008000284
+0.0031079606
+0.00065504765
+0.00039074913
+0.00018479073
+0.00040873847
+0.0004370383
+0.0023447894
+0.0010494431
+0.0003617697
+0.00052038184
+0.00022004127
+7.060129e-06
+0.9989686
+0.00025412877
+0.0027754887
+0.0012795585
+0.0025701027
+0.00037842535
+0.00040873847
+0.00031991434
+0.0004505964
+0.0015961447
+0.0015961447
+0.00037842535
+5.322418e-06
+0.00025412877
+0.0007407177
+0.00040873847
+0.0002305175
+0.00039074913
+0.0011866327
+0.0016852723
+0.0011866327
+0.00047204422
+0.00022004127
+0.0015629282
+0.99941325
+0.00052038184
+0.00052038184
+7.6220385e-06
+0.00018479073
+0.0007075034
+0.00040873847
+5.322418e-06
+0.00018479073
+0.9993862
+0.00039074913
+0.0057447995
+0.0007075034
+0.0043782797
+0.00047204422
+0.0002305175
+0.004336959
+0.0003455418
+0.0017210845
+0.00048179296
+0.00037842535
+0.99965084
+0.9989686
+0.00019959644
+0.00031991434
+0.00020371929
+0.0043782797
+0.9994567
+0.00040873847
+0.00041718033
+0.002676164
+0.0028780429
+0.0003455418
+0.005320857
+0.99879885
+0.0008000284
+0.0057994546
+0.9996768
+0.0004505964
+0.0011866327
+0.00019959644
+0.00020587152
+0.0004505964
+0.005083311
+3.2162723e-05
+0.0003455418
+0.00040873847
+6.7399155e-06
+0.00047204422
+0.999337
+5.322418e-06
+8.940421e-06
+0.99893767
+0.99888605
+7.6220385e-06
+0.99965084
+0.0031376088
+7.060129e-06
+7.905719e-06
+6.243038e-06
+0.00022004127
+4.237742e-05
+0.99965084
+6.7399155e-06
+5.322418e-06
+7.060129e-06
+8.940421e-06
+0.00052038184
+0.0053715007
+0.00019060042
+0.00031991434
+0.00041718033
+6.7399155e-06
+4.237742e-05
+0.0007075034
+0.00047204422
+6.019019e-06
+0.00041718033
+0.0017210845
+7.905719e-06
+0.9989686
+6.019019e-06
+0.9994567
+7.060129e-06
+7.6220385e-06
+8.940421e-06
+7.060129e-06
+5.322418e-06
+0.9994147
+0.0004505964
+8.940421e-06
+7.905719e-06
+8.940421e-06
+0.00015625419
+0.0014905198
+5.322418e-06
+0.0007075034
+7.6220385e-06
+5.322418e-06
+0.9997003
+0.00020371929
+7.060129e-06
+5.322418e-06
+8.940421e-06
+8.940421e-06
+6.243038e-06
+4.325291e-05
+0.99901485
+8.940421e-06
+0.9994137
+7.6220385e-06
+3.5457782e-05
+0.00015625419
+3.5457782e-05
+6.7399155e-06
+5.322418e-06
+8.940421e-06
+4.237742e-05
+7.060129e-06
+0.00020587152
+0.9997141
+0.00015625419
+4.237742e-05
+0.00047204422
+0.9993862
+8.940421e-06
+0.9997141
+3.2162723e-05
+6.243038e-06
+8.940421e-06
+7.6220385e-06
+6.019019e-06
+7.6220385e-06
+6.243038e-06
+0.9997141
+7.060129e-06
+5.322418e-06
+3.923348e-05
+7.905719e-06
+5.322418e-06
+7.905719e-06
+0.9990878
+0.00039074913
+5.322418e-06
+6.243038e-06
+0.00052038184
+7.6220385e-06
+8.940421e-06
+7.905719e-06
+7.060129e-06
+6.243038e-06
+8.940421e-06
+6.019019e-06
+0.99955446
+7.6220385e-06
+6.243038e-06
+0.9994567
+6.243038e-06
+5.322418e-06
+0.9994572
+7.060129e-06
+7.060129e-06
+5.322418e-06
+0.99955446
+6.243038e-06
+7.905719e-06
+7.060129e-06
+7.060129e-06
+0.99955446
+0.00020587152
+6.7399155e-06
+7.6220385e-06
+7.905719e-06
+8.940421e-06
+7.060129e-06
+3.2162723e-05
+0.9994572
+0.99973494
+6.019019e-06
+0.00015625419
+7.6220385e-06
+5.322418e-06
+6.7399155e-06
+6.019019e-06
+5.322418e-06
+0.00022004127
+7.6220385e-06
+3.923348e-05
+6.019019e-06
+7.905719e-06
+0.00014466306
+8.940421e-06
+5.322418e-06
+0.0007075034
+8.940421e-06
+6.019019e-06
+7.6220385e-06
+5.322418e-06
+7.905719e-06
+4.237742e-05
+6.243038e-06
+4.237742e-05
+0.0010494431
+8.940421e-06
+0.0002305175
+7.905719e-06
+0.9994147
+8.940421e-06
+0.9995196
+0.00025665603
+3.2162723e-05
+6.243038e-06
+0.00022004127
+7.6220385e-06
+0.00020587152
+0.00017226019
+3.282719e-05
+0.00014466306
+6.019019e-06
+0.9990878
+0.0001594819
+6.7399155e-06
+0.00014466306
+0.9993678
+3.6372072e-05
+7.060129e-06
+7.060129e-06
+3.2162723e-05
+3.2162723e-05
+0.00023281
+6.7399155e-06
+7.6220385e-06
+4.792357e-05
+6.7399155e-06
+5.322418e-06
+0.00022695896
+0.00022695896
+0.99948114
+8.940421e-06
+7.060129e-06
+0.0001594819
+7.905719e-06
+0.9994147
+4.237742e-05
+3.2162723e-05
+7.6220385e-06
+0.00017670133
+7.060129e-06
+6.019019e-06
+6.019019e-06
+6.7399155e-06
+0.99973494
+6.243038e-06
+0.00017226019
+0.00020587152
+6.019019e-06
+4.671893e-05
+3.2162723e-05
+6.243038e-06
+0.00020587152
+4.792357e-05
+6.7399155e-06
+6.7399155e-06
+5.322418e-06
+0.00015625419
+0.00020587152
+2.9776578e-05
+4.237742e-05
+0.9993381
+3.7123496e-05
+0.0001594819
+0.00019060042
+0.00020587152
+0.00023761873
+0.99973494
+0.00017226019
+3.5457782e-05
+0.00020587152
+0.00017670133
+3.2162723e-05
+3.2162723e-05
+3.6372072e-05
+4.237742e-05
+0.00017226019
+0.00015625419
+0.00022695896
+0.00023281
+0.00021012398
+4.792357e-05
+4.237742e-05
+0.00019060042
+4.891363e-05
+3.5457782e-05
+0.00023281
+4.671893e-05
+0.00017670133
+0.00014466306
+0.00017226019
+0.00020587152
+0.00020587152
+0.00017226019
+6.7399155e-06
+3.2162723e-05
+3.5457782e-05
+3.923348e-05
+4.325291e-05
+4.237742e-05
+0.99824166
+0.00017226019
+3.2162723e-05
+0.00017226019
+2.9776578e-05
+0.00022695896
+4.671893e-05
+0.00017226019
+0.00022695896
+4.325291e-05
+0.00019480144
+3.5457782e-05
+3.5457782e-05
+4.325291e-05
+0.99901485
+3.5457782e-05
+0.00020587152
+3.923348e-05
+5.322418e-06
+4.792357e-05
+0.9993381
+0.00017670133
+0.00020587152
+0.00023761873
+3.282719e-05
+0.00020587152
+0.00016359365
+4.671893e-05
+3.2162723e-05
+0.00020587152
+3.6372072e-05
+5.322418e-06
+0.00019060042
+0.00020587152
+4.671893e-05
+0.99955446
+6.7399155e-06
+0.00020587152
+0.9990164
+0.00015625419
+6.7399155e-06
+0.00019060042
+0.00019060042
+0.0001594819
+0.9987974
+0.00020587152
+4.671893e-05
+4.671893e-05
+0.99995637
+0.00020587152
+0.00015625419
+0.00017226019
+2.9776578e-05
+3.923348e-05
+0.00017226019
+0.0001594819
+0.00017226019
+0.00023281
+3.923348e-05
+3.282719e-05
+0.00022695896
+4.671893e-05
+0.00017226019
+0.00017670133
+4.792357e-05
+0.00015625419
+0.00018035136
+4.325291e-05
+3.5457782e-05
+3.2162723e-05
+0.00017226019
+0.00016359365
+0.00018035136
+0.00015625419
+0.00022695896
+0.00017226019
+3.2162723e-05
+4.792357e-05
+0.00019060042
+3.5457782e-05
+0.00022695896
+2.9776578e-05
+0.00015625419
+0.00020587152
+3.6372072e-05
+0.00020587152
+4.792357e-05
+3.5457782e-05
+4.4368186e-05
+6.019019e-06
+4.325291e-05
+4.792357e-05
+0.0001594819
+0.00020587152
+0.00015625419
+3.3673645e-05
+4.671893e-05
+0.00022695896
+3.2162723e-05
+0.00017226019
+7.905719e-06
+3.5457782e-05
+0.9998155
+3.5457782e-05
+0.00017226019
+0.00015625419
+4.792357e-05
+8.940421e-06
+4.4368186e-05
+0.00017670133
+0.00015625419
+0.00020587152
+3.5457782e-05
+0.00021012398
+4.792357e-05
+3.2162723e-05
+4.671893e-05
+4.237742e-05
+4.671893e-05
+0.9979381
+0.00023281
+0.00025665603
+4.237742e-05
+4.671893e-05
+0.00021012398
+3.2162723e-05
+4.671893e-05
+3.5457782e-05
+4.671893e-05
+3.5457782e-05
+3.2162723e-05
+4.671893e-05
+0.00022695896
+3.5457782e-05
+3.6372072e-05
+0.00020587152
+0.00021012398
+0.9999701
+4.009836e-05
+0.00017670133
+5.2833246e-05
+0.00016359365
+0.00021554108
+0.00021554108
+3.7123496e-05
+0.9979381
+4.792357e-05
+4.009836e-05
+0.9996495
+0.00019480144
+0.9999324
+0.9999671
+5.2833246e-05
+0.9999671
+0.9999671
+0.9999013
+0.00017670133
+0.99897456
+0.00023281
+4.891363e-05
+5.2833246e-05
+0.9998155
+0.9996221
+0.00022695896
+0.00016359365
+5.2833246e-05
+5.2833246e-05
+0.9996495
+0.00017670133
+4.792357e-05
+4.009836e-05
+3.6372072e-05
+0.9999671
+0.00017226019
+0.00025665603
+0.9998288
+4.009836e-05
+0.9999255
+3.7123496e-05
+0.00023761873
+4.891363e-05
+0.00015625419
+0.9999255
+0.00019060042
+0.9979381
+0.00019480144
+0.9999671
+3.3673645e-05
+0.9999671
+4.671893e-05
+0.00019480144
+0.99995637
+5.2833246e-05
+0.00023761873
+4.237742e-05
+5.2833246e-05
+3.7123496e-05
+0.00023281
+0.9998155
+0.00018035136
+0.9987974
+0.00023761873
+0.00020587152
+0.9998155
+3.6372072e-05
+0.9998288
+5.2833246e-05
+4.325291e-05
+4.009836e-05
+5.2833246e-05
+0.99824166
+4.009836e-05
+4.891363e-05
+0.99994016
+0.9979381
+0.9979381
+0.00015625419
+5.2833246e-05
+0.9999255
+0.9979381
+4.792357e-05
+0.99897456
+0.00020587152
+5.2833246e-05
+0.9999671
+0.00022695896
+0.00025665603
+0.9987974
+5.2833246e-05
+4.792357e-05
+4.009836e-05
+4.891363e-05
+0.9996221
+0.00025665603
+5.2833246e-05
+0.00025665603
+0.99897456
+5.2833246e-05
+0.99897456
+0.00023281
+0.9996495
+0.00025665603
+0.00023281
+0.9999671
+0.00019480144
+0.9999255
+0.00017670133
+0.00023281
+0.00018035136
+4.237742e-05
+0.00025665603
+4.891363e-05
+0.00018035136
+5.2833246e-05
+0.9999671
+5.2833246e-05
+0.9999671
+0.00019480144
+4.009836e-05
+0.9999255
+0.00025665603
+0.9987974
+0.00025665603
+0.00018035136
+0.00017670133
+3.7123496e-05
+0.9996495
+4.009836e-05
+0.00021554108
+0.00019060042
+0.99995637
+0.9999709
+0.00019480144
+3.7123496e-05
+4.009836e-05
+3.5457782e-05
+0.9999709
+0.00019480144
+0.00019480144
+0.9999671
+0.9996221
+0.00023281
+0.00017670133
+0.00023281
+3.7123496e-05
+4.237742e-05
+4.009836e-05
+0.00018035136
+0.99995637
+0.00019480144
+0.00017226019
+4.009836e-05
+3.7123496e-05
+3.7123496e-05
+5.2833246e-05
+0.00025665603
+4.792357e-05
+0.9996221
+0.9999255
+0.99897456
+0.00021554108
+3.5457782e-05
+5.2833246e-05
+4.009836e-05
+0.00023281
+3.6372072e-05
+5.2833246e-05
+4.891363e-05
+3.2162723e-05
+3.5457782e-05
+0.99995637
+0.99995637
+0.9996221
+0.99897456
+5.2833246e-05
+0.9998288
+4.009836e-05
+0.99995637
+0.00021554108
+0.99994016
+0.9999105
+5.2833246e-05
+3.923348e-05
+0.99996495
+0.00023281
+0.9999701
+0.9999671
+0.00019480144
+0.9999341
+0.9999341
+0.9987974
+0.9999709
+0.9999255
+0.00016359365
+0.9998617
+0.9999701
+0.9999341
+0.9999701
+0.9999709
+0.9999701
+0.9999324
+0.9979381
+0.9999709
+0.9999324
+0.9999671
+0.9999013
+4.009836e-05
+0.9998288
+0.9979381
+0.9999709
+0.00025665603
+0.99824166
+3.6372072e-05
+5.2833246e-05
+0.9999341
+0.9999701
+0.9999709
+0.9999709
+0.00015625419
+0.99995637
+0.9999614
+3.6372072e-05
+0.00019480144
+0.9999255
+0.9999709
+0.9999709
+0.9999701
+0.99994016
+0.99997354
+0.00023761873
+0.99995637
+0.99996495
+0.9999324
+0.00017670133
+0.00019480144
+0.00017670133
+0.009167032
+0.9999341
+5.2833246e-05
+0.9999126
+4.009836e-05
+0.9999604
+0.9999341
+0.9999341
+0.9999126
+0.9999709
+0.9999341
+0.9999126
+0.00019480144
+0.9999671
+0.9999671
+0.9999324
+0.9999126
+0.9999709
+0.9999604
+0.9999341
+0.99996495
+0.99994016
+0.9999255
+0.9999604
+0.9999341
+0.9999255
+0.9999341
+0.99997354
+0.9999701
+0.9999324
+0.9999207
+0.99997354
+0.99994016
+0.9999126
+0.9999324
+0.9999709
+0.9999207
+0.99994016
+0.00037019775
+0.9999207
+0.99996495
+0.99997354
+0.9999671
+0.9999207
+0.99996495
+0.0013293574
+0.99994016
+0.9999324
+0.99996495
+0.9999604
+0.9999105
+0.9999701
+0.9999324
+0.9999701
+0.9999341
+0.9999324
+0.99997354
+0.9999126
+0.99997354
+0.9999207
+0.9999207
+0.9999341
+0.99995637
+0.9999709
+0.9999701
+0.99997354
+0.99997354
+0.99997354
+0.9999604
+0.9999709
+0.9999255
+0.9999341
+0.9999126
+0.9999105
+0.9999701
+0.0008625914
+0.99997354
+0.99997354
+0.99995637
+0.9999341
+0.9999255
+0.9999341
+0.9999324
+0.99994016
+0.9999013
+0.9999207
+0.9999709
+0.9999701
+0.9999324
+0.9992411
+0.99997354
+0.9999013
+0.9999324
+0.9999324
+0.9999701
+0.9999341
+0.9999324
+0.9999105
+0.9999701
+0.9999709
+0.9999207
+0.9999709
+0.9999126
+0.99994016
+0.99982506
+0.9999341
+0.00046149982
+0.9999639
+0.99996495
+0.99996495
+0.9996221
+0.9999255
+0.99997354
+0.99996495
+0.9999255
+0.9999105
+0.00078249123
+0.9999604
+0.99994016
+0.9999709
+0.00025665603
+0.99994016
+0.99489474
+0.9998155
+0.9999255
+0.9999324
+0.9999614
+0.9999701
+0.9999671
+0.9999324
+0.9999671
+0.00039583017
+0.9999614
+0.9999709
+0.9999614
+0.9999709
+0.9999701
+0.9999701
+0.9999341
+0.9999207
+0.9999341
+0.9999709
+0.00039583017
+0.9999207
+0.9999701
+0.99995637
+0.99982506
+0.9996221
+0.9999207
+0.9999671
+0.9999341
+0.9999126
+0.9999255
+0.9999324
+0.9999255
+0.99985075
+0.9999614
+0.0009514644
+0.99994016
+0.9999671
+0.9992411
+0.009360342
+0.9999105
+0.9999207
+0.99994016
+0.0004272755
+0.9998312
+0.99980205
+0.99982506
+0.99980205
+0.0007991346
+0.9999255
+0.0004272755
+0.9999324
+0.0006919931
+0.00078249123
+0.9999207
+0.9990392
+0.0012328194
+0.0007991346
+0.9990392
+0.9999614
+0.99997354
+0.9999299
+0.98975986
+0.00088093686
+0.00088093686
+0.99998844
+0.00043636683
+0.0006919931
+0.99996495
+0.009360342
+0.9971035
+0.99997354
+0.9999701
+0.99980205
+0.99489474
+0.99927515
+0.9943492
+0.9991503
+0.99927515
+0.9998617
+0.9999341
+0.9990822
+0.9991503
+0.00084514386
+0.0007474052
+0.9991503
+0.004096335
+0.9999671
+0.99527174
+0.9999639
+0.9990392
+0.9997862
+0.99996495
+0.99051267
+0.013955284
+0.008114705
+0.9890587
+0.00076283637
+0.00093165156
+0.008114705
+0.00039583017
+0.99994016
+0.99527174
+0.00078249123
+0.99918026
+0.9999832
+0.99998736
+0.00040811044
+0.99927515
+0.99932885
+0.99997354
+0.9999639
+0.00047131904
+0.9999701
+0.9998312
+0.00086311874
+0.9991503
+0.99051243
+0.98975986
+0.9990392
+0.9992411
+0.99980205
+0.9998617
+0.001503084
+0.0047280774
+0.999936
+0.99997354
+0.0008239167
+0.98955053
+0.99980205
+0.00040811044
+0.9999832
+0.9990392
+0.0006919931
+0.99998736
+0.9999832
+0.99998736
+0.008151155
+0.98955053
+0.9999341
+0.9999013
+0.99998736
+0.9999639
+0.99997354
+0.99980205
+0.9998617
+0.0009514644
+0.9998617
+0.99997354
+0.99998736
+0.99918026
+0.00040811044
+0.99982506
+0.9998437
+0.9943492
+0.9991503
+0.00046149982
+0.9990392
+0.009360342
+0.016082935
+0.99998736
+0.9999299
+0.9998312
+0.00093165156
+0.0003778439
+0.9991503
+0.9999639
+0.9991503
+0.009167032
+0.0007474052
+0.9990822
+0.0007991346
+0.99918026
+0.99478984
+0.98955053
+0.99982506
+0.001503084
+0.99998736
+0.0011414601
+0.9967257
+0.99997354
+0.99998736
+0.99998736
+0.99997354
+0.9998617
+0.99051243
+0.9999832
+0.0013293574
+0.0011414601
+0.9999207
+0.0013939476
+0.00039583017
+0.98955053
+0.99478984
+0.99985075
+0.9991503
+0.99998736
+0.98955053
+0.9992411
+0.00034274196
+0.99994016
+0.999811
+0.99478984
+0.99437463
+0.99998844
+0.9998312
+0.00093165156
+0.98975986
+0.001503084
+0.99997354
+0.9999324
+0.99998736
+0.9999614
+0.9990392
+0.0013293574
+0.00086311874
+0.99996495
+0.9999207
+0.9991503
+0.9999126
+0.99527174
+0.0013293574
+0.99994016
+0.999936
+0.99996805
+0.9999708
+0.9999877
+0.9999832
+0.99996364
+0.9999888
+0.99998605
+0.99998367
+0.9999877
+0.99996483
+0.9999888
+0.9999678
+0.9999852
+0.999967
+0.9999434
+0.9999678
+0.99996483
+0.99998605
+0.9999708
+0.99996483
+0.9999639
+0.9999888
+0.99998736
+0.99998724
+0.9999678
+0.99996364
+0.9999815
+0.99996483
+0.999938
+0.99996805
+0.9999851
+0.9999331
+0.99992275
+0.999938
+0.9999602
+0.99998605
+0.99998975
+0.9999678
+0.99996483
+0.9999877
+0.9999639
+0.9999888
+0.99998605
+0.99998975
+0.99998605
+0.9999685
+0.9999815
+0.9999864
+0.9999864
+0.9999888
+0.9999888
+0.99996483
+0.99998605
+0.99992275
+0.99998736
+0.99998724
+0.9999864
+0.999967
+0.99998605
+0.99998903
+0.99998724
+0.99996364
+0.9999708
+0.9999888
+0.9999708
+0.999984
+0.9999708
+0.9999602
+0.99996805
+0.99998605
+0.99998844
+0.9999888
+0.9999877
+0.99998605
+0.99998724
+0.9999851
+0.99993765
+0.9999851
+0.99998903
+0.999967
+6.9338246e-05
+0.9999831
+0.9999877
+0.99996483
+0.99996483
+1.618272e-05
+0.9999815
+0.9999639
+0.9999708
+0.999967
+0.99998474
+0.9999877
+0.99996805
+0.9999434
+0.99998724
+0.9999602
+0.9999888
+0.9999708
+0.9999851
+0.99996805
+0.99998367
+0.9999877
+0.99998367
+0.9999434
+0.9999708
+0.99996483
+0.99998605
+0.99992275
+0.9999434
+0.9999685
+5.9588056e-05
+0.999938
+0.9999815
+0.999967
+0.9999678
+0.99996483
+0.99996877
+0.9999852
+0.9999602
+0.99998903
+0.99992275
+0.9999714
+0.99992275
+0.99998546
+0.9999317
+0.99996483
+0.9999317
+0.99998367
+0.9999602
+0.9999888
+0.9999888
+0.9999888
+0.99996483
+0.99998724
+0.00013585434
+0.9999317
+0.9999299
+0.9999678
+0.999938
+0.9999831
+0.9999685
+0.9999317
+0.9999864
+0.99998605
+0.99998367
+0.9999708
+0.9999602
+0.99998605
+0.9999851
+0.9999602
+0.9999877
+0.99998736
+0.99998736
+0.99998903
+0.99998367
+0.0001542339
+0.9999678
+0.99996364
+0.9999678
+0.99996483
+3.2848795e-05
+0.9999815
+0.9999602
+0.9999888
+0.99999
+0.9999852
+0.9999639
+0.9999877
+0.99996805
+0.9999602
+0.9999888
+0.9999602
+0.9999888
+0.99998546
+0.00017812874
+0.9999888
+0.99998975
+0.99996364
+0.9999602
+0.9999815
+0.9999888
+0.9999888
+0.99998975
+0.9999393
+0.9999877
+0.99996483
+0.9999602
+5.9588056e-05
+0.00083521125
+3.2848795e-05
+0.99998367
+0.99996555
+0.00035159392
+0.9999852
+0.99998903
+0.9999602
+0.999984
+0.99998796
+0.9999877
+0.9999678
+0.0015203392
+0.99996555
+0.9999602
+0.99998796
+0.99998844
+0.00017812874
+0.99998903
+0.99998903
+0.99998796
+0.99994457
+0.9999678
+3.793864e-05
+3.0411753e-05
+0.99996805
+0.004148995
+0.99998903
+0.9999815
+5.9588056e-05
+5.1143885e-05
+0.9999852
+0.99998796
+3.689701e-05
+0.99999
+0.00013585434
+0.0007576517
+0.99998534
+0.99996555
+0.9999393
+0.99993896
+0.9999639
+0.00032551744
+0.99998903
+0.99996555
+0.99996555
+0.99996877
+0.99996877
+0.0001542339
+0.99998903
+0.99994457
+0.99999
+0.99998367
+0.9999815
+0.9999393
+0.0001542339
+0.9999331
+0.9999602
+6.9338246e-05
+0.99996805
+0.99999
+3.689701e-05
+0.9999888
+1.618272e-05
+0.99998903
+0.00035159392
+0.99998736
+0.9999851
+0.99998796
+1.8690242e-05
+0.99998903
+0.9999685
+0.99998903
+0.00016491521
+0.9988481
+1.8690242e-05
+1.8300698e-05
+0.99996483
+0.99996555
+0.00013585434
+0.99998903
+0.99996555
+0.999984
+3.0411753e-05
+0.99993765
+0.99998796
+3.793864e-05
+0.99993896
+0.99998796
+0.99996877
+0.99998796
+0.99998796
+0.0001542339
+3.2848795e-05
+0.99996877
+0.999984
+7.4894415e-05
+0.99992275
+0.00017812874
+0.99996805
+0.9999888
+0.0007576517
+0.99996555
+1.8690242e-05
+0.9985933
+0.99996877
+3.793864e-05
+0.00013585434
+6.8820795e-05
+0.99996877
+0.99996877
+0.00017812874
+0.99998677
+1.8300698e-05
+0.99998546
+0.99998903
+0.99998677
+0.9999331
+0.9999331
+0.9999331
+0.9988721
+0.9917278
+0.9999393
+0.9999864
+0.99996805
+0.99998534
+0.0001542339
+0.9999393
+0.99998903
+0.99996877
+0.00035159392
+0.99998546
+0.9999815
+1.618272e-05
+0.99996555
+5.223249e-05
+0.00014279263
+0.99998903
+0.99998796
+0.0023245455
+0.99996555
+0.99998903
+0.9999331
+3.793864e-05
+0.00035159392
+0.99996555
+3.793864e-05
+0.9999331
+0.9912554
+0.00017812874
+0.9999331
+0.00013585434
+0.99996483
+0.99998796
+0.99998796
+0.99996877
+6.8820795e-05
+0.9999714
+1.8300698e-05
+0.00014279263
+0.9999888
+0.99996877
+0.9999685
+0.99998724
+3.5123998e-05
+6.9338246e-05
+3.689701e-05
+0.004572132
+0.99993896
+0.9999714
+0.9999393
+0.99998796
+0.0036705781
+0.9912554
+0.99998903
+0.99996555
+0.004045122
+1.8690242e-05
+0.00032551744
+0.999984
+0.9999685
+0.99998546
+7.4894415e-05
+0.00032551744
+0.00017812874
+3.793864e-05
+0.99999
+0.99998796
+0.00010311027
+0.9999602
+0.99998903
+0.99998975
+3.5123998e-05
+0.99996555
+1.8300698e-05
+3.2848795e-05
+0.99878174
+0.00013585434
+0.00013585434
+0.00016491521
+1.8300698e-05
+0.99996877
+0.00013585434
+0.99996877
+0.0001542339
+0.99996555
+1.618272e-05
+0.9999685
+0.0001542339
+0.99998605
+0.99998534
+0.999984
+0.0016758427
+0.99998546
+0.99996364
+0.99998534
+1.8690242e-05
+0.99998546
+0.9999685
+0.0009444215
+0.9999299
+0.004045122
+6.9338246e-05
+1.8690242e-05
+0.00035159392
+0.99996877
+5.9588056e-05
+6.8820795e-05
+0.99998534
+3.2848795e-05
+0.0017189811
+1.8690242e-05
+0.99999
+0.9999678
+0.99993896
+0.00010311027
+0.99996555
+0.9999888
+3.2848795e-05
+0.00083521125
+0.9999685
+0.00013585434
+0.999984
+0.99998903
+6.8820795e-05
+6.8820795e-05
+0.00032551744
+0.9999714
+0.00035159392
+0.00016491521
+0.00016491521
+3.793864e-05
+0.99998546
+1.8690242e-05
+0.99996877
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index aa8b855..455070a 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -880,7 +880,7 @@
<exclude>src/main/java/org/apache/ignite/examples/streaming/wordcount/*.txt</exclude><!--books examples-->
<exclude>examples/src/main/java/org/apache/ignite/examples/streaming/wordcount/*.txt</exclude><!--books examples-->
<exclude>**/resources/datasets/**/*</exclude><!--Datasets in ml module-->
- <exclude>**/*.pb</exclude><!--Pre-trained TF model-->
+ <exclude>**/resources/models/**/*</exclude><!--Pre-trained ml models-->
<exclude>src/main/java/org/jetbrains/annotations/*.java</exclude><!--copyright-->
<exclude>dev-tools/IGNITE-*.patch</exclude>
<exclude>dev-tools/.gradle/**/*</exclude>
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 54756bb..2bcdf16 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,6 +94,7 @@
<module>modules/rocketmq</module>
<module>modules/sqlline</module>
<module>modules/ml</module>
+ <module>modules/ml/xgboost-model-parser</module>
<module>modules/tensorflow</module>
</modules>
[31/52] [abbrv] ignite git commit: IGNITE-10709 New inspections
introduced in 2018+ IntelliJ IDEA version were disabled on TC configuration,
unused Suppress removal. - Fixes #5680.
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
index d4ec78f..3adc282 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
@@ -208,7 +208,6 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void onKernalStart(boolean active) throws IgniteCheckedException {
if (ctx.isDaemon() || !active)
return;
@@ -799,7 +798,6 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite
/**
* @return Future.
*/
- @SuppressWarnings("unchecked")
public IgniteInternalFuture<?> cancelAll() {
Iterator<Cache.Entry<Object, Object>> it = serviceEntries(ServiceDeploymentPredicate.INSTANCE);
@@ -999,7 +997,6 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite
* @param <T> Service type.
* @return Service by specified service name.
*/
- @SuppressWarnings("unchecked")
public <T> T service(String name) {
ctx.security().authorize(name, SecurityPermission.SERVICE_INVOKE, null);
@@ -1064,7 +1061,6 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite
* @return The proxy of a service by its name and class.
* @throws IgniteException If failed to create proxy.
*/
- @SuppressWarnings("unchecked")
public <T> T serviceProxy(ClusterGroup prj, String name, Class<? super T> svcItf, boolean sticky, long timeout)
throws IgniteException {
ctx.security().authorize(name, SecurityPermission.SERVICE_INVOKE, null);
@@ -1106,7 +1102,6 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite
* @param <T> Service type.
* @return Services by specified service name.
*/
- @SuppressWarnings("unchecked")
public <T> Collection<T> services(String name) {
ctx.security().authorize(name, SecurityPermission.SERVICE_INVOKE, null);
@@ -1570,7 +1565,6 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite
/**
* Service deployment listener.
*/
- @SuppressWarnings("unchecked")
private class ServiceEntriesListener implements CacheEntryUpdatedListener<Object, Object> {
/** {@inheritDoc} */
@Override public void onUpdated(final Iterable<CacheEntryEvent<?, ?>> deps) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
index eb2d509..4d98187 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
@@ -104,7 +104,6 @@ public class GridServiceProxy<T> implements Serializable {
* @param timeout Service availability wait timeout. Cannot be negative.
* @param ctx Context.
*/
- @SuppressWarnings("unchecked")
public GridServiceProxy(ClusterGroup prj,
String name,
Class<? super T> svc,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceContextImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceContextImpl.java
index 490b598..f624334 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceContextImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceContextImpl.java
@@ -106,7 +106,6 @@ public class ServiceContextImpl implements ServiceContext {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <K> K affinityKey() {
return (K)affKey;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceDescriptorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceDescriptorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceDescriptorImpl.java
index 9ec3eb0..4db44cb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceDescriptorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceDescriptorImpl.java
@@ -88,7 +88,6 @@ public class ServiceDescriptorImpl implements ServiceDescriptor {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <K> K affinityKey() {
return (K)dep.configuration().getAffinityKey();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
index e24e644..83e156a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
@@ -548,7 +548,6 @@ public class GridTaskProcessor extends GridProcessorAdapter implements IgniteCha
* @param execName Name of the custom executor.
* @return Task future.
*/
- @SuppressWarnings("unchecked")
private <T, R> ComputeTaskInternalFuture<R> startTask(
@Nullable String taskName,
@Nullable Class<?> taskCls,
@@ -1134,7 +1133,6 @@ public class GridTaskProcessor extends GridProcessorAdapter implements IgniteCha
* @param nodeId Node ID.
* @param msg Task session request.
*/
- @SuppressWarnings({"unchecked"})
private void processTaskSessionRequest(UUID nodeId, GridTaskSessionRequest msg) {
assert nodeId != null;
assert msg != null;
@@ -1244,7 +1242,6 @@ public class GridTaskProcessor extends GridProcessorAdapter implements IgniteCha
/**
* Listener for individual task events.
*/
- @SuppressWarnings({"deprecation"})
private class TaskEventListener implements GridTaskEventListener {
/** */
private final GridMessageListener msgLsnr = new JobMessageListener(false);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
index 16461c9..3eef2b6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
@@ -357,7 +357,6 @@ class GridTaskWorker<T, R> extends GridWorker implements GridTimeoutObject {
* @param key Thread-local context key.
* @return Thread-local context value, if any.
*/
- @SuppressWarnings({"unchecked"})
@Nullable private <V> V getThreadContext(GridTaskThreadContextKey key) {
return thCtx == null ? null : (V)thCtx.get(key);
}
@@ -469,7 +468,6 @@ class GridTaskWorker<T, R> extends GridWorker implements GridTimeoutObject {
/**
* Maps this task's jobs to nodes and sends them out.
*/
- @SuppressWarnings({"unchecked"})
@Override protected void body() {
evtLsnr.onTaskStarted(this);
@@ -1647,7 +1645,6 @@ class GridTaskWorker<T, R> extends GridWorker implements GridTimeoutObject {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public boolean equals(Object obj) {
if (this == obj)
return true;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/GridArrays.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridArrays.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridArrays.java
index 75d73ee..47680fe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridArrays.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridArrays.java
@@ -58,7 +58,6 @@ public final class GridArrays {
* @param idx Index to remove.
* @return Smaller array.
*/
- @SuppressWarnings("unchecked")
public static <T> T[] remove(T[] arr, int idx) {
int len = arr.length;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/GridBoundedLinkedHashMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridBoundedLinkedHashMap.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridBoundedLinkedHashMap.java
index ee6e9f5..d3f5c33 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridBoundedLinkedHashMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridBoundedLinkedHashMap.java
@@ -119,7 +119,6 @@ public class GridBoundedLinkedHashMap<K, V> extends LinkedHashMap<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public Object clone() {
GridBoundedLinkedHashMap<K, V> m = (GridBoundedLinkedHashMap<K, V>)super.clone();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/GridBoundedLinkedHashSet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridBoundedLinkedHashSet.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridBoundedLinkedHashSet.java
index 7880190..9bae9eb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridBoundedLinkedHashSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridBoundedLinkedHashSet.java
@@ -199,7 +199,6 @@ public class GridBoundedLinkedHashSet<E> extends GridSerializableSet<E> implemen
* @return a shallow copy of this set.
* @throws CloneNotSupportedException Thrown if cloning is not supported.
*/
- @SuppressWarnings("unchecked")
@Override public Object clone() throws CloneNotSupportedException {
GridBoundedLinkedHashSet<E> newSet = (GridBoundedLinkedHashSet<E>)super.clone();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/GridConcurrentSkipListSet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridConcurrentSkipListSet.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridConcurrentSkipListSet.java
index 688e164..dbb397b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridConcurrentSkipListSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridConcurrentSkipListSet.java
@@ -108,7 +108,7 @@ public class GridConcurrentSkipListSet<E> extends GridSerializableSet<E> impleme
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked", "CloneCallsConstructors"})
+ @SuppressWarnings({"CloneCallsConstructors"})
@Override public GridConcurrentSkipListSet<E> clone() {
try {
GridConcurrentSkipListSet<E> clone = (GridConcurrentSkipListSet<E>)super.clone();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanMap.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanMap.java
index 5452a25..eaf54e4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanMap.java
@@ -256,7 +256,7 @@ public class GridLeanMap<K, V> extends GridSerializableMap<K, V> implements Clon
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked", "CloneDoesntDeclareCloneNotSupportedException"})
+ @SuppressWarnings({"CloneDoesntDeclareCloneNotSupportedException"})
@Override protected Object clone() {
try {
GridLeanMap<K, V> clone = (GridLeanMap<K, V>)super.clone();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanSet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanSet.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanSet.java
index 125e61f..5be1e67 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanSet.java
@@ -63,7 +63,6 @@ public class GridLeanSet<E> extends GridSetWrapper<E> implements Cloneable {
}
/** {@inheritDoc} */
- @SuppressWarnings( {"unchecked"})
@Override public Object clone() {
try {
GridLeanSet<E> clone = (GridLeanSet<E>)super.clone();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/GridListSet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridListSet.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridListSet.java
index 6f49c1b..9ceeda3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridListSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridListSet.java
@@ -242,7 +242,6 @@ public class GridListSet<V> extends GridSerializableSet<V> implements Cloneable
}
/** {@inheritDoc} */
- @SuppressWarnings( {"unchecked"})
@Override public boolean remove(Object val) {
A.notNull(val, "val");
@@ -339,7 +338,6 @@ public class GridListSet<V> extends GridSerializableSet<V> implements Cloneable
}
/** {@inheritDoc} */
- @SuppressWarnings( {"unchecked"})
@Override public boolean contains(Object val) {
A.notNull(val, "val");
@@ -393,7 +391,6 @@ public class GridListSet<V> extends GridSerializableSet<V> implements Cloneable
* @return Clone of this set.
* @throws CloneNotSupportedException
*/
- @SuppressWarnings( {"unchecked"})
@Override protected Object clone() throws CloneNotSupportedException {
GridListSet<V> clone = (GridListSet<V>)super.clone();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/GridSetWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridSetWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridSetWrapper.java
index fb5a793..760b794 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridSetWrapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridSetWrapper.java
@@ -43,7 +43,6 @@ public class GridSetWrapper<E> extends GridSerializableSet<E> {
*
* @param map Map to be used for set implementation.
*/
- @SuppressWarnings({"unchecked"})
public GridSetWrapper(Map<E, ?> map) {
A.notNull(map, "map");
@@ -77,7 +76,6 @@ public class GridSetWrapper<E> extends GridSerializableSet<E> {
*
* @return Wrapped map.
*/
- @SuppressWarnings({"unchecked"})
protected final <T extends Map<E, Object>> T map() {
return (T)map;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index 2f8eb1c..1d9a0ad 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -1179,7 +1179,6 @@ public abstract class IgniteUtils {
*
* @deprecated Calls to this method should never be committed to master.
*/
- @SuppressWarnings("deprecation")
@Deprecated
public static void dumpStack() {
dumpStack("Dumping stack.");
@@ -1637,7 +1636,6 @@ public abstract class IgniteUtils {
* @return New instance of the class or {@code null} if empty constructor could not be assigned.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public static <T> T forceNewInstance(Class<?> cls) throws IgniteCheckedException {
Constructor ctor = forceEmptyConstructor(cls);
@@ -5246,7 +5244,6 @@ public abstract class IgniteUtils {
* @throws IOException If de-serialization failed.
* @throws ClassNotFoundException If deserialized class could not be found.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public static <K, V> Map<K, V> readMap(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
@@ -5267,7 +5264,6 @@ public abstract class IgniteUtils {
* @throws IOException If de-serialization failed.
* @throws ClassNotFoundException If deserialized class could not be found.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public static <K, V> TreeMap<K, V> readTreeMap(
ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
@@ -5291,7 +5287,6 @@ public abstract class IgniteUtils {
* @throws IOException If de-serialization failed.
* @throws ClassNotFoundException If deserialized class could not be found.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public static <K, V> HashMap<K, V> readHashMap(ObjectInput in)
throws IOException, ClassNotFoundException {
int size = in.readInt();
@@ -5315,7 +5310,6 @@ public abstract class IgniteUtils {
* @throws IOException If de-serialization failed.
* @throws ClassNotFoundException If deserialized class could not be found.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public static <K, V> LinkedHashMap<K, V> readLinkedMap(ObjectInput in)
throws IOException, ClassNotFoundException {
int size = in.readInt();
@@ -5356,7 +5350,6 @@ public abstract class IgniteUtils {
* @throws IOException If de-serialization failed.
* @throws ClassNotFoundException If deserialized class could not be found.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public static <V> Map<Integer, V> readIntKeyMap(ObjectInput in) throws IOException,
ClassNotFoundException {
int size = in.readInt();
@@ -5398,7 +5391,6 @@ public abstract class IgniteUtils {
* @return Read map.
* @throws IOException If de-serialization failed.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public static Map<Integer, Integer> readIntKeyIntValueMap(DataInput in) throws IOException {
Map<Integer, Integer> map = null;
@@ -5421,7 +5413,6 @@ public abstract class IgniteUtils {
* @throws IOException If deserialization failed.
* @throws ClassNotFoundException If deserialized class could not be found.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public static <E> List<E> readList(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
@@ -7049,7 +7040,6 @@ public abstract class IgniteUtils {
* @param bLen Length of prefix {@code b}.
* @return Increasing array which is union of {@code a} and {@code b}.
*/
- @SuppressWarnings("IfMayBeConditional")
public static int[] unique(int[] a, int aLen, int[] b, int bLen) {
assert a != null;
assert b != null;
@@ -7092,7 +7082,6 @@ public abstract class IgniteUtils {
* @param bLen Length of prefix {@code b}.
* @return Increasing array which is difference between {@code a} and {@code b}.
*/
- @SuppressWarnings("IfMayBeConditional")
public static int[] difference(int[] a, int aLen, int[] b, int bLen) {
assert a != null;
assert b != null;
@@ -7358,7 +7347,6 @@ public abstract class IgniteUtils {
*
* @deprecated Calls to this method should never be committed to master.
*/
- @SuppressWarnings("deprecation")
@Deprecated
public static void dumpStack(Thread t) {
dumpStack(t, System.err);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/StripedCompositeReadWriteLock.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/StripedCompositeReadWriteLock.java b/modules/core/src/main/java/org/apache/ignite/internal/util/StripedCompositeReadWriteLock.java
index 42ec397..786d647 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/StripedCompositeReadWriteLock.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/StripedCompositeReadWriteLock.java
@@ -209,7 +209,6 @@ public class StripedCompositeReadWriteLock implements ReadWriteLock {
}
/** {@inheritDoc} */
- @SuppressWarnings("NullableProblems")
@Override public boolean tryLock(long time, TimeUnit unit) throws InterruptedException {
int i = 0;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
index 2299dcc..45465be 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
@@ -161,7 +161,6 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
*
* @return Collection of futures.
*/
- @SuppressWarnings("unchecked")
public final synchronized Collection<IgniteInternalFuture<T>> futures() {
if (futs == null)
return Collections.emptyList();
@@ -221,7 +220,6 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
*
* @param fut Future to add.
*/
- @SuppressWarnings("unchecked")
public final void add(IgniteInternalFuture<T> fut) {
assert fut != null;
@@ -339,7 +337,6 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
/**
* @return Futures size.
*/
- @SuppressWarnings("unchecked")
protected final int futuresCountNoLock() {
assert Thread.holdsLock(this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
index b149035..926def2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
@@ -75,7 +75,6 @@ public class GridFinishedFuture<T> implements IgniteInternalFuture<T> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public T result() {
return resFlag == RES ? (T)res : null;
}
@@ -96,7 +95,6 @@ public class GridFinishedFuture<T> implements IgniteInternalFuture<T> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public T get() throws IgniteCheckedException {
if (resFlag == ERR)
throw U.cast((Throwable)res);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
index 6eafe48..cddb19c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
@@ -124,7 +124,6 @@ public class GridFutureAdapter<R> implements IgniteInternalFuture<R> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public R result() {
Object state0 = state;
@@ -251,7 +250,6 @@ public class GridFutureAdapter<R> implements IgniteInternalFuture<R> {
* @return Result.
* @throws IgniteCheckedException If resolved to exception.
*/
- @SuppressWarnings("unchecked")
private R resolve() throws IgniteCheckedException {
if(state == CANCELLED)
throw new IgniteFutureCancelledCheckedException("Future was cancelled: " + this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
index a018628..6978501 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
@@ -198,7 +198,6 @@ public class IgniteFutureImpl<V> implements IgniteFuture<V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public boolean equals(Object obj) {
if (obj == null || !obj.getClass().equals(InternalFutureListener.class))
return false;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
index 1094de3..2d4d1cf 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
@@ -1007,7 +1007,6 @@ public class GridFunc {
* @param <T1> Type of the collection.
* @return Light-weight view on given collection with provided predicate.
*/
- @SuppressWarnings("RedundantTypeArguments")
@SafeVarargs
public static <T1, T2> Collection<T2> viewReadOnly(@Nullable final Collection<? extends T1> c,
final IgniteClosure<? super T1, T2> trans, @Nullable final IgnitePredicate<? super T1>... p) {
@@ -1291,7 +1290,6 @@ public class GridFunc {
* @return Factory closure that creates new {@link Set} instance every time
* its {@link org.apache.ignite.lang.IgniteOutClosure#apply()} method is called.
*/
- @SuppressWarnings("unchecked")
public static <T> IgniteCallable<Set<T>> newSet() {
return (IgniteCallable<Set<T>>)SET_FACTORY;
}
@@ -1305,7 +1303,6 @@ public class GridFunc {
* @return Factory closure that creates new {@link Map} instance every
* time its {@link org.apache.ignite.lang.IgniteOutClosure#apply()} method is called.
*/
- @SuppressWarnings("unchecked")
@Deprecated
public static <K, V> IgniteCallable<Map<K, V>> newMap() {
return (IgniteCallable<Map<K, V>>)MAP_FACTORY;
@@ -1320,7 +1317,6 @@ public class GridFunc {
* @return Factory closure that creates new {@link Map} instance every
* time its {@link org.apache.ignite.lang.IgniteOutClosure#apply()} method is called.
*/
- @SuppressWarnings("unchecked")
public static <K, V> IgniteCallable<ConcurrentMap<K, V>> newCMap() {
return (IgniteCallable<ConcurrentMap<K, V>>)CONCURRENT_MAP_FACTORY;
}
@@ -1332,7 +1328,6 @@ public class GridFunc {
* @return Factory closure that creates new {@link GridConcurrentHashSet} instance every
* time its {@link org.apache.ignite.lang.IgniteOutClosure#apply()} method is called.
*/
- @SuppressWarnings("unchecked")
public static <E> IgniteCallable<Set<E>> newCSet() {
return (IgniteCallable<Set<E>>)CONCURRENT_SET_FACTORY;
}
@@ -1413,7 +1408,6 @@ public class GridFunc {
* @param <T> Type of the free variable, i.e. the element the predicate is called on.
* @return Predicate that always returns {@code true}.
*/
- @SuppressWarnings( {"unchecked"})
public static <T> IgnitePredicate<T> alwaysTrue() {
return (IgnitePredicate<T>)ALWAYS_TRUE;
}
@@ -1425,7 +1419,6 @@ public class GridFunc {
* @param <T> Type of the free variable, i.e. the element the predicate is called on.
* @return Predicate that always returns {@code false}.
*/
- @SuppressWarnings( {"unchecked"})
public static <T> IgnitePredicate<T> alwaysFalse() {
return (IgnitePredicate<T>)ALWAYS_FALSE;
}
@@ -1720,7 +1713,6 @@ public class GridFunc {
* @param it Iterable to fetch.
* @return Modified target collection.
*/
- @SuppressWarnings("unchecked")
@Deprecated
public static <T, C extends Collection<T>> C addAll(C c, Iterable<? extends T> it) {
if (it == null)
@@ -1909,7 +1901,6 @@ public class GridFunc {
* @param <X> Type of the free variable for the closure and type of the array
* elements.
*/
- @SuppressWarnings("RedundantTypeArguments")
@Deprecated
public static <X> void forEach(X[] c, IgniteInClosure<? super X> f, @Nullable IgnitePredicate<? super X>... p) {
A.notNull(c, "c", f, "f");
@@ -3030,7 +3021,6 @@ public class GridFunc {
* @param <V> Value type.
* @return Closure that returns value for an entry.
*/
- @SuppressWarnings({"unchecked"})
public static <K, V> IgniteClosure<Cache.Entry<K, V>, V> cacheEntry2Get() {
return (IgniteClosure<Cache.Entry<K, V>, V>)CACHE_ENTRY_VAL_GET;
}
@@ -3042,7 +3032,6 @@ public class GridFunc {
* @param <V> Cache value type.
* @return Predicate which returns {@code true} if entry has peek value.
*/
- @SuppressWarnings({"unchecked"})
public static <K, V> IgnitePredicate<Cache.Entry<K, V>> cacheHasPeekValue() {
return (IgnitePredicate<Cache.Entry<K, V>>)CACHE_ENTRY_HAS_PEEK_VAL;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridMetadataAwareAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridMetadataAwareAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridMetadataAwareAdapter.java
index d00fd10..9ad05b57 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridMetadataAwareAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridMetadataAwareAdapter.java
@@ -107,7 +107,6 @@ public class GridMetadataAwareAdapter {
* @param <V> Type of the value.
* @return Metadata previously associated with given name, or {@code null} if there was none.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public <V> V addMeta(int key, V val) {
assert val != null;
@@ -132,7 +131,6 @@ public class GridMetadataAwareAdapter {
* @param <V> Type of the value.
* @return Metadata value or {@code null}.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public <V> V meta(int key) {
synchronized (this) {
return data != null && data.length > key ? (V)data[key] : null;
@@ -146,7 +144,6 @@ public class GridMetadataAwareAdapter {
* @param <V> Type of the value.
* @return Value of removed metadata or {@code null}.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public <V> V removeMeta(int key) {
synchronized (this) {
if (data == null || data.length <= key)
@@ -168,7 +165,6 @@ public class GridMetadataAwareAdapter {
* @param <V> Value type.
* @return {@code True} if value was removed, {@code false} otherwise.
*/
- @SuppressWarnings({"unchecked"})
public <V> boolean removeMeta(int key, V val) {
assert val != null;
@@ -243,7 +239,6 @@ public class GridMetadataAwareAdapter {
* @param <V> Type of the value.
* @return {@code null} if new value was put, or current value if put didn't happen.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public <V> V putMetaIfAbsent(int key, V val) {
assert val != null;
@@ -266,7 +261,6 @@ public class GridMetadataAwareAdapter {
* @param <V> Type of the value.
* @return The value of the metadata after execution of this method.
*/
- @SuppressWarnings({"unchecked"})
public <V> V addMetaIfAbsent(int key, V val) {
assert val != null;
@@ -291,7 +285,6 @@ public class GridMetadataAwareAdapter {
* @param <V> Type of the value.
* @return The value of the metadata after execution of this method.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public <V> V addMetaIfAbsent(int key, @Nullable Callable<V> c) {
assert c != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple.java
index 721d142..ae3ad01 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple.java
@@ -116,7 +116,6 @@ public class GridTuple<V> implements Iterable<V>, Cloneable, Externalizable {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
val = (V)in.readObject();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple3.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple3.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple3.java
index 76fbdb5..e610bf6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple3.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple3.java
@@ -189,7 +189,6 @@ public class GridTuple3<V1, V2, V3> implements Iterable<Object>, Externalizable,
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
val1 = (V1)in.readObject();
val2 = (V2)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple4.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple4.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple4.java
index 2889899..f5e9ec6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple4.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple4.java
@@ -218,7 +218,6 @@ public class GridTuple4<V1, V2, V3, V4> implements Iterable<Object>, Externaliza
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
val1 = (V1)in.readObject();
val2 = (V2)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple5.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple5.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple5.java
index e1748bf..45ecbe9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple5.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple5.java
@@ -247,7 +247,6 @@ public class GridTuple5<V1, V2, V3, V4, V5> implements Iterable<Object>, Externa
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
v1 = (V1)in.readObject();
v2 = (V2)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple6.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple6.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple6.java
index c7d7ee6..de4d1ed5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple6.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridTuple6.java
@@ -279,7 +279,6 @@ public class GridTuple6<V1, V2, V3, V4, V5, V6> implements Iterable<Object>, Ext
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
v1 = (V1)in.readObject();
v2 = (V2)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/PredicateMapView.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/PredicateMapView.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/PredicateMapView.java
index 01e6d8a..355e06a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/PredicateMapView.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/PredicateMapView.java
@@ -70,12 +70,10 @@ public class PredicateMapView<K, V> extends GridSerializableMap<K, V> {
return F.size(map.keySet(), preds);
}
- @SuppressWarnings({"unchecked"})
@Override public boolean remove(Object o) {
return F.isAll((Entry<K, V>)o, entryPred) && map.entrySet().remove(o);
}
- @SuppressWarnings({"unchecked"})
@Override public boolean contains(Object o) {
return F.isAll((Entry<K, V>)o, entryPred) && map.entrySet().contains(o);
}
@@ -92,7 +90,6 @@ public class PredicateMapView<K, V> extends GridSerializableMap<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Nullable @Override public V get(Object key) {
return GridFunc.isAll((K)key, preds) ? map.get(key) : null;
}
@@ -108,7 +105,6 @@ public class PredicateMapView<K, V> extends GridSerializableMap<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public boolean containsKey(Object key) {
return GridFunc.isAll((K)key, preds) && map.containsKey(key);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/TransformMapView.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/TransformMapView.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/TransformMapView.java
index a089f67..b35014f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/TransformMapView.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/TransformMapView.java
@@ -110,12 +110,10 @@ public class TransformMapView<K, V1, V> extends GridSerializableMap<K, V1> {
return hasPred ? F.size(map.keySet(), preds) : map.size();
}
- @SuppressWarnings({"unchecked"})
@Override public boolean remove(Object o) {
throw new UnsupportedOperationException("Remove is not support for readonly map view.");
}
- @SuppressWarnings({"unchecked"})
@Override public boolean contains(Object o) {
return F.isAll((Entry<K, V>)o, entryPred) && map.entrySet().contains(o);
}
@@ -132,7 +130,6 @@ public class TransformMapView<K, V1, V> extends GridSerializableMap<K, V1> {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Nullable @Override public V1 get(Object key) {
if (GridFunc.isAll((K)key, preds)) {
V v = map.get(key);
@@ -155,7 +152,6 @@ public class TransformMapView<K, V1, V> extends GridSerializableMap<K, V1> {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public boolean containsKey(Object key) {
return GridFunc.isAll((K)key, preds) && map.containsKey(key);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/TransformMapView2.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/TransformMapView2.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/TransformMapView2.java
index 523d4cc..9361e55 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/TransformMapView2.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/TransformMapView2.java
@@ -108,12 +108,10 @@ public class TransformMapView2<K, V, V1> extends GridSerializableMap<K, V1> {
return F.size(map.keySet(), preds);
}
- @SuppressWarnings({"unchecked"})
@Override public boolean remove(Object o) {
throw new UnsupportedOperationException("Remove is not support for readonly map view.");
}
- @SuppressWarnings({"unchecked"})
@Override public boolean contains(Object o) {
return F.isAll((Entry<K, V>)o, entryPred) && map.entrySet().contains(o);
}
@@ -130,7 +128,6 @@ public class TransformMapView2<K, V, V1> extends GridSerializableMap<K, V1> {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Nullable @Override public V1 get(Object key) {
if (GridFunc.isAll((K)key, preds)) {
V v = map.get(key);
@@ -153,7 +150,6 @@ public class TransformMapView2<K, V, V1> extends GridSerializableMap<K, V1> {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public boolean containsKey(Object key) {
return GridFunc.isAll((K)key, preds) && map.containsKey(key);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index b3c4fc1..7e3221e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -743,7 +743,6 @@ public class GridNioServer<T> {
/**
* @return Future.
*/
- @SuppressWarnings("ForLoopReplaceableByForEach")
public IgniteInternalFuture<String> dumpStats() {
String msg = "NIO server statistics [readerSesBalanceCnt=" + readerMoveCnt.get() +
", writerSesBalanceCnt=" + writerMoveCnt.get() + ']';
@@ -1335,7 +1334,6 @@ public class GridNioServer<T> {
* @param key Key that is ready to be written.
* @throws IOException If write failed.
*/
- @SuppressWarnings("ForLoopReplaceableByForEach")
private void processWriteSsl(SelectionKey key) throws IOException {
WritableByteChannel sockCh = (WritableByteChannel)key.channel();
@@ -1572,7 +1570,6 @@ public class GridNioServer<T> {
* @param key Key that is ready to be written.
* @throws IOException If write failed.
*/
- @SuppressWarnings("ForLoopReplaceableByForEach")
private void processWrite0(SelectionKey key) throws IOException {
WritableByteChannel sockCh = (WritableByteChannel)key.channel();
@@ -1711,7 +1708,6 @@ public class GridNioServer<T> {
* @param ses Session.
* @param msg Message.
*/
- @SuppressWarnings("unchecked")
private void onMessageWritten(GridSelectorNioSessionImpl ses, Message msg) {
if (lsnr != null)
lsnr.onMessageSent(ses, (T)msg);
@@ -2750,7 +2746,6 @@ public class GridNioServer<T> {
* @param key Key.
* @throws IOException If failed.
*/
- @SuppressWarnings("unchecked")
private void processConnect(SelectionKey key) throws IOException {
SocketChannel ch = (SocketChannel)key.channel();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/X.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/X.java b/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/X.java
index be69b24..59371e3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/X.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/X.java
@@ -291,7 +291,6 @@ public final class X {
* @param <T> Type of cloning object.
* @return Copy of a passed in object.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public static <T> T cloneObject(@Nullable T obj, boolean deep, boolean honorCloneable) {
if (obj == null)
return null;
@@ -310,7 +309,6 @@ public final class X {
* @param <T> Type of cloning object.
* @return Copy of a passed in object.
*/
- @SuppressWarnings({"unchecked"})
@Nullable private static <T> T shallowClone(@Nullable T obj) {
if (obj == null)
return null;
@@ -524,7 +522,6 @@ public final class X {
* @param cls Cause class to get cause (if {@code null}, {@code null} is returned).
* @return First causing exception of passed in class, {@code null} otherwise.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public static <T extends Throwable> T cause(@Nullable Throwable t, @Nullable Class<T> cls) {
if (t == null || cls == null)
return null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/lang/IgniteBiTuple.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/lang/IgniteBiTuple.java b/modules/core/src/main/java/org/apache/ignite/lang/IgniteBiTuple.java
index 2b79e37..2918199 100644
--- a/modules/core/src/main/java/org/apache/ignite/lang/IgniteBiTuple.java
+++ b/modules/core/src/main/java/org/apache/ignite/lang/IgniteBiTuple.java
@@ -272,7 +272,6 @@ public class IgniteBiTuple<V1, V2> implements Map<V1, V2>, Map.Entry<V1, V2>,
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
val1 = (V1)in.readObject();
val2 = (V2)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/logger/java/JavaLogger.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/logger/java/JavaLogger.java b/modules/core/src/main/java/org/apache/ignite/logger/java/JavaLogger.java
index cbbf849..ce70413 100644
--- a/modules/core/src/main/java/org/apache/ignite/logger/java/JavaLogger.java
+++ b/modules/core/src/main/java/org/apache/ignite/logger/java/JavaLogger.java
@@ -405,7 +405,6 @@ public class JavaLogger implements IgniteLogger, LoggerNodeIdAware {
* @param <T> Class type.
* @return First found handler of specified class type or {@code null} if that handler isn't configured.
*/
- @SuppressWarnings("unchecked")
private static <T> T findHandler(Logger log, Class<T> cls) {
while (log != null) {
for (Handler hnd : log.getHandlers()) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java b/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
index ae4033b..742925d 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
@@ -124,7 +124,6 @@ public class JdkMarshaller extends AbstractNodeNameAwareMarshaller {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override protected <T> T unmarshal0(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
assert in != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
index e094151..7cb153e 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
@@ -541,7 +541,6 @@ class ClientImpl extends TcpDiscoveryImpl {
* @throws IgniteSpiException If failed.
* @see TcpDiscoverySpi#joinTimeout
*/
- @SuppressWarnings("BusyWait")
@Nullable private T2<SocketStream, Boolean> joinTopology(
InetSocketAddress prevAddr,
long timeout,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
index 27df937..a16e440 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
@@ -2624,7 +2624,6 @@ class ServerImpl extends TcpDiscoveryImpl {
*/
private class RingMessageWorker extends MessageWorker<TcpDiscoveryAbstractMessage> {
/** Next node. */
- @SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized"})
private TcpDiscoveryNode next;
/** Pending messages. */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index c48fa11..bee7a84 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -1174,7 +1174,6 @@ public class TcpDiscoverySpi extends IgniteSpiAdapter implements IgniteDiscovery
* @return {@link LinkedHashSet} of internal and external addresses of provided node.
* Internal addresses placed before external addresses.
*/
- @SuppressWarnings("TypeMayBeWeakened")
LinkedHashSet<InetSocketAddress> getNodeAddresses(TcpDiscoveryNode node) {
LinkedHashSet<InetSocketAddress> res = new LinkedHashSet<>(node.socketAddresses());
@@ -1193,7 +1192,6 @@ public class TcpDiscoverySpi extends IgniteSpiAdapter implements IgniteDiscovery
* Internal addresses placed before external addresses.
* Internal addresses will be sorted with {@code inetAddressesComparator(sameHost)}.
*/
- @SuppressWarnings("TypeMayBeWeakened")
LinkedHashSet<InetSocketAddress> getNodeAddresses(TcpDiscoveryNode node, boolean sameHost) {
List<InetSocketAddress> addrs = U.arrayList(node.socketAddresses());
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java
index 763a678..0daf68f 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java
@@ -240,7 +240,6 @@ public class TcpDiscoveryNode extends GridMetadataAwareAdapter implements Ignite
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T attribute(String name) {
// Even though discovery SPI removes this attribute after authentication, keep this check for safety.
if (IgniteNodeAttributes.ATTR_SECURITY_CREDENTIALS.equals(name))
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/multicast/TcpDiscoveryMulticastIpFinder.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/multicast/TcpDiscoveryMulticastIpFinder.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/multicast/TcpDiscoveryMulticastIpFinder.java
index 6c47014..0473ab2 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/multicast/TcpDiscoveryMulticastIpFinder.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/multicast/TcpDiscoveryMulticastIpFinder.java
@@ -794,7 +794,6 @@ public class TcpDiscoveryMulticastIpFinder extends TcpDiscoveryVmIpFinder {
*/
private class AddressSender extends IgniteSpiThread {
/** */
- @SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
private MulticastSocket sock;
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/jsr166/ConcurrentLinkedHashMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/jsr166/ConcurrentLinkedHashMap.java b/modules/core/src/main/java/org/jsr166/ConcurrentLinkedHashMap.java
index 5c9b4ac..6287019 100644
--- a/modules/core/src/main/java/org/jsr166/ConcurrentLinkedHashMap.java
+++ b/modules/core/src/main/java/org/jsr166/ConcurrentLinkedHashMap.java
@@ -111,7 +111,6 @@ import static org.jsr166.ConcurrentLinkedHashMap.QueuePolicy.SINGLE_Q;
* @param <K> the type of keys maintained by this map
* @param <V> the type of mapped values
*/
-@SuppressWarnings("NullableProblems")
public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V> {
/*
* The basic strategy is to subdivide the table among Segments,
@@ -599,7 +598,6 @@ public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements
* @param newVal New value
* @return {@code true} If value was replaced.
*/
- @SuppressWarnings({"unchecked"})
boolean replace(K key, int hash, V oldVal, V newVal) {
writeLock().lock();
@@ -634,7 +632,6 @@ public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements
* @return {@code oldVal}, if value was replaced, non-null object if map
* contained some other value and {@code null} if there were no such key.
*/
- @SuppressWarnings({"unchecked"})
V replacex(K key, int hash, V oldVal, V newVal) {
writeLock().lock();
@@ -663,7 +660,6 @@ public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements
return replaced;
}
- @SuppressWarnings({"unchecked"})
V replace(K key, int hash, V newVal) {
writeLock().lock();
@@ -688,7 +684,6 @@ public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements
return oldVal;
}
- @SuppressWarnings({"unchecked"})
V put(K key, int hash, V val, boolean onlyIfAbsent) {
writeLock().lock();
@@ -810,7 +805,7 @@ public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements
/**
* This method is called under the segment lock.
*/
- @SuppressWarnings({"ForLoopReplaceableByForEach", "unchecked"})
+ @SuppressWarnings({"ForLoopReplaceableByForEach"})
void rehash() {
HashEntry<K, V>[] oldTbl = tbl;
int oldCap = oldTbl.length;
@@ -1093,7 +1088,6 @@ public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements
* negative or the load factor or concurLvl are
* non-positive.
*/
- @SuppressWarnings({"unchecked"})
public ConcurrentLinkedHashMap(int initCap, float loadFactor, int concurLvl) {
this(initCap, loadFactor, concurLvl, 0);
}
@@ -1477,7 +1471,6 @@ public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements
*
* @throws NullPointerException if the specified key is null
*/
- @SuppressWarnings("NullableProblems")
@Override public boolean remove(Object key, Object val) {
int hash = hash(key.hashCode());
@@ -1489,7 +1482,6 @@ public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements
*
* @throws NullPointerException if any of the arguments are null
*/
- @SuppressWarnings("NullableProblems")
@Override public boolean replace(K key, V oldVal, V newVal) {
if (oldVal == null || newVal == null)
throw new NullPointerException();
@@ -1534,7 +1526,6 @@ public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements
* or <tt>null</tt> if there was no mapping for the key
* @throws NullPointerException if the specified key or value is null
*/
- @SuppressWarnings("NullableProblems")
@Override public V replace(K key, V val) {
if (val == null)
throw new NullPointerException();
@@ -1941,7 +1932,6 @@ public class ConcurrentLinkedHashMap<K, V> extends AbstractMap<K, V> implements
* @param e Current next.
* @return {@code True} if advance succeeded.
*/
- @SuppressWarnings( {"unchecked"})
private boolean advanceInBucket(@Nullable HashEntry<K, V> e, boolean skipFirst) {
if (e == null)
return false;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/GridTestIoUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/GridTestIoUtils.java b/modules/core/src/test/java/org/apache/ignite/GridTestIoUtils.java
index 983afde..61d0aa0 100644
--- a/modules/core/src/test/java/org/apache/ignite/GridTestIoUtils.java
+++ b/modules/core/src/test/java/org/apache/ignite/GridTestIoUtils.java
@@ -81,7 +81,6 @@ public final class GridTestIoUtils {
* @throws IOException If deserialization failed.
* @throws ClassNotFoundException If deserialization failed.
*/
- @SuppressWarnings({"unchecked"})
public static <T extends Serializable> T deserializeJdk(byte[] bytes) throws IOException, ClassNotFoundException {
ObjectInputStream in = null;
@@ -105,7 +104,6 @@ public final class GridTestIoUtils {
* @throws IOException If deserialization failed.
* @throws ClassNotFoundException If deserialization failed.
*/
- @SuppressWarnings({"unchecked"})
public static <T> T deserializeJdk(byte[] bytes, final ClassLoader clsLdr)
throws IOException, ClassNotFoundException {
ObjectInputStream in = null;
@@ -131,7 +129,6 @@ public final class GridTestIoUtils {
* @return The same object, but passed through marshaller: obj->marshal->buf->unmarshal->copy.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
public static <T> T externalize(Externalizable obj, Marshaller marshaller) throws Exception {
assert marshaller != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/GridTestJobContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/GridTestJobContext.java b/modules/core/src/test/java/org/apache/ignite/GridTestJobContext.java
index 2ad9e61..8ccf0c1 100644
--- a/modules/core/src/test/java/org/apache/ignite/GridTestJobContext.java
+++ b/modules/core/src/test/java/org/apache/ignite/GridTestJobContext.java
@@ -61,7 +61,6 @@ public class GridTestJobContext implements ComputeJobContext {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> V getAttribute(K key) {
return (V)attrs.get(key);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/GridTestTaskSession.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/GridTestTaskSession.java b/modules/core/src/test/java/org/apache/ignite/GridTestTaskSession.java
index 618cdbb..3b5f48e 100644
--- a/modules/core/src/test/java/org/apache/ignite/GridTestTaskSession.java
+++ b/modules/core/src/test/java/org/apache/ignite/GridTestTaskSession.java
@@ -153,7 +153,6 @@ public class GridTestTaskSession implements ComputeTaskSession {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> V getAttribute(K key) {
return (V)attrs.get(key);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunctionSimpleBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunctionSimpleBenchmark.java b/modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunctionSimpleBenchmark.java
index 7dec6b2..abc6455 100644
--- a/modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunctionSimpleBenchmark.java
+++ b/modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunctionSimpleBenchmark.java
@@ -1042,7 +1042,6 @@ public class RendezvousAffinityFunctionSimpleBenchmark extends GridCommonAbstrac
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
parts = in.readInt();
exclNeighbors = in.readBoolean();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/ClusterGroupSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/ClusterGroupSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/ClusterGroupSelfTest.java
index 0fb9f80..3816513 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/ClusterGroupSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/ClusterGroupSelfTest.java
@@ -55,7 +55,6 @@ public class ClusterGroupSelfTest extends ClusterGroupAbstractTest {
private static Ignite ignite;
/** {@inheritDoc} */
- @SuppressWarnings({"ConstantConditions"})
@Override protected void beforeTestsStarted() throws Exception {
assert NODES_CNT > 2;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/GridEventStorageRuntimeConfigurationSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridEventStorageRuntimeConfigurationSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridEventStorageRuntimeConfigurationSelfTest.java
index 22f917c..816d43e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridEventStorageRuntimeConfigurationSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridEventStorageRuntimeConfigurationSelfTest.java
@@ -53,7 +53,6 @@ public class GridEventStorageRuntimeConfigurationSelfTest extends GridCommonAbst
private int[] inclEvtTypes;
/** {@inheritDoc} */
- @SuppressWarnings("deprecation")
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/GridMultipleVersionsDeploymentSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridMultipleVersionsDeploymentSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridMultipleVersionsDeploymentSelfTest.java
index 33bfb22..793de58 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridMultipleVersionsDeploymentSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridMultipleVersionsDeploymentSelfTest.java
@@ -104,7 +104,6 @@ public class GridMultipleVersionsDeploymentSelfTest extends GridCommonAbstractTe
/**
* @throws Exception If test failed.
*/
- @SuppressWarnings("unchecked")
@Test
public void testMultipleVersionsLocalDeploy() throws Exception {
try {
@@ -164,7 +163,6 @@ public class GridMultipleVersionsDeploymentSelfTest extends GridCommonAbstractTe
/**
* @throws Exception If test failed.
*/
- @SuppressWarnings("unchecked")
@Test
public void testMultipleVersionsP2PDeploy() throws Exception {
try {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/GridSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridSelfTest.java
index 32b0e8a..2b3e625 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridSelfTest.java
@@ -43,7 +43,6 @@ public class GridSelfTest extends ClusterGroupAbstractTest {
private static final int NODES_CNT = 4;
/** {@inheritDoc} */
- @SuppressWarnings({"ConstantConditions"})
@Override protected void beforeTestsStarted() throws Exception {
assert NODES_CNT > 2;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectApiExceptionTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectApiExceptionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectApiExceptionTest.java
index e964ebb..b20d5b0 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectApiExceptionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectApiExceptionTest.java
@@ -225,7 +225,6 @@ public class IgniteClientReconnectApiExceptionTest extends IgniteClientReconnect
/**
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void cacheOperationsTest() throws Exception {
clientMode = true;
@@ -543,7 +542,6 @@ public class IgniteClientReconnectApiExceptionTest extends IgniteClientReconnect
/**
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void igniteOperationsTest() throws Exception {
clientMode = true;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/IgniteExplicitImplicitDeploymentSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/IgniteExplicitImplicitDeploymentSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/IgniteExplicitImplicitDeploymentSelfTest.java
index c39e725..1144348 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/IgniteExplicitImplicitDeploymentSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/IgniteExplicitImplicitDeploymentSelfTest.java
@@ -125,7 +125,6 @@ public class IgniteExplicitImplicitDeploymentSelfTest extends GridCommonAbstract
* @param byName If {@code true} than executes task by class name.
* @throws Exception If test failed.
*/
- @SuppressWarnings("unchecked")
private void execExplicitDeployLocally(boolean byCls, boolean byTask, boolean byName) throws Exception {
Ignite ignite = null;
@@ -191,7 +190,6 @@ public class IgniteExplicitImplicitDeploymentSelfTest extends GridCommonAbstract
* @param byName If {@code true} than executes task by class name.
* @throws Exception If test failed.
*/
- @SuppressWarnings("unchecked")
private void execImplicitDeployLocally(boolean byCls, boolean byTask, boolean byName) throws Exception {
Ignite ignite = null;
@@ -270,7 +268,6 @@ public class IgniteExplicitImplicitDeploymentSelfTest extends GridCommonAbstract
* @param byName If {@code true} than executes task by class name.
* @throws Exception If test failed.
*/
- @SuppressWarnings("unchecked")
private void execExplicitDeployP2P(boolean byCls, boolean byTask, boolean byName) throws Exception {
Ignite ignite1 = null;
Ignite ignite2 = null;
@@ -342,7 +339,6 @@ public class IgniteExplicitImplicitDeploymentSelfTest extends GridCommonAbstract
* @param byName If {@code true} than executes task by class name.
* @throws Exception If test failed.
*/
- @SuppressWarnings("unchecked")
private void execImplicitDeployP2P(boolean byCls, boolean byTask, boolean byName) throws Exception {
Ignite ignite1 = null;
Ignite ignite2 = null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryObjectTypeCompatibilityTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryObjectTypeCompatibilityTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryObjectTypeCompatibilityTest.java
index 423c3d1..773d94c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryObjectTypeCompatibilityTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryObjectTypeCompatibilityTest.java
@@ -167,7 +167,6 @@ public class BinaryObjectTypeCompatibilityTest extends GridCommonAbstractTest {
* @param <T> Result type.
* @return Deserialized value, if {@link BinaryObject} was provided, or the same object otherwise.
*/
- @SuppressWarnings("unchecked")
private <T> T deserialize(Object obj) {
if (obj instanceof BinaryObject)
return ((BinaryObject)obj).deserialize();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2ByteOrderSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2ByteOrderSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2ByteOrderSelfTest.java
index 74e9f0f..5d5675b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2ByteOrderSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2ByteOrderSelfTest.java
@@ -504,7 +504,6 @@ public class DirectByteBufferStreamImplV2ByteOrderSelfTest extends TestCase {
* @param <T> Array type.
* @return {@code ArrayCreator} for a required type.
*/
- @SuppressWarnings("unchecked")
private <T> DirectByteBufferStreamImplV2.ArrayCreator<T> arrayCreator(final T arr) {
return new DirectByteBufferStreamImplV2.ArrayCreator<T>() {
@Override public T create(int len) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessorAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessorAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessorAbstractSelfTest.java
index 1ce1e24..598f754 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessorAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessorAbstractSelfTest.java
@@ -91,7 +91,6 @@ public abstract class GridAffinityProcessorAbstractSelfTest extends GridCommonAb
protected abstract AffinityFunction affinityFunction();
/** {@inheritDoc} */
- @SuppressWarnings({"ConstantConditions"})
@Override protected void beforeTestsStarted() throws Exception {
assert NODES_CNT >= 1;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConcurrentReadThroughTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConcurrentReadThroughTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConcurrentReadThroughTest.java
index e26d901..1fa96b7 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConcurrentReadThroughTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConcurrentReadThroughTest.java
@@ -62,7 +62,6 @@ public class CacheConcurrentReadThroughTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(gridName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsManageTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsManageTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsManageTest.java
index 4121ceb..610ac90 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsManageTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsManageTest.java
@@ -500,7 +500,6 @@ public class CacheMetricsManageTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
index e709bfd..c26589a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
@@ -4484,7 +4484,6 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
storeStgy.removeFromStore(key);
assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicateX() {
- @SuppressWarnings("unchecked")
@Override public boolean applyx() {
try {
Integer val = c.get(key);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
index 873987a..0949177 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
@@ -1029,7 +1029,6 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract
storeStgy.removeFromStore(key);
assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicateX() {
- @SuppressWarnings("unchecked")
@Override public boolean applyx() {
try {
if (c.get(key) != null)
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentTxMultiNodeLoadTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentTxMultiNodeLoadTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentTxMultiNodeLoadTest.java
index 9f94ea8..b6e2288 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentTxMultiNodeLoadTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentTxMultiNodeLoadTest.java
@@ -269,7 +269,7 @@ public class GridCacheConcurrentTxMultiNodeLoadTest extends GridCommonAbstractTe
*/
private void displayReqCount() {
new Thread(new Runnable() {
- @SuppressWarnings({"BusyWait", "InfiniteLoopStatement"})
+ @SuppressWarnings({"BusyWait"})
@Override public void run() {
int interval = 10;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentSelfTest.java
index f3aa2c3..62eeaff 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentSelfTest.java
@@ -237,14 +237,12 @@ public class GridCacheDeploymentSelfTest extends GridCommonAbstractTest {
}
/** @throws Exception If failed. */
- @SuppressWarnings("unchecked")
@Test
public void testDeployment4() throws Exception {
doDeployment4(false);
}
/** @throws Exception If failed. */
- @SuppressWarnings("unchecked")
@Test
public void testDeployment4BackupLeavesGrid() throws Exception {
doDeployment4(true);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheInterceptorAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheInterceptorAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheInterceptorAbstractSelfTest.java
index 04a3cfa..8c42096 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheInterceptorAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheInterceptorAbstractSelfTest.java
@@ -1163,7 +1163,6 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst
* @param expOld Expected expOld value.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void update(int grid, Operation op, String key, final Integer val, @Nullable final Integer expOld)
throws Exception {
cacheUpdate(grid, false, op, key, val, expOld, null);
@@ -1177,7 +1176,6 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst
* @param expRmvRet Expected remove result.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void remove(int grid, Operation op, String key, @Nullable final Integer expOld,
@Nullable final Integer expRmvRet) throws Exception {
cacheUpdate(grid, true, op, key, null, expOld, expRmvRet);
@@ -1193,7 +1191,6 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst
* @param expRmvRet Expected remove result.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void cacheUpdate(int grid, boolean rmv, Operation op, String key, final Integer val,
@Nullable final Integer expOld, @Nullable final Integer expRmvRet)
throws Exception {
@@ -1277,7 +1274,6 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst
* @param map Key/values map.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void batchUpdate(int grid, Operation op, final Map<String, Integer> map) throws Exception {
cacheBatchUpdate(grid, false, op, map);
}
@@ -1288,7 +1284,6 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst
* @param map Key/values map.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void batchRemove(int grid, Operation op, final Map<String, Integer> map) throws Exception {
cacheBatchUpdate(grid, true, op, map);
}
@@ -1300,7 +1295,6 @@ public abstract class GridCacheInterceptorAbstractSelfTest extends GridCacheAbst
* @param map Key/values map.
* @throws Exception If failed.
*/
- @SuppressWarnings("unchecked")
private void cacheBatchUpdate(int grid, boolean rmv, Operation op, final Map<String, Integer> map)
throws Exception {
IgniteCache<String, Integer> cache = jcache(grid);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java
index 1644103..fda6a4b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java
@@ -1360,7 +1360,6 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
/**
* @throws Exception If failed.
*/
- @SuppressWarnings({"ObjectEquality"})
@Test
public void testUsedCandidates() throws Exception {
GridCacheAdapter<String, String> cache = grid.internalCache(DEFAULT_CACHE_NAME);
[11/52] [abbrv] ignite git commit: IGNITE-10682 Ignore for licenses:
Disable unnecessary loaded plugins for the Inspection test suite.
Posted by sb...@apache.org.
IGNITE-10682 Ignore for licenses: Disable unnecessary loaded plugins for the Inspection test suite.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/871126c4
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/871126c4
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/871126c4
Branch: refs/heads/ignite-627
Commit: 871126c473857b914c36f683f82266f33495821d
Parents: 389e196
Author: Dmitriy Pavlov <dp...@apache.org>
Authored: Tue Dec 18 00:59:17 2018 +0300
Committer: Dmitriy Pavlov <dp...@apache.org>
Committed: Tue Dec 18 01:00:24 2018 +0300
----------------------------------------------------------------------
parent/pom.xml | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/871126c4/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index bed124f..aa8b855 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -858,6 +858,7 @@
<exclude>**/keystore/ca/*serial</exclude><!--auto generated files-->
<exclude>**/META-INF/services/**</exclude> <!-- Interface mappings: cannot be changed -->
<!--special excludes-->
+ <exclude>idea/disabled_plugins.txt</exclude>
<exclude>idea/ignite_codeStyle.xml</exclude>
<exclude>idea/ignite_inspections.xml</exclude>
<exclude>idea/ignite_inspections_teamcity.xml</exclude>
[10/52] [abbrv] ignite git commit: IGNITE-1094: Muted some tests back.
Posted by sb...@apache.org.
IGNITE-1094: Muted some tests back.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/389e1966
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/389e1966
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/389e1966
Branch: refs/heads/ignite-627
Commit: 389e196604000b84a4ce1c011ba13eec20b41c70
Parents: 5310d37
Author: devozerov <pp...@gmail.com>
Authored: Tue Dec 18 00:50:02 2018 +0300
Committer: devozerov <pp...@gmail.com>
Committed: Tue Dec 18 00:50:02 2018 +0300
----------------------------------------------------------------------
.../processors/query/IgniteSqlSchemaIndexingTest.java | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/389e1966/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSchemaIndexingTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSchemaIndexingTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSchemaIndexingTest.java
index 7062258..c5827a7 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSchemaIndexingTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSchemaIndexingTest.java
@@ -91,7 +91,9 @@ public class IgniteSqlSchemaIndexingTest extends GridCommonAbstractTest {
*/
@Test
public void testCaseSensitive() throws Exception {
- //TODO rewrite with dynamic cache creation, and GRID start in #beforeTest - IGNITE-1094 resolved
+ //TODO rewrite with dynamic cache creation, and GRID start in #beforeTest after resolve of
+ //TODO IGNITE-1094
+ fail("https://issues.apache.org/jira/browse/IGNITE-10723");
GridTestUtils.assertThrows(log, new Callable<Object>() {
@Override public Object call() throws Exception {
@@ -117,9 +119,10 @@ public class IgniteSqlSchemaIndexingTest extends GridCommonAbstractTest {
*
* @throws Exception If failed.
*/
- @Test
public void testCustomSchemaMultipleCachesTablesCollision() throws Exception {
- //TODO: Rewrite with dynamic cache creation, and GRID start in #beforeTest - IGNITE-1094 resolved
+ //TODO: Rewrite with dynamic cache creation, and GRID start in #beforeTest after resolve of
+ //TODO: IGNITE-1094
+ fail("https://issues.apache.org/jira/browse/IGNITE-10723");
GridTestUtils.assertThrows(log, new Callable<Object>() {
@Override public Object call() throws Exception {
[17/52] [abbrv] ignite git commit: SqlQueryFullScanBenchmark
Posted by sb...@apache.org.
SqlQueryFullScanBenchmark
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b4bfd4c7
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b4bfd4c7
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b4bfd4c7
Branch: refs/heads/ignite-627
Commit: b4bfd4c7cd415fa8bb7132a4a8ee58e207500767
Parents: 7c2ce4c
Author: Sergi Vladykin <se...@gmail.com>
Authored: Tue Dec 18 14:17:25 2018 +0300
Committer: Sergi Vladykin <se...@gmail.com>
Committed: Tue Dec 18 14:17:25 2018 +0300
----------------------------------------------------------------------
.../cache/IgniteSqlQueryFullScanBenchmark.java | 97 +++++++++
.../yardstick/cache/model/PersonNoIndex.java | 215 +++++++++++++++++++
2 files changed, 312 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/b4bfd4c7/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteSqlQueryFullScanBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteSqlQueryFullScanBenchmark.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteSqlQueryFullScanBenchmark.java
new file mode 100644
index 0000000..d7cf0a9
--- /dev/null
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteSqlQueryFullScanBenchmark.java
@@ -0,0 +1,97 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.yardstick.cache;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.ThreadLocalRandom;
+import javax.cache.Cache;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteDataStreamer;
+import org.apache.ignite.cache.query.SqlQuery;
+import org.apache.ignite.yardstick.cache.model.PersonNoIndex;
+import org.yardstickframework.BenchmarkConfiguration;
+
+import static org.yardstickframework.BenchmarkUtils.println;
+
+/**
+ * Ignite benchmark that performs query operations.
+ */
+public class IgniteSqlQueryFullScanBenchmark extends IgniteCacheAbstractBenchmark<Integer, Object> {
+ /** {@inheritDoc} */
+ @Override public void setUp(BenchmarkConfiguration cfg) throws Exception {
+ super.setUp(cfg);
+
+ loadCachesData();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void loadCacheData(String cacheName) {
+ try (IgniteDataStreamer<Integer, PersonNoIndex> dataLdr = ignite().dataStreamer(cacheName)) {
+ for (int i = 0; i < args.range(); i++) {
+ if (i % 100 == 0 && Thread.currentThread().isInterrupted())
+ break;
+
+ dataLdr.addData(i, new PersonNoIndex(i, "firstName" + i, "lastName" + i, i * 1000));
+
+ if (i % 100000 == 0)
+ println(cfg, "Populated persons: " + i);
+ }
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean test(Map<Object, Object> ctx) throws Exception {
+ double salary = ThreadLocalRandom.current().nextDouble() * args.range() * 1000;
+
+ double maxSalary = salary + 1000;
+
+ Collection<Cache.Entry<Integer, Object>> entries = executeQuery(salary, maxSalary);
+
+ for (Cache.Entry<Integer, Object> entry : entries) {
+ PersonNoIndex p = (PersonNoIndex)entry.getValue();
+
+ if (p.getSalary() < salary || p.getSalary() > maxSalary)
+ throw new Exception("Invalid person retrieved [min=" + salary + ", max=" + maxSalary +
+ ", person=" + p + ']');
+ }
+
+ return true;
+ }
+
+ /**
+ * @param minSalary Min salary.
+ * @param maxSalary Max salary.
+ * @return Query result.
+ * @throws Exception If failed.
+ */
+ private Collection<Cache.Entry<Integer, Object>> executeQuery(double minSalary, double maxSalary) throws Exception {
+ IgniteCache<Integer, Object> cache = cacheForOperation(true);
+
+ SqlQuery qry = new SqlQuery(PersonNoIndex.class, "salary >= ? and salary <= ?");
+
+ qry.setArgs(minSalary, maxSalary);
+
+ return cache.query(qry).getAll();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteCache<Integer, Object> cache() {
+ return ignite().cache("query");
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b4bfd4c7/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/model/PersonNoIndex.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/model/PersonNoIndex.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/model/PersonNoIndex.java
new file mode 100644
index 0000000..39ef2f3
--- /dev/null
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/model/PersonNoIndex.java
@@ -0,0 +1,215 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.yardstick.cache.model;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import org.apache.ignite.binary.BinaryObjectException;
+import org.apache.ignite.binary.BinaryReader;
+import org.apache.ignite.binary.BinaryWriter;
+import org.apache.ignite.binary.Binarylizable;
+import org.apache.ignite.cache.query.annotations.QuerySqlField;
+
+/**
+ * Person record used for query test.
+ */
+public class PersonNoIndex implements Externalizable, Binarylizable {
+ /** Person ID. */
+ @QuerySqlField
+ private int id;
+
+ /** Organization ID. */
+ @QuerySqlField
+ private int orgId;
+
+ /** First name (not-indexed). */
+ @QuerySqlField
+ private String firstName;
+
+ /** Last name (not indexed). */
+ @QuerySqlField
+ private String lastName;
+
+ /** Salary. */
+ @QuerySqlField
+ private double salary;
+
+ /**
+ * Constructs empty person.
+ */
+ public PersonNoIndex() {
+ // No-op.
+ }
+
+ /**
+ * Constructs person record that is not linked to any organization.
+ *
+ * @param id Person ID.
+ * @param firstName First name.
+ * @param lastName Last name.
+ * @param salary Salary.
+ */
+ public PersonNoIndex(int id, String firstName, String lastName, double salary) {
+ this(id, 0, firstName, lastName, salary);
+ }
+
+ /**
+ * Constructs person record.
+ *
+ * @param id Person ID.
+ * @param orgId Organization ID.
+ * @param firstName First name.
+ * @param lastName Last name.
+ * @param salary Salary.
+ */
+ public PersonNoIndex(int id, int orgId, String firstName, String lastName, double salary) {
+ this.id = id;
+ this.orgId = orgId;
+ this.firstName = firstName;
+ this.lastName = lastName;
+ this.salary = salary;
+ }
+
+ /**
+ * @return Person id.
+ */
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id Person id.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Organization id.
+ */
+ public int getOrganizationId() {
+ return orgId;
+ }
+
+ /**
+ * @param orgId Organization id.
+ */
+ public void setOrganizationId(int orgId) {
+ this.orgId = orgId;
+ }
+
+ /**
+ * @return Person first name.
+ */
+ public String getFirstName() {
+ return firstName;
+ }
+
+ /**
+ * @param firstName Person first name.
+ */
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ /**
+ * @return Person last name.
+ */
+ public String getLastName() {
+ return lastName;
+ }
+
+ /**
+ * @param lastName Person last name.
+ */
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ /**
+ * @return Salary.
+ */
+ public double getSalary() {
+ return salary;
+ }
+
+ /**
+ * @param salary Salary.
+ */
+ public void setSalary(double salary) {
+ this.salary = salary;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeInt(id);
+ out.writeInt(orgId);
+ out.writeUTF(firstName);
+ out.writeUTF(lastName);
+ out.writeDouble(salary);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ id = in.readInt();
+ orgId = in.readInt();
+ firstName = in.readUTF();
+ lastName = in.readUTF();
+ salary = in.readDouble();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeBinary(BinaryWriter writer) throws BinaryObjectException {
+ writer.writeInt("id", id);
+ writer.writeInt("orgId", orgId);
+ writer.writeString("firstName", firstName);
+ writer.writeString("lastName", lastName);
+ writer.writeDouble("salary", salary);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readBinary(BinaryReader reader) throws BinaryObjectException {
+ id = reader.readInt("id");
+ orgId = reader.readInt("orgId");
+ firstName = reader.readString("firstName");
+ lastName = reader.readString("lastName");
+ salary = reader.readDouble("salary");
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ return this == o || (o instanceof PersonNoIndex) && id == ((PersonNoIndex)o).id;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return id;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return "Person [firstName=" + firstName +
+ ", id=" + id +
+ ", orgId=" + orgId +
+ ", lastName=" + lastName +
+ ", salary=" + salary +
+ ']';
+ }
+}
\ No newline at end of file
[06/52] [abbrv] ignite git commit: IGNITE-10488
ClusterCachesInfo.validateCacheGroupConfiguration should check cache
compression configuration
Posted by sb...@apache.org.
IGNITE-10488 ClusterCachesInfo.validateCacheGroupConfiguration should check cache compression configuration
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5fb803a2
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5fb803a2
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5fb803a2
Branch: refs/heads/ignite-627
Commit: 5fb803a2c92f0f0844e88acbcb81f508873bd7f7
Parents: 83abf89
Author: Sergi Vladykin <se...@gmail.com>
Authored: Mon Dec 17 16:15:04 2018 +0300
Committer: Sergi Vladykin <se...@gmail.com>
Committed: Mon Dec 17 16:15:04 2018 +0300
----------------------------------------------------------------------
.../compress/CompressionConfigurationTest.java | 109 +++++++++++++++++++
.../IgnitePdsCompressionTestSuite.java | 2 +
.../processors/cache/ClusterCachesInfo.java | 8 ++
3 files changed, 119 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/5fb803a2/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java
----------------------------------------------------------------------
diff --git a/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java b/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java
new file mode 100644
index 0000000..c2d86fa
--- /dev/null
+++ b/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java
@@ -0,0 +1,109 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.processors.compress;
+
+import java.util.Objects;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DiskPageCompression;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.util.typedef.X;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import static org.apache.ignite.configuration.DiskPageCompression.LZ4;
+import static org.apache.ignite.configuration.DiskPageCompression.ZSTD;
+
+/**
+ */
+@RunWith(JUnit4.class)
+public class CompressionConfigurationTest extends GridCommonAbstractTest {
+ /** */
+ DiskPageCompression compression1;
+
+ /** */
+ DiskPageCompression compression2;
+
+ /** */
+ Integer level1;
+
+ /** */
+ Integer level2;
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String instanceName) throws Exception {
+ CacheConfiguration<Object,Object> ccfg1 = new CacheConfiguration<>("cache1");
+
+ ccfg1.setDiskPageCompression(compression1);
+ ccfg1.setDiskPageCompressionLevel(level1);
+ ccfg1.setGroupName("myGroup");
+
+ CacheConfiguration<Object,Object> ccfg2 = new CacheConfiguration<>("cache2");
+
+ ccfg2.setDiskPageCompression(compression2);
+ ccfg2.setDiskPageCompressionLevel(level2);
+ ccfg2.setGroupName("myGroup");
+
+ return super.getConfiguration(instanceName).setCacheConfiguration(ccfg1, ccfg2);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testInconsistentCacheGroupCompressionConfig() throws Exception {
+ doTestConfig(ZSTD, null, null, null);
+ doTestConfig(ZSTD, 1, LZ4, 1);
+ doTestConfig(ZSTD, null, LZ4, null);
+
+ doTestConfig(null, null, null, 2);
+ doTestConfig(ZSTD, null, ZSTD, 2);
+ doTestConfig(ZSTD, 1, ZSTD, 2);
+ }
+
+ /**
+ */
+ private void doTestConfig(
+ DiskPageCompression compression1,
+ Integer level1,
+ DiskPageCompression compression2,
+ Integer level2
+ ) throws Exception {
+ this.compression1 = compression1;
+ this.level1 = level1;
+
+ this.compression2 = compression2;
+ this.level2 = level2;
+
+ try {
+ startGrid();
+
+ fail("Exception expected.");
+ }
+ catch (IgniteCheckedException e) {
+ if (compression1 != compression2)
+ assertTrue(e.getCause().getMessage().startsWith("Disk page compression mismatch"));
+ else if (!Objects.equals(level1, level2))
+ assertTrue(e.getCause().getMessage().startsWith("Disk page compression level mismatch"));
+ else
+ fail(X.getFullStackTrace(e));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/5fb803a2/modules/compress/src/test/java/org/apache/ignite/testsuites/IgnitePdsCompressionTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/compress/src/test/java/org/apache/ignite/testsuites/IgnitePdsCompressionTestSuite.java b/modules/compress/src/test/java/org/apache/ignite/testsuites/IgnitePdsCompressionTestSuite.java
index a24144d..696c614 100644
--- a/modules/compress/src/test/java/org/apache/ignite/testsuites/IgnitePdsCompressionTestSuite.java
+++ b/modules/compress/src/test/java/org/apache/ignite/testsuites/IgnitePdsCompressionTestSuite.java
@@ -19,6 +19,7 @@ package org.apache.ignite.testsuites;
import junit.framework.JUnit4TestAdapter;
import junit.framework.TestSuite;
+import org.apache.ignite.internal.processors.compress.CompressionConfigurationTest;
import org.apache.ignite.internal.processors.compress.CompressionProcessorTest;
import org.apache.ignite.internal.processors.compress.DiskPageCompressionIntegrationAsyncTest;
import org.apache.ignite.internal.processors.compress.DiskPageCompressionIntegrationTest;
@@ -37,6 +38,7 @@ public class IgnitePdsCompressionTestSuite {
public static TestSuite suite() {
TestSuite suite = new TestSuite("Ignite Persistent Store Test Suite (with page compression).");
+ suite.addTest(new JUnit4TestAdapter(CompressionConfigurationTest.class));
suite.addTest(new JUnit4TestAdapter(CompressionProcessorTest.class));
suite.addTest(new JUnit4TestAdapter(FileSystemUtilsTest.class));
suite.addTest(new JUnit4TestAdapter(DiskPageCompressionIntegrationTest.class));
http://git-wip-us.apache.org/repos/asf/ignite/blob/5fb803a2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
index b85c8df..b97d12f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
@@ -1928,6 +1928,14 @@ class ClusterCachesInfo {
CU.validateCacheGroupsAttributesMismatch(log, cfg, startCfg, "encryptionEnabled", "Encrypted",
cfg.isEncryptionEnabled(), startCfg.isEncryptionEnabled(), true);
+
+ CU.validateCacheGroupsAttributesMismatch(log, cfg, startCfg,
+ "diskPageCompression", "Disk page compression",
+ cfg.getDiskPageCompression(), startCfg.getDiskPageCompression(), true);
+
+ CU.validateCacheGroupsAttributesMismatch(log, cfg, startCfg,
+ "diskPageCompressionLevel", "Disk page compression level",
+ cfg.getDiskPageCompressionLevel(), startCfg.getDiskPageCompressionLevel(), true);
}
/**
[27/52] [abbrv] ignite git commit: IGNITE-10289: [ML] Import models
from XGBoost
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/resources/datasets/agaricus-test-data.txt
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/datasets/agaricus-test-data.txt b/examples/src/main/resources/datasets/agaricus-test-data.txt
new file mode 100644
index 0000000..a5be7ab
--- /dev/null
+++ b/examples/src/main/resources/datasets/agaricus-test-data.txt
@@ -0,0 +1,1611 @@
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1
+0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 4:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 4:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1
+0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1
+0 3:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1
+0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 4:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1
+0 4:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 3:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 3:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1
+0 4:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 4:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1
+0 4:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1
+0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+0 4:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 4:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1
+1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1
+1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1
+1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 10
<TRUNCATED>
[48/52] [abbrv] ignite git commit: IGNITE-9893 IGNITE-1757
IGNITE-10723 Adding hibernate-5.3 module
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteQueryResultsRegion.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteQueryResultsRegion.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteQueryResultsRegion.java
new file mode 100644
index 0000000..2ce25f3
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteQueryResultsRegion.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import org.apache.ignite.Ignite;
+import org.hibernate.cache.spi.QueryResultsRegion;
+import org.hibernate.query.Query;
+
+/**
+ * Implementation of {@link QueryResultsRegion}. This region is used to store query results.
+ * <p>
+ * Query results caching can be enabled in the Hibernate configuration file:
+ * <pre name="code" class="xml">
+ * <hibernate-configuration>
+ * <!-- Enable L2 cache. -->
+ * <property name="cache.use_second_level_cache">true</property>
+ *
+ * <!-- Enable query cache. -->
+ * <property name="cache.use_second_level_cache">true</property>
+
+ * <!-- Use Ignite as L2 cache provider. -->
+ * <property name="cache.region.factory_class">org.apache.ignite.cache.hibernate.HibernateRegionFactory</property>
+ *
+ * <!-- Specify entity. -->
+ * <mapping class="com.example.Entity"/>
+ *
+ * <!-- Enable L2 cache with nonstrict-read-write access strategy for entity. -->
+ * <class-cache class="com.example.Entity" usage="nonstrict-read-write"/>
+ * </hibernate-configuration>
+ * </pre>
+ * By default queries are not cached even after enabling query caching, to enable results caching for a particular
+ * query, call {@link Query#setCacheable(boolean)}:
+ * <pre name="code" class="java">
+ * Session ses = getSession();
+ *
+ * Query qry = ses.createQuery("...");
+ *
+ * qry.setCacheable(true); // Enable L2 cache for query.
+ * </pre>
+ * Note: the query cache does not cache the state of the actual entities in the cache, it caches only identifier
+ * values. For this reason, the query cache should always be used in conjunction with
+ * the second-level cache for those entities expected to be cached as part of a query result cache
+ */
+public class IgniteQueryResultsRegion extends IgniteGeneralDataRegion implements QueryResultsRegion {
+ /**
+ * @param factory Region factory.
+ * @param name Region name.
+ * @param ignite Grid.
+ * @param cache Region cache.
+ */
+ public IgniteQueryResultsRegion(HibernateRegionFactory factory, String name,
+ Ignite ignite, HibernateCacheProxy cache) {
+ super(factory, name, ignite, cache);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteTimestampsRegion.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteTimestampsRegion.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteTimestampsRegion.java
new file mode 100644
index 0000000..3524f35
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteTimestampsRegion.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import org.apache.ignite.Ignite;
+import org.hibernate.cache.spi.RegionFactory;
+import org.hibernate.cache.spi.TimestampsRegion;
+
+/**
+ * Implementation of {@link TimestampsRegion}. This region is automatically created when query
+ * caching is enabled and it holds most recent updates timestamps to queryable tables.
+ * Name of timestamps region is {@link RegionFactory#DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME}.
+ */
+public class IgniteTimestampsRegion extends IgniteGeneralDataRegion implements TimestampsRegion {
+ /**
+ * @param factory Region factory.
+ * @param regionName Region name.
+ * @param cache Region cache.
+ */
+ public IgniteTimestampsRegion(RegionFactory factory, String regionName, Ignite ignite, HibernateCacheProxy cache) {
+ super(factory, regionName, ignite, cache);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/package-info.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/package-info.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/package-info.java
new file mode 100644
index 0000000..1179aec
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/package-info.java
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Contains implementation of Hibernate L2 cache. Refer to
+ * <i>org.apache.ignite.examples.datagrid.hibernate.HibernateL2CacheExample</i> for more information on how to
+ * configure and use Ignite with Hibernate.
+ */
+package org.apache.ignite.cache.hibernate;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
new file mode 100644
index 0000000..619eabf
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
@@ -0,0 +1,545 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.store.hibernate;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicBoolean;
+import javax.cache.integration.CacheLoaderException;
+import javax.cache.integration.CacheWriterException;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.cache.store.CacheStore;
+import org.apache.ignite.cache.store.CacheStoreAdapter;
+import org.apache.ignite.cache.store.CacheStoreSession;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.IgniteInterruptedCheckedException;
+import org.apache.ignite.internal.util.tostring.GridToStringExclude;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.marshaller.jdk.JdkMarshaller;
+import org.apache.ignite.resources.CacheStoreSessionResource;
+import org.apache.ignite.resources.IgniteInstanceResource;
+import org.apache.ignite.resources.LoggerResource;
+import org.apache.ignite.transactions.Transaction;
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.SharedSessionContract;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.resource.transaction.spi.TransactionStatus;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * {@link CacheStore} implementation backed by Hibernate. This implementation
+ * stores objects in underlying database in {@code BLOB} format.
+ * <h2 class="header">Configuration</h2>
+ * Either {@link #setSessionFactory(SessionFactory)} or
+ * {@link #setHibernateConfigurationPath(String)} or
+ * {@link #setHibernateProperties(Properties)} should be set.
+ * <p>
+ * If session factory is provided it should contain
+ * {@link CacheHibernateBlobStoreEntry} persistent class (via provided
+ * mapping file {@code GridCacheHibernateStoreEntry.hbm.xml} or by
+ * adding {@link CacheHibernateBlobStoreEntry} to annotated classes
+ * of session factory.
+ * <p>
+ * Path to hibernate configuration may be either an URL or a file path or
+ * a classpath resource. This configuration file should include provided
+ * mapping {@code GridCacheHibernateStoreEntry.hbm.xml} or include annotated
+ * class {@link CacheHibernateBlobStoreEntry}.
+ * <p>
+ * If hibernate properties are provided, mapping
+ * {@code GridCacheHibernateStoreEntry.hbm.xml} is included automatically.
+ * <p>
+ * Use {@link CacheHibernateBlobStoreFactory} factory to pass {@link CacheHibernateBlobStore} to {@link CacheConfiguration}.
+ */
+public class CacheHibernateBlobStore<K, V> extends CacheStoreAdapter<K, V> {
+ /**
+ * Default connection URL
+ * (value is <tt>jdbc:h2:mem:hibernateCacheStore;DB_CLOSE_DELAY=-1;DEFAULT_LOCK_TIMEOUT=5000</tt>).
+ */
+ public static final String DFLT_CONN_URL = "jdbc:h2:mem:hibernateCacheStore;DB_CLOSE_DELAY=-1;" +
+ "DEFAULT_LOCK_TIMEOUT=5000";
+
+ /** Default show SQL property value (value is <tt>true</tt>). */
+ public static final String DFLT_SHOW_SQL = "true";
+
+ /** Default <tt>hibernate.hbm2ddl.auto</tt> property value (value is <tt>true</tt>). */
+ public static final String DFLT_HBM2DDL_AUTO = "update";
+
+ /** Default <tt>hibernate.connection.pool_size</tt> property value (value is <tt>64</tt>). */
+ public static final String DFLT_CONN_POOL_SIZE = "64";
+
+ /** Session attribute name. */
+ private static final String ATTR_SES = "HIBERNATE_STORE_SESSION";
+
+ /** Name of Hibarname mapping resource. */
+ private static final String MAPPING_RESOURCE =
+ "org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.hbm.xml";
+
+ /** Marshaller. */
+ private static final Marshaller marsh = new JdkMarshaller();
+
+ /** Init guard. */
+ @GridToStringExclude
+ private final AtomicBoolean initGuard = new AtomicBoolean();
+
+ /** Init latch. */
+ @GridToStringExclude
+ private final CountDownLatch initLatch = new CountDownLatch(1);
+
+ /** Hibernate properties. */
+ @GridToStringExclude
+ private Properties hibernateProps;
+
+ /** Session factory. */
+ @GridToStringExclude
+ private SessionFactory sesFactory;
+
+ /** Path to hibernate configuration file. */
+ private String hibernateCfgPath;
+
+ /** Log. */
+ @LoggerResource
+ private IgniteLogger log;
+
+ /** Auto-injected store session. */
+ @CacheStoreSessionResource
+ private CacheStoreSession ses;
+
+ /** Ignite instance. */
+ @IgniteInstanceResource
+ private Ignite ignite;
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"unchecked", "RedundantTypeArguments"})
+ @Override public V load(K key) {
+ init();
+
+ Transaction tx = transaction();
+
+ if (log.isDebugEnabled())
+ log.debug("Store load [key=" + key + ", tx=" + tx + ']');
+
+ Session ses = session(tx);
+
+ try {
+ CacheHibernateBlobStoreEntry entry = ses.get(CacheHibernateBlobStoreEntry.class, toBytes(key));
+ if (entry == null)
+ return null;
+
+ return fromBytes(entry.getValue());
+ }
+ catch (IgniteCheckedException | HibernateException e) {
+ rollback(ses, tx);
+
+ throw new CacheLoaderException("Failed to load value from cache store with key: " + key, e);
+ }
+ finally {
+ end(ses, tx);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void write(javax.cache.Cache.Entry<? extends K, ? extends V> entry) {
+ init();
+
+ Transaction tx = transaction();
+
+ K key = entry.getKey();
+ V val = entry.getValue();
+
+ if (log.isDebugEnabled())
+ log.debug("Store put [key=" + key + ", val=" + val + ", tx=" + tx + ']');
+
+ if (val == null) {
+ delete(key);
+
+ return;
+ }
+
+ Session ses = session(tx);
+
+ try {
+ CacheHibernateBlobStoreEntry entry0 = new CacheHibernateBlobStoreEntry(toBytes(key), toBytes(val));
+
+ ses.saveOrUpdate(entry0);
+ }
+ catch (IgniteCheckedException | HibernateException e) {
+ rollback(ses, tx);
+
+ throw new CacheWriterException("Failed to put value to cache store [key=" + key + ", val" + val + "]", e);
+ }
+ finally {
+ end(ses, tx);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"JpaQueryApiInspection", "JpaQlInspection"})
+ @Override public void delete(Object key) {
+ init();
+
+ Transaction tx = transaction();
+
+ if (log.isDebugEnabled())
+ log.debug("Store remove [key=" + key + ", tx=" + tx + ']');
+
+ Session ses = session(tx);
+
+ try {
+ Object obj = ses.get(CacheHibernateBlobStoreEntry.class, toBytes(key));
+
+ if (obj != null)
+ ses.delete(obj);
+ }
+ catch (IgniteCheckedException | HibernateException e) {
+ rollback(ses, tx);
+
+ throw new CacheWriterException("Failed to remove value from cache store with key: " + key, e);
+ }
+ finally {
+ end(ses, tx);
+ }
+ }
+
+ /**
+ * Rolls back hibernate session.
+ *
+ * @param ses Hibernate session.
+ * @param tx Cache ongoing transaction.
+ */
+ private void rollback(SharedSessionContract ses, Transaction tx) {
+ // Rollback only if there is no cache transaction,
+ // otherwise sessionEnd() will do all required work.
+ if (tx == null) {
+ org.hibernate.Transaction hTx = ses.getTransaction();
+
+ if (hTx != null && hTx.getStatus().canRollback())
+ hTx.rollback();
+ }
+ }
+
+ /**
+ * Ends hibernate session.
+ *
+ * @param ses Hibernate session.
+ * @param tx Cache ongoing transaction.
+ */
+ private void end(Session ses, Transaction tx) {
+ // Commit only if there is no cache transaction,
+ // otherwise sessionEnd() will do all required work.
+ if (tx == null) {
+ org.hibernate.Transaction hTx = ses.getTransaction();
+
+ if (hTx != null && hTx.getStatus() == TransactionStatus.ACTIVE)
+ hTx.commit();
+
+ ses.close();
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void sessionEnd(boolean commit) {
+ init();
+
+ Transaction tx = transaction();
+
+ Map<String, Session> props = session().properties();
+
+ Session ses = props.remove(ATTR_SES);
+
+ if (ses != null) {
+ org.hibernate.Transaction hTx = ses.getTransaction();
+
+ if (hTx != null) {
+ try {
+ if (commit) {
+ ses.flush();
+
+ hTx.commit();
+ }
+ else
+ hTx.rollback();
+
+ if (log.isDebugEnabled())
+ log.debug("Transaction ended [xid=" + tx.xid() + ", commit=" + commit + ']');
+ }
+ catch (HibernateException e) {
+ throw new CacheWriterException("Failed to end transaction [xid=" + tx.xid() +
+ ", commit=" + commit + ']', e);
+ }
+ finally {
+ ses.close();
+ }
+ }
+ }
+ }
+
+ /**
+ * Gets Hibernate session.
+ *
+ * @param tx Cache transaction.
+ * @return Session.
+ */
+ Session session(@Nullable Transaction tx) {
+ Session ses;
+
+ if (tx != null) {
+ Map<String, Session> props = session().properties();
+
+ ses = props.get(ATTR_SES);
+
+ if (ses == null) {
+ ses = sesFactory.openSession();
+
+ ses.beginTransaction();
+
+ // Store session in transaction metadata, so it can be accessed
+ // for other operations on the same transaction.
+ props.put(ATTR_SES, ses);
+
+ if (log.isDebugEnabled())
+ log.debug("Hibernate session open [ses=" + ses + ", tx=" + tx.xid() + "]");
+ }
+ }
+ else {
+ ses = sesFactory.openSession();
+
+ ses.beginTransaction();
+ }
+
+ return ses;
+ }
+
+ /**
+ * Sets session factory.
+ *
+ * @param sesFactory Session factory.
+ */
+ public void setSessionFactory(SessionFactory sesFactory) {
+ this.sesFactory = sesFactory;
+ }
+
+ /**
+ * Sets hibernate configuration path.
+ * <p>
+ * This may be either URL or file path or classpath resource.
+ *
+ * @param hibernateCfgPath URL or file path or classpath resource
+ * pointing to hibernate configuration XML file.
+ */
+ public void setHibernateConfigurationPath(String hibernateCfgPath) {
+ this.hibernateCfgPath = hibernateCfgPath;
+ }
+
+ /**
+ * Sets Hibernate properties.
+ *
+ * @param hibernateProps Hibernate properties.
+ */
+ public void setHibernateProperties(Properties hibernateProps) {
+ this.hibernateProps = hibernateProps;
+ }
+
+ /**
+ * Initializes store.
+ *
+ * @throws IgniteException If failed to initialize.
+ */
+ private void init() throws IgniteException {
+ if (initGuard.compareAndSet(false, true)) {
+ if (log.isDebugEnabled())
+ log.debug("Initializing cache store.");
+
+ try {
+ // Session factory has been provided - nothing to do.
+ if (sesFactory != null)
+ return;
+
+ if (!F.isEmpty(hibernateCfgPath)) {
+ try {
+ URL url = new URL(hibernateCfgPath);
+
+ sesFactory = new Configuration().configure(url).buildSessionFactory();
+
+ if (log.isDebugEnabled())
+ log.debug("Configured session factory using URL: " + url);
+
+ // Session factory has been successfully initialized.
+ return;
+ }
+ catch (MalformedURLException e) {
+ if (log.isDebugEnabled())
+ log.debug("Caught malformed URL exception: " + e.getMessage());
+ }
+
+ // Provided path is not a valid URL. File?
+ File cfgFile = new File(hibernateCfgPath);
+
+ if (cfgFile.exists()) {
+ sesFactory = new Configuration().configure(cfgFile).buildSessionFactory();
+
+ if (log.isDebugEnabled())
+ log.debug("Configured session factory using file: " + hibernateCfgPath);
+
+ // Session factory has been successfully initialized.
+ return;
+ }
+
+ // Provided path is not a file. Classpath resource?
+ sesFactory = new Configuration().configure(hibernateCfgPath).buildSessionFactory();
+
+ if (log.isDebugEnabled())
+ log.debug("Configured session factory using classpath resource: " + hibernateCfgPath);
+ }
+ else {
+ if (hibernateProps == null) {
+ U.warn(log, "No Hibernate configuration has been provided for store (will use default).");
+
+ hibernateProps = new Properties();
+
+ hibernateProps.setProperty("hibernate.connection.url", DFLT_CONN_URL);
+ hibernateProps.setProperty("hibernate.show_sql", DFLT_SHOW_SQL);
+ hibernateProps.setProperty("hibernate.hbm2ddl.auto", DFLT_HBM2DDL_AUTO);
+ hibernateProps.setProperty("hibernate.connection.pool_size", DFLT_CONN_POOL_SIZE);
+ }
+
+ Configuration cfg = new Configuration();
+
+ cfg.setProperties(hibernateProps);
+
+ assert resourceAvailable(MAPPING_RESOURCE) : MAPPING_RESOURCE;
+
+ cfg.addResource(MAPPING_RESOURCE);
+
+ sesFactory = cfg.buildSessionFactory();
+
+ if (log.isDebugEnabled())
+ log.debug("Configured session factory using properties: " + hibernateProps);
+ }
+ }
+ catch (HibernateException e) {
+ throw new IgniteException("Failed to initialize store.", e);
+ }
+ finally {
+ initLatch.countDown();
+ }
+ }
+ else if (initLatch.getCount() > 0) {
+ try {
+ U.await(initLatch);
+ }
+ catch (IgniteInterruptedCheckedException e) {
+ throw new IgniteException(e);
+ }
+ }
+
+ if (sesFactory == null)
+ throw new IgniteException("Cache store was not properly initialized.");
+ }
+
+ /**
+ * Checks availability of a classpath resource.
+ *
+ * @param name Resource name.
+ * @return {@code true} if resource is available and ready for read, {@code false} otherwise.
+ */
+ private boolean resourceAvailable(String name) {
+ InputStream cfgStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(name);
+
+ if (cfgStream == null) {
+ log.error("Classpath resource not found: " + name);
+
+ return false;
+ }
+
+ try {
+ // Read a single byte to force actual content access by JVM.
+ cfgStream.read();
+
+ return true;
+ }
+ catch (IOException e) {
+ log.error("Failed to read classpath resource: " + name, e);
+
+ return false;
+ }
+ finally {
+ U.close(cfgStream, log);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(CacheHibernateBlobStore.class, this);
+ }
+
+ /**
+ * Serialize object to byte array using marshaller.
+ *
+ * @param obj Object to convert to byte array.
+ * @return Byte array.
+ * @throws IgniteCheckedException If failed to convert.
+ */
+ protected byte[] toBytes(Object obj) throws IgniteCheckedException {
+ return U.marshal(marsh, obj);
+ }
+
+ /**
+ * Deserialize object from byte array using marshaller.
+ *
+ * @param bytes Bytes to deserialize.
+ * @param <X> Result object type.
+ * @return Deserialized object.
+ * @throws IgniteCheckedException If failed.
+ */
+ protected <X> X fromBytes(byte[] bytes) throws IgniteCheckedException {
+ if (bytes == null || bytes.length == 0)
+ return null;
+
+ return U.unmarshal(marsh, bytes, getClass().getClassLoader());
+ }
+
+ /**
+ * @return Current transaction.
+ */
+ @Nullable private Transaction transaction() {
+ CacheStoreSession ses = session();
+
+ return ses != null ? ses.transaction() : null;
+ }
+
+ /**
+ * @return Store session.
+ */
+ private CacheStoreSession session() {
+ return ses;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.java
new file mode 100644
index 0000000..d40c5ef
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.java
@@ -0,0 +1,89 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.store.hibernate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+/**
+ * Entry that is used by {@link CacheHibernateBlobStore} implementation.
+ * <p>
+ * Note that this is a reference implementation for tests only.
+ * When running on production systems use concrete key-value types to
+ * get better performance.
+ */
+@Entity
+@Table(name = "ENTRIES")
+public class CacheHibernateBlobStoreEntry {
+ /** Key (use concrete key type in production). */
+ @Id
+ @Column(length = 65535)
+ private byte[] key;
+
+ /** Value (use concrete value type in production). */
+ @Column(length = 65535)
+ private byte[] val;
+
+ /**
+ * Constructor.
+ */
+ CacheHibernateBlobStoreEntry() {
+ // No-op.
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param key Key.
+ * @param val Value.
+ */
+ CacheHibernateBlobStoreEntry(byte[] key, byte[] val) {
+ this.key = key;
+ this.val = val;
+ }
+
+ /**
+ * @return Key.
+ */
+ public byte[] getKey() {
+ return key;
+ }
+
+ /**
+ * @param key Key.
+ */
+ public void setKey(byte[] key) {
+ this.key = key;
+ }
+
+ /**
+ * @return Value.
+ */
+ public byte[] getValue() {
+ return val;
+ }
+
+ /**
+ * @param val Value.
+ */
+ public void setValue(byte[] val) {
+ this.val = val;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreFactory.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreFactory.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreFactory.java
new file mode 100644
index 0000000..7e58f29
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreFactory.java
@@ -0,0 +1,235 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.store.hibernate;
+
+import java.util.Properties;
+import javax.cache.configuration.Factory;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.IgniteComponentType;
+import org.apache.ignite.internal.util.spring.IgniteSpringHelper;
+import org.apache.ignite.internal.util.tostring.GridToStringExclude;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.resources.SpringApplicationContextResource;
+import org.hibernate.SessionFactory;
+
+/**
+ * {@link Factory} implementation for {@link CacheHibernateBlobStore}.
+ *
+ * Use this factory to pass {@link CacheHibernateBlobStore} to {@link CacheConfiguration}.
+ *
+ * <h2 class="header">Java Example</h2>
+ * In this example existing session factory is provided.
+ * <pre name="code" class="java">
+ * ...
+ * CacheHibernateBlobStoreFactory<String, String> factory = new CacheHibernateBlobStoreFactory<String, String>();
+ *
+ * factory.setSessionFactory(sesFactory);
+ * ...
+ * </pre>
+ *
+ * <h2 class="header">Spring Example (using Spring ORM)</h2>
+ * <pre name="code" class="xml">
+ * ...
+ * <bean id="cache.hibernate.store.factory"
+ * class="org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreFactory">
+ * <property name="sessionFactory">
+ * <bean class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
+ * <property name="hibernateProperties">
+ * <value>
+ * connection.url=jdbc:h2:mem:
+ * show_sql=true
+ * hbm2ddl.auto=true
+ * hibernate.dialect=org.hibernate.dialect.H2Dialect
+ * </value>
+ * </property>
+ * <property name="mappingResources">
+ * <list>
+ * <value>
+ * org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.hbm.xml
+ * </value>
+ * </list>
+ * </property>
+ * </bean>
+ * </property>
+ * </bean>
+ * ...
+ * </pre>
+ *
+ * <h2 class="header">Spring Example (using Spring ORM and persistent annotations)</h2>
+ * <pre name="code" class="xml">
+ * ...
+ * <bean id="cache.hibernate.store.factory1"
+ * class="org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreFactory">
+ * <property name="sessionFactory">
+ * <bean class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
+ * <property name="hibernateProperties">
+ * <value>
+ * connection.url=jdbc:h2:mem:
+ * show_sql=true
+ * hbm2ddl.auto=true
+ * hibernate.dialect=org.hibernate.dialect.H2Dialect
+ * </value>
+ * </property>
+ * <property name="annotatedClasses">
+ * <list>
+ * <value>
+ * org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreEntry
+ * </value>
+ * </list>
+ * </property>
+ * </bean>
+ * </property>
+ * </bean>
+ * ...
+ * </pre>
+ *
+ * <h2 class="header">Spring Example</h2>
+ * <pre name="code" class="xml">
+ * ...
+ * <bean id="cache.hibernate.store.factory2"
+ * class="org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreFactory">
+ * <property name="hibernateProperties">
+ * <props>
+ * <prop key="connection.url">jdbc:h2:mem:</prop>
+ * <prop key="hbm2ddl.auto">update</prop>
+ * <prop key="show_sql">true</prop>
+ * </props>
+ * </property>
+ * </bean>
+ * ...
+ * </pre>
+ * <p>
+ * <img src="http://ignite.apache.org/images/spring-small.png">
+ * <br>
+ * For information about Spring framework visit <a href="http://www.springframework.org/">www.springframework.org</a>
+ */
+public class CacheHibernateBlobStoreFactory<K, V> implements Factory<CacheHibernateBlobStore<K, V>> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Session factory. */
+ @GridToStringExclude
+ private transient SessionFactory sesFactory;
+
+ /** Session factory bean name. */
+ private String sesFactoryBean;
+
+ /** Path to hibernate configuration file. */
+ private String hibernateCfgPath;
+
+ /** Hibernate properties. */
+ @GridToStringExclude
+ private Properties hibernateProps;
+
+ /** Application context. */
+ @SpringApplicationContextResource
+ private Object appCtx;
+
+ /** {@inheritDoc} */
+ @Override public CacheHibernateBlobStore<K, V> create() {
+ CacheHibernateBlobStore<K, V> store = new CacheHibernateBlobStore<>();
+
+ store.setHibernateConfigurationPath(hibernateCfgPath);
+ store.setHibernateProperties(hibernateProps);
+
+ if (sesFactory != null)
+ store.setSessionFactory(sesFactory);
+ else if (sesFactoryBean != null) {
+ if (appCtx == null)
+ throw new IgniteException("Spring application context resource is not injected.");
+
+ IgniteSpringHelper spring;
+
+ try {
+ spring = IgniteComponentType.SPRING.create(false);
+
+ SessionFactory sesFac = spring.loadBeanFromAppContext(appCtx, sesFactoryBean);
+
+ store.setSessionFactory(sesFac);
+ }
+ catch (IgniteCheckedException e) {
+ throw new IgniteException("Failed to load bean in application context [beanName=" + sesFactoryBean +
+ ", igniteConfig=" + appCtx + ']');
+ }
+ }
+
+ return store;
+ }
+
+ /**
+ * Sets session factory.
+ *
+ * @param sesFactory Session factory.
+ * @return {@code This} for chaining.
+ * @see CacheHibernateBlobStore#setSessionFactory(SessionFactory)
+ */
+ public CacheHibernateBlobStoreFactory<K, V> setSessionFactory(SessionFactory sesFactory) {
+ this.sesFactory = sesFactory;
+
+ return this;
+ }
+
+ /**
+ * Sets name of the data source bean.
+ *
+ * @param sesFactory Session factory bean name.
+ * @return {@code This} for chaining.
+ * @see CacheHibernateBlobStore#setSessionFactory(SessionFactory)
+ */
+ public CacheHibernateBlobStoreFactory<K, V> setSessionFactoryBean(String sesFactory) {
+ this.sesFactoryBean = sesFactory;
+
+ return this;
+ }
+
+ /**
+ * Sets hibernate configuration path.
+ * <p>
+ * This may be either URL or file path or classpath resource.
+ *
+ * @param hibernateCfgPath URL or file path or classpath resource
+ * pointing to hibernate configuration XML file.
+ * @return {@code This} for chaining.
+ * @see CacheHibernateBlobStore#setHibernateConfigurationPath(String)
+ */
+ public CacheHibernateBlobStoreFactory<K, V> setHibernateConfigurationPath(String hibernateCfgPath) {
+ this.hibernateCfgPath = hibernateCfgPath;
+
+ return this;
+ }
+
+ /**
+ * Sets Hibernate properties.
+ *
+ * @param hibernateProps Hibernate properties.
+ * @return {@code This} for chaining.
+ * @see CacheHibernateBlobStore#setHibernateProperties(Properties)
+ */
+ public CacheHibernateBlobStoreFactory<K, V> setHibernateProperties(Properties hibernateProps) {
+ this.hibernateProps = hibernateProps;
+
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(CacheHibernateBlobStoreFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreSessionListener.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreSessionListener.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreSessionListener.java
new file mode 100644
index 0000000..a63a437
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreSessionListener.java
@@ -0,0 +1,226 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.store.hibernate;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import javax.cache.integration.CacheWriterException;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.cache.store.CacheStore;
+import org.apache.ignite.cache.store.CacheStoreSession;
+import org.apache.ignite.cache.store.CacheStoreSessionListener;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lifecycle.LifecycleAware;
+import org.apache.ignite.resources.LoggerResource;
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.resource.transaction.spi.TransactionStatus;
+
+/**
+ * Hibernate-based cache store session listener.
+ * <p>
+ * This listener creates a new Hibernate session for each store
+ * session. If there is an ongoing cache transaction, a corresponding
+ * Hibernate transaction is created as well.
+ * <p>
+ * The Hibernate session is saved as a store session
+ * {@link CacheStoreSession#attachment() attachment}.
+ * The listener guarantees that the session will be
+ * available for any store operation. If there is an
+ * ongoing cache transaction, all operations within this
+ * transaction will share a DB transaction.
+ * <p>
+ * As an example, here is how the {@link CacheStore#write(javax.cache.Cache.Entry)}
+ * method can be implemented if {@link CacheHibernateStoreSessionListener}
+ * is configured:
+ * <pre name="code" class="java">
+ * private static class Store extends CacheStoreAdapter<Integer, Integer> {
+ * @CacheStoreSessionResource
+ * private CacheStoreSession ses;
+ *
+ * @Override public void write(Cache.Entry<? extends Integer, ? extends Integer> entry) throws CacheWriterException {
+ * // Get Hibernate session from the current store session.
+ * Session hibSes = ses.attachment();
+ *
+ * // Persist the value.
+ * hibSes.persist(entry.getValue());
+ * }
+ * }
+ * </pre>
+ * Hibernate session will be automatically created by the listener
+ * at the start of the session and closed when it ends.
+ * <p>
+ * {@link CacheHibernateStoreSessionListener} requires that either
+ * {@link #setSessionFactory(SessionFactory)} session factory}
+ * or {@link #setHibernateConfigurationPath(String) Hibernate configuration file}
+ * is provided. If non of them is set, exception is thrown. Is both are provided,
+ * session factory will be used.
+ */
+public class CacheHibernateStoreSessionListener implements CacheStoreSessionListener, LifecycleAware {
+ /** Hibernate session factory. */
+ private SessionFactory sesFactory;
+
+ /** Hibernate configuration file path. */
+ private String hibernateCfgPath;
+
+ /** Logger. */
+ @LoggerResource
+ private IgniteLogger log;
+
+ /** Whether to close session on stop. */
+ private boolean closeSesOnStop;
+
+ /**
+ * Sets Hibernate session factory.
+ * <p>
+ * Either session factory or configuration file is required.
+ * If none is provided, exception will be thrown on startup.
+ *
+ * @param sesFactory Session factory.
+ */
+ public void setSessionFactory(SessionFactory sesFactory) {
+ this.sesFactory = sesFactory;
+ }
+
+ /**
+ * Gets Hibernate session factory.
+ *
+ * @return Session factory.
+ */
+ public SessionFactory getSessionFactory() {
+ return sesFactory;
+ }
+
+ /**
+ * Sets hibernate configuration path.
+ * <p>
+ * Either session factory or configuration file is required.
+ * If none is provided, exception will be thrown on startup.
+ *
+ * @param hibernateCfgPath Hibernate configuration path.
+ */
+ public void setHibernateConfigurationPath(String hibernateCfgPath) {
+ this.hibernateCfgPath = hibernateCfgPath;
+ }
+
+ /**
+ * Gets hibernate configuration path.
+ *
+ * @return Hibernate configuration path.
+ */
+ public String getHibernateConfigurationPath() {
+ return hibernateCfgPath;
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("deprecation")
+ @Override public void start() throws IgniteException {
+ if (sesFactory == null && F.isEmpty(hibernateCfgPath)) {
+ throw new IgniteException("Either session factory or Hibernate configuration file is required by " +
+ getClass().getSimpleName() + '.');
+ }
+
+ if (!F.isEmpty(hibernateCfgPath)) {
+ if (sesFactory == null) {
+ try {
+ URL url = new URL(hibernateCfgPath);
+
+ sesFactory = new Configuration().configure(url).buildSessionFactory();
+ }
+ catch (MalformedURLException ex) {
+ log.warning("Exception on store listener start", ex);
+ }
+
+ if (sesFactory == null) {
+ File cfgFile = new File(hibernateCfgPath);
+
+ if (cfgFile.exists())
+ sesFactory = new Configuration().configure(cfgFile).buildSessionFactory();
+ }
+
+ if (sesFactory == null)
+ sesFactory = new Configuration().configure(hibernateCfgPath).buildSessionFactory();
+
+ if (sesFactory == null)
+ throw new IgniteException("Failed to resolve Hibernate configuration file: " + hibernateCfgPath);
+
+ closeSesOnStop = true;
+ }
+ else {
+ U.warn(log, "Hibernate configuration file configured in " + getClass().getSimpleName() +
+ " will be ignored (session factory is already set).");
+ }
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void stop() throws IgniteException {
+ if (closeSesOnStop && sesFactory != null && !sesFactory.isClosed())
+ sesFactory.close();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void onSessionStart(CacheStoreSession ses) {
+ if (ses.attachment() == null) {
+ try {
+ Session hibSes = sesFactory.openSession();
+
+ ses.attach(hibSes);
+
+ if (ses.isWithinTransaction())
+ hibSes.beginTransaction();
+ }
+ catch (HibernateException e) {
+ throw new CacheWriterException("Failed to start store session [tx=" + ses.transaction() + ']', e);
+ }
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void onSessionEnd(CacheStoreSession ses, boolean commit) {
+ Session hibSes = ses.attach(null);
+
+ if (hibSes != null) {
+ try {
+ Transaction tx = hibSes.getTransaction();
+
+ if (commit) {
+ if (hibSes.isDirty())
+ hibSes.flush();
+
+ if (tx.getStatus() == TransactionStatus.ACTIVE)
+ tx.commit();
+ }
+ else if (tx.getStatus().canRollback())
+ tx.rollback();
+ }
+ catch (HibernateException e) {
+ throw new CacheWriterException("Failed to end store session [tx=" + ses.transaction() + ']', e);
+ }
+ finally {
+ hibSes.close();
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/package-info.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/package-info.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/package-info.java
new file mode 100644
index 0000000..891d99a
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/store/hibernate/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Contains reference Hibernate-based cache store implementation.
+ */
+package org.apache.ignite.cache.store.hibernate;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/resources/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.hbm.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/resources/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.hbm.xml b/modules/hibernate-5.3/src/main/resources/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.hbm.xml
new file mode 100644
index 0000000..5b0be43
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/resources/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreEntry.hbm.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+
+
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.apache.ignite.examples.datagrid.store" default-access="field">
+ <class name="org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreEntry" table="ENTRIES">
+ <id name="key"/>
+
+ <property name="val"/>
+ </class>
+</hibernate-mapping>
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/config/factory-cache.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/config/factory-cache.xml b/modules/hibernate-5.3/src/test/config/factory-cache.xml
new file mode 100644
index 0000000..a251846
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/config/factory-cache.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="simpleSessionFactory"
+ class="org.apache.ignite.cache.store.hibernate.CacheHibernateStoreFactorySelfTest$DummySessionFactoryExt"/>
+
+ <bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
+ <property name="cacheConfiguration">
+ <list>
+ <bean class="org.apache.ignite.configuration.CacheConfiguration">
+ <property name="name" value="test"/>
+ <property name="atomicityMode" value="ATOMIC"/>
+ <property name="backups" value="1"/>
+ <property name="cacheStoreFactory">
+ <bean class="org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreFactory">
+ <property name="sessionFactoryBean" value = "simpleSessionFactory"/>
+ </bean>
+ </property>
+ </bean>
+ </list>
+ </property>
+
+ <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
+ <property name="discoverySpi">
+ <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
+ <property name="ipFinder">
+ <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
+ <property name="addresses">
+ <list>
+ <value>127.0.0.1:47500..47509</value>
+ </list>
+ </property>
+ </bean>
+ </property>
+ </bean>
+ </property>
+ </bean>
+</beans>
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/config/factory-cache1.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/config/factory-cache1.xml b/modules/hibernate-5.3/src/test/config/factory-cache1.xml
new file mode 100644
index 0000000..7a53b1f
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/config/factory-cache1.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="simpleSessionFactory1"
+ class="org.apache.ignite.cache.store.hibernate.CacheHibernateStoreFactorySelfTest$DummySessionFactory"/>
+
+ <bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
+ <property name="igniteInstanceName" value="ignite1"/>
+
+ <property name="cacheConfiguration">
+ <list>
+ <bean class="org.apache.ignite.configuration.CacheConfiguration">
+ <property name="name" value="test"/>
+ <property name="atomicityMode" value="ATOMIC"/>
+ <property name="backups" value="1"/>
+ <property name="cacheStoreFactory">
+ <bean class="org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreFactory">
+ <property name="sessionFactoryBean" value = "simpleSessionFactory1"/>
+ </bean>
+ </property>
+ </bean>
+ </list>
+ </property>
+
+ <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
+ <property name="discoverySpi">
+ <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
+ <property name="ipFinder">
+ <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
+ <property name="addresses">
+ <list>
+ <value>127.0.0.1:47500..47509</value>
+ </list>
+ </property>
+ </bean>
+ </property>
+ </bean>
+ </property>
+ </bean>
+</beans>
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/config/factory-incorrect-store-cache.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/config/factory-incorrect-store-cache.xml b/modules/hibernate-5.3/src/test/config/factory-incorrect-store-cache.xml
new file mode 100644
index 0000000..4de9fc9
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/config/factory-incorrect-store-cache.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
+ <property name="failureHandler">
+ <bean class="org.apache.ignite.failure.NoOpFailureHandler"/>
+ </property>
+
+ <property name="cacheConfiguration">
+ <list>
+ <bean class="org.apache.ignite.configuration.CacheConfiguration">
+ <property name="name" value="test"/>
+ <property name="atomicityMode" value="ATOMIC"/>
+ <property name="backups" value="1"/>
+ <property name="cacheStoreFactory">
+ <bean class="org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreFactory">
+ <property name="sessionFactoryBean" value = "simpleSessionFactory1"/>
+ </bean>
+ </property>
+ </bean>
+ </list>
+ </property>
+
+ <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
+ <property name="discoverySpi">
+ <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
+ <property name="ipFinder">
+ <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
+ <property name="addresses">
+ <list>
+ <value>127.0.0.1:47500..47509</value>
+ </list>
+ </property>
+ </bean>
+ </property>
+ </bean>
+ </property>
+ </bean>
+</beans>
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
new file mode 100644
index 0000000..a1f8ae0
--- /dev/null
+++ b/modules/hibernate-5.3/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
@@ -0,0 +1,409 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import javax.cache.Cache;
+import javax.persistence.Cacheable;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Root;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.processors.cache.IgniteCacheProxy;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.hibernate.cache.spi.access.AccessType;
+import org.hibernate.cfg.Configuration;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.REGION_CACHE_PROPERTY;
+import static org.hibernate.cache.spi.RegionFactory.DEFAULT_QUERY_RESULTS_REGION_UNQUALIFIED_NAME;
+import static org.hibernate.cache.spi.RegionFactory.DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME;
+import static org.hibernate.cfg.AvailableSettings.CACHE_REGION_FACTORY;
+import static org.hibernate.cfg.AvailableSettings.GENERATE_STATISTICS;
+import static org.hibernate.cfg.AvailableSettings.HBM2DDL_AUTO;
+import static org.hibernate.cfg.AvailableSettings.RELEASE_CONNECTIONS;
+import static org.hibernate.cfg.AvailableSettings.USE_QUERY_CACHE;
+import static org.hibernate.cfg.AvailableSettings.USE_SECOND_LEVEL_CACHE;
+
+/**
+ * Tests Hibernate L2 cache configuration.
+ */
+@RunWith(JUnit4.class)
+public class HibernateL2CacheConfigurationSelfTest extends GridCommonAbstractTest {
+ /** */
+ public static final String ENTITY1_NAME = Entity1.class.getName();
+
+ /** */
+ public static final String ENTITY2_NAME = Entity2.class.getName();
+
+ /** */
+ public static final String ENTITY3_NAME = Entity3.class.getName();
+
+ /** */
+ public static final String ENTITY4_NAME = Entity4.class.getName();
+
+ /** */
+ public static final String CONNECTION_URL = "jdbc:h2:mem:example;DB_CLOSE_DELAY=-1";
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ startGrid(0);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ stopAllGrids();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ for (IgniteCacheProxy<?, ?> cache : ((IgniteKernal)grid(0)).caches())
+ cache.clear();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
+
+ discoSpi.setIpFinder(new TcpDiscoveryVmIpFinder(true));
+
+ cfg.setDiscoverySpi(discoSpi);
+
+ cfg.setCacheConfiguration(cacheConfiguration(ENTITY3_NAME),
+ cacheConfiguration(ENTITY4_NAME),
+ cacheConfiguration("cache1"),
+ cacheConfiguration("cache2"),
+ cacheConfiguration("cache3"),
+ cacheConfiguration(DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME),
+ cacheConfiguration(DEFAULT_QUERY_RESULTS_REGION_UNQUALIFIED_NAME));
+
+ return cfg;
+ }
+
+ /**
+ * @param cacheName Cache name.
+ * @return Cache configuration.
+ */
+ private CacheConfiguration cacheConfiguration(String cacheName) {
+ CacheConfiguration cfg = new CacheConfiguration();
+
+ cfg.setName(cacheName);
+
+ cfg.setCacheMode(PARTITIONED);
+
+ cfg.setAtomicityMode(ATOMIC);
+
+ cfg.setStatisticsEnabled(true);
+
+ return cfg;
+ }
+ /**
+ * @param igniteInstanceName Ignite instance name.
+ * @return Hibernate configuration.
+ */
+ protected Configuration hibernateConfiguration(String igniteInstanceName) {
+ Configuration cfg = new Configuration();
+
+ cfg.addAnnotatedClass(Entity1.class);
+ cfg.addAnnotatedClass(Entity2.class);
+ cfg.addAnnotatedClass(Entity3.class);
+ cfg.addAnnotatedClass(Entity4.class);
+
+ cfg.setProperty(HibernateAccessStrategyFactory.DFLT_ACCESS_TYPE_PROPERTY, AccessType.NONSTRICT_READ_WRITE.name());
+
+ cfg.setProperty(HBM2DDL_AUTO, "create");
+
+ cfg.setProperty(GENERATE_STATISTICS, "true");
+
+ cfg.setProperty(USE_SECOND_LEVEL_CACHE, "true");
+
+ cfg.setProperty(USE_QUERY_CACHE, "true");
+
+ cfg.setProperty(CACHE_REGION_FACTORY, HibernateRegionFactory.class.getName());
+
+ cfg.setProperty(RELEASE_CONNECTIONS, "on_close");
+
+ cfg.setProperty(HibernateAccessStrategyFactory.IGNITE_INSTANCE_NAME_PROPERTY, igniteInstanceName);
+
+ cfg.setProperty(REGION_CACHE_PROPERTY + ENTITY1_NAME, "cache1");
+ cfg.setProperty(REGION_CACHE_PROPERTY + ENTITY2_NAME, "cache2");
+ cfg.setProperty(REGION_CACHE_PROPERTY + DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME, DEFAULT_UPDATE_TIMESTAMPS_REGION_UNQUALIFIED_NAME);
+ cfg.setProperty(REGION_CACHE_PROPERTY + DEFAULT_QUERY_RESULTS_REGION_UNQUALIFIED_NAME, DEFAULT_QUERY_RESULTS_REGION_UNQUALIFIED_NAME);
+
+ return cfg;
+ }
+
+ /**
+ * Tests property {@link HibernateAccessStrategyFactory#REGION_CACHE_PROPERTY}.
+ */
+ @Test
+ public void testPerRegionCacheProperty() {
+ testCacheUsage(1, 1, 0, 1, 1);
+ }
+
+ /**
+ * @param expCache1 Expected size of cache with name 'cache1'.
+ * @param expCache2 Expected size of cache with name 'cache2'.
+ * @param expCache3 Expected size of cache with name 'cache3'.
+ * @param expCacheE3 Expected size of cache with name {@link #ENTITY3_NAME}.
+ * @param expCacheE4 Expected size of cache with name {@link #ENTITY4_NAME}.
+ */
+ @SuppressWarnings("unchecked")
+ private void testCacheUsage(int expCache1, int expCache2, int expCache3, int expCacheE3, int expCacheE4) {
+ SessionFactory sesFactory = startHibernate(getTestIgniteInstanceName(0));
+
+ try {
+ Session ses = sesFactory.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ ses.save(new Entity1());
+ ses.save(new Entity2());
+ ses.save(new Entity3());
+ ses.save(new Entity4());
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+
+ ses = sesFactory.openSession();
+
+ try {
+ List<Entity1> list1 = getResultsList(ses, Entity1.class);
+
+ assertEquals(1, list1.size());
+
+ for (Entity1 e : list1) {
+ ses.load(ENTITY1_NAME, e.getId());
+ assertNotNull(e.getId());
+ }
+
+ List<Entity2> list2 = getResultsList(ses, Entity2.class);
+
+ assertEquals(1, list2.size());
+
+ for (Entity2 e : list2)
+ assertNotNull(e.getId());
+
+ List<Entity3> list3 = getResultsList(ses, Entity3.class);
+
+ assertEquals(1, list3.size());
+
+ for (Entity3 e : list3)
+ assertNotNull(e.getId());
+
+ List<Entity4> list4 = getResultsList(ses, Entity4.class);
+
+ assertEquals(1, list4.size());
+
+ for (Entity4 e : list4)
+ assertNotNull(e.getId());
+ }
+ finally {
+ ses.close();
+ }
+
+ IgniteCache<Object, Object> cache1 = grid(0).cache("cache1");
+ IgniteCache<Object, Object> cache2 = grid(0).cache("cache2");
+ IgniteCache<Object, Object> cache3 = grid(0).cache("cache3");
+ IgniteCache<Object, Object> cacheE3 = grid(0).cache(ENTITY3_NAME);
+ IgniteCache<Object, Object> cacheE4 = grid(0).cache(ENTITY4_NAME);
+
+ assertEquals("Unexpected entries: " + toSet(cache1.iterator()), expCache1, cache1.size());
+ assertEquals("Unexpected entries: " + toSet(cache2.iterator()), expCache2, cache2.size());
+ assertEquals("Unexpected entries: " + toSet(cache3.iterator()), expCache3, cache3.size());
+ assertEquals("Unexpected entries: " + toSet(cacheE3.iterator()), expCacheE3, cacheE3.size());
+ assertEquals("Unexpected entries: " + toSet(cacheE4.iterator()), expCacheE4, cacheE4.size());
+ }
+ finally {
+ sesFactory.close();
+ }
+ }
+
+ private <T> List<T> getResultsList(Session ses, Class<T> entityClass) {
+ CriteriaBuilder builder = ses.getCriteriaBuilder();
+ CriteriaQuery<T> query = builder.createQuery(entityClass);
+ Root<T> root = query.from(entityClass);
+ query.select(root);
+ return ses.createQuery(query).getResultList();
+ }
+
+ /**
+ *
+ */
+ private <K, V> Set<Cache.Entry<K, V>> toSet(Iterator<Cache.Entry<K, V>> iter){
+ Set<Cache.Entry<K, V>> set = new HashSet<>();
+
+ while (iter.hasNext())
+ set.add(iter.next());
+
+ return set;
+ }
+
+ /**
+ * @param igniteInstanceName Name of the grid providing caches.
+ * @return Session factory.
+ */
+ private SessionFactory startHibernate(String igniteInstanceName) {
+ Configuration cfg = hibernateConfiguration(igniteInstanceName);
+
+ StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
+
+ builder.applySetting("hibernate.connection.url", CONNECTION_URL);
+ builder.applySetting("hibernate.show_sql", false);
+ builder.applySettings(cfg.getProperties());
+
+ return cfg.buildSessionFactory(builder.build());
+ }
+
+ /**
+ * Test Hibernate entity1.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ @Cacheable
+ @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
+ public static class Entity1 {
+ /** */
+ private int id;
+
+ /**
+ * @return ID.
+ */
+ @Id
+ @GeneratedValue
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+ }
+
+ /**
+ * Test Hibernate entity2.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ @Cacheable
+ @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
+ public static class Entity2 {
+ /** */
+ private int id;
+
+ /**
+ * @return ID.
+ */
+ @Id
+ @GeneratedValue
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+ }
+
+ /**
+ * Test Hibernate entity3.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ @Cacheable
+ @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
+ public static class Entity3 {
+ /** */
+ private int id;
+
+ /**
+ * @return ID.
+ */
+ @Id
+ @GeneratedValue
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+ }
+
+ /**
+ * Test Hibernate entity4.
+ */
+ @javax.persistence.Entity
+ @SuppressWarnings({"PublicInnerClass", "UnnecessaryFullyQualifiedName"})
+ @Cacheable
+ @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
+ public static class Entity4 {
+ /** */
+ private int id;
+
+ /**
+ * @return ID.
+ */
+ @Id
+ @GeneratedValue
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id ID.
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+ }
+}
[19/52] [abbrv] ignite git commit: IGNITE-9747: [ML] Add Bernoulli
Naive Bayes classifier
Posted by sb...@apache.org.
IGNITE-9747: [ML] Add Bernoulli Naive Bayes classifier
This closes #5204
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/00af5e62
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/00af5e62
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/00af5e62
Branch: refs/heads/ignite-627
Commit: 00af5e62ac7d35ada714ef81d2b7a19d43bb36af
Parents: 32f564c
Author: Ravil Galeyev <de...@yandex.ru>
Authored: Tue Dec 18 15:49:06 2018 +0300
Committer: Yury Babak <yb...@gridgain.com>
Committed: Tue Dec 18 15:49:06 2018 +0300
----------------------------------------------------------------------
.../DiscreteNaiveBayesTrainerExample.java | 115 +++++++++
.../discrete/DiscreteNaiveBayesModel.java | 127 ++++++++++
.../discrete/DiscreteNaiveBayesSumsHolder.java | 54 +++++
.../discrete/DiscreteNaiveBayesTrainer.java | 233 +++++++++++++++++++
.../ml/naivebayes/discrete/package-info.java | 22 ++
.../ignite/ml/util/MLSandboxDatasets.java | 5 +-
.../english_vs_scottish_binary_dataset.csv | 14 ++
.../discrete/DiscreteNaiveBayesModelTest.java | 45 ++++
.../discrete/DiscreteNaiveBayesTest.java | 67 ++++++
.../discrete/DiscreteNaiveBayesTrainerTest.java | 185 +++++++++++++++
10 files changed, 866 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/00af5e62/examples/src/main/java/org/apache/ignite/examples/ml/naivebayes/DiscreteNaiveBayesTrainerExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ml/naivebayes/DiscreteNaiveBayesTrainerExample.java b/examples/src/main/java/org/apache/ignite/examples/ml/naivebayes/DiscreteNaiveBayesTrainerExample.java
new file mode 100644
index 0000000..5af3f69
--- /dev/null
+++ b/examples/src/main/java/org/apache/ignite/examples/ml/naivebayes/DiscreteNaiveBayesTrainerExample.java
@@ -0,0 +1,115 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.examples.ml.naivebayes;
+
+import java.io.FileNotFoundException;
+import java.util.Arrays;
+import javax.cache.Cache;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.query.QueryCursor;
+import org.apache.ignite.cache.query.ScanQuery;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.naivebayes.discrete.DiscreteNaiveBayesModel;
+import org.apache.ignite.ml.naivebayes.discrete.DiscreteNaiveBayesTrainer;
+import org.apache.ignite.ml.util.MLSandboxDatasets;
+import org.apache.ignite.ml.util.SandboxMLCache;
+
+/**
+ * Run naive Bayes classification model based on <a href=https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Multinomial_naive_Bayes">
+ * naive Bayes classifier</a> algorithm ({@link DiscreteNaiveBayesTrainer}) over distributed cache.
+ * <p>
+ * Code in this example launches Ignite grid and fills the cache with test data points.
+ * </p>
+ * <p>
+ * After that it trains the Discrete naive Bayes classification model based on the specified data.</p>
+ * <p>
+ * Finally, this example loops over the test set of data points, applies the trained model to predict the target value,
+ * compares prediction to expected outcome (ground truth), and builds
+ * <a href="https://en.wikipedia.org/wiki/Confusion_matrix">confusion matrix</a>.</p>
+ * <p>
+ * You can change the test data used in this example and re-run it to explore this algorithm further.</p>
+ */
+public class DiscreteNaiveBayesTrainerExample {
+ /** Run example. */
+ public static void main(String[] args) throws FileNotFoundException {
+ System.out.println();
+ System.out.println(">>> Discrete naive Bayes classification model over partitioned dataset usage example started.");
+ // Start ignite grid.
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println(">>> Ignite grid started.");
+
+ IgniteCache<Integer, Vector> dataCache = new SandboxMLCache(ignite)
+ .fillCacheWith(MLSandboxDatasets.ENGLISH_VS_SCOTTISH);
+
+ double[][] thresholds = new double[][] {{.5}, {.5}, {.5}, {.5}, {.5}};
+ System.out.println(">>> Create new Discrete naive Bayes classification trainer object.");
+ DiscreteNaiveBayesTrainer trainer = new DiscreteNaiveBayesTrainer()
+ .setBucketThresholds(thresholds);
+
+ System.out.println(">>> Perform the training to get the model.");
+ DiscreteNaiveBayesModel mdl = trainer.fit(
+ ignite,
+ dataCache,
+ (k, v) -> v.copyOfRange(1, v.size()),
+ (k, v) -> v.get(0)
+ );
+
+ System.out.println(">>> Discrete Naive Bayes model: " + mdl);
+
+ int amountOfErrors = 0;
+ int totalAmount = 0;
+
+ // Build confusion matrix. See https://en.wikipedia.org/wiki/Confusion_matrix
+ int[][] confusionMtx = {{0, 0}, {0, 0}};
+
+ try (QueryCursor<Cache.Entry<Integer, Vector>> observations = dataCache.query(new ScanQuery<>())) {
+ for (Cache.Entry<Integer, Vector> observation : observations) {
+ Vector val = observation.getValue();
+ Vector inputs = val.copyOfRange(1, val.size());
+ double groundTruth = val.get(0);
+
+ double prediction = mdl.apply(inputs);
+
+ totalAmount++;
+ if (groundTruth != prediction)
+ amountOfErrors++;
+
+ int idx1 = (int)prediction;
+ int idx2 = (int)groundTruth;
+
+ confusionMtx[idx1][idx2]++;
+
+ System.out.printf(">>> | %.4f\t\t| %.4f\t\t|\n", prediction, groundTruth);
+ }
+
+ System.out.println(">>> ---------------------------------");
+
+ System.out.println("\n>>> Absolute amount of errors " + amountOfErrors);
+ System.out.println("\n>>> Accuracy " + (1 - amountOfErrors / (double)totalAmount));
+ }
+
+ System.out.println("\n>>> Confusion matrix is " + Arrays.deepToString(confusionMtx));
+ System.out.println(">>> ---------------------------------");
+
+ System.out.println(">>> Discrete Naive bayes model over partitioned dataset usage example completed.");
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/00af5e62/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesModel.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesModel.java b/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesModel.java
new file mode 100644
index 0000000..7ab2957
--- /dev/null
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesModel.java
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.naivebayes.discrete;
+
+import java.io.Serializable;
+import org.apache.ignite.ml.Exportable;
+import org.apache.ignite.ml.Exporter;
+import org.apache.ignite.ml.Model;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+
+/**
+ * Discrete naive Bayes model which predicts result value {@code y} belongs to a class {@code C_k, k in [0..K]} as
+ * {@code p(C_k,y) =x_1*p_k1^x *...*x_i*p_ki^x_i}. Where {@code x_i} is a discrete feature, {@code p_ki} is a prior
+ * probability probability of class {@code p(x|C_k)}. Returns the number of the most possible class.
+ */
+public class DiscreteNaiveBayesModel implements Model<Vector, Double>, Exportable<DiscreteNaiveBayesModel>, Serializable {
+ /** */
+ private static final long serialVersionUID = -127386523291350345L;
+ /**
+ * Probabilities of features for all classes for each label. {@code labels[c][f][b]} contains a probability for
+ * class {@code c} for feature {@code f} for bucket {@code b}.
+ */
+ private final double[][][] probabilities;
+ /** Prior probabilities of each class */
+ private final double[] clsProbabilities;
+ /** Labels. */
+ private final double[] labels;
+ /**
+ * The bucket thresholds to convert a features to discrete values. {@code bucketThresholds[f][b]} contains the right
+ * border for feature {@code f} for bucket {@code b}. Everything which is above the last thresdold goes to the next
+ * bucket.
+ */
+ private final double[][] bucketThresholds;
+ /** Amount values in each buckek for each feature per label. */
+ private final DiscreteNaiveBayesSumsHolder sumsHolder;
+
+ /**
+ * @param probabilities Probabilities of features for classes.
+ * @param clsProbabilities Prior probabilities for classes.
+ * @param bucketThresholds The threshold to convert a feature to a binary value.
+ * @param sumsHolder Amount values which are abouve the threshold per label.
+ * @param labels Labels.
+ */
+ public DiscreteNaiveBayesModel(double[][][] probabilities, double[] clsProbabilities, double[] labels,
+ double[][] bucketThresholds, DiscreteNaiveBayesSumsHolder sumsHolder) {
+ this.probabilities = probabilities;
+ this.clsProbabilities = clsProbabilities;
+ this.labels = labels;
+ this.bucketThresholds = bucketThresholds;
+ this.sumsHolder = sumsHolder;
+ }
+
+ /** {@inheritDoc} */
+ @Override public <P> void saveModel(Exporter<DiscreteNaiveBayesModel, P> exporter, P path) {
+ exporter.save(this, path);
+ }
+
+ /**
+ * @param vector features vector.
+ * @return a label with max probability.
+ */
+ @Override public Double apply(Vector vector) {
+ double maxProbapilityPower = -Double.MAX_VALUE;
+ int maxLabelIndex = -1;
+
+ for (int i = 0; i < clsProbabilities.length; i++) {
+ double probabilityPower = Math.log(clsProbabilities[i]);
+
+ for (int j = 0; j < probabilities[0].length; j++) {
+ int x = toBucketNumber(vector.get(j), bucketThresholds[j]);
+ double p = probabilities[i][j][x];
+ probabilityPower += (p > 0 ? Math.log(p) : .0);
+ }
+
+ if (probabilityPower > maxProbapilityPower) {
+ maxLabelIndex = i;
+ maxProbapilityPower = probabilityPower;
+ }
+ }
+ return labels[maxLabelIndex];
+ }
+
+ /** */
+ public double[][][] getProbabilities() {
+ return probabilities;
+ }
+
+ /** */
+ public double[] getClsProbabilities() {
+ return clsProbabilities;
+ }
+
+ /** */
+ public double[][] getBucketThresholds() {
+ return bucketThresholds;
+ }
+
+ /** */
+ public DiscreteNaiveBayesSumsHolder getSumsHolder() {
+ return sumsHolder;
+ }
+
+ /** Returs a bucket number to which the {@code value} corresponds. */
+ private int toBucketNumber(double val, double[] thresholds) {
+ for (int i = 0; i < thresholds.length; i++) {
+ if (val < thresholds[i])
+ return i;
+ }
+
+ return thresholds.length;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/00af5e62/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesSumsHolder.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesSumsHolder.java b/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesSumsHolder.java
new file mode 100644
index 0000000..61ac692
--- /dev/null
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesSumsHolder.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.ignite.ml.naivebayes.discrete;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.ignite.ml.math.util.MapUtil;
+
+/** Service class is used to calculate amount of values which are below the threshold. */
+public class DiscreteNaiveBayesSumsHolder implements AutoCloseable, Serializable {
+ /** Serial version uid. */
+ private static final long serialVersionUID = -2059362365851744206L;
+ /** Sums of values correspones to a particular bucket for all features for each label */
+ Map<Double, long[][]> valuesInBucketPerLbl = new HashMap<>();
+ /** Rows count for each label */
+ Map<Double, Integer> featureCountersPerLbl = new HashMap<>();
+
+ /** Merge to current */
+ DiscreteNaiveBayesSumsHolder merge(DiscreteNaiveBayesSumsHolder other) {
+ valuesInBucketPerLbl = MapUtil.mergeMaps(valuesInBucketPerLbl, other.valuesInBucketPerLbl, this::sum, HashMap::new);
+ featureCountersPerLbl = MapUtil.mergeMaps(featureCountersPerLbl, other.featureCountersPerLbl, (i1, i2) -> i1 + i2, HashMap::new);
+ return this;
+ }
+
+ /** In-place operation. Sums {@code arr2} to {@code arr1} element to element. */
+ private long[][] sum(long[][] arr1, long[][] arr2) {
+ for (int i = 0; i < arr1.length; i++) {
+ for (int j = 0; j < arr1[i].length; j++)
+ arr1[i][j] += arr2[i][j];
+ }
+
+ return arr1;
+ }
+
+ /** */
+ @Override public void close() {
+ // Do nothing, GC will clean up.
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/00af5e62/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTrainer.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTrainer.java b/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTrainer.java
new file mode 100644
index 0000000..0779b84
--- /dev/null
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTrainer.java
@@ -0,0 +1,233 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.naivebayes.discrete;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import org.apache.ignite.ml.dataset.Dataset;
+import org.apache.ignite.ml.dataset.DatasetBuilder;
+import org.apache.ignite.ml.dataset.UpstreamEntry;
+import org.apache.ignite.ml.dataset.primitive.context.EmptyContext;
+import org.apache.ignite.ml.math.functions.IgniteBiFunction;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.trainers.SingleLabelDatasetTrainer;
+
+/**
+ * Trainer for the Discrete naive Bayes classification model. The trainer calculates prior probabilities from the input
+ * dataset. Prior probabilities can be also set by {@code setPriorProbabilities} or {@code withEquiprobableClasses}. If
+ * {@code equiprobableClasses} is set, the probalilities of all classes will be {@code 1/k}, where {@code k} is classes
+ * count. Also, the trainer converts feature to discrete values by using {@code bucketThresholds}.
+ */
+public class DiscreteNaiveBayesTrainer extends SingleLabelDatasetTrainer<DiscreteNaiveBayesModel> {
+ /** Precision to compare bucketThresholds. */
+ private static final double PRECISION = 1e-10;
+ /* Preset prior probabilities. */
+ private double[] priorProbabilities;
+ /* Sets equivalent probability for all classes. */
+ private boolean equiprobableClasses;
+ /** The threshold to convert a feature to a discrete value. */
+ private double[][] bucketThresholds;
+
+ /**
+ * Trains model based on the specified data.
+ *
+ * @param datasetBuilder Dataset builder.
+ * @param featureExtractor Feature extractor.
+ * @param lbExtractor Label extractor.
+ * @return Model.
+ */
+ @Override public <K, V> DiscreteNaiveBayesModel fit(DatasetBuilder<K, V> datasetBuilder,
+ IgniteBiFunction<K, V, Vector> featureExtractor, IgniteBiFunction<K, V, Double> lbExtractor) {
+ return updateModel(null, datasetBuilder, featureExtractor, lbExtractor);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected boolean checkState(DiscreteNaiveBayesModel mdl) {
+ if (mdl.getBucketThresholds().length != bucketThresholds.length)
+ return false;
+
+ for (int i = 0; i < bucketThresholds.length; i++) {
+ for (int j = 0; i < bucketThresholds[i].length; i++) {
+ if (Math.abs(mdl.getBucketThresholds()[i][j] - bucketThresholds[i][j]) > PRECISION)
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected <K, V> DiscreteNaiveBayesModel updateModel(DiscreteNaiveBayesModel mdl,
+ DatasetBuilder<K, V> datasetBuilder, IgniteBiFunction<K, V, Vector> featureExtractor,
+ IgniteBiFunction<K, V, Double> lbExtractor) {
+
+ try (Dataset<EmptyContext, DiscreteNaiveBayesSumsHolder> dataset = datasetBuilder.build(
+ envBuilder,
+ (env, upstream, upstreamSize) -> new EmptyContext(),
+ (env, upstream, upstreamSize, ctx) -> {
+ DiscreteNaiveBayesSumsHolder res = new DiscreteNaiveBayesSumsHolder();
+ while (upstream.hasNext()) {
+ UpstreamEntry<K, V> entity = upstream.next();
+
+ Vector features = featureExtractor.apply(entity.getKey(), entity.getValue());
+ Double lb = lbExtractor.apply(entity.getKey(), entity.getValue());
+
+ long[][] valuesInBucket;
+
+ int size = features.size();
+ if (!res.valuesInBucketPerLbl.containsKey(lb)) {
+ valuesInBucket = new long[size][];
+ for (int i = 0; i < size; i++) {
+ valuesInBucket[i] = new long[bucketThresholds[i].length + 1];
+ Arrays.fill(valuesInBucket[i], 0L);
+ }
+ res.valuesInBucketPerLbl.put(lb, valuesInBucket);
+ }
+
+ if (!res.featureCountersPerLbl.containsKey(lb))
+ res.featureCountersPerLbl.put(lb, 0);
+
+ res.featureCountersPerLbl.put(lb, res.featureCountersPerLbl.get(lb) + 1);
+
+ valuesInBucket = res.valuesInBucketPerLbl.get(lb);
+
+ for (int j = 0; j < size; j++) {
+ double x = features.get(j);
+ int bucketNum = toBucketNumber(x, bucketThresholds[j]);
+ valuesInBucket[j][bucketNum] += 1;
+ }
+ }
+ return res;
+ })) {
+ DiscreteNaiveBayesSumsHolder sumsHolder = dataset.compute(t -> t, (a, b) -> {
+ if (a == null)
+ return b == null ? new DiscreteNaiveBayesSumsHolder() : b;
+ if (b == null)
+ return a;
+ return a.merge(b);
+ });
+
+ if (mdl != null && checkState(mdl)) {
+ if (checkSumsHolder(sumsHolder, mdl.getSumsHolder()))
+ sumsHolder = sumsHolder.merge(mdl.getSumsHolder());
+ }
+
+ List<Double> sortedLabels = new ArrayList<>(sumsHolder.featureCountersPerLbl.keySet());
+ sortedLabels.sort(Double::compareTo);
+ assert !sortedLabels.isEmpty() : "The dataset should contain at least one feature";
+
+ int lbCnt = sortedLabels.size();
+ int featureCnt = sumsHolder.valuesInBucketPerLbl.get(sortedLabels.get(0)).length;
+
+ double[][][] probabilities = new double[lbCnt][featureCnt][];
+ double[] classProbabilities = new double[lbCnt];
+ double[] labels = new double[lbCnt];
+ long datasetSize = sumsHolder.featureCountersPerLbl.values().stream().mapToInt(i -> i).sum();
+
+ int lbl = 0;
+
+ for (Double label : sortedLabels) {
+ int cnt = sumsHolder.featureCountersPerLbl.get(label);
+ long[][] sum = sumsHolder.valuesInBucketPerLbl.get(label);
+
+ for (int i = 0; i < featureCnt; i++) {
+
+ int bucketsCnt = sum[i].length;
+ probabilities[lbl][i] = new double[bucketsCnt];
+
+ for (int j = 0; j < bucketsCnt; j++)
+ probabilities[lbl][i][j] = (double)sum[i][j] / cnt;
+ }
+
+ if (equiprobableClasses)
+ classProbabilities[lbl] = 1. / lbCnt;
+ else if (priorProbabilities != null) {
+ assert classProbabilities.length == priorProbabilities.length;
+ classProbabilities[lbl] = priorProbabilities[lbl];
+ }
+ else
+ classProbabilities[lbl] = (double)cnt / datasetSize;
+
+ labels[lbl] = label;
+ ++lbl;
+ }
+ return new DiscreteNaiveBayesModel(probabilities, classProbabilities, labels, bucketThresholds, sumsHolder);
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ /** Checks that two {@code DiscreteNaiveBayesSumsHolder} contain the same lengths of future vectors. */
+ private boolean checkSumsHolder(DiscreteNaiveBayesSumsHolder holder1, DiscreteNaiveBayesSumsHolder holder2) {
+ if (holder1 == null || holder2 == null)
+ return false;
+
+ Optional<long[][]> optionalFirst = holder1.valuesInBucketPerLbl.values().stream().findFirst();
+ Optional<long[][]> optionalSecond = holder2.valuesInBucketPerLbl.values().stream().findFirst();
+
+ if (optionalFirst.isPresent()) {
+ if (optionalSecond.isPresent())
+ return optionalFirst.get().length == optionalSecond.get().length;
+ else
+ return false;
+ }
+ else
+ return !optionalSecond.isPresent();
+ }
+
+ /** Sets equal probability for all classes. */
+ public DiscreteNaiveBayesTrainer withEquiprobableClasses() {
+ resetProbabilitiesSettings();
+ equiprobableClasses = true;
+ return this;
+ }
+
+ /** Sets prior probabilities. */
+ public DiscreteNaiveBayesTrainer setPriorProbabilities(double[] priorProbabilities) {
+ resetProbabilitiesSettings();
+ this.priorProbabilities = priorProbabilities.clone();
+ return this;
+ }
+
+ /** Sets buckest borders. */
+ public DiscreteNaiveBayesTrainer setBucketThresholds(double[][] bucketThresholds) {
+ this.bucketThresholds = bucketThresholds;
+ return this;
+ }
+
+ /** Sets default settings {@code equiprobableClasses} to {@code false} and removes priorProbabilities. */
+ public DiscreteNaiveBayesTrainer resetProbabilitiesSettings() {
+ equiprobableClasses = false;
+ priorProbabilities = null;
+ return this;
+ }
+
+ /** Returs a bucket number to which the {@code value} corresponds. */
+ private int toBucketNumber(double val, double[] thresholds) {
+ for (int i = 0; i < thresholds.length; i++) {
+ if (val < thresholds[i])
+ return i;
+ }
+
+ return thresholds.length;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/00af5e62/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/package-info.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/package-info.java b/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/package-info.java
new file mode 100644
index 0000000..092d22d
--- /dev/null
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/naivebayes/discrete/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Contains Bernoulli naive Bayes classifier.
+ */
+package org.apache.ignite.ml.naivebayes.discrete;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/00af5e62/modules/ml/src/main/java/org/apache/ignite/ml/util/MLSandboxDatasets.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/util/MLSandboxDatasets.java b/modules/ml/src/main/java/org/apache/ignite/ml/util/MLSandboxDatasets.java
index 84ae8f6..b8d5fb4 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/util/MLSandboxDatasets.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/util/MLSandboxDatasets.java
@@ -50,7 +50,10 @@ public enum MLSandboxDatasets {
WINE_RECOGNITION("modules/ml/src/main/resources/datasets/wine.txt", false, ","),
/** The Boston house-prices dataset. Could be found <a href="https://archive.ics.uci.edu/ml/machine-learning-databases/housing/">here</a>. */
- BOSTON_HOUSE_PRICES("modules/ml/src/main/resources/datasets/boston_housing_dataset.txt", false, ",");
+ BOSTON_HOUSE_PRICES("modules/ml/src/main/resources/datasets/boston_housing_dataset.txt", false, ","),
+
+ /** Example from book Barber D. Bayesian reasoning and machine learning. Chapter 10. */
+ ENGLISH_VS_SCOTTISH("modules/ml/src/main/resources/datasets/english_vs_scottish_binary_dataset.csv", true, ",");
/** Filename. */
private final String filename;
http://git-wip-us.apache.org/repos/asf/ignite/blob/00af5e62/modules/ml/src/main/resources/datasets/english_vs_scottish_binary_dataset.csv
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/resources/datasets/english_vs_scottish_binary_dataset.csv b/modules/ml/src/main/resources/datasets/english_vs_scottish_binary_dataset.csv
new file mode 100644
index 0000000..0fa0f8b
--- /dev/null
+++ b/modules/ml/src/main/resources/datasets/english_vs_scottish_binary_dataset.csv
@@ -0,0 +1,14 @@
+english, shortbread, lager, whiskey, porridge, football
+1, 0, 0, 1, 1, 1
+1, 1, 0, 1, 1, 0
+1, 1, 1, 0, 0, 1
+1, 1, 1, 0, 0, 0
+1, 0, 1, 0, 0, 1
+1, 0, 0, 0, 1, 0
+0, 1, 0, 0, 1, 1
+0, 1, 1, 0, 0, 1
+0, 1, 1, 1, 1, 0
+0, 1, 1, 0, 1, 0
+0, 1, 1, 0, 1, 1
+0, 1, 0, 1, 1, 0
+0, 1, 0, 1, 0, 0
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/00af5e62/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesModelTest.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesModelTest.java b/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesModelTest.java
new file mode 100644
index 0000000..f6b947b
--- /dev/null
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesModelTest.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.naivebayes.discrete;
+
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.math.primitives.vector.VectorUtils;
+import org.junit.Assert;
+import org.junit.Test;
+
+/** Tests for {@code DiscreteNaiveBayesModel} */
+public class DiscreteNaiveBayesModelTest {
+ /** */
+ @Test
+ public void testPredictWithTwoClasses() {
+ double first = 1;
+ double second = 2;
+ double[][][] probabilities = new double[][][] {
+ {{.5, .5}, {.2, .3, .5}, {2. / 3., 1. / 3.}, {.4, .1, .5}, {.5, .5}},
+ {{0, 1}, {1. / 7, 2. / 7, 4. / 7}, {4. / 7, 3. / 7}, {2. / 7, 3. / 7, 2. / 7}, {4. / 7, 3. / 7,}}
+ };
+
+ double[] classProbabilities = new double[] {6. / 13, 7. / 13};
+ double[][] thresholds = new double[][] {{.5}, {.2, .7}, {.5}, {.5, 1.5}, {.5}};
+ DiscreteNaiveBayesModel mdl = new DiscreteNaiveBayesModel(probabilities, classProbabilities, new double[] {first, second}, thresholds, new DiscreteNaiveBayesSumsHolder());
+ Vector observation = VectorUtils.of(2, 0, 1, 2, 0);
+
+ Assert.assertEquals(second, mdl.apply(observation), 0.0001);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/00af5e62/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTest.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTest.java b/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTest.java
new file mode 100644
index 0000000..25fb37b
--- /dev/null
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTest.java
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.naivebayes.discrete;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.ignite.ml.dataset.impl.local.LocalDatasetBuilder;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.math.primitives.vector.VectorUtils;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Integration tests for Bernoulli naive Bayes algorithm with different datasets.
+ */
+public class DiscreteNaiveBayesTest {
+ /** Precision in test checks. */
+ private static final double PRECISION = 1e-2;
+
+ /** Example from book Barber D. Bayesian reasoning and machine learning. Chapter 10. */
+ @Test
+ public void testLearnsAndPredictCorrently() {
+ double english = 1.;
+ double scottish = 2.;
+ Map<Integer, double[]> data = new HashMap<>();
+ data.put(0, new double[] {0, 0, 1, 1, 1, english});
+ data.put(1, new double[] {1, 0, 1, 1, 0, english});
+ data.put(2, new double[] {1, 1, 0, 0, 1, english});
+ data.put(3, new double[] {1, 1, 0, 0, 0, english});
+ data.put(4, new double[] {0, 1, 0, 0, 1, english});
+ data.put(5, new double[] {0, 0, 0, 1, 0, english});
+ data.put(6, new double[] {1, 0, 0, 1, 1, scottish});
+ data.put(7, new double[] {1, 1, 0, 0, 1, scottish});
+ data.put(8, new double[] {1, 1, 1, 1, 0, scottish});
+ data.put(9, new double[] {1, 1, 0, 1, 0, scottish});
+ data.put(10, new double[] {1, 1, 0, 1, 1, scottish});
+ data.put(11, new double[] {1, 0, 1, 1, 0, scottish});
+ data.put(12, new double[] {1, 0, 1, 0, 0, scottish});
+ double[][] thresholds = new double[][] {{.5}, {.5}, {.5}, {.5}, {.5}};
+ DiscreteNaiveBayesTrainer trainer = new DiscreteNaiveBayesTrainer().setBucketThresholds(thresholds);
+
+ DiscreteNaiveBayesModel model = trainer.fit(
+ new LocalDatasetBuilder<>(data, 2),
+ (k, v) -> VectorUtils.of(Arrays.copyOfRange(v, 0, v.length - 1)),
+ (k, v) -> v[v.length - 1]
+ );
+ Vector observation = VectorUtils.of(1, 0, 1, 1, 0);
+
+ Assert.assertEquals(scottish, model.apply(observation), PRECISION);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/00af5e62/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTrainerTest.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTrainerTest.java b/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTrainerTest.java
new file mode 100644
index 0000000..3ffd5cf
--- /dev/null
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/naivebayes/discrete/DiscreteNaiveBayesTrainerTest.java
@@ -0,0 +1,185 @@
+/*
+ * 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.
+ */
+package org.apache.ignite.ml.naivebayes.discrete;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.ignite.ml.common.TrainerTest;
+import org.apache.ignite.ml.dataset.impl.local.LocalDatasetBuilder;
+import org.apache.ignite.ml.math.primitives.vector.VectorUtils;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/** Test for {@link DiscreteNaiveBayesTrainer} */
+public class DiscreteNaiveBayesTrainerTest extends TrainerTest {
+
+ /** Precision in test checks. */
+ private static final double PRECISION = 1e-2;
+ /** */
+ private static final double LABEL_1 = 1.;
+ /** */
+ private static final double LABEL_2 = 2.;
+
+ /** Binary data. */
+ private static final Map<Integer, double[]> binarizedData = new HashMap<>();
+ /** Data. */
+ private static final Map<Integer, double[]> data = new HashMap<>();
+ /** */
+ private static final double[][] binarizedDatathresholds = new double[][] {{.5}, {.5}, {.5}, {.5}, {.5}};
+ private static final double[][] thresholds = new double[][] {{4, 8}, {.5}, {.3, .4, .5}, {250, 500, 750}};
+
+ static {
+ binarizedData.put(0, new double[] {0, 0, 1, 1, 1, LABEL_1});
+ binarizedData.put(1, new double[] {1, 0, 1, 1, 0, LABEL_1});
+ binarizedData.put(2, new double[] {1, 1, 0, 0, 1, LABEL_1});
+ binarizedData.put(3, new double[] {1, 1, 0, 0, 0, LABEL_1});
+ binarizedData.put(4, new double[] {0, 1, 0, 0, 1, LABEL_1});
+ binarizedData.put(5, new double[] {0, 0, 0, 1, 0, LABEL_1});
+
+ binarizedData.put(6, new double[] {1, 0, 0, 1, 1, LABEL_2});
+ binarizedData.put(7, new double[] {1, 1, 0, 0, 1, LABEL_2});
+ binarizedData.put(8, new double[] {1, 1, 1, 1, 0, LABEL_2});
+ binarizedData.put(9, new double[] {1, 1, 0, 1, 0, LABEL_2});
+ binarizedData.put(10, new double[] {1, 1, 0, 1, 1, LABEL_2});
+ binarizedData.put(11, new double[] {1, 0, 1, 1, 0, LABEL_2});
+ binarizedData.put(12, new double[] {1, 0, 1, 0, 0, LABEL_2});
+
+ data.put(0, new double[] {2, 0, .34, 123, LABEL_1});
+ data.put(1, new double[] {8, 0, .37, 561, LABEL_1});
+ data.put(2, new double[] {5, 1, .01, 678, LABEL_1});
+ data.put(3, new double[] {2, 1, .32, 453, LABEL_1});
+ data.put(4, new double[] {7, 1, .67, 980, LABEL_1});
+ data.put(5, new double[] {2, 1, .69, 912, LABEL_1});
+ data.put(6, new double[] {8, 0, .43, 453, LABEL_1});
+ data.put(7, new double[] {2, 0, .45, 752, LABEL_1});
+ data.put(8, new double[] {7, 1, .01, 132, LABEL_2});
+ data.put(9, new double[] {2, 1, .68, 169, LABEL_2});
+ data.put(10, new double[] {8, 0, .43, 453, LABEL_2});
+ data.put(11, new double[] {2, 1, .45, 748, LABEL_2});
+ }
+
+ /** */
+ private DiscreteNaiveBayesTrainer trainer;
+
+ /** Initialization {@code DiscreteNaiveBayesTrainer}. */
+ @Before
+ public void createTrainer() {
+ trainer = new DiscreteNaiveBayesTrainer().setBucketThresholds(binarizedDatathresholds);
+ }
+
+ /** */
+ @Test
+ public void testReturnsCorrectLabelProbalities() {
+
+ DiscreteNaiveBayesModel model = trainer.fit(
+ new LocalDatasetBuilder<>(binarizedData, parts),
+ (k, v) -> VectorUtils.of(Arrays.copyOfRange(v, 0, v.length - 1)),
+ (k, v) -> v[v.length - 1]
+ );
+
+ double[] expectedProbabilities = {6. / binarizedData.size(), 7. / binarizedData.size()};
+ Assert.assertArrayEquals(expectedProbabilities, model.getClsProbabilities(), PRECISION);
+ }
+
+ /** */
+ @Test
+ public void testReturnsEquivalentProbalitiesWhenSetEquiprobableClasses_() {
+ DiscreteNaiveBayesTrainer trainer = new DiscreteNaiveBayesTrainer()
+ .setBucketThresholds(binarizedDatathresholds)
+ .withEquiprobableClasses();
+
+ DiscreteNaiveBayesModel model = trainer.fit(
+ new LocalDatasetBuilder<>(binarizedData, parts),
+ (k, v) -> VectorUtils.of(Arrays.copyOfRange(v, 0, v.length - 1)),
+ (k, v) -> v[v.length - 1]
+ );
+
+ Assert.assertArrayEquals(new double[] {.5, .5}, model.getClsProbabilities(), PRECISION);
+ }
+
+ /** */
+ @Test
+ public void testReturnsPresetProbalitiesWhenSetPriorProbabilities() {
+ double[] priorProbabilities = new double[] {.35, .65};
+ DiscreteNaiveBayesTrainer trainer = new DiscreteNaiveBayesTrainer()
+ .setBucketThresholds(binarizedDatathresholds)
+ .setPriorProbabilities(priorProbabilities);
+
+ DiscreteNaiveBayesModel model = trainer.fit(
+ new LocalDatasetBuilder<>(binarizedData, parts),
+ (k, v) -> VectorUtils.of(Arrays.copyOfRange(v, 0, v.length - 1)),
+ (k, v) -> v[v.length - 1]
+ );
+
+ Assert.assertArrayEquals(priorProbabilities, model.getClsProbabilities(), PRECISION);
+ }
+
+ /** */
+ @Test
+ public void testReturnsCorrectPriorProbabilities() {
+ double[][][] expectedPriorProbabilites = new double[][][] {
+ {{.5, .5}, {.5, .5}, {2. / 3., 1. / 3.}, {.5, .5}, {.5, .5}},
+ {{0, 1}, {3. / 7, 4. / 7}, {4. / 7, 3. / 7}, {2. / 7, 5. / 7}, {4. / 7, 3. / 7,}}
+ };
+
+ DiscreteNaiveBayesModel model = trainer.fit(
+ new LocalDatasetBuilder<>(binarizedData, parts),
+ (k, v) -> VectorUtils.of(Arrays.copyOfRange(v, 0, v.length - 1)),
+ (k, v) -> v[v.length - 1]
+ );
+
+ for (int i = 0; i < expectedPriorProbabilites.length; i++) {
+ for (int j = 0; j < expectedPriorProbabilites[i].length; j++) {
+ Assert.assertArrayEquals(expectedPriorProbabilites[i][j], model.getProbabilities()[i][j], PRECISION);
+ }
+ }
+ }
+
+ /** */
+ @Test
+ public void testReturnsCorrectPriorProbabilitiesWithDefferentThresholds() {
+ double[][][] expectedPriorProbabilites = new double[][][] {
+ {
+ {4. / 8, 2. / 8, 2. / 8},
+ {.5, .5},
+ {1. / 8, 3. / 8, 2. / 8, 2. / 8},
+ {1. / 8, 2. / 8, 2. / 8, 3. / 8}},
+ {
+ {2. / 4, 1. / 4, 1. / 4},
+ {1. / 4, 3. / 4},
+ {1. / 4, 0, 2. / 4, 1. / 4},
+ {2. / 4, 1. / 4, 1. / 4, 0}}
+ };
+
+ DiscreteNaiveBayesModel model = trainer
+ .setBucketThresholds(thresholds)
+ .fit(
+ new LocalDatasetBuilder<>(data, parts),
+ (k, v) -> VectorUtils.of(Arrays.copyOfRange(v, 0, v.length - 1)),
+ (k, v) -> v[v.length - 1]
+ );
+
+ for (int i = 0; i < expectedPriorProbabilites.length; i++) {
+ for (int j = 0; j < expectedPriorProbabilites[i].length; j++) {
+ Assert.assertArrayEquals(expectedPriorProbabilites[i][j], model.getProbabilities()[i][j], PRECISION);
+ }
+ }
+ }
+
+}
[12/52] [abbrv] ignite git commit: IGNITE-10239 Fix wide nav menu top
margin.
Posted by sb...@apache.org.
IGNITE-10239 Fix wide nav menu top margin.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0eb5bcc6
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0eb5bcc6
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0eb5bcc6
Branch: refs/heads/ignite-627
Commit: 0eb5bcc6989721d389a67be7880118313e02975b
Parents: 871126c
Author: Ilya Borisov <kl...@gmail.com>
Authored: Tue Dec 18 10:19:02 2018 +0700
Committer: Andrey Novikov <an...@gridgain.com>
Committed: Tue Dec 18 10:19:02 2018 +0700
----------------------------------------------------------------------
.../web-console-sidebar-navigation/style.scss | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/0eb5bcc6/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/style.scss b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/style.scss
index 83c21a3..b9c3e68 100644
--- a/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/style.scss
+++ b/modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/style.scss
@@ -72,6 +72,11 @@ web-console-sidebar-navigation {
display: none;
}
}
+
+ li:first-of-type > .web-console-sidebar-navigation__link-wide {
+ margin-top: 18px;
+ }
+
.web-console-sidebar-navigation__link-wide {
color: #393939;
text-decoration: none !important;
@@ -82,10 +87,6 @@ web-console-sidebar-navigation {
display: inline-flex;
align-items: center;
- &:first-of-type {
- margin-top: 18px;
- }
-
&:hover, &:focus {
color: var(--active-link-color);
[33/52] [abbrv] ignite git commit: IGNITE-10709 New inspections
introduced in 2018+ IntelliJ IDEA version were disabled on TC configuration,
unused Suppress removal. - Fixes #5680.
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinResultSet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinResultSet.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinResultSet.java
index 26c61d5..4e2fef2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinResultSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinResultSet.java
@@ -1752,7 +1752,6 @@ public class JdbcThinResultSet implements ResultSet {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Result set is not a wrapper for " + iface.getName());
@@ -1766,7 +1765,6 @@ public class JdbcThinResultSet implements ResultSet {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T getObject(int colIdx, Class<T> targetCls) throws SQLException {
return (T)getObject0(colIdx, targetCls);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinStatement.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinStatement.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinStatement.java
index 98b970c..be25201 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinStatement.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinStatement.java
@@ -802,7 +802,6 @@ public class JdbcThinStatement implements Statement {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Statement is not a wrapper for " + iface.getName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcConnection.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcConnection.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcConnection.java
index 96e4554..896deb7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcConnection.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcConnection.java
@@ -768,7 +768,6 @@ public class JdbcConnection implements Connection {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Connection is not a wrapper for " + iface.getName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcDatabaseMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcDatabaseMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcDatabaseMetadata.java
index 20cf0d3..663c988 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcDatabaseMetadata.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcDatabaseMetadata.java
@@ -1363,7 +1363,6 @@ public class JdbcDatabaseMetadata implements DatabaseMetaData {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Database meta data is not a wrapper for " + iface.getName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java
index 43fb755..f3fc160 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java
@@ -1752,7 +1752,6 @@ public class JdbcResultSet implements ResultSet {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Result set is not a wrapper for " + iface.getName());
@@ -1835,7 +1834,6 @@ public class JdbcResultSet implements ResultSet {
* @return Object field value.
* @throws SQLException In case of error.
*/
- @SuppressWarnings("unchecked")
private Object getValue(int colIdx) throws SQLException {
ensureNotClosed();
ensureHasCurrentRow();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSetMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSetMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSetMetadata.java
index ce8c269..42392a8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSetMetadata.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSetMetadata.java
@@ -156,7 +156,6 @@ public class JdbcResultSetMetadata implements ResultSetMetaData {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Result set meta data is not a wrapper for " + iface.getName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcStatement.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcStatement.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcStatement.java
index f87c162..5700a65 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcStatement.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcStatement.java
@@ -600,7 +600,6 @@ public class JdbcStatement implements Statement {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> iface) throws SQLException {
if (!isWrapperFor(iface))
throw new SQLException("Statement is not a wrapper for " + iface.getName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 491baa2..09c7b96 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -257,7 +257,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
}
/** {@inheritDoc} */
- @SuppressWarnings("deprecation")
@Override public void start() throws IgniteCheckedException {
startSpi();
@@ -722,10 +721,9 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
}
/** {@inheritDoc} */
- @SuppressWarnings({"deprecation", "SynchronizationOnLocalVariableOrMethodParameter"})
+ @SuppressWarnings({"SynchronizationOnLocalVariableOrMethodParameter"})
@Override public void onKernalStart0() throws IgniteCheckedException {
discoLsnr = new GridLocalEventListener() {
- @SuppressWarnings({"TooBroadScope"})
@Override public void onEvent(Event evt) {
assert evt instanceof DiscoveryEvent : "Invalid event: " + evt;
@@ -1182,7 +1180,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
* @param msg Message.
* @param nodeId Node ID.
*/
- @SuppressWarnings("deprecation")
private void processRegularMessage0(GridIoMessage msg, UUID nodeId) {
GridMessageListener lsnr = listenerGet0(msg.topic());
@@ -1695,7 +1692,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
* @param plc Type of processing.
* @throws IgniteCheckedException Thrown in case of any errors.
*/
- @SuppressWarnings("TypeMayBeWeakened")
public void sendToGridTopic(UUID nodeId, GridTopic topic, Message msg, byte plc)
throws IgniteCheckedException {
ClusterNode node = ctx.discovery().node(nodeId);
@@ -1982,7 +1978,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
* @param topic Topic to subscribe to.
* @param p Message predicate.
*/
- @SuppressWarnings("unchecked")
public void addUserMessageListener(@Nullable final Object topic, @Nullable final IgniteBiPredicate<UUID, ?> p) {
if (p != null) {
try {
@@ -2004,7 +1999,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
* @param topic Topic to unsubscribe from.
* @param p Message predicate.
*/
- @SuppressWarnings("unchecked")
public void removeUserMessageListener(@Nullable Object topic, IgniteBiPredicate<UUID, ?> p) {
try {
removeMessageListener(TOPIC_COMM_USER,
@@ -2019,7 +2013,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
* @param topic Listener's topic.
* @param lsnr Listener to add.
*/
- @SuppressWarnings({"TypeMayBeWeakened", "deprecation"})
public void addMessageListener(GridTopic topic, GridMessageListener lsnr) {
addMessageListener((Object)topic, lsnr);
}
@@ -2042,7 +2035,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
* @param topic Listener's topic.
* @param lsnr Listener to add.
*/
- @SuppressWarnings({"deprecation"})
public void addMessageListener(Object topic, final GridMessageListener lsnr) {
assert lsnr != null;
assert topic != null;
@@ -2133,7 +2125,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
* @param lsnr Listener to remove.
* @return Whether or not the lsnr was removed.
*/
- @SuppressWarnings("deprecation")
public boolean removeMessageListener(GridTopic topic, @Nullable GridMessageListener lsnr) {
return removeMessageListener((Object)topic, lsnr);
}
@@ -2143,7 +2134,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
* @param lsnr Listener to remove.
* @return Whether or not the lsnr was removed.
*/
- @SuppressWarnings({"deprecation"})
public boolean removeMessageListener(Object topic, @Nullable GridMessageListener lsnr) {
assert topic != null;
@@ -2443,8 +2433,8 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
}
/** {@inheritDoc} */
- @SuppressWarnings({"ConstantConditions",
- "OverlyStrongTypeCast"})
+ @SuppressWarnings({"ConstantConditions"
+ })
@Override public void onMessage(UUID nodeId, Object msg, byte plc) {
if (!(msg instanceof GridIoUserMessage)) {
U.error(log, "Received unknown message (potentially fatal problem): " + msg);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeployment.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeployment.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeployment.java
index 9b486e9..e93066c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeployment.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeployment.java
@@ -338,7 +338,6 @@ public class GridDeployment extends GridMetadataAwareAdapter implements GridDepl
* @return Annotation value.
* @param <T> Annotation class.
*/
- @SuppressWarnings("unchecked")
public <T extends Annotation> T annotation(Class<?> cls, Class<T> annCls) {
ConcurrentMap<Class<? extends Annotation>, GridTuple<Annotation>> clsAnns = anns.get(cls);
@@ -368,7 +367,6 @@ public class GridDeployment extends GridMetadataAwareAdapter implements GridDepl
* @param taskCls Task class.
* @return {@code True} if task is internal.
*/
- @SuppressWarnings("unchecked")
public boolean internalTask(@Nullable ComputeTask task, Class<?> taskCls) {
assert taskCls != null;
@@ -392,7 +390,6 @@ public class GridDeployment extends GridMetadataAwareAdapter implements GridDepl
* @param taskCls Task class.
* @return {@code True} if task is internal.
*/
- @SuppressWarnings("unchecked")
public boolean visorManagementTask(@Nullable ComputeTask task, @NotNull Class<?> taskCls) {
return annotation(task instanceof GridPeerDeployAware ?
((GridPeerDeployAware)task).deployClass() : taskCls,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
index b27cc4b..10f0695 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
@@ -430,7 +430,6 @@ class GridDeploymentLocalStore extends GridDeploymentStoreAdapter {
* @param clsLdr Class loader.
* @param recordEvt Flag indicating whether to record events.
*/
- @SuppressWarnings({"unchecked"})
private void recordDeployFailed(Class<?> cls, ClassLoader clsLdr, boolean recordEvt) {
assert cls != null;
assert clsLdr != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
index e1ea031..5af3495 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
@@ -413,7 +413,6 @@ public class GridEventStorageManager extends GridManagerAdapter<EventStorageSpi>
*
* @param types Events to disable.
*/
- @SuppressWarnings("deprecation")
public synchronized void disableEvents(int[] types) {
assert types != null;
@@ -887,7 +886,6 @@ public class GridEventStorageManager extends GridManagerAdapter<EventStorageSpi>
* @param p Grid event predicate.
* @return Collection of grid events.
*/
- @SuppressWarnings("unchecked")
public <T extends Event> Collection<T> localEvents(IgnitePredicate<T> p) throws IgniteCheckedException {
assert p != null;
@@ -949,7 +947,6 @@ public class GridEventStorageManager extends GridManagerAdapter<EventStorageSpi>
* @return Collection of events.
* @throws IgniteCheckedException Thrown in case of any errors.
*/
- @SuppressWarnings({"deprecation"})
private <T extends Event> List<T> query(IgnitePredicate<T> p, Collection<? extends ClusterNode> nodes,
long timeout) throws IgniteCheckedException {
assert p != null;
@@ -988,7 +985,6 @@ public class GridEventStorageManager extends GridManagerAdapter<EventStorageSpi>
};
GridMessageListener resLsnr = new GridMessageListener() {
- @SuppressWarnings("deprecation")
@Override public void onMessage(UUID nodeId, Object msg, byte plc) {
assert nodeId != null;
assert msg != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
index 66461de..afcabce 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
@@ -212,7 +212,6 @@ public class OptimizedMarshaller extends AbstractNodeNameAwareMarshaller {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected <T> T unmarshal0(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
assert in != null;
@@ -242,7 +241,6 @@ public class OptimizedMarshaller extends AbstractNodeNameAwareMarshaller {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected <T> T unmarshal0(byte[] arr, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
assert arr != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
index 2c87c75..2311439 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
@@ -385,7 +385,6 @@ class OptimizedObjectInputStream extends ObjectInputStream {
* @throws ClassNotFoundException If class not found.
* @throws IOException In case of error.
*/
- @SuppressWarnings("unchecked")
<T> T[] readArray(Class<T> compType) throws ClassNotFoundException, IOException {
int len = in.readInt();
@@ -678,7 +677,6 @@ class OptimizedObjectInputStream extends ObjectInputStream {
* @throws ClassNotFoundException If class not found.
* @throws IOException In case of error.
*/
- @SuppressWarnings("unchecked")
HashSet<?> readHashSet(long mapFieldOff) throws ClassNotFoundException, IOException {
try {
HashSet<Object> set = (HashSet<Object>)GridUnsafe.allocateInstance(HashSet.class);
@@ -750,7 +748,6 @@ class OptimizedObjectInputStream extends ObjectInputStream {
* @throws ClassNotFoundException If class not found.
* @throws IOException In case of error.
*/
- @SuppressWarnings("unchecked")
LinkedHashSet<?> readLinkedHashSet(long mapFieldOff) throws ClassNotFoundException, IOException {
try {
LinkedHashSet<Object> set = (LinkedHashSet<Object>)GridUnsafe.allocateInstance(LinkedHashSet.class);
@@ -1252,7 +1249,6 @@ class OptimizedObjectInputStream extends ObjectInputStream {
* @param dflt Default value.
* @return Value.
*/
- @SuppressWarnings("unchecked")
private <T> T value(String name, T dflt) {
return objs[fieldInfo.getIndex(name)] != null ? (T)objs[fieldInfo.getIndex(name)] : dflt;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
index 07beb14..30bf113 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
@@ -559,7 +559,6 @@ public class GridAffinityProcessor extends GridProcessorAdapter {
* @return Affinity map.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings({"unchecked"})
private <K> Map<ClusterNode, Collection<K>> affinityMap(AffinityInfo aff, Collection<? extends K> keys)
throws IgniteCheckedException {
assert aff != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/IgniteAuthenticationProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/IgniteAuthenticationProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/IgniteAuthenticationProcessor.java
index c7c5885..98f4201 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/IgniteAuthenticationProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/IgniteAuthenticationProcessor.java
@@ -383,7 +383,6 @@ public class IgniteAuthenticationProcessor extends GridProcessorAdapter implemen
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void onReadyForRead(ReadOnlyMetastorage metastorage) throws IgniteCheckedException {
if (!ctx.clientNode()) {
users = new ConcurrentHashMap<>();
@@ -1309,7 +1308,6 @@ public class IgniteAuthenticationProcessor extends GridProcessorAdapter implemen
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override protected void body() throws InterruptedException, IgniteInterruptedCheckedException {
if (ctx.clientNode())
return;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl.java
index 60eba21..5ba15da 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl.java
@@ -79,7 +79,6 @@ public class CacheEntryImpl<K, V> implements Cache.Entry<K, V>, Externalizable {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> cls) {
if (cls.isAssignableFrom(getClass()))
return cls.cast(this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl0.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl0.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl0.java
index 1e97f0c..bce4e92 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl0.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl0.java
@@ -47,7 +47,6 @@ public class CacheEntryImpl0<K, V> implements Cache.Entry<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> cls) {
if(cls.isAssignableFrom(getClass()))
return cls.cast(this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEvictableEntryImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEvictableEntryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEvictableEntryImpl.java
index 89f06dc..1de5906 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEvictableEntryImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEvictableEntryImpl.java
@@ -197,7 +197,6 @@ public class CacheEvictableEntryImpl<K, V> implements EvictableEntry<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> clazz) {
if (clazz.isAssignableFrom(IgniteCache.class))
return (T)cached.context().grid().cache(cached.context().name());
@@ -214,7 +213,6 @@ public class CacheEvictableEntryImpl<K, V> implements EvictableEntry<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public boolean equals(Object obj) {
if (obj == this)
return true;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
index dddc735..44a51ec 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
@@ -170,7 +170,6 @@ public class CacheInvokeEntry<K, V> extends CacheLazyEntry<K, V> implements Muta
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> cls) {
if (cls.isAssignableFrom(CacheEntry.class) && ver != null)
return (T)new CacheEntryImplEx<>(getKey(), getValue(), ver);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java
index 2e6d64a..7c0f256 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java
@@ -119,7 +119,6 @@ public class CacheInvokeResult<T> implements EntryProcessorResult<T>, Externaliz
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
res = (T)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLazyEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLazyEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLazyEntry.java
index 4463dc8..1a1645f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLazyEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLazyEntry.java
@@ -143,7 +143,6 @@ public class CacheLazyEntry<K, V> extends CacheInterceptorEntry<K, V> {
* @param keepBinary Flag to keep binary if needed.
* @return the value corresponding to this entry
*/
- @SuppressWarnings("unchecked")
public V getValue(boolean keepBinary) {
if (val == null)
val = (V)cctx.unwrapBinaryIfNeeded(valObj, keepBinary, true);
@@ -187,7 +186,6 @@ public class CacheLazyEntry<K, V> extends CacheInterceptorEntry<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> cls) {
if (cls.isAssignableFrom(Ignite.class))
return (T)cctx.kernalContext().grid();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
index b29c19e..6ca700b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
@@ -54,7 +54,6 @@ public class CacheObjectImpl extends CacheObjectAdapter {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
cpy = cpy && needCopy(ctx);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
index aeca79e..ed2d324 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
@@ -162,7 +162,6 @@ public class CacheObjectUtils {
* @param o Object to unwrap.
* @return Unwrapped object.
*/
- @SuppressWarnings("unchecked")
private static Object unwrapBinary(CacheObjectValueContext ctx, Object o, boolean keepBinary, boolean cpy) {
if (o == null)
return o;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachePartialUpdateCheckedException.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachePartialUpdateCheckedException.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachePartialUpdateCheckedException.java
index 9d2686c..220d642 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachePartialUpdateCheckedException.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachePartialUpdateCheckedException.java
@@ -48,7 +48,6 @@ public class CachePartialUpdateCheckedException extends IgniteCheckedException {
* Gets collection of failed keys.
* @return Collection of failed keys.
*/
- @SuppressWarnings("unchecked")
public synchronized <K> Collection<K> failedKeys() {
return new LinkedHashSet<>((Collection<K>)failedKeys);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index 4d93726..a1c403b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -485,7 +485,6 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked", "RedundantCast"})
@Override public final <K1, V1> IgniteInternalCache<K1, V1> cache() {
return (IgniteInternalCache<K1, V1>)this;
}
@@ -1712,7 +1711,6 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
* @param map Result map.
* @return Map with values returned by cache interceptor..
*/
- @SuppressWarnings("IfMayBeConditional")
private Map<K, V> interceptGet(@Nullable Collection<? extends K> keys, Map<K, V> map) {
if (F.isEmpty(keys))
return map;
@@ -1753,7 +1751,6 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
* @param map Result map.
* @return Map with values returned by cache interceptor..
*/
- @SuppressWarnings("IfMayBeConditional")
private Collection<CacheEntry<K, V>> interceptGetEntries(
@Nullable Collection<? extends K> keys, Map<K, EntryGetResult> map) {
if (F.isEmpty(keys)) {
@@ -3135,7 +3132,6 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void removeAll() throws IgniteCheckedException {
assert ctx.isLocal();
@@ -4213,7 +4209,7 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
* @return Operation result.
* @throws IgniteCheckedException If operation failed.
*/
- @SuppressWarnings({"TypeMayBeWeakened", "ErrorNotRethrown", "AssignmentToCatchBlockParameter"})
+ @SuppressWarnings({"ErrorNotRethrown", "AssignmentToCatchBlockParameter"})
@Nullable private <T> T syncOp(SyncOp<T> op) throws IgniteCheckedException {
checkJta();
@@ -6219,7 +6215,6 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
p = (IgniteBiPredicate<K, V>)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index 426a29c..19c01b2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -1889,7 +1889,6 @@ public class GridCacheContext<K, V> implements Externalizable {
* @param cpy Copy flag.
* @param ver GridCacheVersion.
*/
- @SuppressWarnings("unchecked")
public <K1, V1> void addResult(Map<K1, V1> map,
KeyCacheObject key,
CacheObject val,
@@ -1915,7 +1914,6 @@ public class GridCacheContext<K, V> implements Externalizable {
* @param cpy Copy flag.
* @param needVer Need version flag.
*/
- @SuppressWarnings("unchecked")
public <K1, V1> void addResult(Map<K1, V1> map,
KeyCacheObject key,
EntryGetResult getRes,
@@ -1943,7 +1941,6 @@ public class GridCacheContext<K, V> implements Externalizable {
* @param ttl Entry TTL.
* @param needVer Need version flag.
*/
- @SuppressWarnings("unchecked")
public <K1, V1> void addResult(Map<K1, V1> map,
KeyCacheObject key,
CacheObject val,
@@ -1991,7 +1988,6 @@ public class GridCacheContext<K, V> implements Externalizable {
* @param needVer Need version flag.
* @return EntryGetResult or value.
*/
- @SuppressWarnings("unchecked")
private <V1> V1 createValue(final GridCacheVersion ver,
final long expireTime,
final long ttl,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
index a1bf0ff..5a3453a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
@@ -357,7 +357,6 @@ public class GridCacheEvictionManager extends GridCacheManagerAdapter implements
* @param near Near flag.
* @throws IgniteCheckedException If registration failed.
*/
- @SuppressWarnings("unchecked")
private void registerMbean(Object obj, @Nullable String cacheName, boolean near)
throws IgniteCheckedException {
if (U.IGNITE_MBEANS_DISABLED)
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
index 2f29ffb..710931f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
@@ -543,7 +543,6 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
}
/** {@inheritDoc} */
- @SuppressWarnings("BusyWait")
@Override protected void onKernalStop0(boolean cancel) {
cctx.gridIO().removeMessageListener(TOPIC_CACHE);
@@ -569,7 +568,6 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
* @param c Handler closure.
* @param plc Message policy.
*/
- @SuppressWarnings({"ConstantConditions"})
private void onMessage0(final UUID nodeId, final GridCacheMessage cacheMsg,
final IgniteBiInClosure<UUID, GridCacheMessage> c, byte plc) {
try {
@@ -1405,7 +1403,6 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
* @param c Handler.
* @param msgHandlers Message handlers.
*/
- @SuppressWarnings({"unchecked"})
private void addHandler(
int hndId,
Class<? extends GridCacheMessage> type,
@@ -1537,7 +1534,6 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
* @param topic Topic.
* @param c Handler.
*/
- @SuppressWarnings({"unchecked"})
private void addOrderedHandler(GridCacheSharedContext cctx, boolean cacheGrp, Object topic, IgniteBiInClosure<UUID, ? extends GridCacheMessage> c) {
MessageHandlers msgHandlers = cacheGrp ? grpHandlers : cacheHandlers;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index b5f9dfc..881e868 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -615,7 +615,6 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
* @return Read value.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings({"RedundantTypeArguments"})
@Nullable protected Object readThrough(@Nullable IgniteInternalTx tx, KeyCacheObject key, boolean reload, UUID subjId,
String taskName) throws IgniteCheckedException {
return cctx.store().load(tx, key);
@@ -710,7 +709,7 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked", "RedundantTypeArguments", "TooBroadScope"})
+ @SuppressWarnings({"TooBroadScope"})
private Object innerGet0(
GridCacheVersion nextVer,
IgniteInternalTx tx,
@@ -979,7 +978,7 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked", "TooBroadScope"})
+ @SuppressWarnings({"TooBroadScope"})
@Nullable @Override public final CacheObject innerReload()
throws IgniteCheckedException, GridCacheEntryRemovedException {
CU.checkStore(cctx);
@@ -3306,7 +3305,6 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
}
/** {@inheritDoc} */
- @SuppressWarnings({"RedundantTypeArguments"})
@Override public boolean initialValue(
CacheObject val,
GridCacheVersion ver,
@@ -4148,7 +4146,6 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
}
/** {@inheritDoc} */
- @SuppressWarnings({"IfMayBeConditional"})
@Override public long expireTime() throws GridCacheEntryRemovedException {
IgniteTxLocalAdapter tx = currentTx();
@@ -4172,7 +4169,6 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
}
/** {@inheritDoc} */
- @SuppressWarnings({"IfMayBeConditional"})
@Override public long ttl() throws GridCacheEntryRemovedException {
IgniteTxLocalAdapter tx = currentTx();
@@ -4419,7 +4415,6 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K, V> Cache.Entry<K, V> wrap() {
try {
IgniteInternalTx tx = cctx.tm().userTx();
@@ -5308,7 +5303,6 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void apply(IgniteInternalFuture lockFut) {
WALPointer logPtr = null;
boolean valid;
@@ -5666,13 +5660,11 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public V getValue() {
return (V)cctx.cacheObjectContext().unwrapBinaryIfNeeded(peekVisibleValue(), keepBinary, true);
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> cls) {
if (cls.isAssignableFrom(IgniteCache.class))
return (T)cctx.grid().cache(cctx.name());
@@ -6687,7 +6679,6 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
* @param invokeEntry Entry for {@link EntryProcessor}.
* @return Entry processor return value.
*/
- @SuppressWarnings("unchecked")
private IgniteBiTuple<Object, Exception> runEntryProcessor(CacheInvokeEntry<Object, Object> invokeEntry) {
EntryProcessor<Object, Object, ?> entryProcessor = (EntryProcessor<Object, Object, ?>)writeObj;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
index 0281631..bd2b58d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
@@ -154,7 +154,6 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
@GridToStringExclude
private final GridCacheLockCallback cb = new GridCacheLockCallback() {
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void onOwnerChanged(final GridCacheEntryEx entry, final GridCacheMvccCandidate owner) {
int nested = nestedLsnrCalls.get();
@@ -719,7 +718,6 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
* @param futId Future ID.
* @return Future.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public GridCacheVersionedFuture<?> versionedFuture(GridCacheVersion ver, IgniteUuid futId) {
Collection<GridCacheVersionedFuture<?>> futs = this.verFuts.get(ver);
@@ -748,7 +746,6 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
* @param ver Lock ID.
* @return Futures.
*/
- @SuppressWarnings({"unchecked"})
@Nullable public Collection<GridCacheVersionedFuture<?>> futuresForVersion(GridCacheVersion ver) {
Collection<GridCacheVersionedFuture<?>> futs = this.verFuts.get(ver);
@@ -1073,7 +1070,6 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
* @param topVer Topology version.
* @return Future that signals when all locks for given partitions are released.
*/
- @SuppressWarnings({"unchecked"})
public IgniteInternalFuture<?> finishLocks(AffinityTopologyVersion topVer) {
assert topVer.compareTo(AffinityTopologyVersion.ZERO) > 0;
return finishLocks(null, topVer);
@@ -1143,7 +1139,6 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
*
* @return Finish update future.
*/
- @SuppressWarnings("unchecked")
public IgniteInternalFuture<?> finishDataStreamerUpdates(AffinityTopologyVersion topVer) {
GridCompoundFuture<Void, Object> res = new CacheObjectsReleaseFuture<>("DataStreamer", topVer);
@@ -1163,7 +1158,6 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
* @param topVer Topology version.
* @return Future that signals when all locks for given keys are released.
*/
- @SuppressWarnings("unchecked")
public IgniteInternalFuture<?> finishKeys(Collection<KeyCacheObject> keys,
final int cacheId,
AffinityTopologyVersion topVer) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 5bd9eb8..6ab5cfe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -4533,7 +4533,6 @@ public class GridCacheProcessor extends GridProcessorAdapter {
* @param <V> type of values.
* @return Cache instance for given name.
*/
- @SuppressWarnings("unchecked")
public <K, V> IgniteInternalCache<K, V> cache(String name) {
assert name != null;
@@ -4608,7 +4607,6 @@ public class GridCacheProcessor extends GridProcessorAdapter {
* @return Cache instance for given name.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
public <K, V> IgniteInternalCache<K, V> getOrStartCache(
String name,
CacheConfiguration ccfg
@@ -4698,7 +4696,6 @@ public class GridCacheProcessor extends GridProcessorAdapter {
* @param <V> type of values.
* @return Cache instance for given name.
*/
- @SuppressWarnings("unchecked")
public <K, V> IgniteInternalCache<K, V> publicCache(String name) {
assert name != null;
@@ -4740,7 +4737,6 @@ public class GridCacheProcessor extends GridProcessorAdapter {
* @return Cache instance for given name.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings({"unchecked", "ConstantConditions"})
@Nullable public <K, V> IgniteCacheProxy<K, V> publicJCache(String cacheName,
boolean failIfNotStarted,
boolean checkThreadTx) throws IgniteCheckedException {
@@ -4966,7 +4962,6 @@ public class GridCacheProcessor extends GridProcessorAdapter {
* @param <V> type of values.
* @return Cache instance for given name.
*/
- @SuppressWarnings("unchecked")
public <K, V> GridCacheAdapter<K, V> internalCache(String name) {
assert name != null;
@@ -5065,7 +5060,6 @@ public class GridCacheProcessor extends GridProcessorAdapter {
* @param near Near flag.
* @throws IgniteCheckedException If registration failed.
*/
- @SuppressWarnings("unchecked")
private void registerMbean(Object obj, @Nullable String cacheName, boolean near)
throws IgniteCheckedException {
if (U.IGNITE_MBEANS_DISABLED)
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
index fa9f3cb..94eb857 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
@@ -299,7 +299,6 @@ public class GridCacheProxyImpl<K, V> implements IgniteInternalCache<K, V>, Exte
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <K1, V1> GridCacheProxyImpl<K1, V1> keepBinary() {
if (opCtx != null && opCtx.isKeepBinary())
return (GridCacheProxyImpl<K1, V1>)this;
@@ -1625,7 +1624,6 @@ public class GridCacheProxyImpl<K, V> implements IgniteInternalCache<K, V>, Exte
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
ctx = (GridCacheContext<K, V>)in.readObject();
delegate = (IgniteInternalCache<K, V>)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheReturn.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheReturn.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheReturn.java
index 22aa425..0762dfc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheReturn.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheReturn.java
@@ -122,7 +122,6 @@ public class GridCacheReturn implements Externalizable, Message {
/**
* @return Value.
*/
- @SuppressWarnings("unchecked")
@Nullable public <V> V value() {
return (V)v;
}
@@ -221,7 +220,6 @@ public class GridCacheReturn implements Externalizable, Message {
* @param err Error.
* @param keepBinary Keep binary.
*/
- @SuppressWarnings("unchecked")
public synchronized void addEntryProcessResult(
GridCacheContext cctx,
KeyCacheObject key,
@@ -288,7 +286,6 @@ public class GridCacheReturn implements Externalizable, Message {
/**
* @param other Other result to merge with.
*/
- @SuppressWarnings("unchecked")
public synchronized void mergeEntryProcessResults(GridCacheReturn other) {
assert invokeRes || v == null : "Invalid state to merge: " + this;
assert other.invokeRes;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtilityKey.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtilityKey.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtilityKey.java
index affa6ce..3d66950 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtilityKey.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtilityKey.java
@@ -27,7 +27,6 @@ public abstract class GridCacheUtilityKey<K extends GridCacheUtilityKey> impleme
private static final long serialVersionUID = 0L;
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public final boolean equals(Object obj) {
return obj == this || obj != null && obj.getClass() == getClass() && equalsx((K)obj);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
index ebc1d11..bf1c359 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
@@ -455,7 +455,6 @@ public class GridCacheUtils {
*/
public static <K, V> IgniteClosure<Integer, IgnitePredicate<Cache.Entry<K, V>>[]> factory() {
return new IgniteClosure<Integer, IgnitePredicate<Cache.Entry<K, V>>[]>() {
- @SuppressWarnings({"unchecked"})
@Override public IgnitePredicate<Cache.Entry<K, V>>[] apply(Integer len) {
return (IgnitePredicate<Cache.Entry<K, V>>[])(len == 0 ? EMPTY : new IgnitePredicate[len]);
}
@@ -527,7 +526,6 @@ public class GridCacheUtils {
/**
* @return Empty filter.
*/
- @SuppressWarnings({"unchecked"})
public static <K, V> IgnitePredicate<Cache.Entry<K, V>>[] empty() {
return (IgnitePredicate<Cache.Entry<K, V>>[])EMPTY_FILTER;
}
@@ -535,7 +533,6 @@ public class GridCacheUtils {
/**
* @return Empty filter.
*/
- @SuppressWarnings({"unchecked"})
public static CacheEntryPredicate[] empty0() {
return EMPTY_FILTER0;
}
@@ -550,7 +547,6 @@ public class GridCacheUtils {
/**
* @return Closure which converts transaction entry xid to XID version.
*/
- @SuppressWarnings( {"unchecked"})
public static IgniteClosure<IgniteInternalTx, GridCacheVersion> tx2xidVersion() {
return (IgniteClosure<IgniteInternalTx, GridCacheVersion>)tx2xidVer;
}
@@ -566,7 +562,6 @@ public class GridCacheUtils {
/**
* @return Closure that converts entry info to key.
*/
- @SuppressWarnings({"unchecked"})
public static <K, V> IgniteClosure<GridCacheEntryInfo, K> info2Key() {
return (IgniteClosure<GridCacheEntryInfo, K>)info2key;
}
@@ -793,7 +788,6 @@ public class GridCacheUtils {
* @return Buffer that contains obtained byte array.
* @throws IgniteCheckedException If marshalling failed.
*/
- @SuppressWarnings("unchecked")
public static byte[] marshal(GridCacheContext ctx, Object obj)
throws IgniteCheckedException {
assert ctx != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index 5997f57..0976f63 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@ -664,7 +664,6 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override @Nullable public CacheDataRow read(GridCacheMapEntry entry)
throws IgniteCheckedException {
KeyCacheObject key = entry.key();
@@ -763,7 +762,6 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager
*
* @param readers {@code True} to clear readers.
*/
- @SuppressWarnings("unchecked")
@Override public void clearCache(GridCacheContext cctx, boolean readers) {
GridCacheVersion obsoleteVer = null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
index ccf5cb4..886dac5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
@@ -73,14 +73,12 @@ public interface IgniteCacheProxy<K, V> extends IgniteCache<K, V>, Externalizabl
*
* @return Projection for binary objects.
*/
- @SuppressWarnings("unchecked")
public <K1, V1> IgniteCache<K1, V1> keepBinary();
/**
* @param dataCenterId Data center ID.
* @return Projection for data center id.
*/
- @SuppressWarnings("unchecked")
public IgniteCache<K, V> withDataCenterId(byte dataCenterId);
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
index 504c375..a6a1fc1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
@@ -661,7 +661,6 @@ public class IgniteCacheProxyImpl<K, V> extends AsyncSupportAdapter<IgniteCache<
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <R> QueryCursor<R> query(Query<R> qry) {
A.notNull(qry, "qry");
try {
@@ -1628,7 +1627,6 @@ public class IgniteCacheProxyImpl<K, V> extends AsyncSupportAdapter<IgniteCache<
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T unwrap(Class<T> clazz) {
if (clazz.isAssignableFrom(getClass()))
return (T)this;
@@ -1862,7 +1860,6 @@ public class IgniteCacheProxyImpl<K, V> extends AsyncSupportAdapter<IgniteCache<
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
ctx = (GridCacheContext<K, V>)in.readObject();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
index 1f4e790..92e8a4f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
@@ -93,7 +93,6 @@ public class KeyCacheObjectImpl extends CacheObjectAdapter implements KeyCacheOb
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
assert val != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/affinity/GridCacheAffinityProxy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/affinity/GridCacheAffinityProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/affinity/GridCacheAffinityProxy.java
index 07ca3cc..c6b5a60 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/affinity/GridCacheAffinityProxy.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/affinity/GridCacheAffinityProxy.java
@@ -251,7 +251,6 @@ public class GridCacheAffinityProxy<K, V> implements Affinity<K>, Externalizable
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
cctx = (GridCacheContext<K, V>)in.readObject();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
index 0a1e887..7b6b4ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
@@ -409,7 +409,6 @@ public class CacheObjectBinaryProcessorImpl extends GridProcessorAdapter impleme
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public Object marshalToBinary(
@Nullable Object obj,
boolean failIfUnregistered
@@ -786,7 +785,6 @@ public class CacheObjectBinaryProcessorImpl extends GridProcessorAdapter impleme
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public Collection<BinaryType> metadata() throws BinaryObjectException {
return F.viewReadOnly(metadataLocCache.values(), new IgniteClosure<BinaryMetadataHolder, BinaryType>() {
@Override public BinaryType apply(BinaryMetadataHolder metaHolder) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/IgniteBinaryImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/IgniteBinaryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/IgniteBinaryImpl.java
index 0ee8a0c..0fc1b9f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/IgniteBinaryImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/IgniteBinaryImpl.java
@@ -61,7 +61,6 @@ public class IgniteBinaryImpl implements IgniteBinary {
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public <T> T toBinary(@Nullable Object obj) throws BinaryObjectException {
guard();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/datastructures/CacheDataStructuresManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/datastructures/CacheDataStructuresManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/datastructures/CacheDataStructuresManager.java
index 9c3c4a6..8c44852 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/datastructures/CacheDataStructuresManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/datastructures/CacheDataStructuresManager.java
@@ -224,7 +224,6 @@ public class CacheDataStructuresManager extends GridCacheManagerAdapter {
* @return Queue header.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
@Nullable public <T> GridCacheQueueProxy<T> queue(final String name,
final int cap,
boolean colloc,
@@ -423,7 +422,6 @@ public class CacheDataStructuresManager extends GridCacheManagerAdapter {
* @param topVer Topology version.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
private void removeSetData(IgniteUuid setId, AffinityTopologyVersion topVer) throws IgniteCheckedException {
boolean loc = cctx.isLocal();
@@ -465,7 +463,6 @@ public class CacheDataStructuresManager extends GridCacheManagerAdapter {
* @param separated Separated cache flag.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("unchecked")
public void removeSetData(IgniteUuid id, boolean separated) throws IgniteCheckedException {
assert id != null;
@@ -557,7 +554,6 @@ public class CacheDataStructuresManager extends GridCacheManagerAdapter {
/**
* @param setId Set ID.
*/
- @SuppressWarnings("unchecked")
private void blockSet(IgniteUuid setId) {
GridCacheSetProxy set = setsMap.remove(setId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/CacheDistributedGetFutureAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/CacheDistributedGetFutureAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/CacheDistributedGetFutureAdapter.java
index feea264..da6d8f8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/CacheDistributedGetFutureAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/CacheDistributedGetFutureAdapter.java
@@ -354,7 +354,6 @@ public abstract class CacheDistributedGetFutureAdapter<K, V>
/** {@inheritDoc} */
@Override public String toString() {
Collection<String> futuresStrings = F.viewReadOnly(futures(), new C1<IgniteInternalFuture<?>, String>() {
- @SuppressWarnings("unchecked")
@Override public String apply(IgniteInternalFuture<?> f) {
if (isMini(f)) {
AbstractMiniFuture mini = (AbstractMiniFuture)f;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index 611c87c..58b12ed 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -1101,7 +1101,7 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
public void sendTtlUpdateRequest(@Nullable final IgniteCacheExpiryPolicy expiryPlc) {
if (expiryPlc != null && expiryPlc.entries() != null) {
ctx.closures().runLocalSafe(new Runnable() {
- @SuppressWarnings({"unchecked", "ForLoopReplaceableByForEach"})
+ @SuppressWarnings({"ForLoopReplaceableByForEach"})
@Override public void run() {
Map<KeyCacheObject, GridCacheVersion> entries = expiryPlc.entries();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
index 8eea5a3..a1eb01c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
@@ -544,7 +544,6 @@ public class GridDhtCacheEntry extends GridDistributedCacheEntry {
* @return {@code True} if reader was removed as a result of this operation.
* @throws GridCacheEntryRemovedException If entry was removed.
*/
- @SuppressWarnings("unchecked")
public boolean removeReader(UUID nodeId, long msgId) throws GridCacheEntryRemovedException {
lockEntry();
@@ -587,7 +586,6 @@ public class GridDhtCacheEntry extends GridDistributedCacheEntry {
/**
* Clears all readers (usually when partition becomes invalid and ready for eviction).
*/
- @SuppressWarnings("unchecked")
@Override public void clearReaders() {
lockEntry();
@@ -699,7 +697,7 @@ public class GridDhtCacheEntry extends GridDistributedCacheEntry {
* @return Collection of readers after check.
* @throws GridCacheEntryRemovedException If removed.
*/
- @SuppressWarnings({"unchecked", "ManualArrayToCollectionCopy"})
+ @SuppressWarnings({"ManualArrayToCollectionCopy"})
protected Collection<ReaderId> checkReadersLocked() throws GridCacheEntryRemovedException {
assert lockedByCurrentThread();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
index 9361b30..ef2e70d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
@@ -574,7 +574,6 @@ public final class GridDhtLockFuture extends GridCacheCompoundIdentityFuture<Boo
* @param miniId Mini ID to find.
* @return Mini future.
*/
- @SuppressWarnings("ForLoopReplaceableByForEach")
private MiniFuture miniFuture(IgniteUuid miniId) {
// We iterate directly over the futs collection here to avoid copy.
synchronized (this) {
@@ -1354,7 +1353,6 @@ public final class GridDhtLockFuture extends GridCacheCompoundIdentityFuture<Boo
* @param msgId Message ID.
* @param entries Entries to check.
*/
- @SuppressWarnings({"ForLoopReplaceableByForEach"})
private void evictReaders(GridCacheContext<?, ?> cacheCtx, Collection<IgniteTxKey> keys, UUID nodeId, long msgId,
@Nullable List<GridDhtCacheEntry> entries) {
if (entries == null || keys == null || entries.isEmpty() || keys.isEmpty())
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxAbstractEnlistFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxAbstractEnlistFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxAbstractEnlistFuture.java
index ea1c58d..2864712 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxAbstractEnlistFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxAbstractEnlistFuture.java
@@ -160,7 +160,6 @@ public abstract class GridDhtTxAbstractEnlistFuture<T> extends GridCacheFutureAd
private Object peek;
/** */
- @SuppressWarnings({"FieldCanBeLocal"})
@GridToStringExclude
private volatile int skipCntr;
@@ -788,7 +787,6 @@ public abstract class GridDhtTxAbstractEnlistFuture<T> extends GridCacheFutureAd
* @param backups Backup nodes.
* @return {@code True} if there is possible to add this key to batch or send ready batch.
*/
- @SuppressWarnings("ForLoopReplaceableByForEach")
private boolean ensureFreeSlot(KeyCacheObject key, List<ClusterNode> backups) {
if (F.isEmpty(batches) || F.isEmpty(pending))
return true;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
index a9c133a..6c83700 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
@@ -136,7 +136,6 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCacheCompoundIdentity
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public boolean onNodeLeft(UUID nodeId) {
for (IgniteInternalFuture<?> fut : futures())
if (isMini(fut)) {
@@ -614,7 +613,6 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCacheCompoundIdentity
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public void addDiagnosticRequest(IgniteDiagnosticPrepareContext ctx) {
if (!isDone()) {
for (IgniteInternalFuture fut : futures()) {
@@ -657,7 +655,6 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCacheCompoundIdentity
/** {@inheritDoc} */
@Override public String toString() {
Collection<String> futs = F.viewReadOnly(futures(), new C1<IgniteInternalFuture<?>, String>() {
- @SuppressWarnings("unchecked")
@Override public String apply(IgniteInternalFuture<?> f) {
if (f.getClass() == MiniFuture.class) {
return "[node=" + ((MiniFuture)f).node().id() +
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
index 53c4942..c83681c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
@@ -539,7 +539,6 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public IgniteInternalFuture<IgniteInternalTx> commitAsync() {
return commitDhtLocalAsync();
}
@@ -663,7 +662,6 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Nullable @Override public IgniteInternalFuture<?> currentPrepareFuture() {
return prepFut;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
index 58edc9d..2e46d2b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
@@ -1035,7 +1035,6 @@ public final class GridDhtTxPrepareFuture extends GridCacheCompoundFuture<Ignite
*
* @param req Prepare request.
*/
- @SuppressWarnings("TypeMayBeWeakened")
public void prepare(GridNearTxPrepareRequest req) {
assert req != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/NearTxQueryEnlistResultHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/NearTxQueryEnlistResultHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/NearTxQueryEnlistResultHandler.java
index 2058377..00289ca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/NearTxQueryEnlistResultHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/NearTxQueryEnlistResultHandler.java
@@ -56,7 +56,6 @@ public final class NearTxQueryEnlistResultHandler implements CI1<IgniteInternalF
* @param future Enlist future.
* @return Enlist response.
*/
- @SuppressWarnings("unchecked")
public static <T extends GridNearTxQueryEnlistResponse> T createResponse(IgniteInternalFuture<?> future) {
assert future != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/NearTxResultHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/NearTxResultHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/NearTxResultHandler.java
index 0bc00e1..1332b09 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/NearTxResultHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/NearTxResultHandler.java
@@ -57,7 +57,6 @@ public final class NearTxResultHandler implements CI1<IgniteInternalFuture<GridC
* @param future Enlist future.
* @return Enlist response.
*/
- @SuppressWarnings("unchecked")
public static <T> T createResponse(IgniteInternalFuture<?> future) {
assert future != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index 51dae50..ab4287e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -224,7 +224,6 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
}
/** {@inheritDoc} */
- @SuppressWarnings({"IfMayBeConditional"})
@Override public void start() throws IgniteCheckedException {
super.start();
@@ -2730,7 +2729,6 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
* @param expiry Expiry policy.
* @param sndPrevVal If {@code true} sends previous value to backups.
*/
- @SuppressWarnings("ForLoopReplaceableByForEach")
@Nullable private void updatePartialBatch(
final boolean hasNear,
final int firstEntryIdx,
@@ -2984,7 +2982,6 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
* @throws GridDhtInvalidPartitionException If entry does not belong to local node. If exception is thrown, locks
* are released.
*/
- @SuppressWarnings("ForLoopReplaceableByForEach")
private List<GridDhtCacheEntry> lockEntries(GridNearAtomicAbstractUpdateRequest req, AffinityTopologyVersion topVer)
throws GridDhtInvalidPartitionException {
if (req.size() == 1) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicFullUpdateRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicFullUpdateRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicFullUpdateRequest.java
index 170586b..08aa469 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicFullUpdateRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicFullUpdateRequest.java
@@ -267,7 +267,6 @@ public class GridNearAtomicFullUpdateRequest extends GridNearAtomicAbstractUpdat
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public CacheObject value(int idx) {
assert op == UPDATE : op;
@@ -275,7 +274,6 @@ public class GridNearAtomicFullUpdateRequest extends GridNearAtomicAbstractUpdat
}
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
@Override public EntryProcessor<Object, Object, Object> entryProcessor(int idx) {
assert op == TRANSFORM : op;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9d5610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
index 486a6e0..d4e81e0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
@@ -222,7 +222,6 @@ public class GridNearAtomicSingleUpdateFuture extends GridNearAtomicAbstractUpda
}
/** {@inheritDoc} */
- @SuppressWarnings({"unchecked"})
@Override public void onPrimaryResponse(UUID nodeId, GridNearAtomicUpdateResponse res, boolean nodeErr) {
GridNearAtomicAbstractUpdateRequest req;
[49/52] [abbrv] ignite git commit: IGNITE-9893 IGNITE-1757
IGNITE-10723 Adding hibernate-5.3 module
Posted by sb...@apache.org.
IGNITE-9893 IGNITE-1757 IGNITE-10723 Adding hibernate-5.3 module
This change is based on the hibernate-5.1 module
updates to the module:
* added ability to allow for caches to be lazily loaded and created as a result
of post-bootstrap scanning. The module defaults to the same behavior as
the hibernate-5.1 module.
1. added org.apache.ignite.hibernate.verify_atomicity - relaxes the cache
atomicMode check
2. HibernateCacheProxy - now accepts a Supplier which lazily loads the
Ignite caches after the SPI is initialized
3. added org.apache.ignite.hibernate.cache_prefix - prepends all cache names
when a cache is looked up in ignite
4. removed dflt cache as ignite 2.x does not recommend mixed classes in one cache
* all tests now pass as a result of fixing a couple bugs including IGNITE-1757 - Fixes #5008.
Signed-off-by: Ilya Kasnacheev <il...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/272858db
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/272858db
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/272858db
Branch: refs/heads/ignite-627
Commit: 272858dbc8b462f8bd345e3490d3767040379b5f
Parents: 9a1a830
Author: scottmf <sc...@gmail.com>
Authored: Wed Dec 19 17:04:28 2018 +0300
Committer: Ilya Kasnacheev <il...@gmail.com>
Committed: Wed Dec 19 19:03:59 2018 +0300
----------------------------------------------------------------------
.../hibernate/CacheHibernateBlobStore.java | 6 +-
.../config/factory-incorrect-store-cache.xml | 4 +
.../HibernateL2CacheConfigurationSelfTest.java | 17 -
.../hibernate/HibernateL2CacheMultiJvmTest.java | 28 +-
.../CacheHibernateBlobStoreSelfTest.java | 4 -
.../CacheHibernateStoreFactorySelfTest.java | 2 -
.../hibernate/CacheHibernateBlobStore.java | 6 +-
.../config/factory-incorrect-store-cache.xml | 4 +
.../HibernateL2CacheConfigurationSelfTest.java | 17 -
.../hibernate/HibernateL2CacheMultiJvmTest.java | 27 +-
.../CacheHibernateBlobStoreSelfTest.java | 4 -
.../CacheHibernateStoreFactorySelfTest.java | 4 +-
modules/hibernate-5.3/licenses/apache-2.0.txt | 202 ++
modules/hibernate-5.3/pom.xml | 183 ++
.../cache/hibernate/HibernateKeyWrapper.java | 109 +
.../ignite/cache/hibernate/HibernateRegion.java | 74 +
.../cache/hibernate/HibernateRegionFactory.java | 154 ++
.../hibernate/IgniteCachedDomainDataAccess.java | 121 ++
.../hibernate/IgniteCollectionDataAccess.java | 61 +
.../cache/hibernate/IgniteDomainDataRegion.java | 182 ++
.../cache/hibernate/IgniteEntityDataAccess.java | 80 +
.../hibernate/IgniteGeneralDataRegion.java | 89 +
.../hibernate/IgniteNaturalIdDataAccess.java | 80 +
.../hibernate/IgniteQueryResultsRegion.java | 70 +
.../cache/hibernate/IgniteTimestampsRegion.java | 39 +
.../ignite/cache/hibernate/package-info.java | 24 +
.../hibernate/CacheHibernateBlobStore.java | 545 +++++
.../hibernate/CacheHibernateBlobStoreEntry.java | 89 +
.../CacheHibernateBlobStoreFactory.java | 235 +++
.../CacheHibernateStoreSessionListener.java | 226 ++
.../cache/store/hibernate/package-info.java | 22 +
.../CacheHibernateBlobStoreEntry.hbm.xml | 31 +
.../src/test/config/factory-cache.xml | 59 +
.../src/test/config/factory-cache1.xml | 61 +
.../config/factory-incorrect-store-cache.xml | 60 +
.../HibernateL2CacheConfigurationSelfTest.java | 409 ++++
.../hibernate/HibernateL2CacheMultiJvmTest.java | 441 ++++
.../hibernate/HibernateL2CacheSelfTest.java | 1991 ++++++++++++++++++
.../HibernateL2CacheStrategySelfTest.java | 570 +++++
.../HibernateL2CacheTransactionalSelfTest.java | 154 ++
...nateL2CacheTransactionalUseSyncSelfTest.java | 31 +
.../CacheHibernateBlobStoreNodeRestartTest.java | 46 +
.../CacheHibernateBlobStoreSelfTest.java | 118 ++
.../CacheHibernateStoreFactorySelfTest.java | 336 +++
...heHibernateStoreSessionListenerSelfTest.java | 242 +++
.../cache/store/hibernate/hibernate.cfg.xml | 41 +
.../cache/store/hibernate/package-info.java | 22 +
.../IgniteBinaryHibernate53TestSuite.java | 37 +
.../testsuites/IgniteHibernate53TestSuite.java | 61 +
.../cache/store/hibernate/hibernate.cfg.xml | 41 +
.../HibernateAccessStrategyAdapter.java | 18 +-
.../HibernateAccessStrategyFactory.java | 144 +-
.../cache/hibernate/HibernateCacheProxy.java | 266 +--
.../HibernateNonStrictAccessStrategy.java | 8 +-
.../HibernateReadOnlyAccessStrategy.java | 8 +-
.../HibernateReadWriteAccessStrategy.java | 40 +-
.../HibernateTransactionalAccessStrategy.java | 26 +-
pom.xml | 2 +
58 files changed, 7703 insertions(+), 268 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-4.2/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-4.2/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java b/modules/hibernate-4.2/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
index c87f08f..6658100 100644
--- a/modules/hibernate-4.2/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
+++ b/modules/hibernate-4.2/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
@@ -92,6 +92,9 @@ public class CacheHibernateBlobStore<K, V> extends CacheStoreAdapter<K, V> {
/** Default <tt>hibernate.hbm2ddl.auto</tt> property value (value is <tt>true</tt>). */
public static final String DFLT_HBM2DDL_AUTO = "update";
+ /** Default <tt>hibernate.connection.pool_size</tt> property value (value is <tt>64</tt>). */
+ public static final String DFLT_CONN_POOL_SIZE = "64";
+
/** Session attribute name. */
private static final String ATTR_SES = "HIBERNATE_STORE_SESSION";
@@ -426,6 +429,7 @@ public class CacheHibernateBlobStore<K, V> extends CacheStoreAdapter<K, V> {
hibernateProps.setProperty("hibernate.connection.url", DFLT_CONN_URL);
hibernateProps.setProperty("hibernate.show_sql", DFLT_SHOW_SQL);
hibernateProps.setProperty("hibernate.hbm2ddl.auto", DFLT_HBM2DDL_AUTO);
+ hibernateProps.setProperty("hibernate.connection.pool_size", DFLT_CONN_POOL_SIZE);
}
Configuration cfg = new Configuration();
@@ -539,4 +543,4 @@ public class CacheHibernateBlobStore<K, V> extends CacheStoreAdapter<K, V> {
private CacheStoreSession session() {
return ses;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-4.2/src/test/config/factory-incorrect-store-cache.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate-4.2/src/test/config/factory-incorrect-store-cache.xml b/modules/hibernate-4.2/src/test/config/factory-incorrect-store-cache.xml
index 459930c..4de9fc9 100644
--- a/modules/hibernate-4.2/src/test/config/factory-incorrect-store-cache.xml
+++ b/modules/hibernate-4.2/src/test/config/factory-incorrect-store-cache.xml
@@ -23,6 +23,10 @@
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
+ <property name="failureHandler">
+ <bean class="org.apache.ignite.failure.NoOpFailureHandler"/>
+ </property>
+
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java b/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
index eb09c59..59b58c4 100644
--- a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
+++ b/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
@@ -47,7 +47,6 @@ import org.junit.runners.JUnit4;
import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.DFLT_ACCESS_TYPE_PROPERTY;
-import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.DFLT_CACHE_NAME_PROPERTY;
import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.IGNITE_INSTANCE_NAME_PROPERTY;
import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.REGION_CACHE_PROPERTY;
import static org.hibernate.cfg.AvailableSettings.CACHE_REGION_FACTORY;
@@ -83,9 +82,6 @@ public class HibernateL2CacheConfigurationSelfTest extends GridCommonAbstractTes
/** */
public static final String CONNECTION_URL = "jdbc:h2:mem:example;DB_CLOSE_DELAY=-1";
- /** If {@code true} then sets default cache in configuration. */
- private boolean dfltCache;
-
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
startGrid(0);
@@ -163,9 +159,6 @@ public class HibernateL2CacheConfigurationSelfTest extends GridCommonAbstractTes
cfg.setProperty(REGION_CACHE_PROPERTY + TIMESTAMP_CACHE, TIMESTAMP_CACHE);
cfg.setProperty(REGION_CACHE_PROPERTY + QUERY_CACHE, QUERY_CACHE);
- if (dfltCache)
- cfg.setProperty(DFLT_CACHE_NAME_PROPERTY, "cache3");
-
return cfg;
}
@@ -178,16 +171,6 @@ public class HibernateL2CacheConfigurationSelfTest extends GridCommonAbstractTes
}
/**
- * Tests property {@link HibernateAccessStrategyFactory#DFLT_CACHE_NAME_PROPERTY}.
- */
- @Test
- public void testDefaultCache() {
- dfltCache = true;
-
- testCacheUsage(1, 1, 2, 0, 0);
- }
-
- /**
* @param expCache1 Expected size of cache with name 'cache1'.
* @param expCache2 Expected size of cache with name 'cache2'.
* @param expCache3 Expected size of cache with name 'cache3'.
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java b/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
index 43c54b2..e88962a 100644
--- a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
+++ b/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
@@ -40,8 +40,9 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
-import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.DFLT_CACHE_NAME_PROPERTY;
import static org.apache.ignite.cache.hibernate.HibernateL2CacheSelfTest.CONNECTION_URL;
import static org.apache.ignite.cache.hibernate.HibernateL2CacheSelfTest.hibernateProperties;
import static org.hibernate.cache.spi.access.AccessType.NONSTRICT_READ_WRITE;
@@ -52,7 +53,7 @@ import static org.hibernate.cache.spi.access.AccessType.NONSTRICT_READ_WRITE;
@RunWith(JUnit4.class)
public class HibernateL2CacheMultiJvmTest extends GridCommonAbstractTest {
/** */
- private static final String CACHE_NAME = "hibernateCache";
+ private static final String TIMESTAMP_CACHE = "org.hibernate.cache.spi.UpdateTimestampsCache";
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
@@ -61,12 +62,12 @@ public class HibernateL2CacheMultiJvmTest extends GridCommonAbstractTest {
if (!getTestIgniteInstanceName(0).equals(igniteInstanceName))
cfg.setClientMode(true);
- CacheConfiguration ccfg = new CacheConfiguration();
-
- ccfg.setName(CACHE_NAME);
- ccfg.setWriteSynchronizationMode(FULL_SYNC);
-
- cfg.setCacheConfiguration(ccfg);
+ cfg.setCacheConfiguration(
+ cacheConfiguration(TIMESTAMP_CACHE),
+ cacheConfiguration(Entity1.class.getName()),
+ cacheConfiguration(Entity2.class.getName()),
+ cacheConfiguration(Entity3.class.getName())
+ );
cfg.setMarshaller(new BinaryMarshaller());
@@ -75,6 +76,15 @@ public class HibernateL2CacheMultiJvmTest extends GridCommonAbstractTest {
return cfg;
}
+ private CacheConfiguration cacheConfiguration(String cacheName) {
+ CacheConfiguration cfg = new CacheConfiguration();
+ cfg.setName(cacheName);
+ cfg.setCacheMode(PARTITIONED);
+ cfg.setAtomicityMode(ATOMIC);
+ cfg.setWriteSynchronizationMode(FULL_SYNC);
+ return cfg;
+ }
+
/** {@inheritDoc} */
@Override protected boolean isMultiJvm() {
return true;
@@ -246,8 +256,6 @@ public class HibernateL2CacheMultiJvmTest extends GridCommonAbstractTest {
for (Map.Entry<String, String> e : hibernateProperties(nodeName, NONSTRICT_READ_WRITE.name()).entrySet())
cfg.setProperty(e.getKey(), e.getValue());
- cfg.setProperty(DFLT_CACHE_NAME_PROPERTY, CACHE_NAME);
-
return cfg;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java b/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
index 77025a1..f1b88d4 100644
--- a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
+++ b/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
@@ -106,8 +106,4 @@ public class CacheHibernateBlobStoreSelfTest extends
// Store will be implicitly initialized.
store.load("key");
}
-
- @Override public void testSimpleMultithreading() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-1757");
- }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java b/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
index e115551..a0663f3 100644
--- a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
+++ b/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
@@ -90,8 +90,6 @@ public class CacheHibernateStoreFactorySelfTest extends GridCommonAbstractTest {
*/
@Test
public void testIncorrectBeanConfiguration() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-10723");
-
GridTestUtils.assertThrows(log, new Callable<Object>() {
@Override public Object call() throws Exception {
try(Ignite ignite =
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.1/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.1/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java b/modules/hibernate-5.1/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
index 6e546b0..461af92 100644
--- a/modules/hibernate-5.1/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
+++ b/modules/hibernate-5.1/src/main/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStore.java
@@ -93,6 +93,9 @@ public class CacheHibernateBlobStore<K, V> extends CacheStoreAdapter<K, V> {
/** Default <tt>hibernate.hbm2ddl.auto</tt> property value (value is <tt>true</tt>). */
public static final String DFLT_HBM2DDL_AUTO = "update";
+ /** Default <tt>hibernate.connection.pool_size</tt> property value (value is <tt>64</tt>). */
+ public static final String DFLT_CONN_POOL_SIZE = "64";
+
/** Session attribute name. */
private static final String ATTR_SES = "HIBERNATE_STORE_SESSION";
@@ -427,6 +430,7 @@ public class CacheHibernateBlobStore<K, V> extends CacheStoreAdapter<K, V> {
hibernateProps.setProperty("hibernate.connection.url", DFLT_CONN_URL);
hibernateProps.setProperty("hibernate.show_sql", DFLT_SHOW_SQL);
hibernateProps.setProperty("hibernate.hbm2ddl.auto", DFLT_HBM2DDL_AUTO);
+ hibernateProps.setProperty("hibernate.connection.pool_size", DFLT_CONN_POOL_SIZE);
}
Configuration cfg = new Configuration();
@@ -540,4 +544,4 @@ public class CacheHibernateBlobStore<K, V> extends CacheStoreAdapter<K, V> {
private CacheStoreSession session() {
return ses;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.1/src/test/config/factory-incorrect-store-cache.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.1/src/test/config/factory-incorrect-store-cache.xml b/modules/hibernate-5.1/src/test/config/factory-incorrect-store-cache.xml
index 459930c..4de9fc9 100644
--- a/modules/hibernate-5.1/src/test/config/factory-incorrect-store-cache.xml
+++ b/modules/hibernate-5.1/src/test/config/factory-incorrect-store-cache.xml
@@ -23,6 +23,10 @@
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
+ <property name="failureHandler">
+ <bean class="org.apache.ignite.failure.NoOpFailureHandler"/>
+ </property>
+
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java b/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
index f828d04..e8282b1 100644
--- a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
+++ b/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheConfigurationSelfTest.java
@@ -46,7 +46,6 @@ import org.junit.runners.JUnit4;
import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
-import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.DFLT_CACHE_NAME_PROPERTY;
import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.REGION_CACHE_PROPERTY;
import static org.hibernate.cfg.AvailableSettings.CACHE_REGION_FACTORY;
import static org.hibernate.cfg.AvailableSettings.GENERATE_STATISTICS;
@@ -81,9 +80,6 @@ public class HibernateL2CacheConfigurationSelfTest extends GridCommonAbstractTes
/** */
public static final String CONNECTION_URL = "jdbc:h2:mem:example;DB_CLOSE_DELAY=-1";
- /** If {@code true} then sets default cache in configuration. */
- private boolean dfltCache;
-
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
startGrid(0);
@@ -160,9 +156,6 @@ public class HibernateL2CacheConfigurationSelfTest extends GridCommonAbstractTes
cfg.setProperty(REGION_CACHE_PROPERTY + TIMESTAMP_CACHE, TIMESTAMP_CACHE);
cfg.setProperty(REGION_CACHE_PROPERTY + QUERY_CACHE, QUERY_CACHE);
- if (dfltCache)
- cfg.setProperty(DFLT_CACHE_NAME_PROPERTY, "cache3");
-
return cfg;
}
@@ -175,16 +168,6 @@ public class HibernateL2CacheConfigurationSelfTest extends GridCommonAbstractTes
}
/**
- * Tests property {@link HibernateAccessStrategyFactory#DFLT_CACHE_NAME_PROPERTY}.
- */
- @Test
- public void testDefaultCache() {
- dfltCache = true;
-
- testCacheUsage(1, 1, 2, 0, 0);
- }
-
- /**
* @param expCache1 Expected size of cache with name 'cache1'.
* @param expCache2 Expected size of cache with name 'cache2'.
* @param expCache3 Expected size of cache with name 'cache3'.
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java b/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
index b3da8bb..e712484 100644
--- a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
+++ b/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/hibernate/HibernateL2CacheMultiJvmTest.java
@@ -40,8 +40,9 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
-import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.DFLT_CACHE_NAME_PROPERTY;
import static org.apache.ignite.cache.hibernate.HibernateL2CacheSelfTest.CONNECTION_URL;
import static org.apache.ignite.cache.hibernate.HibernateL2CacheSelfTest.hibernateProperties;
import static org.hibernate.cache.spi.access.AccessType.NONSTRICT_READ_WRITE;
@@ -52,7 +53,7 @@ import static org.hibernate.cache.spi.access.AccessType.NONSTRICT_READ_WRITE;
@RunWith(JUnit4.class)
public class HibernateL2CacheMultiJvmTest extends GridCommonAbstractTest {
/** */
- private static final String CACHE_NAME = "hibernateCache";
+ private static final String TIMESTAMP_CACHE = "org.hibernate.cache.spi.UpdateTimestampsCache";
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
@@ -61,12 +62,12 @@ public class HibernateL2CacheMultiJvmTest extends GridCommonAbstractTest {
if (!getTestIgniteInstanceName(0).equals(igniteInstanceName))
cfg.setClientMode(true);
- CacheConfiguration ccfg = new CacheConfiguration();
-
- ccfg.setName(CACHE_NAME);
- ccfg.setWriteSynchronizationMode(FULL_SYNC);
-
- cfg.setCacheConfiguration(ccfg);
+ cfg.setCacheConfiguration(
+ cacheConfiguration(TIMESTAMP_CACHE),
+ cacheConfiguration(Entity1.class.getName()),
+ cacheConfiguration(Entity2.class.getName()),
+ cacheConfiguration(Entity3.class.getName())
+ );
cfg.setMarshaller(new BinaryMarshaller());
@@ -75,6 +76,15 @@ public class HibernateL2CacheMultiJvmTest extends GridCommonAbstractTest {
return cfg;
}
+ private CacheConfiguration cacheConfiguration(String cacheName) {
+ CacheConfiguration cfg = new CacheConfiguration();
+ cfg.setName(cacheName);
+ cfg.setCacheMode(PARTITIONED);
+ cfg.setAtomicityMode(ATOMIC);
+ cfg.setWriteSynchronizationMode(FULL_SYNC);
+ return cfg;
+ }
+
/** {@inheritDoc} */
@Override protected boolean isMultiJvm() {
return true;
@@ -229,7 +239,6 @@ public class HibernateL2CacheMultiJvmTest extends GridCommonAbstractTest {
builder.applySetting(e.getKey(), e.getValue());
builder.applySetting("hibernate.connection.url", CONNECTION_URL);
- builder.applySetting(DFLT_CACHE_NAME_PROPERTY, CACHE_NAME);
MetadataSources metadataSources = new MetadataSources(builder.build());
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java b/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
index 9deaeec..83dd6e8 100644
--- a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
+++ b/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
@@ -115,8 +115,4 @@ public class CacheHibernateBlobStoreSelfTest extends
store.load("key");
}
- @Test
- @Override public void testSimpleMultithreading() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-1757");
- }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java b/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
index 86a058b..f1ea2be 100644
--- a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
+++ b/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
@@ -90,11 +90,9 @@ public class CacheHibernateStoreFactorySelfTest extends GridCommonAbstractTest {
*/
@Test
public void testIncorrectBeanConfiguration() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-10723");
-
GridTestUtils.assertThrows(log, new Callable<Object>() {
@Override public Object call() throws Exception {
- try(Ignite ignite =
+ try (Ignite ignite =
Ignition.start(MODULE_PATH + "/src/test/config/factory-incorrect-store-cache.xml")) {
ignite.cache(CACHE_NAME).getConfiguration(CacheConfiguration.class).
getCacheStoreFactory().create();
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/licenses/apache-2.0.txt
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/licenses/apache-2.0.txt b/modules/hibernate-5.3/licenses/apache-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/modules/hibernate-5.3/licenses/apache-2.0.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/pom.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/pom.xml b/modules/hibernate-5.3/pom.xml
new file mode 100644
index 0000000..9e87de5
--- /dev/null
+++ b/modules/hibernate-5.3/pom.xml
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+
+<!--
+ POM file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-parent</artifactId>
+ <version>1</version>
+ <relativePath>../../parent</relativePath>
+ </parent>
+
+ <artifactId>ignite-hibernate_5.3</artifactId>
+ <version>2.7.0-SNAPSHOT</version>
+ <url>http://ignite.apache.org</url>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-hibernate-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <version>5.3.7.Final</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-jta</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.ow2.jotm</groupId>
+ <artifactId>jotm-core</artifactId>
+ <version>2.1.9</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-dbcp</groupId>
+ <artifactId>commons-dbcp</artifactId>
+ <version>1.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>${h2.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.resource</groupId>
+ <artifactId>connector-api</artifactId>
+ <version>1.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-core</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-spring</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-log4j</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>${spring.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${spring.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ <version>1.4.8</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>lgpl</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <configuration>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+ <build>
+ <testResources>
+ <testResource>
+ <directory>src/main/java</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </testResource>
+ <testResource>
+ <directory>src/test/java</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </testResource>
+ </testResources>
+
+ <plugins>
+ <!-- Generate the OSGi MANIFEST.MF for this bundle. -->
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateKeyWrapper.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateKeyWrapper.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateKeyWrapper.java
new file mode 100644
index 0000000..45d00e4
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateKeyWrapper.java
@@ -0,0 +1,109 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import java.io.Serializable;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.hibernate.cache.internal.DefaultCacheKeysFactory;
+import org.hibernate.engine.spi.SessionFactoryImplementor;
+import org.hibernate.persister.collection.CollectionPersister;
+import org.hibernate.persister.entity.EntityPersister;
+
+/**
+ * Hibernate cache key wrapper.
+ */
+public class HibernateKeyWrapper implements Serializable {
+ /** Key. */
+ private final Object key;
+
+ /** Entry. */
+ private final String entry;
+
+ /** */
+ private final String tenantId;
+
+ /**
+ * @param key Key.
+ * @param entry Entry.
+ * @param tenantId Tenant ID.
+ */
+ HibernateKeyWrapper(Object key, String entry, String tenantId) {
+ this.key = key;
+ this.entry = entry;
+ this.tenantId = tenantId;
+ }
+
+ /**
+ * @return ID.
+ */
+ Object id() {
+ return key;
+ }
+
+ /**
+ * @param id ID.
+ * @param persister Persister.
+ * @param tenantIdentifier Tenant ID.
+ * @return Cache key.
+ * @see DefaultCacheKeysFactory#staticCreateCollectionKey(Object, CollectionPersister, SessionFactoryImplementor, String)
+ */
+ static Object staticCreateCollectionKey(Object id,
+ CollectionPersister persister,
+ String tenantIdentifier) {
+ return new HibernateKeyWrapper(id, persister.getRole(), tenantIdentifier);
+ }
+
+ /**
+ * @param id ID.
+ * @param persister Persister.
+ * @param tenantIdentifier Tenant ID.
+ * @return Cache key.
+ * @see DefaultCacheKeysFactory#staticCreateEntityKey(Object, EntityPersister, SessionFactoryImplementor, String)
+ */
+ public static Object staticCreateEntityKey(Object id, EntityPersister persister, String tenantIdentifier) {
+ return new HibernateKeyWrapper(id, persister.getRootEntityName(), tenantIdentifier);
+ }
+
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o) return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ HibernateKeyWrapper that = (HibernateKeyWrapper) o;
+
+ return (key != null ? key.equals(that.key) : that.key == null) &&
+ (entry != null ? entry.equals(that.entry) : that.entry == null) &&
+ (tenantId != null ? tenantId.equals(that.tenantId) : that.tenantId == null);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ int res = key != null ? key.hashCode() : 0;
+ res = 31 * res + (entry != null ? entry.hashCode() : 0);
+ res = 31 * res + (tenantId != null ? tenantId.hashCode() : 0);
+ return res;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(HibernateKeyWrapper.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateRegion.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateRegion.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateRegion.java
new file mode 100644
index 0000000..184196e
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateRegion.java
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCheckedException;
+import org.hibernate.cache.CacheException;
+import org.hibernate.cache.spi.ExtendedStatisticsSupport;
+import org.hibernate.cache.spi.Region;
+import org.hibernate.cache.spi.RegionFactory;
+import org.hibernate.cache.spi.support.AbstractRegion;
+
+/**
+ * Implementation of {@link Region}. This interface defines base contract for all L2 cache regions.
+ */
+public abstract class HibernateRegion extends AbstractRegion implements ExtendedStatisticsSupport {
+ /** Cache instance. */
+ protected final HibernateCacheProxy cache;
+
+ /** Grid instance. */
+ protected Ignite ignite;
+
+ /** */
+ protected HibernateRegion(RegionFactory factory, String name, Ignite ignite, HibernateCacheProxy cache) {
+ super(name, factory);
+
+ this.ignite = ignite;
+ this.cache = cache;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void clear() {
+ try {
+ cache.clear();
+ } catch (IgniteCheckedException e) {
+ throw new CacheException("Problem clearing cache [name=" + cache.name() + "]", e);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void destroy() throws CacheException {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getElementCountInMemory() {
+ return cache.offHeapEntriesCount();
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getElementCountOnDisk() {
+ return cache.sizeLong();
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getSizeInMemory() {
+ return cache.offHeapAllocatedSize();
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateRegionFactory.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateRegionFactory.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateRegionFactory.java
new file mode 100644
index 0000000..b47cb74
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/HibernateRegionFactory.java
@@ -0,0 +1,154 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import java.time.Instant;
+import java.util.Map;
+import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
+import org.hibernate.boot.spi.SessionFactoryOptions;
+import org.hibernate.cache.CacheException;
+import org.hibernate.cache.cfg.spi.DomainDataRegionBuildingContext;
+import org.hibernate.cache.cfg.spi.DomainDataRegionConfig;
+import org.hibernate.cache.spi.DomainDataRegion;
+import org.hibernate.cache.spi.QueryResultsRegion;
+import org.hibernate.cache.spi.RegionFactory;
+import org.hibernate.cache.spi.TimestampsRegion;
+import org.hibernate.cache.spi.access.AccessType;
+import org.hibernate.cache.spi.support.RegionNameQualifier;
+import org.hibernate.engine.spi.SessionFactoryImplementor;
+
+import static org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.DFLT_ACCESS_TYPE_PROPERTY;
+import static org.hibernate.cache.spi.access.AccessType.NONSTRICT_READ_WRITE;
+
+/**
+ * Hibernate L2 cache region factory.
+ * <p>
+ * Following Hibernate settings should be specified to enable second level cache and to use this
+ * region factory for caching:
+ * <pre name="code" class="brush: xml; gutter: false;">
+ * hibernate.cache.use_second_level_cache=true
+ * hibernate.cache.region.factory_class=org.apache.ignite.cache.hibernate.HibernateRegionFactory
+ * </pre>
+ * Note that before region factory is started you need to start properly configured Ignite node in the same JVM.
+ * For example to start Ignite node one of loader provided in {@code org.apache.ignite.grid.startup} package can be used.
+ * <p>
+ * Name of Ignite instance to be used for region factory must be specified as following Hibernate property:
+ * <pre name="code" class="brush: xml; gutter: false;">
+ * org.apache.ignite.hibernate.ignite_instance_name=<Ignite instance name>
+ * </pre>
+ * Each Hibernate cache region must be associated with some {@link IgniteInternalCache}, by default it is assumed that
+ * for each cache region there is a {@link IgniteInternalCache} with the same name. Also it is possible to define
+ * region to cache mapping using properties with prefix {@code org.apache.ignite.hibernate.region_cache}.
+ * For example if for region with name "region1" cache with name "cache1" should be used then following
+ * Hibernate property should be specified:
+ * <pre name="code" class="brush: xml; gutter: false;">
+ * org.apache.ignite.hibernate.region_cache.region1=cache1
+ * </pre>
+ */
+public class HibernateRegionFactory implements RegionFactory {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** */
+ static final HibernateExceptionConverter EXCEPTION_CONVERTER = new HibernateExceptionConverter() {
+ @Override public RuntimeException convert(Exception e) {
+ return new CacheException(e);
+ }
+ };
+
+ /** Default region access type. */
+ private AccessType dfltAccessType;
+
+ /** Key transformer. */
+ private final HibernateKeyTransformer hibernate4transformer = new HibernateKeyTransformer() {
+ @Override public Object transform(Object key) {
+ return key;
+ }
+ };
+
+ /** */
+ private final HibernateAccessStrategyFactory accessStgyFactory =
+ new HibernateAccessStrategyFactory(hibernate4transformer, EXCEPTION_CONVERTER);
+
+ /** */
+ private SessionFactoryOptions options;
+
+ /** {@inheritDoc} */
+ @Override public void start(SessionFactoryOptions options, Map cfgValues) throws CacheException {
+ this.options = options;
+
+ String accessType = cfgValues.getOrDefault(
+ DFLT_ACCESS_TYPE_PROPERTY, NONSTRICT_READ_WRITE.name()).toString();
+
+ dfltAccessType = AccessType.valueOf(accessType);
+
+ accessStgyFactory.start(cfgValues);
+ }
+
+ /**
+ * @return Access strategy factory.
+ */
+ HibernateAccessStrategyFactory accessStrategyFactory() {
+ return accessStgyFactory;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void stop() {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isMinimalPutsEnabledByDefault() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
+ @Override public AccessType getDefaultAccessType() {
+ return dfltAccessType;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long nextTimestamp() {
+ return Instant.now().toEpochMilli();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String qualify(String regionName) {
+ return RegionNameQualifier.INSTANCE.qualify(regionName, options);
+ }
+
+ /** {@inheritDoc} */
+ @Override public DomainDataRegion buildDomainDataRegion(
+ DomainDataRegionConfig regionCfg,
+ DomainDataRegionBuildingContext buildingCtx) {
+ return new IgniteDomainDataRegion(regionCfg, this, null, buildingCtx,
+ accessStgyFactory);
+ }
+
+ /** {@inheritDoc} */
+ @Override public QueryResultsRegion buildQueryResultsRegion(String regionName, SessionFactoryImplementor sessFactory) {
+ return new IgniteQueryResultsRegion(this, regionName, accessStgyFactory.node(),
+ accessStgyFactory.regionCache(regionName));
+ }
+
+ /** {@inheritDoc} */
+ @Override public TimestampsRegion buildTimestampsRegion(String regionName, SessionFactoryImplementor sessFactory) {
+ return new IgniteTimestampsRegion(this, regionName, accessStgyFactory.node(),
+ accessStgyFactory.regionCache(regionName));
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteCachedDomainDataAccess.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteCachedDomainDataAccess.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteCachedDomainDataAccess.java
new file mode 100644
index 0000000..4003418
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteCachedDomainDataAccess.java
@@ -0,0 +1,121 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import org.apache.ignite.Ignite;
+import org.hibernate.cache.CacheException;
+import org.hibernate.cache.spi.DomainDataRegion;
+import org.hibernate.cache.spi.RegionFactory;
+import org.hibernate.cache.spi.access.CachedDomainDataAccess;
+import org.hibernate.cache.spi.access.SoftLock;
+import org.hibernate.engine.spi.SharedSessionContractImplementor;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Implementation of L2 cache access strategy delegating to {@link HibernateAccessStrategyAdapter}.
+ */
+public abstract class IgniteCachedDomainDataAccess extends HibernateRegion implements CachedDomainDataAccess {
+ /** */
+ protected final HibernateAccessStrategyAdapter stgy;
+
+ /** */
+ private DomainDataRegion domainDataRegion;
+
+ /**
+ * @param stgy Access strategy implementation.
+ */
+ protected IgniteCachedDomainDataAccess(HibernateAccessStrategyAdapter stgy,
+ RegionFactory regionFactory,
+ DomainDataRegion domainDataRegion,
+ Ignite ignite, HibernateCacheProxy cache) {
+ super(regionFactory, cache.name(), ignite, cache);
+
+ this.stgy = stgy;
+ this.domainDataRegion = domainDataRegion;
+ }
+
+ /** {@inheritDoc} */
+ @Override public DomainDataRegion getRegion() {
+ return domainDataRegion;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object get(SharedSessionContractImplementor ses, Object key) throws CacheException {
+ return stgy.get(key);
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean putFromLoad(SharedSessionContractImplementor ses, Object key, Object value, Object version) throws CacheException {
+ stgy.putFromLoad(key, value);
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean putFromLoad(SharedSessionContractImplementor ses, Object key, Object value, Object version, boolean minimalPutOverride) throws CacheException {
+ stgy.putFromLoad(key, value);
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override public SoftLock lockItem(SharedSessionContractImplementor ses, Object key, Object version) throws CacheException {
+ stgy.lock(key);
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void unlockItem(SharedSessionContractImplementor ses, Object key, SoftLock lock) throws CacheException {
+ stgy.unlock(key);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void remove(SharedSessionContractImplementor ses, Object key) throws CacheException {
+ stgy.remove(key);
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public SoftLock lockRegion() throws CacheException {
+ stgy.lockRegion();
+
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void unlockRegion(SoftLock lock) throws CacheException {
+ stgy.unlockRegion();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void removeAll(SharedSessionContractImplementor ses) throws CacheException {
+ stgy.removeAll();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void evict(Object key) throws CacheException {
+ stgy.evict(key);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void evictAll() throws CacheException {
+ stgy.evictAll();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean contains(Object key) {
+ return stgy.get(key) != null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteCollectionDataAccess.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteCollectionDataAccess.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteCollectionDataAccess.java
new file mode 100644
index 0000000..aabe32e
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteCollectionDataAccess.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import org.apache.ignite.Ignite;
+import org.hibernate.cache.spi.DomainDataRegion;
+import org.hibernate.cache.spi.RegionFactory;
+import org.hibernate.cache.spi.access.AccessType;
+import org.hibernate.cache.spi.access.CollectionDataAccess;
+import org.hibernate.engine.spi.SessionFactoryImplementor;
+import org.hibernate.persister.collection.CollectionPersister;
+
+/** */
+public class IgniteCollectionDataAccess extends IgniteCachedDomainDataAccess implements CollectionDataAccess {
+ /** */
+ private final AccessType accessType;
+
+ /** */
+ public IgniteCollectionDataAccess(HibernateAccessStrategyAdapter stgy, AccessType accessType,
+ RegionFactory regionFactory,
+ DomainDataRegion domainDataRegion, Ignite ignite,
+ HibernateCacheProxy cache) {
+ super(stgy, regionFactory, domainDataRegion, ignite, cache);
+
+ this.accessType = accessType;
+ }
+
+ /** */
+ @Override public AccessType getAccessType() {
+ return accessType;
+ }
+
+ /** */
+ @Override public Object generateCacheKey(
+ Object id,
+ CollectionPersister persister,
+ SessionFactoryImplementor factory,
+ String tenantIdentifier) {
+ return HibernateKeyWrapper.staticCreateCollectionKey(id, persister, tenantIdentifier);
+ }
+
+ /** */
+ @Override public Object getCacheKeyId(Object cacheKey) {
+ return ((HibernateKeyWrapper)cacheKey).id();
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteDomainDataRegion.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteDomainDataRegion.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteDomainDataRegion.java
new file mode 100644
index 0000000..c422a52
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteDomainDataRegion.java
@@ -0,0 +1,182 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import org.apache.ignite.Ignite;
+import org.hibernate.cache.CacheException;
+import org.hibernate.cache.cfg.spi.CollectionDataCachingConfig;
+import org.hibernate.cache.cfg.spi.DomainDataRegionBuildingContext;
+import org.hibernate.cache.cfg.spi.DomainDataRegionConfig;
+import org.hibernate.cache.cfg.spi.EntityDataCachingConfig;
+import org.hibernate.cache.cfg.spi.NaturalIdDataCachingConfig;
+import org.hibernate.cache.spi.CacheKeysFactory;
+import org.hibernate.cache.spi.ExtendedStatisticsSupport;
+import org.hibernate.cache.spi.RegionFactory;
+import org.hibernate.cache.spi.access.AccessType;
+import org.hibernate.cache.spi.access.CollectionDataAccess;
+import org.hibernate.cache.spi.access.EntityDataAccess;
+import org.hibernate.cache.spi.access.NaturalIdDataAccess;
+import org.hibernate.cache.spi.support.AbstractDomainDataRegion;
+
+/** */
+public class IgniteDomainDataRegion extends AbstractDomainDataRegion implements ExtendedStatisticsSupport {
+ /** */
+ private final HibernateCacheProxy cache;
+
+ /** */
+ private HibernateAccessStrategyFactory stgyFactory;
+
+ /** */
+ public IgniteDomainDataRegion(DomainDataRegionConfig regionCfg,
+ RegionFactory regionFactory,
+ CacheKeysFactory defKeysFactory,
+ DomainDataRegionBuildingContext buildingCtx,
+ HibernateAccessStrategyFactory stgyFactory) {
+ super(regionCfg, regionFactory, defKeysFactory, buildingCtx);
+
+ this.stgyFactory = stgyFactory;
+
+ cache = stgyFactory.regionCache(getName());
+
+ completeInstantiation(regionCfg, buildingCtx);
+ }
+
+ /** */
+ @Override protected EntityDataAccess generateEntityAccess(EntityDataCachingConfig entityAccessCfg) {
+ AccessType accessType = entityAccessCfg.getAccessType();
+ Ignite ignite = stgyFactory.node();
+ switch (accessType) {
+ case READ_ONLY:
+ HibernateAccessStrategyAdapter readOnlyStgy =
+ stgyFactory.createReadOnlyStrategy(cache);
+ return new IgniteEntityDataAccess(readOnlyStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ case NONSTRICT_READ_WRITE:
+ HibernateAccessStrategyAdapter nonStrictReadWriteStgy =
+ stgyFactory.createNonStrictReadWriteStrategy(cache);
+ return new IgniteEntityDataAccess(nonStrictReadWriteStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ case READ_WRITE:
+ HibernateAccessStrategyAdapter readWriteStgy =
+ stgyFactory.createReadWriteStrategy(cache);
+ return new IgniteEntityDataAccess(readWriteStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ case TRANSACTIONAL:
+ HibernateAccessStrategyAdapter transactionalStgy =
+ stgyFactory.createTransactionalStrategy(cache);
+ return new IgniteEntityDataAccess(transactionalStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ default:
+ throw new IllegalArgumentException("Unknown Hibernate access type: " + accessType);
+ }
+ }
+
+ /** */
+ @Override protected CollectionDataAccess generateCollectionAccess(CollectionDataCachingConfig cachingCfg) {
+ HibernateCacheProxy cache = stgyFactory.regionCache(getName());
+ AccessType accessType = cachingCfg.getAccessType();
+ Ignite ignite = stgyFactory.node();
+ switch (accessType) {
+ case READ_ONLY:
+ HibernateAccessStrategyAdapter readOnlyStgy =
+ stgyFactory.createReadOnlyStrategy(cache);
+ return new IgniteCollectionDataAccess(readOnlyStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ case NONSTRICT_READ_WRITE:
+ HibernateAccessStrategyAdapter nonStrictReadWriteStgy =
+ stgyFactory.createNonStrictReadWriteStrategy(cache);
+ return new IgniteCollectionDataAccess(nonStrictReadWriteStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ case READ_WRITE:
+ HibernateAccessStrategyAdapter readWriteStgy =
+ stgyFactory.createReadWriteStrategy(cache);
+ return new IgniteCollectionDataAccess(readWriteStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ case TRANSACTIONAL:
+ HibernateAccessStrategyAdapter transactionalStgy =
+ stgyFactory.createTransactionalStrategy(cache);
+ return new IgniteCollectionDataAccess(transactionalStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ default:
+ throw new IllegalArgumentException("Unknown Hibernate access type: " + accessType);
+ }
+ }
+
+ /** */
+ @Override protected NaturalIdDataAccess generateNaturalIdAccess(NaturalIdDataCachingConfig naturalIdAccessCfg) {
+ HibernateCacheProxy cache = stgyFactory.regionCache(getName());
+ AccessType accessType = naturalIdAccessCfg.getAccessType();
+ Ignite ignite = stgyFactory.node();
+ switch (accessType) {
+ case READ_ONLY:
+ HibernateAccessStrategyAdapter readOnlyStgy =
+ stgyFactory.createReadOnlyStrategy(cache);
+ return new IgniteNaturalIdDataAccess(readOnlyStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ case NONSTRICT_READ_WRITE:
+ HibernateAccessStrategyAdapter nonStrictReadWriteStgy =
+ stgyFactory.createNonStrictReadWriteStrategy(cache);
+ return new IgniteNaturalIdDataAccess(nonStrictReadWriteStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ case READ_WRITE:
+ HibernateAccessStrategyAdapter readWriteStgy =
+ stgyFactory.createReadWriteStrategy(cache);
+ return new IgniteNaturalIdDataAccess(readWriteStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ case TRANSACTIONAL:
+ HibernateAccessStrategyAdapter transactionalStgy =
+ stgyFactory.createTransactionalStrategy(cache);
+ return new IgniteNaturalIdDataAccess(transactionalStgy, accessType, getRegionFactory(),
+ this, ignite, cache);
+
+ default:
+ throw new IllegalArgumentException("Unknown Hibernate access type: " + accessType);
+ }
+ }
+
+ /** */
+ @Override public void destroy() throws CacheException {
+ // no-op
+ }
+
+ /** */
+ @Override public long getElementCountInMemory() {
+ return cache.offHeapEntriesCount();
+ }
+
+ /** */
+ @Override public long getElementCountOnDisk() {
+ return cache.sizeLong();
+ }
+
+ /** */
+ @Override public long getSizeInMemory() {
+ return cache.offHeapAllocatedSize();
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteEntityDataAccess.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteEntityDataAccess.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteEntityDataAccess.java
new file mode 100644
index 0000000..54fad42
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteEntityDataAccess.java
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import org.apache.ignite.Ignite;
+import org.hibernate.cache.spi.DomainDataRegion;
+import org.hibernate.cache.spi.RegionFactory;
+import org.hibernate.cache.spi.access.AccessType;
+import org.hibernate.cache.spi.access.EntityDataAccess;
+import org.hibernate.cache.spi.access.SoftLock;
+import org.hibernate.engine.spi.SessionFactoryImplementor;
+import org.hibernate.engine.spi.SharedSessionContractImplementor;
+import org.hibernate.persister.entity.EntityPersister;
+
+/** */
+public class IgniteEntityDataAccess extends IgniteCachedDomainDataAccess implements EntityDataAccess {
+ /** */
+ private final AccessType accessType;
+
+ /** */
+ public IgniteEntityDataAccess(HibernateAccessStrategyAdapter stgy, AccessType accessType,
+ RegionFactory regionFactory,
+ DomainDataRegion domainDataRegion, Ignite ignite,
+ HibernateCacheProxy cache) {
+ super(stgy, regionFactory, domainDataRegion, ignite, cache);
+
+ this.accessType = accessType;
+ }
+
+ /** */
+ @Override public Object generateCacheKey(Object id, EntityPersister persister, SessionFactoryImplementor factory,
+ String tenantIdentifier) {
+ return HibernateKeyWrapper.staticCreateEntityKey(id, persister, tenantIdentifier);
+ }
+
+ /** */
+ @Override public Object getCacheKeyId(Object cacheKey) {
+ return ((HibernateKeyWrapper) cacheKey).id();
+ }
+
+ /** */
+ @Override public boolean insert(SharedSessionContractImplementor ses, Object key, Object val, Object ver) {
+ return stgy.insert(key, val);
+ }
+
+ /** */
+ @Override public boolean afterInsert(SharedSessionContractImplementor ses, Object key, Object val, Object ver) {
+ return stgy.afterInsert(key, val);
+ }
+
+ /** */
+ @Override public boolean update(SharedSessionContractImplementor ses, Object key, Object val, Object curVer, Object prevVer) {
+ return stgy.update(key, val);
+ }
+
+ /** */
+ @Override public boolean afterUpdate(SharedSessionContractImplementor ses, Object key, Object val, Object curVer, Object prevVer, SoftLock lock) {
+ return stgy.afterUpdate(key, val);
+ }
+
+ /** */
+ @Override public AccessType getAccessType() {
+ return accessType;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteGeneralDataRegion.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteGeneralDataRegion.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteGeneralDataRegion.java
new file mode 100644
index 0000000..4762054
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteGeneralDataRegion.java
@@ -0,0 +1,89 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteLogger;
+import org.hibernate.cache.CacheException;
+import org.hibernate.cache.spi.DirectAccessRegion;
+import org.hibernate.cache.spi.QueryResultsRegion;
+import org.hibernate.cache.spi.RegionFactory;
+import org.hibernate.cache.spi.TimestampsRegion;
+import org.hibernate.engine.spi.SharedSessionContractImplementor;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Implementation of {@link DirectAccessRegion}. This interface defines common contract for {@link QueryResultsRegion}
+ * and {@link TimestampsRegion}.
+ */
+public class IgniteGeneralDataRegion extends HibernateRegion implements DirectAccessRegion {
+ /** */
+ private final IgniteLogger log;
+
+ /**
+ * @param factory Region factory.
+ * @param name Region name.
+ * @param ignite Grid.
+ * @param cache Region cache.
+ */
+ IgniteGeneralDataRegion(RegionFactory factory, String name,
+ Ignite ignite, HibernateCacheProxy cache) {
+ super(factory, name, ignite, cache);
+
+ log = ignite.log().getLogger(getClass());
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public Object getFromCache(Object key, SharedSessionContractImplementor ses) throws CacheException {
+ try {
+ Object val = cache.get(key);
+
+ if (log.isDebugEnabled())
+ log.debug("Get [cache=" + cache.name() + ", key=" + key + ", val=" + val + ']');
+
+ return val;
+ }
+ catch (IgniteCheckedException e) {
+ throw new CacheException(e);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void putIntoCache(Object key, Object val, SharedSessionContractImplementor ses) throws CacheException {
+ try {
+ cache.put(key, val);
+
+ if (log.isDebugEnabled())
+ log.debug("Put [cache=" + cache.name() + ", key=" + key + ", val=" + val + ']');
+ }
+ catch (IgniteCheckedException e) {
+ throw new CacheException(e);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void clear() {
+ try {
+ cache.clear();
+ }
+ catch (IgniteCheckedException e) {
+ throw new CacheException("Problem clearing cache [name=" + cache.name() + "]", e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteNaturalIdDataAccess.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteNaturalIdDataAccess.java b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteNaturalIdDataAccess.java
new file mode 100644
index 0000000..aa11ce5
--- /dev/null
+++ b/modules/hibernate-5.3/src/main/java/org/apache/ignite/cache/hibernate/IgniteNaturalIdDataAccess.java
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.cache.hibernate;
+
+import org.apache.ignite.Ignite;
+import org.hibernate.cache.CacheException;
+import org.hibernate.cache.internal.DefaultCacheKeysFactory;
+import org.hibernate.cache.spi.DomainDataRegion;
+import org.hibernate.cache.spi.RegionFactory;
+import org.hibernate.cache.spi.access.AccessType;
+import org.hibernate.cache.spi.access.NaturalIdDataAccess;
+import org.hibernate.cache.spi.access.SoftLock;
+import org.hibernate.engine.spi.SharedSessionContractImplementor;
+import org.hibernate.persister.entity.EntityPersister;
+
+/** */
+public class IgniteNaturalIdDataAccess extends IgniteCachedDomainDataAccess implements NaturalIdDataAccess {
+ /** */
+ private final AccessType accessType;
+
+ /** */
+ public IgniteNaturalIdDataAccess(HibernateAccessStrategyAdapter stgy, AccessType accessType,
+ RegionFactory regionFactory,
+ DomainDataRegion domainDataRegion, Ignite ignite,
+ HibernateCacheProxy cache) {
+ super(stgy, regionFactory, domainDataRegion, ignite, cache);
+
+ this.accessType = accessType;
+ }
+
+ /** */
+ @Override public AccessType getAccessType() {
+ return accessType;
+ }
+
+ /** */
+ @Override public Object generateCacheKey(Object[] naturalIdValues, EntityPersister persister, SharedSessionContractImplementor ses) {
+ return DefaultCacheKeysFactory.staticCreateNaturalIdKey(naturalIdValues, persister, ses);
+ }
+
+ /** */
+ @Override public Object[] getNaturalIdValues(Object cacheKey) {
+ return DefaultCacheKeysFactory.staticGetNaturalIdValues(cacheKey);
+ }
+
+ /** */
+ @Override public boolean insert(SharedSessionContractImplementor ses, Object key, Object val) throws CacheException {
+ return stgy.insert(key, val);
+ }
+
+ /** */
+ @Override public boolean afterInsert(SharedSessionContractImplementor ses, Object key, Object val) throws CacheException {
+ return stgy.afterInsert(key, val);
+ }
+
+ /** */
+ @Override public boolean update(SharedSessionContractImplementor ses, Object key, Object val) throws CacheException {
+ return stgy.update(key, val);
+ }
+
+ /** */
+ @Override public boolean afterUpdate(SharedSessionContractImplementor ses, Object key, Object val, SoftLock lock) throws CacheException {
+ return stgy.afterUpdate(key, val);
+ }
+}
[36/52] [abbrv] ignite git commit: IGNITE-10719: [ML]
LearningEnvironmentBuilder is not passed in makeBagged
Posted by sb...@apache.org.
IGNITE-10719: [ML] LearningEnvironmentBuilder is not passed in
makeBagged
This closes #5684
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/388f7ffc
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/388f7ffc
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/388f7ffc
Branch: refs/heads/ignite-627
Commit: 388f7ffc448ed44f1a00b03a7bb7f57d57bc117a
Parents: f2d6e43
Author: Artem Malykh <am...@gmail.com>
Authored: Tue Dec 18 22:00:10 2018 +0300
Committer: Yury Babak <yb...@gridgain.com>
Committed: Tue Dec 18 22:00:10 2018 +0300
----------------------------------------------------------------------
.../org/apache/ignite/ml/trainers/TrainerTransformers.java | 2 +-
.../ml/tree/randomforest/RandomForestClassifierTrainer.java | 6 ++++++
.../tree/randomforest/RandomForestClassifierTrainerTest.java | 4 +++-
3 files changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/388f7ffc/modules/ml/src/main/java/org/apache/ignite/ml/trainers/TrainerTransformers.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/trainers/TrainerTransformers.java b/modules/ml/src/main/java/org/apache/ignite/ml/trainers/TrainerTransformers.java
index 1019a39..80a57e0 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/trainers/TrainerTransformers.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/trainers/TrainerTransformers.java
@@ -122,7 +122,7 @@ public class TrainerTransformers {
aggregator,
environment);
}
- };
+ }.withEnvironmentBuilder(trainer.envBuilder);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/388f7ffc/modules/ml/src/main/java/org/apache/ignite/ml/tree/randomforest/RandomForestClassifierTrainer.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/tree/randomforest/RandomForestClassifierTrainer.java b/modules/ml/src/main/java/org/apache/ignite/ml/tree/randomforest/RandomForestClassifierTrainer.java
index 7832584..a76a941 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/tree/randomforest/RandomForestClassifierTrainer.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/tree/randomforest/RandomForestClassifierTrainer.java
@@ -30,6 +30,7 @@ import org.apache.ignite.ml.dataset.feature.ObjectHistogram;
import org.apache.ignite.ml.dataset.impl.bootstrapping.BootstrappedDatasetPartition;
import org.apache.ignite.ml.dataset.impl.bootstrapping.BootstrappedVector;
import org.apache.ignite.ml.dataset.primitive.context.EmptyContext;
+import org.apache.ignite.ml.environment.LearningEnvironmentBuilder;
import org.apache.ignite.ml.tree.randomforest.data.TreeRoot;
import org.apache.ignite.ml.tree.randomforest.data.impurity.GiniHistogram;
import org.apache.ignite.ml.tree.randomforest.data.impurity.GiniHistogramsComputer;
@@ -110,4 +111,9 @@ public class RandomForestClassifierTrainer
@Override protected LeafValuesComputer<ObjectHistogram<BootstrappedVector>> createLeafStatisticsAggregator() {
return new ClassifierLeafValuesComputer(lblMapping);
}
+
+ /** {@inheritDoc} */
+ @Override public RandomForestClassifierTrainer withEnvironmentBuilder(LearningEnvironmentBuilder envBuilder) {
+ return (RandomForestClassifierTrainer)super.withEnvironmentBuilder(envBuilder);
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/388f7ffc/modules/ml/src/test/java/org/apache/ignite/ml/tree/randomforest/RandomForestClassifierTrainerTest.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/test/java/org/apache/ignite/ml/tree/randomforest/RandomForestClassifierTrainerTest.java b/modules/ml/src/test/java/org/apache/ignite/ml/tree/randomforest/RandomForestClassifierTrainerTest.java
index 3a038ff..7d282df 100644
--- a/modules/ml/src/test/java/org/apache/ignite/ml/tree/randomforest/RandomForestClassifierTrainerTest.java
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/tree/randomforest/RandomForestClassifierTrainerTest.java
@@ -20,6 +20,7 @@ package org.apache.ignite.ml.tree.randomforest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
+import org.apache.ignite.ml.TestUtils;
import org.apache.ignite.ml.common.TrainerTest;
import org.apache.ignite.ml.composition.ModelsComposition;
import org.apache.ignite.ml.composition.predictionsaggregator.OnMajorityPredictionsAggregator;
@@ -81,7 +82,8 @@ public class RandomForestClassifierTrainerTest extends TrainerTest {
meta.add(new FeatureMeta("", i, false));
RandomForestClassifierTrainer trainer = new RandomForestClassifierTrainer(meta)
.withAmountOfTrees(100)
- .withFeaturesCountSelectionStrgy(x -> 2);
+ .withFeaturesCountSelectionStrgy(x -> 2)
+ .withEnvironmentBuilder(TestUtils.testEnvBuilder());
ModelsComposition originalMdl = trainer.fit(sample, parts, (k, v) -> VectorUtils.of(k), (k, v) -> v);
ModelsComposition updatedOnSameDS = trainer.update(originalMdl, sample, parts, (k, v) -> VectorUtils.of(k), (k, v) -> v);
[50/52] [abbrv] ignite git commit: ignite-9213 Do not use
IgniteInterruptedCheckedException to complete futures on node stop
Posted by sb...@apache.org.
ignite-9213 Do not use IgniteInterruptedCheckedException to complete futures on node stop
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a8d39906
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a8d39906
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a8d39906
Branch: refs/heads/ignite-627
Commit: a8d39906971fb8e9512b77732739270e71796dac
Parents: 272858d
Author: sboikov <sb...@apache.org>
Authored: Wed Dec 19 22:49:22 2018 +0300
Committer: sboikov <sb...@apache.org>
Committed: Wed Dec 19 22:49:22 2018 +0300
----------------------------------------------------------------------
.../GridCachePartitionExchangeManager.java | 2 +-
.../GridDhtPartitionsExchangeFuture.java | 4 +-
.../CacheLockReleaseNodeLeaveTest.java | 108 +++++++++++++++++--
3 files changed, 106 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/a8d39906/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
index 96158d7..364950c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
@@ -763,7 +763,7 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana
stopErr = cctx.kernalContext().clientDisconnected() ?
new IgniteClientDisconnectedCheckedException(cctx.kernalContext().cluster().clientReconnectFuture(),
"Client node disconnected: " + cctx.igniteInstanceName()) :
- new IgniteInterruptedCheckedException("Node is stopping: " + cctx.igniteInstanceName());
+ new IgniteCheckedException("Node is stopping: " + cctx.igniteInstanceName());
// Stop exchange worker
U.cancel(exchWorker);
http://git-wip-us.apache.org/repos/asf/ignite/blob/a8d39906/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
index 89e03a2..5b9ebf1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
@@ -843,7 +843,9 @@ public class GridDhtPartitionsExchangeFuture extends GridDhtTopologyFutureAdapte
exchLog.info("Finished exchange init [topVer=" + topVer + ", crd=" + crdNode + ']');
}
catch (IgniteInterruptedCheckedException e) {
- onDone(e);
+ assert cctx.kernalContext().isStopping();
+
+ onDone(new IgniteCheckedException("Node stopped"));
throw e;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a8d39906/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLockReleaseNodeLeaveTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLockReleaseNodeLeaveTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLockReleaseNodeLeaveTest.java
index 2d5f5fe..d48d5d1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLockReleaseNodeLeaveTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLockReleaseNodeLeaveTest.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.distributed;
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.concurrent.Callable;
+import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
import org.apache.ignite.Ignite;
@@ -144,8 +145,6 @@ public class CacheLockReleaseNodeLeaveTest extends GridCommonAbstractTest {
*/
@Test
public void testLockTopologyChange() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-9213");
-
final int nodeCnt = 5;
int threadCnt = 8;
final int keys = 100;
@@ -167,9 +166,87 @@ public class CacheLockReleaseNodeLeaveTest extends GridCommonAbstractTest {
Lock lock = cache.lock(i);
lock.lock();
- cache.put(i, i);
+ try {
+ cache.put(i, i);
+ }
+ finally {
+ lock.unlock();
+ }
+ }
+ }
+ }
+ }, threadCnt, "test-lock-thread");
+
+ q.add(f);
+
+ U.sleep(1_000);
+ }
+
+ stop.set(true);
+
+ IgniteInternalFuture<Long> f;
+
+ Exception err = null;
+
+ while ((f = q.poll()) != null) {
+ try {
+ f.get(60_000);
+ }
+ catch (Exception e) {
+ error("Test operation failed: " + e, e);
+
+ if (err == null)
+ err = e;
+ }
+ }
+
+ if (err != null)
+ fail("Test operation failed, see log for details");
+ }
+ finally {
+ stopAllGrids();
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockNodeStop() throws Exception {
+ final int nodeCnt = 3;
+ int threadCnt = 2;
+ final int keys = 100;
+
+ try {
+ final AtomicBoolean stop = new AtomicBoolean(false);
+
+ Queue<IgniteInternalFuture<Long>> q = new ArrayDeque<>(nodeCnt);
- lock.unlock();
+ for (int i = 0; i < nodeCnt; i++) {
+ final Ignite ignite = startGrid(i);
+
+ IgniteInternalFuture<Long> f = GridTestUtils.runMultiThreadedAsync(new Runnable() {
+ @Override public void run() {
+ while (!Thread.currentThread().isInterrupted() && !stop.get()) {
+ try {
+ IgniteCache<Integer, Integer> cache = ignite.cache(REPLICATED_TEST_CACHE);
+
+ for (int i = 0; i < keys; i++) {
+ Lock lock = cache.lock(i);
+ lock.lock();
+
+ try {
+ cache.put(i, i);
+ }
+ finally {
+ lock.unlock();
+ }
+ }
+ }
+ catch (Exception e) {
+ log.info("Ignore error: " + e);
+
+ break;
}
}
}
@@ -180,12 +257,31 @@ public class CacheLockReleaseNodeLeaveTest extends GridCommonAbstractTest {
U.sleep(1_000);
}
+ U.sleep(ThreadLocalRandom.current().nextLong(500) + 500);
+
+ // Stop all nodes, check that threads executing cache operations do not hang.
+ stopAllGrids();
+
stop.set(true);
IgniteInternalFuture<Long> f;
- while ((f = q.poll()) != null)
- f.get(2_000);
+ Exception err = null;
+
+ while ((f = q.poll()) != null) {
+ try {
+ f.get(60_000);
+ }
+ catch (Exception e) {
+ error("Test operation failed: " + e, e);
+
+ if (err == null)
+ err = e;
+ }
+ }
+
+ if (err != null)
+ fail("Test operation failed, see log for details");
}
finally {
stopAllGrids();
[39/52] [abbrv] ignite git commit: IGNITE-9774: Test remuted with a
proper ticket. This closes #5687.
Posted by sb...@apache.org.
IGNITE-9774: Test remuted with a proper ticket. This closes #5687.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ca8a80bf
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ca8a80bf
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ca8a80bf
Branch: refs/heads/ignite-627
Commit: ca8a80bfad854e9caa7c103cd7db6066c997f4e9
Parents: 7d4e1fd
Author: rkondakov <ko...@mail.ru>
Authored: Wed Dec 19 14:25:42 2018 +0300
Committer: Igor Seliverstov <gv...@gmail.com>
Committed: Wed Dec 19 14:25:42 2018 +0300
----------------------------------------------------------------------
.../processors/cache/mvcc/CacheMvccTransactionsTest.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ca8a80bf/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccTransactionsTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccTransactionsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccTransactionsTest.java
index 8be20d5..ffb98e4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccTransactionsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccTransactionsTest.java
@@ -93,6 +93,7 @@ import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionIsolation;
import org.jetbrains.annotations.Nullable;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -1574,9 +1575,8 @@ public class CacheMvccTransactionsTest extends CacheMvccAbstractTest {
* @throws Exception If failed.
*/
@Test
+ @Ignore("https://issues.apache.org/jira/browse/IGNITE-9949")
public void testPutAllGetAll_ClientServer_Backups1_Restart_Scan() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-9774");
-
putAllGetAll(RestartMode.RESTART_RND_SRV, 4, 2, 1, 64, null, SCAN, PUT);
}
[41/52] [abbrv] ignite git commit: IGNITE-10050 Fixed unmuted test
Posted by sb...@apache.org.
IGNITE-10050 Fixed unmuted test
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/664fb93d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/664fb93d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/664fb93d
Branch: refs/heads/ignite-627
Commit: 664fb93da2cd753a92e4f70e7e06d40281d23e7e
Parents: 9dc6d08
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Wed Dec 19 15:10:46 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Wed Dec 19 15:11:07 2018 +0300
----------------------------------------------------------------------
.../cache/ClusterStateAbstractTest.java | 56 +++++++++++---------
1 file changed, 30 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/664fb93d/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClusterStateAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClusterStateAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClusterStateAbstractTest.java
index 059c38c..fc8d2f2 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClusterStateAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClusterStateAbstractTest.java
@@ -122,14 +122,14 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
forbidden.clear();
- grid(0).active(true);
+ grid(0).cluster().active(true);
IgniteCache<Object, Object> cache2 = grid(0).createCache(new CacheConfiguration<>("cache2"));
for (int k = 0; k < ENTRY_CNT; k++)
cache2.put(k, k);
- grid(0).active(false);
+ grid(0).cluster().active(false);
checkInactive(GRID_CNT);
@@ -152,7 +152,7 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
forbidden.clear();
- grid(0).active(true);
+ grid(0).cluster().active(true);
awaitPartitionMapExchange();
@@ -163,7 +163,7 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
for (int g = 0; g < GRID_CNT; g++) {
// Tests that state changes are propagated to existing and new nodes.
- assertTrue(grid(g).active());
+ assertTrue(grid(g).cluster().active());
IgniteCache<Object, Object> cache0 = grid(g).cache(CACHE_NAME);
@@ -196,12 +196,12 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
assertEquals(k, cache0.get(k));
}
- grid(0).active(false);
+ grid(0).cluster().active(false);
GridTestUtils.waitForCondition(new GridAbsPredicate() {
@Override public boolean apply() {
for (int g = 0; g < GRID_CNT; g++) {
- if (grid(g).active())
+ if (grid(g).cluster().active())
return false;
}
@@ -240,7 +240,7 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
forbidden.clear();
- cl.active(true);
+ cl.cluster().active(true);
awaitPartitionMapExchange();
@@ -251,7 +251,7 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
for (int g = 0; g < GRID_CNT + 1; g++) {
// Tests that state changes are propagated to existing and new nodes.
- assertTrue(grid(g).active());
+ assertTrue(grid(g).cluster().active());
IgniteCache<Object, Object> cache0 = grid(g).cache(CACHE_NAME);
@@ -259,12 +259,12 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
assertEquals(k, cache0.get(k));
}
- cl.active(false);
+ cl.cluster().active(false);
GridTestUtils.waitForCondition(new GridAbsPredicate() {
@Override public boolean apply() {
for (int g = 0; g < GRID_CNT + 1; g++) {
- if (grid(g).active())
+ if (grid(g).cluster().active())
return false;
}
@@ -288,16 +288,20 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
lock.lock();
- GridTestUtils.assertThrowsAnyCause(log, new Callable<Object>() {
- @Override public Object call() throws Exception {
- grid(0).active(false);
-
- return null;
- }
- }, IgniteException.class,
- "Failed to deactivate cluster (must invoke the method outside of an active transaction or lock).");
+ try {
+ //noinspection ThrowableNotThrown
+ GridTestUtils.assertThrowsAnyCause(log, new Callable<Object>() {
+ @Override public Object call() {
+ grid(0).cluster().active(false);
- lock.unlock();
+ return null;
+ }
+ }, IgniteException.class,
+ "Failed to deactivate cluster (must invoke the method outside of an active transaction).");
+ }
+ finally {
+ lock.unlock();
+ }
}
/**
@@ -316,25 +320,25 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
}
/**
- * @throws Exception if failed.
*/
private void deactivateWithPendingTransaction(TransactionConcurrency concurrency,
- TransactionIsolation isolation) throws Exception {
+ TransactionIsolation isolation) {
final Ignite ignite0 = grid(0);
final IgniteCache<Object, Object> cache0 = ignite0.cache(CACHE_NAME);
- try (Transaction tx = ignite0.transactions().txStart(concurrency, isolation)) {
+ try (Transaction ignore = ignite0.transactions().txStart(concurrency, isolation)) {
cache0.put(1, "1");
+ //noinspection ThrowableNotThrown
GridTestUtils.assertThrowsAnyCause(log, new Callable<Object>() {
- @Override public Object call() throws Exception {
- grid(0).active(false);
+ @Override public Object call() {
+ grid(0).cluster().active(false);
return null;
}
}, IgniteException.class,
- "Failed to deactivate cluster (must invoke the method outside of an active transaction or lock).");
+ "Failed to deactivate cluster (must invoke the method outside of an active transaction).");
}
assertNull(cache0.get(1));
@@ -346,7 +350,7 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
*/
private void checkInactive(int cnt) {
for (int g = 0; g < cnt; g++)
- assertFalse(grid(g).active());
+ assertFalse(grid(g).cluster().active());
}
/**
[29/52] [abbrv] ignite git commit: IGNITE-4111 Fixed NPE on client
connect before disco impl is initialized - Fixes #5650.
Posted by sb...@apache.org.
IGNITE-4111 Fixed NPE on client connect before disco impl is initialized - Fixes #5650.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c48f3bc1
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c48f3bc1
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c48f3bc1
Branch: refs/heads/ignite-627
Commit: c48f3bc1046b1c496e0261edf7a693efc728b8f6
Parents: 4ae29fc
Author: NSAmelchev <ns...@gmail.com>
Authored: Tue Dec 18 18:50:38 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Tue Dec 18 18:55:54 2018 +0300
----------------------------------------------------------------------
.../spi/discovery/tcp/TcpDiscoverySpi.java | 4 +
...IgniteTcpCommunicationConnectOnInitTest.java | 172 +++++++++++++++++++
.../IgniteSpiCommunicationSelfTestSuite.java | 2 +
3 files changed, 178 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c48f3bc1/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index ce3370e..c48fa11 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -451,6 +451,10 @@ public class TcpDiscoverySpi extends IgniteSpiAdapter implements IgniteDiscovery
/** {@inheritDoc} */
@Override public Collection<ClusterNode> getRemoteNodes() {
+ // Return empty nodes for resolving compatibility until implementation started.
+ if (impl == null)
+ return Collections.emptyList();
+
return impl.getRemoteNodes();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c48f3bc1/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationConnectOnInitTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationConnectOnInitTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationConnectOnInitTest.java
new file mode 100644
index 0000000..0293316
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationConnectOnInitTest.java
@@ -0,0 +1,172 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.spi.communication.tcp;
+
+import java.net.BindException;
+import java.net.InetSocketAddress;
+import java.nio.channels.SocketChannel;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.nio.GridNioServer;
+import org.apache.ignite.internal.util.nio.GridNioServerListenerAdapter;
+import org.apache.ignite.internal.util.nio.GridNioSession;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.spi.IgniteSpiException;
+import org.apache.ignite.spi.communication.tcp.messages.HandshakeWaitMessage;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.jetbrains.annotations.Nullable;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/**
+ * Testing {@link TcpCommunicationSpi} that will send the wait handshake message on received connections until SPI
+ * context initialized.
+ */
+@RunWith(JUnit4.class)
+public class IgniteTcpCommunicationConnectOnInitTest extends GridCommonAbstractTest {
+ /** */
+ private static final int START_PORT = 55443;
+
+ /** */
+ private volatile CountDownLatch commStartLatch;
+
+ /** */
+ private volatile int commSpiBoundedPort;
+
+ /** */
+ private volatile String commSpiSrvAddr;
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ cfg.setCommunicationSpi(new TestCommunicationSpi());
+
+ return cfg;
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testClientConnectBeforeDiscoveryStarted() throws Exception {
+ GridNioServer<?> srvr = startServer();
+
+ try {
+ commStartLatch = new CountDownLatch(1);
+
+ IgniteInternalFuture<Boolean> fut = GridTestUtils.runAsync(() -> {
+ startGrid(0);
+
+ return true;
+ });
+
+ assertTrue(commStartLatch.await(5_000, TimeUnit.MILLISECONDS));
+
+ SocketChannel ch = SocketChannel.open(new InetSocketAddress(commSpiSrvAddr, commSpiBoundedPort));
+
+ GridNioSession ses = srvr.createSession(ch, null, false, null).get();
+
+ boolean wait = GridTestUtils.waitForCondition(
+ () -> ses.bytesReceived() == HandshakeWaitMessage.MESSAGE_FULL_SIZE, 1000);
+
+ assertTrue("Handshake not started.", wait);
+
+ fut.get();
+ }
+ finally {
+ srvr.stop();
+ }
+ }
+
+ /**
+ * Starts custom server.
+ *
+ * @return Started server.
+ * @throws Exception If failed.
+ */
+ @SuppressWarnings("unchecked")
+ private GridNioServer<?> startServer() throws Exception {
+ int srvPort = START_PORT;
+
+ for (int i = 0; i < 10; i++) {
+ try {
+ GridNioServerListenerAdapter lsnr = new GridNioServerListenerAdapter() {
+ @Override public void onConnected(GridNioSession ses) {
+ // No-op.
+ }
+
+ @Override public void onDisconnected(GridNioSession ses, @Nullable Exception e) {
+ // No-op.
+ }
+
+ @Override public void onMessage(GridNioSession ses, Object msg) {
+ // No-op.
+ }
+ };
+
+ GridNioServer<?> srvr = GridNioServer.builder()
+ .address(U.getLocalHost())
+ .port(srvPort)
+ .listener(lsnr)
+ .logger(log)
+ .selectorCount(Runtime.getRuntime().availableProcessors())
+ .igniteInstanceName("nio-test-grid")
+ .filters().build();
+
+ srvr.start();
+
+ return srvr;
+ }
+ catch (IgniteCheckedException e) {
+ if (i < 9 && e.hasCause(BindException.class)) {
+ log.error("Failed to start server, will try another port [err=" + e + ", port=" + srvPort + ']');
+
+ U.sleep(1000);
+
+ srvPort++;
+ }
+ else
+ throw e;
+ }
+ }
+
+ fail("Failed to start server.");
+
+ return null;
+ }
+
+ /** */
+ private class TestCommunicationSpi extends TcpCommunicationSpi {
+ /** {@inheritDoc} */
+ @Override public void spiStart(String igniteInstanceName) throws IgniteSpiException {
+ super.spiStart(igniteInstanceName);
+
+ commSpiBoundedPort = boundPort();
+
+ commSpiSrvAddr = getLocalAddress();
+
+ commStartLatch.countDown();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c48f3bc1/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiCommunicationSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiCommunicationSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiCommunicationSelfTestSuite.java
index 6a38c55..5a208e6 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiCommunicationSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiCommunicationSelfTestSuite.java
@@ -36,6 +36,7 @@ import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiStartStopS
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiTcpFailureDetectionSelfTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiTcpNoDelayOffSelfTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiTcpSelfTest;
+import org.apache.ignite.spi.communication.tcp.IgniteTcpCommunicationConnectOnInitTest;
import org.apache.ignite.spi.communication.tcp.IgniteTcpCommunicationHandshakeWaitSslTest;
import org.apache.ignite.spi.communication.tcp.IgniteTcpCommunicationHandshakeWaitTest;
import org.apache.ignite.spi.communication.tcp.IgniteTcpCommunicationRecoveryAckClosureSelfTest;
@@ -92,6 +93,7 @@ public class IgniteSpiCommunicationSelfTestSuite extends TestSuite {
suite.addTest(new JUnit4TestAdapter(IgniteTcpCommunicationHandshakeWaitTest.class));
suite.addTest(new JUnit4TestAdapter(IgniteTcpCommunicationHandshakeWaitSslTest.class));
+ suite.addTest(new JUnit4TestAdapter(IgniteTcpCommunicationConnectOnInitTest.class));
//suite.addTest(new TestSuite(GridCacheDhtLockBackupSelfTest.class));
[44/52] [abbrv] ignite git commit: IGNITE-10731 Fixed ZK discovery
IgniteCacheReplicatedQuerySelfTest.testNodeLeft test
Posted by sb...@apache.org.
IGNITE-10731 Fixed ZK discovery IgniteCacheReplicatedQuerySelfTest.testNodeLeft test
Signed-off-by: Pavel Kovalenko <jo...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9a1a830a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9a1a830a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9a1a830a
Branch: refs/heads/ignite-627
Commit: 9a1a830a8af1b1b9ad882f58c69b28488a3a3a1f
Parents: 8385993
Author: Vitaliy Biryukov <bi...@gmail.com>
Authored: Wed Dec 19 16:41:05 2018 +0300
Committer: Pavel Kovalenko <jo...@gmail.com>
Committed: Wed Dec 19 16:41:05 2018 +0300
----------------------------------------------------------------------
.../replicated/IgniteCacheReplicatedQuerySelfTest.java | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9a1a830a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
index f741ef2..1d72b8c 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
@@ -46,11 +46,11 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.testsuites.IgniteIgnore;
import org.apache.ignite.transactions.Transaction;
import static org.apache.ignite.cache.CacheMode.REPLICATED;
import static org.apache.ignite.cache.CachePeekMode.ALL;
+import static org.apache.ignite.events.EventType.EVT_NODE_FAILED;
import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
/**
@@ -333,14 +333,13 @@ public class IgniteCacheReplicatedQuerySelfTest extends IgniteCacheAbstractQuery
/**
* @throws Exception If failed.
*/
- @IgniteIgnore(value = "https://issues.apache.org/jira/browse/IGNITE-613", forceFailure = true)
public void testNodeLeft() throws Exception {
Ignite g = startGrid("client");
try {
assertTrue(g.configuration().isClientMode());
- IgniteCache<Integer, Integer> cache = jcache(Integer.class, Integer.class);
+ IgniteCache<Integer, Integer> cache = jcache(g, Integer.class, Integer.class);
for (int i = 0; i < 1000; i++)
cache.put(i, i);
@@ -371,7 +370,7 @@ public class IgniteCacheReplicatedQuerySelfTest extends IgniteCacheAbstractQuery
return true;
}
- }, EVT_NODE_LEFT);
+ }, EVT_NODE_LEFT, EVT_NODE_FAILED);
stopGrid("client");
[21/52] [abbrv] ignite git commit: IGNITE-9902 Fixed ScanQuery to
account for LOST partitions - Fixes #5464.
Posted by sb...@apache.org.
IGNITE-9902 Fixed ScanQuery to account for LOST partitions - Fixes #5464.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/afe23b60
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/afe23b60
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/afe23b60
Branch: refs/heads/ignite-627
Commit: afe23b60bbbf4938cb7c471f20a59b51a7ad26a8
Parents: 64e0e69
Author: Alexey Platonov <ap...@gmail.com>
Authored: Tue Dec 18 17:35:34 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Tue Dec 18 17:35:34 2018 +0300
----------------------------------------------------------------------
.../cache/query/GridCacheQueryAdapter.java | 25 +++++++++++++++++---
.../IgniteCachePartitionLossPolicySelfTest.java | 24 ++++++++++++++++---
2 files changed, 43 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/afe23b60/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
index 36ee3ba..6f3772c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
@@ -33,6 +33,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.PartitionLossPolicy;
import org.apache.ignite.cache.query.Query;
import org.apache.ignite.cache.query.QueryMetrics;
import org.apache.ignite.cluster.ClusterGroup;
@@ -537,9 +538,17 @@ public class GridCacheQueryAdapter<T> implements CacheQuery<T> {
cctx.checkSecurity(SecurityPermission.CACHE_READ);
if (nodes.isEmpty()) {
- if (part != null && forceLocal)
- throw new IgniteCheckedException("No queryable nodes for partition " + part
- + " [forced local query=" + this + "]");
+ if (part != null) {
+ if (forceLocal) {
+ throw new IgniteCheckedException("No queryable nodes for partition " + part
+ + " [forced local query=" + this + "]");
+ }
+
+ if (isSafeLossPolicy()) {
+ throw new IgniteCheckedException("Failed to execute scan query because cache partition has been " +
+ "lost [cacheName=" + cctx.name() + ", part=" + part + "]");
+ }
+ }
return new GridEmptyCloseableIterator();
}
@@ -588,6 +597,16 @@ public class GridCacheQueryAdapter<T> implements CacheQuery<T> {
}
/**
+ * @return true if current PartitionLossPolicy corresponds to *_SAFE values.
+ */
+ private boolean isSafeLossPolicy() {
+ PartitionLossPolicy lossPlc = cctx.cache().configuration().getPartitionLossPolicy();
+
+ return lossPlc == PartitionLossPolicy.READ_ONLY_SAFE ||
+ lossPlc == PartitionLossPolicy.READ_WRITE_SAFE;
+ }
+
+ /**
* @return Nodes to execute on.
*/
private Collection<ClusterNode> nodes() throws IgniteCheckedException {
http://git-wip-us.apache.org/repos/asf/ignite/blob/afe23b60/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCachePartitionLossPolicySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCachePartitionLossPolicySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCachePartitionLossPolicySelfTest.java
index 3855c39..70d139f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCachePartitionLossPolicySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCachePartitionLossPolicySelfTest.java
@@ -32,6 +32,7 @@ import javax.cache.CacheException;
import junit.framework.AssertionFailedError;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cache.PartitionLossPolicy;
import org.apache.ignite.cache.affinity.Affinity;
import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
@@ -837,9 +838,26 @@ public class IgniteCachePartitionLossPolicySelfTest extends GridCommonAbstractTe
* @param parts Partitions.
*/
protected void checkQueryFails(Ignite node, boolean loc, int... parts) {
- // TODO Scan queries never fail due to partition loss - https://issues.apache.org/jira/browse/IGNITE-9902.
- // TODO Need to add an actual check after https://issues.apache.org/jira/browse/IGNITE-9902 is fixed.
- // No-op.
+ if (parts.length == 0)
+ return;
+
+ IgniteCache cache = node.cache(DEFAULT_CACHE_NAME);
+
+ String msg = loc ? "forced local query" : "partition has been lost";
+ GridTestUtils.assertThrows(log, () -> {
+ List res = null;
+ for (int partition : parts) {
+ ScanQuery qry = new ScanQuery();
+ qry.setPartition(partition);
+
+ if (loc)
+ qry.setLocal(true);
+
+ res = cache.query(qry).getAll();
+ }
+
+ return res;
+ }, IgniteCheckedException.class, msg);
}
/** */
[16/52] [abbrv] ignite git commit: IGNITE-9308 Add baseline topology
command to REST API. - Fixes #5019.
Posted by sb...@apache.org.
IGNITE-9308 Add baseline topology command to REST API. - Fixes #5019.
Signed-off-by: Andrey Novikov <an...@gridgain.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7c2ce4c7
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7c2ce4c7
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7c2ce4c7
Branch: refs/heads/ignite-627
Commit: 7c2ce4c7488253590885f75335b6d9209771fa46
Parents: c1edb30
Author: Andrey Novikov <an...@gridgain.com>
Authored: Tue Dec 18 17:34:27 2018 +0700
Committer: Andrey Novikov <an...@gridgain.com>
Committed: Tue Dec 18 17:34:27 2018 +0700
----------------------------------------------------------------------
.../client/suite/IgniteClientTestSuite.java | 2 +
.../JettyRestProcessorBaselineSelfTest.java | 221 +++++++++++++++++++
.../processors/rest/GridRestCommand.java | 12 +
.../processors/rest/GridRestProcessor.java | 6 +
.../cluster/GridBaselineCommandHandler.java | 205 +++++++++++++++++
.../cluster/GridBaselineCommandResponse.java | 161 ++++++++++++++
.../rest/request/GridRestBaselineRequest.java | 65 ++++++
.../http/jetty/GridJettyRestHandler.java | 16 ++
8 files changed, 688 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7c2ce4c7/modules/clients/src/test/java/org/apache/ignite/internal/client/suite/IgniteClientTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/client/suite/IgniteClientTestSuite.java b/modules/clients/src/test/java/org/apache/ignite/internal/client/suite/IgniteClientTestSuite.java
index ff27354..d20da01 100644
--- a/modules/clients/src/test/java/org/apache/ignite/internal/client/suite/IgniteClientTestSuite.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/client/suite/IgniteClientTestSuite.java
@@ -55,6 +55,7 @@ import org.apache.ignite.internal.processors.rest.ChangeStateCommandHandlerTest;
import org.apache.ignite.internal.processors.rest.ClientMemcachedProtocolSelfTest;
import org.apache.ignite.internal.processors.rest.JettyRestProcessorAuthenticationWithCredsSelfTest;
import org.apache.ignite.internal.processors.rest.JettyRestProcessorAuthenticationWithTokenSelfTest;
+import org.apache.ignite.internal.processors.rest.JettyRestProcessorBaselineSelfTest;
import org.apache.ignite.internal.processors.rest.JettyRestProcessorGetAllAsArrayTest;
import org.apache.ignite.internal.processors.rest.JettyRestProcessorSignedSelfTest;
import org.apache.ignite.internal.processors.rest.JettyRestProcessorUnsignedSelfTest;
@@ -100,6 +101,7 @@ public class IgniteClientTestSuite extends TestSuite {
suite.addTest(new JUnit4TestAdapter(JettyRestProcessorAuthenticationWithCredsSelfTest.class));
suite.addTest(new JUnit4TestAdapter(JettyRestProcessorAuthenticationWithTokenSelfTest.class));
suite.addTest(new JUnit4TestAdapter(JettyRestProcessorGetAllAsArrayTest.class));
+ suite.addTest(new JUnit4TestAdapter(JettyRestProcessorBaselineSelfTest.class));
// Test TCP rest processor with original memcache client.
suite.addTest(new JUnit4TestAdapter(ClientMemcachedProtocolSelfTest.class));
http://git-wip-us.apache.org/repos/asf/ignite/blob/7c2ce4c7/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorBaselineSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorBaselineSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorBaselineSelfTest.java
new file mode 100644
index 0000000..d3bfce8
--- /dev/null
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorBaselineSelfTest.java
@@ -0,0 +1,221 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.processors.rest;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.ignite.cluster.BaselineNode;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.processors.rest.handlers.cluster.GridBaselineCommandResponse;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.jetbrains.annotations.Nullable;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import static org.apache.ignite.configuration.WALMode.NONE;
+import static org.apache.ignite.internal.processors.rest.GridRestResponse.STATUS_SUCCESS;
+
+/**
+ * Test REST with enabled authentication.
+ */
+@RunWith(JUnit4.class)
+public class JettyRestProcessorBaselineSelfTest extends JettyRestProcessorCommonSelfTest {
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ U.resolveWorkDirectory(U.defaultWorkDirectory(), "db", true);
+
+ super.beforeTestsStarted();
+
+ // We need to activate cluster.
+ grid(0).cluster().active(true);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ super.afterTest();
+
+ grid(0).cluster().setBaselineTopology(grid(0).cluster().topologyVersion());
+ }
+
+ /** {@inheritDoc} */
+ @Override protected String signature() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ DataStorageConfiguration dsCfg = new DataStorageConfiguration()
+ .setDefaultDataRegionConfiguration(new DataRegionConfiguration()
+ .setMaxSize(100 * 1024 * 1024)
+ .setPersistenceEnabled(true))
+ .setWalMode(NONE);
+
+ cfg.setDataStorageConfiguration(dsCfg);
+
+ return cfg;
+ }
+
+ /**
+ * @param nodes Collection of grid nodes.
+ * @return Collection of node consistent IDs for given collection of grid nodes.
+ */
+ private static Collection<String> nodeConsistentIds(@Nullable Collection<? extends BaselineNode> nodes) {
+ if (nodes == null || nodes.isEmpty())
+ return Collections.emptyList();
+
+ return F.viewReadOnly(nodes, n -> String.valueOf(n.consistentId()));
+ }
+
+ /**
+ * @param content Content to check.
+ * @param baselineSz Expected baseline size.
+ * @param srvsSz Expected server nodes count.
+ */
+ private void assertBaseline(String content, int baselineSz, int srvsSz) throws IOException {
+ assertNotNull(content);
+ assertFalse(content.isEmpty());
+
+ JsonNode node = JSON_MAPPER.readTree(content);
+
+ assertEquals(STATUS_SUCCESS, node.get("successStatus").asInt());
+ assertTrue(node.get("error").isNull());
+
+ assertNotSame(securityEnabled(), node.get("sessionToken").isNull());
+
+ JsonNode res = node.get("response");
+
+ assertFalse(res.isNull());
+
+ GridBaselineCommandResponse baseline = JSON_MAPPER.treeToValue(res, GridBaselineCommandResponse.class);
+
+ assertTrue(baseline.isActive());
+ assertEquals(grid(0).cluster().topologyVersion(), baseline.getTopologyVersion());
+ assertEquals(baselineSz, baseline.getBaseline().size());
+ assertEqualsCollections(nodeConsistentIds(grid(0).cluster().currentBaselineTopology()), baseline.getBaseline());
+ assertEquals(srvsSz, baseline.getServers().size());
+ assertEqualsCollections(nodeConsistentIds(grid(0).cluster().nodes()), baseline.getServers());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testBaseline() throws Exception {
+ int sz = gridCount();
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz, sz);
+
+ // Stop one node. It will stay in baseline.
+ stopGrid(sz - 1);
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz, sz - 1);
+
+ // Start one node. Server node will be added, but baseline will not change.
+ startGrid(sz - 1);
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz, sz);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testBaselineSet() throws Exception {
+ int sz = gridCount();
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz, sz);
+
+ startGrid(sz);
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz, sz + 1);
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_SET, "topVer",
+ String.valueOf(grid(0).cluster().topologyVersion())), sz + 1, sz + 1);
+
+ stopGrid(sz);
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz + 1, sz);
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_SET, "topVer",
+ String.valueOf(grid(0).cluster().topologyVersion())), sz, sz);
+
+ startGrid(sz);
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz, sz + 1);
+
+ ArrayList<String> params = new ArrayList<>();
+ int i = 1;
+
+ for (BaselineNode n : grid(0).cluster().nodes()) {
+ params.add("consistentId" + i++);
+ params.add(String.valueOf(n.consistentId()));
+ }
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_SET, params.toArray(new String[0])),
+ sz + 1, sz + 1);
+
+ stopGrid(sz);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testBaselineAdd() throws Exception {
+ int sz = gridCount();
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz, sz);
+
+ startGrid(sz);
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz, sz + 1);
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_ADD, "consistentId1",
+ grid(sz).localNode().consistentId().toString()), sz + 1, sz + 1);
+
+ stopGrid(sz);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testBaselineRemove() throws Exception {
+ int sz = gridCount();
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz, sz);
+
+ startGrid(sz);
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz, sz + 1);
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_SET, "topVer",
+ String.valueOf(grid(0).cluster().topologyVersion())), sz + 1, sz + 1);
+
+ String consistentId = grid(sz).localNode().consistentId().toString();
+
+ stopGrid(sz);
+ assertBaseline(content(null, GridRestCommand.BASELINE_CURRENT_STATE), sz + 1, sz);
+
+ assertBaseline(content(null, GridRestCommand.BASELINE_REMOVE, "consistentId1",
+ consistentId), sz, sz);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7c2ce4c7/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
index 587ed2e..4046b15 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
@@ -177,6 +177,18 @@ public enum GridRestCommand {
CLUSTER_CURRENT_STATE("currentstate"),
/** */
+ BASELINE_CURRENT_STATE("baseline"),
+
+ /** */
+ BASELINE_SET("setbaseline"),
+
+ /** */
+ BASELINE_ADD("addbaseline"),
+
+ /** */
+ BASELINE_REMOVE("removebaseline"),
+
+ /** */
AUTHENTICATE("authenticate"),
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7c2ce4c7/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index 7db0721..f24c4d3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -49,6 +49,7 @@ import org.apache.ignite.internal.processors.rest.client.message.GridClientTaskR
import org.apache.ignite.internal.processors.rest.handlers.GridRestCommandHandler;
import org.apache.ignite.internal.processors.rest.handlers.auth.AuthenticationCommandHandler;
import org.apache.ignite.internal.processors.rest.handlers.cache.GridCacheCommandHandler;
+import org.apache.ignite.internal.processors.rest.handlers.cluster.GridBaselineCommandHandler;
import org.apache.ignite.internal.processors.rest.handlers.cluster.GridChangeStateCommandHandler;
import org.apache.ignite.internal.processors.rest.handlers.datastructures.DataStructuresCommandHandler;
import org.apache.ignite.internal.processors.rest.handlers.log.GridLogCommandHandler;
@@ -531,6 +532,7 @@ public class GridRestProcessor extends GridProcessorAdapter {
addHandler(new GridChangeStateCommandHandler(ctx));
addHandler(new AuthenticationCommandHandler(ctx));
addHandler(new UserActionCommandHandler(ctx));
+ addHandler(new GridBaselineCommandHandler(ctx));
// Start protocols.
startTcpProtocol();
@@ -895,6 +897,9 @@ public class GridRestProcessor extends GridProcessorAdapter {
case CLUSTER_INACTIVE:
case CLUSTER_ACTIVATE:
case CLUSTER_DEACTIVATE:
+ case BASELINE_SET:
+ case BASELINE_ADD:
+ case BASELINE_REMOVE:
perm = SecurityPermission.ADMIN_OPS;
break;
@@ -912,6 +917,7 @@ public class GridRestProcessor extends GridProcessorAdapter {
case NAME:
case LOG:
case CLUSTER_CURRENT_STATE:
+ case BASELINE_CURRENT_STATE:
case AUTHENTICATE:
case ADD_USER:
case REMOVE_USER:
http://git-wip-us.apache.org/repos/asf/ignite/blob/7c2ce4c7/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cluster/GridBaselineCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cluster/GridBaselineCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cluster/GridBaselineCommandHandler.java
new file mode 100644
index 0000000..88fde87
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cluster/GridBaselineCommandHandler.java
@@ -0,0 +1,205 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.processors.rest.handlers.cluster;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.cluster.BaselineNode;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.cluster.IgniteClusterEx;
+import org.apache.ignite.internal.processors.rest.GridRestCommand;
+import org.apache.ignite.internal.processors.rest.GridRestResponse;
+import org.apache.ignite.internal.processors.rest.handlers.GridRestCommandHandlerAdapter;
+import org.apache.ignite.internal.processors.rest.request.GridRestBaselineRequest;
+import org.apache.ignite.internal.processors.rest.request.GridRestRequest;
+import org.apache.ignite.internal.util.future.GridFinishedFuture;
+import org.apache.ignite.internal.util.typedef.internal.U;
+
+import static java.util.function.Function.identity;
+import static java.util.stream.Collectors.toMap;
+import static org.apache.ignite.internal.processors.rest.GridRestCommand.BASELINE_ADD;
+import static org.apache.ignite.internal.processors.rest.GridRestCommand.BASELINE_CURRENT_STATE;
+import static org.apache.ignite.internal.processors.rest.GridRestCommand.BASELINE_REMOVE;
+import static org.apache.ignite.internal.processors.rest.GridRestCommand.BASELINE_SET;
+
+/**
+ *
+ */
+public class GridBaselineCommandHandler extends GridRestCommandHandlerAdapter {
+ /** Supported commands. */
+ private static final Collection<GridRestCommand> SUPPORTED_COMMANDS = U.sealList(BASELINE_CURRENT_STATE,
+ BASELINE_SET, BASELINE_ADD, BASELINE_REMOVE);
+
+ /**
+ * @param ctx Context.
+ */
+ public GridBaselineCommandHandler(GridKernalContext ctx) {
+ super(ctx);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Collection<GridRestCommand> supportedCommands() {
+ return SUPPORTED_COMMANDS;
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteInternalFuture<GridRestResponse> handleAsync(GridRestRequest req) {
+ assert req != null;
+
+ assert SUPPORTED_COMMANDS.contains(req.command());
+ assert req instanceof GridRestBaselineRequest : "Invalid type of baseline request.";
+
+
+ if (log.isDebugEnabled())
+ log.debug("Handling baseline REST request: " + req);
+
+ GridRestBaselineRequest req0 = (GridRestBaselineRequest)req;
+
+ try {
+ IgniteClusterEx cluster = ctx.grid().cluster();
+
+ List<Object> consistentIds = req0.consistentIds();
+
+ switch (req0.command()) {
+ case BASELINE_CURRENT_STATE: {
+ // No-op.
+
+ break;
+ }
+
+ case BASELINE_SET: {
+ Long topVer = req0.topologyVersion();
+
+ if (topVer == null && consistentIds == null)
+ throw new IgniteCheckedException("Failed to handle request (either topVer or consistentIds should be specified).");
+
+ if (topVer != null)
+ cluster.setBaselineTopology(topVer);
+ else
+ cluster.setBaselineTopology(filterServerNodesByConsId(consistentIds));
+
+ break;
+ }
+
+ case BASELINE_ADD: {
+ if (consistentIds == null)
+ throw new IgniteCheckedException(missingParameter("consistentIds"));
+
+ Set<BaselineNode> baselineTop = new HashSet<>(currentBaseLine());
+
+ baselineTop.addAll(filterServerNodesByConsId(consistentIds));
+
+ cluster.setBaselineTopology(baselineTop);
+
+ break;
+ }
+
+ case BASELINE_REMOVE: {
+ if (consistentIds == null)
+ throw new IgniteCheckedException(missingParameter("consistentIds"));
+
+ Collection<BaselineNode> baseline = currentBaseLine();
+
+ Set<BaselineNode> baselineTop = new HashSet<>(baseline);
+
+ baselineTop.removeAll(filterNodesByConsId(baseline, consistentIds));
+
+ cluster.setBaselineTopology(baselineTop);
+
+ break;
+ }
+
+ default:
+ assert false : "Invalid command for baseline handler: " + req;
+ }
+
+ return new GridFinishedFuture<>(new GridRestResponse(currentState()));
+ }
+ catch (IgniteCheckedException e) {
+ return new GridFinishedFuture<>(e);
+ }
+ finally {
+ if (log.isDebugEnabled())
+ log.debug("Handled baseline REST request: " + req);
+ }
+ }
+
+ /**
+ * @return Current baseline.
+ */
+ private Collection<BaselineNode> currentBaseLine() {
+ Collection<BaselineNode> baselineNodes = ctx.grid().cluster().currentBaselineTopology();
+
+ return baselineNodes != null ? baselineNodes : Collections.emptyList();
+ }
+
+ /**
+ * Collect baseline topology command result.
+ *
+ * @return Baseline descriptor.
+ */
+ private GridBaselineCommandResponse currentState() {
+ IgniteClusterEx cluster = ctx.grid().cluster();
+
+ Collection<? extends BaselineNode> srvrs = cluster.forServers().nodes();
+
+ return new GridBaselineCommandResponse(cluster.active(), cluster.topologyVersion(), currentBaseLine(), srvrs);
+ }
+
+ /**
+ * Filter passed nodes by consistent IDs.
+ *
+ * @param nodes Collection of nodes.
+ * @param consistentIds Collection of consistent IDs.
+ * @throws IllegalStateException In case of some consistent ID not found in nodes collection.
+ */
+ private Collection<BaselineNode> filterNodesByConsId(Collection<? extends BaselineNode> nodes, List<Object> consistentIds) {
+ Map<Object, BaselineNode> nodeMap =
+ nodes.stream().collect(toMap(n -> n.consistentId().toString(), identity()));
+
+ Collection<BaselineNode> filtered = new ArrayList<>(consistentIds.size());
+
+ for (Object consistentId : consistentIds) {
+ BaselineNode node = nodeMap.get(consistentId);
+
+ if (node == null)
+ throw new IllegalStateException("Node not found for consistent ID: " + consistentId);
+
+ filtered.add(node);
+ }
+
+ return filtered;
+ }
+
+ /**
+ * Filter server nodes by consistent IDs.
+ *
+ * @param consistentIds Collection of consistent IDs to add.
+ * @throws IllegalStateException In case of some consistent ID not found in nodes collection.
+ */
+ private Collection<BaselineNode> filterServerNodesByConsId(List<Object> consistentIds) {
+ return filterNodesByConsId(ctx.grid().cluster().forServers().nodes(), consistentIds);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7c2ce4c7/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cluster/GridBaselineCommandResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cluster/GridBaselineCommandResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cluster/GridBaselineCommandResponse.java
new file mode 100644
index 0000000..aae16c0
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cluster/GridBaselineCommandResponse.java
@@ -0,0 +1,161 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.processors.rest.handlers.cluster;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Collection;
+import org.apache.ignite.cluster.BaselineNode;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+
+import static java.util.stream.Collectors.toList;
+
+/**
+ * Result for baseline command.
+ */
+public class GridBaselineCommandResponse implements Externalizable {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Cluster state. */
+ private boolean active;
+
+ /** Current topology version. */
+ private long topVer;
+
+ /** Current baseline nodes. */
+ private Collection<String> baseline;
+
+ /** Current server nodes. */
+ private Collection<String> srvs;
+
+ /**
+ * @param nodes Nodes to process.
+ * @return Collection of consistentIds.
+ */
+ private static Collection<String> consistentIds(Collection<? extends BaselineNode> nodes) {
+ return nodes.stream().map(n -> String.valueOf(n.consistentId())).collect(toList());
+ }
+
+ /**
+ * Default constructor.
+ */
+ public GridBaselineCommandResponse() {
+ // No-op.
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param active Cluster state.
+ * @param topVer Current topology version.
+ * @param baseline Current baseline nodes.
+ * @param srvs Current server nodes.
+ */
+ GridBaselineCommandResponse(
+ boolean active,
+ long topVer,
+ Collection<? extends BaselineNode> baseline,
+ Collection<? extends BaselineNode> srvs
+ ) {
+ this.active = active;
+ this.topVer = topVer;
+ this.baseline = consistentIds(baseline);
+ this.srvs = consistentIds(srvs);
+ }
+
+ /**
+ * @return Cluster state.
+ */
+ public boolean isActive() {
+ return active;
+ }
+
+ /**
+ * @param active Cluster active.
+ */
+ public void setActive(boolean active) {
+ this.active = active;
+ }
+
+ /**
+ * @return Current topology version.
+ */
+ public long getTopologyVersion() {
+ return topVer;
+ }
+
+ /**
+ * @param topVer Current topology version.
+ */
+ public void setTopologyVersion(long topVer) {
+ this.topVer = topVer;
+ }
+
+ /**
+ * @return Baseline nodes.
+ */
+ public Collection<String> getBaseline() {
+ return baseline;
+ }
+
+ /**
+ * @param baseline Baseline nodes.
+ */
+ public void setBaseline(Collection<String> baseline) {
+ this.baseline = baseline;
+ }
+
+ /**
+ * @return Server nodes.
+ */
+ public Collection<String> getServers() {
+ return srvs;
+ }
+
+ /**
+ * @param srvs Server nodes.
+ */
+ public void setServers(Collection<String> srvs) {
+ this.srvs = srvs;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeBoolean(active);
+ out.writeLong(topVer);
+ U.writeCollection(out, baseline);
+ U.writeCollection(out, srvs);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ active = in.readBoolean();
+ topVer = in.readLong();
+ baseline = U.readCollection(in);
+ srvs = U.readCollection(in);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridBaselineCommandResponse.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7c2ce4c7/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestBaselineRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestBaselineRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestBaselineRequest.java
new file mode 100644
index 0000000..a3aa042
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestBaselineRequest.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.processors.rest.request;
+
+import java.util.List;
+import org.apache.ignite.internal.util.typedef.internal.S;
+
+/**
+ * Grid command topology request.
+ */
+public class GridRestBaselineRequest extends GridRestRequest {
+ /** Topology version to set. */
+ private Long topVer;
+
+ /** Collection of consistent IDs to set. */
+ private List<Object> consistentIds;
+
+ /**
+ * @return Topology version to set.
+ */
+ public Long topologyVersion() {
+ return topVer;
+ }
+
+ /**
+ * @param topVer New topology version to set.
+ */
+ public void topologyVersion(Long topVer) {
+ this.topVer = topVer;
+ }
+
+ /**
+ * @return Collection of consistent IDs to set.
+ */
+ public List<Object> consistentIds() {
+ return consistentIds;
+ }
+
+ /**
+ * @param consistentIds New collection of consistent IDs to set.
+ */
+ public void consistentIds(List<Object> consistentIds) {
+ this.consistentIds = consistentIds;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridRestBaselineRequest.class, this, super.toString());
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7c2ce4c7/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
----------------------------------------------------------------------
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
index 000f980..41642c3 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
@@ -51,6 +51,7 @@ import org.apache.ignite.internal.processors.rest.GridRestCommand;
import org.apache.ignite.internal.processors.rest.GridRestProtocolHandler;
import org.apache.ignite.internal.processors.rest.GridRestResponse;
import org.apache.ignite.internal.processors.rest.request.DataStructuresRequest;
+import org.apache.ignite.internal.processors.rest.request.GridRestBaselineRequest;
import org.apache.ignite.internal.processors.rest.request.GridRestCacheRequest;
import org.apache.ignite.internal.processors.rest.request.GridRestChangeStateRequest;
import org.apache.ignite.internal.processors.rest.request.GridRestLogRequest;
@@ -633,6 +634,7 @@ public class GridJettyRestHandler extends AbstractHandler {
case CACHE_CAS:
case CACHE_METRICS:
case CACHE_SIZE:
+ case CACHE_UPDATE_TLL:
case CACHE_METADATA:
case CACHE_REPLACE:
case CACHE_APPEND:
@@ -759,6 +761,20 @@ public class GridJettyRestHandler extends AbstractHandler {
break;
}
+ case BASELINE_CURRENT_STATE:
+ case BASELINE_SET:
+ case BASELINE_ADD:
+ case BASELINE_REMOVE: {
+ GridRestBaselineRequest restReq0 = new GridRestBaselineRequest();
+
+ restReq0.topologyVersion(longValue("topVer", params, null));
+ restReq0.consistentIds(values(null, "consistentId", params));
+
+ restReq = restReq0;
+
+ break;
+ }
+
case AUTHENTICATE: {
restReq = new GridRestRequest();
[07/52] [abbrv] ignite git commit: IGNITE-10716:
ctx.security().onSessionExpired(subjid) is called on rest session expiration
now. - Fixes #5682.
Posted by sb...@apache.org.
IGNITE-10716: ctx.security().onSessionExpired(subjid) is called on rest session expiration now. - Fixes #5682.
Signed-off-by: Ilya Kasnacheev <il...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/91a82a5b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/91a82a5b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/91a82a5b
Branch: refs/heads/ignite-627
Commit: 91a82a5b6c48014a899157e135cdac9d3af42b3d
Parents: 5fb803a
Author: Andrei Aleksandrov <ae...@gmail.com>
Authored: Mon Dec 17 17:34:14 2018 +0300
Committer: Ilya Kasnacheev <il...@gmail.com>
Committed: Mon Dec 17 17:34:14 2018 +0300
----------------------------------------------------------------------
.../apache/ignite/internal/processors/rest/GridRestProcessor.java | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/91a82a5b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index 30d2f0a..7db0721 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -500,6 +500,9 @@ public class GridRestProcessor extends GridProcessorAdapter {
if (ses.isTimedOut(sesTtl)) {
clientId2SesId.remove(ses.clientId, ses.sesId);
sesId2Ses.remove(ses.sesId, ses);
+
+ if (ctx.security().enabled() && ses.secCtx != null && ses.secCtx.subject() != null)
+ ctx.security().onSessionExpired(ses.secCtx.subject().id());
}
}
}
[25/52] [abbrv] ignite git commit: IGNITE-10289: [ML] Import models
from XGBoost
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelParser.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelParser.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelParser.java
new file mode 100644
index 0000000..e202eba
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelParser.java
@@ -0,0 +1,966 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost.parser;
+
+import java.util.List;
+import org.antlr.v4.runtime.NoViableAltException;
+import org.antlr.v4.runtime.Parser;
+import org.antlr.v4.runtime.ParserRuleContext;
+import org.antlr.v4.runtime.RecognitionException;
+import org.antlr.v4.runtime.RuntimeMetaData;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.Vocabulary;
+import org.antlr.v4.runtime.VocabularyImpl;
+import org.antlr.v4.runtime.atn.ATN;
+import org.antlr.v4.runtime.atn.ATNDeserializer;
+import org.antlr.v4.runtime.atn.ParserATNSimulator;
+import org.antlr.v4.runtime.atn.PredictionContextCache;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+import org.antlr.v4.runtime.tree.ParseTreeVisitor;
+import org.antlr.v4.runtime.tree.TerminalNode;
+
+/**
+ * XGBoost model parser generated by ANTLR.
+ */
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
+public class XGBoostModelParser extends Parser {
+ /** ANTLR version checker. */
+ static {
+ RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION);
+ }
+
+ /** DFA. */
+ protected static final DFA[] _decisionToDFA;
+
+ /** Shared context cache. */
+ protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache();
+
+ /** */
+ public static final int
+ YES = 1, NO = 2, MISSING = 3, EQ = 4, COMMA = 5, PLUS = 6, MINUS = 7, DOT = 8, EXP = 9,
+ BOOSTER = 10, LBRACK = 11, RBRACK = 12, COLON = 13, LEAF = 14, INT = 15, DOUBLE = 16,
+ STRING = 17, NEWLINE = 18, LT = 19, WS = 20;
+
+ /** */
+ public static final int
+ RULE_xgValue = 0, RULE_xgHeader = 1, RULE_xgNode = 2, RULE_xgLeaf = 3,
+ RULE_xgTree = 4, RULE_xgModel = 5;
+
+ /** Rule names. */
+ public static final String[] ruleNames = {
+ "xgValue", "xgHeader", "xgNode", "xgLeaf", "xgTree", "xgModel"
+ };
+
+ /** Literal names. */
+ private static final String[] _LITERAL_NAMES = {
+ null, "'yes'", "'no'", "'missing'", "'='", "','", "'+'", "'-'", "'.'",
+ null, "'booster'", "'['", "']'", "':'", "'leaf'", null, null, null, null,
+ "'<'"
+ };
+
+ /** Symbolic names. */
+ private static final String[] _SYMBOLIC_NAMES = {
+ null, "YES", "NO", "MISSING", "EQ", "COMMA", "PLUS", "MINUS", "DOT", "EXP",
+ "BOOSTER", "LBRACK", "RBRACK", "COLON", "LEAF", "INT", "DOUBLE", "STRING",
+ "NEWLINE", "LT", "WS"
+ };
+
+ /** Vocabulary. */
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * Token names.
+ *
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+
+ /** */
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "<INVALID>";
+ }
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Deprecated
+ @Override public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String getGrammarFileName() {
+ return "XGBoostModel.g4";
+ }
+
+ /** {@inheritDoc} */
+ @Override public String[] getRuleNames() {
+ return ruleNames;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String getSerializedATN() {
+ return _serializedATN;
+ }
+
+ /** {@inheritDoc} */
+ @Override public ATN getATN() {
+ return _ATN;
+ }
+
+ /**
+ * Constructs a new instance of XGBoost model parser.
+ *
+ * @param input Token stream.
+ */
+ public XGBoostModelParser(TokenStream input) {
+ super(input);
+ _interp = new ParserATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache);
+ }
+
+ /**
+ * XG value context.
+ */
+ public static class XgValueContext extends ParserRuleContext {
+ /** */
+ public TerminalNode DOUBLE() {
+ return getToken(XGBoostModelParser.DOUBLE, 0);
+ }
+
+ /** */
+ public TerminalNode INT() {
+ return getToken(XGBoostModelParser.INT, 0);
+ }
+
+ /**
+ * Constructs a new instance of XG value context.
+ *
+ * @param parent Parent.
+ * @param invokingState Invoking state.
+ */
+ public XgValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int getRuleIndex() {
+ return RULE_xgValue;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void enterRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).enterXgValue(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void exitRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).exitXgValue(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if (visitor instanceof XGBoostModelVisitor)
+ return ((XGBoostModelVisitor<? extends T>)visitor).visitXgValue(this);
+ else
+ return visitor.visitChildren(this);
+ }
+ }
+
+ /**
+ * Returns XG value.
+ *
+ * @return XG value.
+ * @throws RecognitionException In case of exception.
+ */
+ public final XgValueContext xgValue() throws RecognitionException {
+ XgValueContext _localctx = new XgValueContext(_ctx, getState());
+ enterRule(_localctx, 0, RULE_xgValue);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(12);
+ _la = _input.LA(1);
+ if (!(_la == INT || _la == DOUBLE)) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if (_input.LA(1) == Token.EOF)
+ matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ /**
+ * XG header context.
+ */
+ public static class XgHeaderContext extends ParserRuleContext {
+ /** */
+ public TerminalNode BOOSTER() {
+ return getToken(XGBoostModelParser.BOOSTER, 0);
+ }
+
+ /** */
+ public TerminalNode LBRACK() {
+ return getToken(XGBoostModelParser.LBRACK, 0);
+ }
+
+ /** */
+ public TerminalNode INT() {
+ return getToken(XGBoostModelParser.INT, 0);
+ }
+
+ /** */
+ public TerminalNode RBRACK() {
+ return getToken(XGBoostModelParser.RBRACK, 0);
+ }
+
+ /** */
+ public TerminalNode COLON() {
+ return getToken(XGBoostModelParser.COLON, 0);
+ }
+
+ /**
+ * Constructs a new instance of XG header context.
+ *
+ * @param parent Parent.
+ * @param invokingState Invoking state.
+ */
+ public XgHeaderContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int getRuleIndex() {
+ return RULE_xgHeader;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void enterRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).enterXgHeader(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void exitRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).exitXgHeader(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if (visitor instanceof XGBoostModelVisitor)
+ return ((XGBoostModelVisitor<? extends T>)visitor).visitXgHeader(this);
+ else
+ return visitor.visitChildren(this);
+ }
+ }
+
+ /**
+ * Returns XG header.
+ *
+ * @return XG header.
+ * @throws RecognitionException In case of exception.
+ */
+ public final XgHeaderContext xgHeader() throws RecognitionException {
+ XgHeaderContext _localctx = new XgHeaderContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_xgHeader);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(14);
+ match(BOOSTER);
+ setState(15);
+ match(LBRACK);
+ setState(16);
+ match(INT);
+ setState(17);
+ match(RBRACK);
+ setState(19);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == COLON) {
+ {
+ setState(18);
+ match(COLON);
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ /**
+ * XG node conext.
+ */
+ public static class XgNodeContext extends ParserRuleContext {
+ /** */
+ public List<TerminalNode> INT() {
+ return getTokens(XGBoostModelParser.INT);
+ }
+
+ /** */
+ public TerminalNode INT(int i) {
+ return getToken(XGBoostModelParser.INT, i);
+ }
+
+ /** */
+ public TerminalNode COLON() {
+ return getToken(XGBoostModelParser.COLON, 0);
+ }
+
+ /** */
+ public TerminalNode LBRACK() {
+ return getToken(XGBoostModelParser.LBRACK, 0);
+ }
+
+ /** */
+ public TerminalNode STRING() {
+ return getToken(XGBoostModelParser.STRING, 0);
+ }
+
+ /** */
+ public TerminalNode LT() {
+ return getToken(XGBoostModelParser.LT, 0);
+ }
+
+ /** */
+ public XgValueContext xgValue() {
+ return getRuleContext(XgValueContext.class, 0);
+ }
+
+ /** */
+ public TerminalNode RBRACK() {
+ return getToken(XGBoostModelParser.RBRACK, 0);
+ }
+
+ /** */
+ public TerminalNode YES() {
+ return getToken(XGBoostModelParser.YES, 0);
+ }
+
+ /** */
+ public List<TerminalNode> EQ() {
+ return getTokens(XGBoostModelParser.EQ);
+ }
+
+ /** */
+ public TerminalNode EQ(int i) {
+ return getToken(XGBoostModelParser.EQ, i);
+ }
+
+ /** */
+ public List<TerminalNode> COMMA() {
+ return getTokens(XGBoostModelParser.COMMA);
+ }
+
+ /** */
+ public TerminalNode COMMA(int i) {
+ return getToken(XGBoostModelParser.COMMA, i);
+ }
+
+ /** */
+ public TerminalNode NO() {
+ return getToken(XGBoostModelParser.NO, 0);
+ }
+
+ /** */
+ public TerminalNode MISSING() {
+ return getToken(XGBoostModelParser.MISSING, 0);
+ }
+
+ /**
+ * Constructs a new instance of XG node context.
+ *
+ * @param parent Parent.
+ * @param invokingState Invoking state.
+ */
+ public XgNodeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int getRuleIndex() {
+ return RULE_xgNode;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void enterRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).enterXgNode(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void exitRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).exitXgNode(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if (visitor instanceof XGBoostModelVisitor)
+ return ((XGBoostModelVisitor<? extends T>)visitor).visitXgNode(this);
+ else
+ return visitor.visitChildren(this);
+ }
+ }
+
+ /**
+ * Returns XG node.
+ *
+ * @return XG node.
+ * @throws RecognitionException In case of exception.
+ */
+ public final XgNodeContext xgNode() throws RecognitionException {
+ XgNodeContext _localctx = new XgNodeContext(_ctx, getState());
+ enterRule(_localctx, 4, RULE_xgNode);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(21);
+ match(INT);
+ setState(22);
+ match(COLON);
+ setState(23);
+ match(LBRACK);
+ setState(24);
+ match(STRING);
+ setState(25);
+ match(LT);
+ setState(26);
+ xgValue();
+ setState(27);
+ match(RBRACK);
+ setState(28);
+ match(YES);
+ setState(29);
+ match(EQ);
+ setState(30);
+ match(INT);
+ setState(31);
+ match(COMMA);
+ setState(32);
+ match(NO);
+ setState(33);
+ match(EQ);
+ setState(34);
+ match(INT);
+ setState(35);
+ match(COMMA);
+ setState(36);
+ match(MISSING);
+ setState(37);
+ match(EQ);
+ setState(38);
+ match(INT);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ /**
+ * XG leaf context.
+ */
+ public static class XgLeafContext extends ParserRuleContext {
+ /** */
+ public TerminalNode INT() {
+ return getToken(XGBoostModelParser.INT, 0);
+ }
+
+ /** */
+ public TerminalNode COLON() {
+ return getToken(XGBoostModelParser.COLON, 0);
+ }
+
+ /** */
+ public TerminalNode LEAF() {
+ return getToken(XGBoostModelParser.LEAF, 0);
+ }
+
+ /** */
+ public TerminalNode EQ() {
+ return getToken(XGBoostModelParser.EQ, 0);
+ }
+
+ /** */
+ public XgValueContext xgValue() {
+ return getRuleContext(XgValueContext.class, 0);
+ }
+
+ /**
+ * Constructs a new instance of XG leaf conext.
+ *
+ * @param parent Parent.
+ * @param invokingState Invoking state.
+ */
+ public XgLeafContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int getRuleIndex() {
+ return RULE_xgLeaf;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void enterRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).enterXgLeaf(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void exitRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).exitXgLeaf(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if (visitor instanceof XGBoostModelVisitor)
+ return ((XGBoostModelVisitor<? extends T>)visitor).visitXgLeaf(this);
+ else
+ return visitor.visitChildren(this);
+ }
+ }
+
+ /**
+ * Returns XG leaf.
+ *
+ * @return XG leaf.
+ * @throws RecognitionException In case of exception.
+ */
+ public final XgLeafContext xgLeaf() throws RecognitionException {
+ XgLeafContext _localctx = new XgLeafContext(_ctx, getState());
+ enterRule(_localctx, 6, RULE_xgLeaf);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(40);
+ match(INT);
+ setState(41);
+ match(COLON);
+ setState(42);
+ match(LEAF);
+ setState(43);
+ match(EQ);
+ setState(44);
+ xgValue();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ /**
+ * XG tree context.
+ */
+ public static class XgTreeContext extends ParserRuleContext {
+ /** */
+ public XgHeaderContext xgHeader() {
+ return getRuleContext(XgHeaderContext.class, 0);
+ }
+
+ /** */
+ public List<TerminalNode> NEWLINE() {
+ return getTokens(XGBoostModelParser.NEWLINE);
+ }
+
+ /** */
+ public TerminalNode NEWLINE(int i) {
+ return getToken(XGBoostModelParser.NEWLINE, i);
+ }
+
+ /** */
+ public TerminalNode EOF() {
+ return getToken(XGBoostModelParser.EOF, 0);
+ }
+
+ /** */
+ public List<XgLeafContext> xgLeaf() {
+ return getRuleContexts(XgLeafContext.class);
+ }
+
+ /** */
+ public XgLeafContext xgLeaf(int i) {
+ return getRuleContext(XgLeafContext.class, i);
+ }
+
+ /** */
+ public List<XgNodeContext> xgNode() {
+ return getRuleContexts(XgNodeContext.class);
+ }
+
+ /** */
+ public XgNodeContext xgNode(int i) {
+ return getRuleContext(XgNodeContext.class, i);
+ }
+
+ /**
+ * Constructs a new instance of XG tree context.
+ *
+ * @param parent Parent.
+ * @param invokingState Invoking state.
+ */
+ public XgTreeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int getRuleIndex() {
+ return RULE_xgTree;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void enterRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).enterXgTree(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void exitRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).exitXgTree(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if (visitor instanceof XGBoostModelVisitor)
+ return ((XGBoostModelVisitor<? extends T>)visitor).visitXgTree(this);
+ else
+ return visitor.visitChildren(this);
+ }
+ }
+
+ /** */
+ public final XgTreeContext xgTree() throws RecognitionException {
+ XgTreeContext _localctx = new XgTreeContext(_ctx, getState());
+ enterRule(_localctx, 8, RULE_xgTree);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(46);
+ xgHeader();
+ setState(47);
+ match(NEWLINE);
+ setState(83);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 8, _ctx)) {
+ case 1: {
+ setState(54);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1: {
+ {
+ setState(50);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 1, _ctx)) {
+ case 1: {
+ setState(48);
+ xgLeaf();
+ }
+ break;
+ case 2: {
+ setState(49);
+ xgNode();
+ }
+ break;
+ }
+ setState(52);
+ match(NEWLINE);
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(56);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 2, _ctx);
+ }
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER);
+ setState(64);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == INT) {
+ {
+ setState(60);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 3, _ctx)) {
+ case 1: {
+ setState(58);
+ xgLeaf();
+ }
+ break;
+ case 2: {
+ setState(59);
+ xgNode();
+ }
+ break;
+ }
+ setState(62);
+ match(EOF);
+ }
+ }
+
+ }
+ break;
+ case 2: {
+ setState(74);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 6, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(68);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 5, _ctx)) {
+ case 1: {
+ setState(66);
+ xgLeaf();
+ }
+ break;
+ case 2: {
+ setState(67);
+ xgNode();
+ }
+ break;
+ }
+ setState(70);
+ match(NEWLINE);
+ }
+ }
+ }
+ setState(76);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 6, _ctx);
+ }
+ setState(79);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 7, _ctx)) {
+ case 1: {
+ setState(77);
+ xgLeaf();
+ }
+ break;
+ case 2: {
+ setState(78);
+ xgNode();
+ }
+ break;
+ }
+ setState(81);
+ match(EOF);
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ /**
+ * XG model context.
+ */
+ public static class XgModelContext extends ParserRuleContext {
+ /** */
+ public List<XgTreeContext> xgTree() {
+ return getRuleContexts(XgTreeContext.class);
+ }
+
+ /** */
+ public XgTreeContext xgTree(int i) {
+ return getRuleContext(XgTreeContext.class, i);
+ }
+
+ /**
+ * Constructs a new instance of XG model context.
+ *
+ * @param parent Parent.
+ * @param invokingState Invoking state.
+ */
+ public XgModelContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int getRuleIndex() {
+ return RULE_xgModel;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void enterRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).enterXgModel(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void exitRule(ParseTreeListener listener) {
+ if (listener instanceof XGBoostModelListener)
+ ((XGBoostModelListener)listener).exitXgModel(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if (visitor instanceof XGBoostModelVisitor)
+ return ((XGBoostModelVisitor<? extends T>)visitor).visitXgModel(this);
+ else
+ return visitor.visitChildren(this);
+ }
+ }
+
+ /** */
+ public final XgModelContext xgModel() throws RecognitionException {
+ XgModelContext _localctx = new XgModelContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_xgModel);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(86);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(85);
+ xgTree();
+ }
+ }
+ setState(88);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ while (_la == BOOSTER);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ /** Serialized ATN. */
+ public static final String _serializedATN =
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\26]\4\2\t\2\4\3\t" +
+ "\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\3\2\3\2\3\3\3\3\3\3\3\3\3\3\5\3\26" +
+ "\n\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3" +
+ "\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\5\6\65\n\6\3\6\3\6" +
+ "\6\69\n\6\r\6\16\6:\3\6\3\6\5\6?\n\6\3\6\3\6\5\6C\n\6\3\6\3\6\5\6G\n\6" +
+ "\3\6\3\6\7\6K\n\6\f\6\16\6N\13\6\3\6\3\6\5\6R\n\6\3\6\3\6\5\6V\n\6\3\7" +
+ "\6\7Y\n\7\r\7\16\7Z\3\7\2\2\b\2\4\6\b\n\f\2\3\3\2\21\22\2`\2\16\3\2\2" +
+ "\2\4\20\3\2\2\2\6\27\3\2\2\2\b*\3\2\2\2\n\60\3\2\2\2\fX\3\2\2\2\16\17" +
+ "\t\2\2\2\17\3\3\2\2\2\20\21\7\f\2\2\21\22\7\r\2\2\22\23\7\21\2\2\23\25" +
+ "\7\16\2\2\24\26\7\17\2\2\25\24\3\2\2\2\25\26\3\2\2\2\26\5\3\2\2\2\27\30" +
+ "\7\21\2\2\30\31\7\17\2\2\31\32\7\r\2\2\32\33\7\23\2\2\33\34\7\25\2\2\34" +
+ "\35\5\2\2\2\35\36\7\16\2\2\36\37\7\3\2\2\37 \7\6\2\2 !\7\21\2\2!\"\7\7" +
+ "\2\2\"#\7\4\2\2#$\7\6\2\2$%\7\21\2\2%&\7\7\2\2&\'\7\5\2\2\'(\7\6\2\2(" +
+ ")\7\21\2\2)\7\3\2\2\2*+\7\21\2\2+,\7\17\2\2,-\7\20\2\2-.\7\6\2\2./\5\2" +
+ "\2\2/\t\3\2\2\2\60\61\5\4\3\2\61U\7\24\2\2\62\65\5\b\5\2\63\65\5\6\4\2" +
+ "\64\62\3\2\2\2\64\63\3\2\2\2\65\66\3\2\2\2\66\67\7\24\2\2\679\3\2\2\2" +
+ "8\64\3\2\2\29:\3\2\2\2:8\3\2\2\2:;\3\2\2\2;B\3\2\2\2<?\5\b\5\2=?\5\6\4" +
+ "\2><\3\2\2\2>=\3\2\2\2?@\3\2\2\2@A\7\2\2\3AC\3\2\2\2B>\3\2\2\2BC\3\2\2" +
+ "\2CV\3\2\2\2DG\5\b\5\2EG\5\6\4\2FD\3\2\2\2FE\3\2\2\2GH\3\2\2\2HI\7\24" +
+ "\2\2IK\3\2\2\2JF\3\2\2\2KN\3\2\2\2LJ\3\2\2\2LM\3\2\2\2MQ\3\2\2\2NL\3\2" +
+ "\2\2OR\5\b\5\2PR\5\6\4\2QO\3\2\2\2QP\3\2\2\2RS\3\2\2\2ST\7\2\2\3TV\3\2" +
+ "\2\2U8\3\2\2\2UL\3\2\2\2V\13\3\2\2\2WY\5\n\6\2XW\3\2\2\2YZ\3\2\2\2ZX\3" +
+ "\2\2\2Z[\3\2\2\2[\r\3\2\2\2\f\25\64:>BFLQUZ";
+
+ /** ATN. */
+ public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+
+ /** */
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelVisitor.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelVisitor.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelVisitor.java
new file mode 100644
index 0000000..68621d6
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelVisitor.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost.parser;
+
+import org.antlr.v4.runtime.tree.ParseTreeVisitor;
+
+/**
+ * This interface defines a complete generic visitor for a parse tree produced
+ * by {@link XGBoostModelParser}.
+ *
+ * @param <T> The return type of the visit operation. Use {@link Void} for
+ * operations with no return type.
+ */
+public interface XGBoostModelVisitor<T> extends ParseTreeVisitor<T> {
+ /**
+ * Visit a parse tree produced by {@link XGBoostModelParser#xgValue}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ public T visitXgValue(XGBoostModelParser.XgValueContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link XGBoostModelParser#xgHeader}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ public T visitXgHeader(XGBoostModelParser.XgHeaderContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link XGBoostModelParser#xgNode}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ public T visitXgNode(XGBoostModelParser.XgNodeContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link XGBoostModelParser#xgLeaf}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ public T visitXgLeaf(XGBoostModelParser.XgLeafContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link XGBoostModelParser#xgTree}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ public T visitXgTree(XGBoostModelParser.XgTreeContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link XGBoostModelParser#xgModel}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ public T visitXgModel(XGBoostModelParser.XgModelContext ctx);
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGModelParser.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGModelParser.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGModelParser.java
new file mode 100644
index 0000000..a0b124f
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGModelParser.java
@@ -0,0 +1,87 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost.parser;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.CharStreams;
+import org.antlr.v4.runtime.CommonTokenStream;
+import org.apache.ignite.ml.inference.parser.InfModelParser;
+import org.apache.ignite.ml.xgboost.XGModel;
+import org.apache.ignite.ml.xgboost.XGObject;
+import org.apache.ignite.ml.xgboost.parser.visitor.XGModelVisitor;
+
+/** XGBoost model parser. Uses the following ANTLR grammar to parse file:
+ * <pre>
+ * grammar XGBoostModel;
+ *
+ * YES : 'yes' ;
+ * NO : 'no' ;
+ * MISSING : 'missing' ;
+ * EQ : '=' ;
+ * COMMA : ',' ;
+ * PLUS : '+' ;
+ * MINUS : '-' ;
+ * DOT : '.' ;
+ * EXP : 'E' | 'e' ;
+ * BOOSTER : 'booster' ;
+ * LBRACK : '[' ;
+ * RBRACK : ']' ;
+ * COLON : ':' ;
+ * LEAF : 'leaf' ;
+ * INT : (PLUS | MINUS)? [0-9]+ ;
+ * DOUBLE : INT DOT [0-9]* (EXP INT)?;
+ * STRING : [A-Za-z_][0-9A-Za-z_]+ ;
+ * NEWLINE : '\r' '\n' | '\n' | '\r' ;
+ * LT : '<' ;
+ * WS : ( ' ' | '\t' )+ -> skip ;
+ *
+ * xgValue : DOUBLE | INT ;
+ * xgHeader : BOOSTER LBRACK INT RBRACK COLON? ;
+ * xgNode : INT COLON LBRACK STRING LT xgValue RBRACK YES EQ INT COMMA NO EQ INT COMMA MISSING EQ INT ;
+ * xgLeaf : INT COLON LEAF EQ xgValue ;
+ * xgTree : xgHeader NEWLINE (
+ * ((xgLeaf | xgNode) NEWLINE)+ ((xgLeaf | xgNode) EOF)?
+ * | ((xgLeaf | xgNode) NEWLINE)* (xgLeaf | xgNode) EOF
+ * ) ;
+ * xgModel : xgTree+ ;
+ * </pre>
+ */
+// TODO: IGNITE-10718 Merge XGBoost and Ignite ML trees together.
+public class XGModelParser implements InfModelParser<XGObject, Double> {
+ /** */
+ private static final long serialVersionUID = -5819843559270294718L;
+
+ /** {@inheritDoc} */
+ @Override public XGModel parse(byte[] mdl) {
+ try (ByteArrayInputStream bais = new ByteArrayInputStream(mdl)) {
+ CharStream cStream = CharStreams.fromStream(bais);
+ XGBoostModelLexer lexer = new XGBoostModelLexer(cStream);
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ XGBoostModelParser parser = new XGBoostModelParser(tokens);
+
+ XGModelVisitor visitor = new XGModelVisitor();
+
+ return visitor.visit(parser.xgModel());
+ }
+ catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/package-info.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/package-info.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/package-info.java
new file mode 100644
index 0000000..959b3ba
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Base package for XGBoost model parser implementation.
+ */
+package org.apache.ignite.ml.xgboost.parser;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/XGModelVisitor.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/XGModelVisitor.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/XGModelVisitor.java
new file mode 100644
index 0000000..70433c7
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/XGModelVisitor.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost.parser.visitor;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.ml.xgboost.XGModel;
+import org.apache.ignite.ml.xgboost.XGNode;
+import org.apache.ignite.ml.xgboost.parser.XGBoostModelBaseVisitor;
+import org.apache.ignite.ml.xgboost.parser.XGBoostModelParser;
+
+/**
+ * XGBoost model visitor that parses model.
+ */
+public class XGModelVisitor extends XGBoostModelBaseVisitor<XGModel> {
+ /** Tree visitor. */
+ private final XGTreeVisitor treeVisitor = new XGTreeVisitor();
+
+ /** {@inheritDoc} */
+ @Override public XGModel visitXgModel(XGBoostModelParser.XgModelContext ctx) {
+ List<XGNode> trees = new ArrayList<>();
+
+ for (XGBoostModelParser.XgTreeContext treeCtx : ctx.xgTree())
+ trees.add(treeVisitor.visitXgTree(treeCtx));
+
+ return new XGModel(trees);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/XGTreeVisitor.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/XGTreeVisitor.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/XGTreeVisitor.java
new file mode 100644
index 0000000..60268ff
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/XGTreeVisitor.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost.parser.visitor;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.antlr.v4.runtime.tree.TerminalNode;
+import org.apache.ignite.ml.xgboost.XGLeafNode;
+import org.apache.ignite.ml.xgboost.XGNode;
+import org.apache.ignite.ml.xgboost.XGSplitNode;
+import org.apache.ignite.ml.xgboost.parser.XGBoostModelBaseVisitor;
+import org.apache.ignite.ml.xgboost.parser.XGBoostModelParser;
+
+/**
+ * XGBoost tree visitor that parses tree.
+ */
+public class XGTreeVisitor extends XGBoostModelBaseVisitor<XGNode> {
+ /** Index of the root node. */
+ private static final int ROOT_NODE_IDX = 0;
+
+ /** {@inheritDoc} */
+ @Override public XGNode visitXgTree(XGBoostModelParser.XgTreeContext ctx) {
+ Map<Integer, XGSplitNode> splitNodes = new HashMap<>();
+ Map<Integer, XGLeafNode> leafNodes = new HashMap<>();
+
+ for (XGBoostModelParser.XgNodeContext nodeCtx : ctx.xgNode()) {
+ int idx = Integer.valueOf(nodeCtx.INT(0).getText());
+ String featureName = nodeCtx.STRING().getText();
+ double threshold = parseXgValue(nodeCtx.xgValue());
+
+ splitNodes.put(idx, new XGSplitNode(featureName, threshold));
+ }
+
+ for (XGBoostModelParser.XgLeafContext leafCtx : ctx.xgLeaf()) {
+ int idx = Integer.valueOf(leafCtx.INT().getText());
+ double val = parseXgValue(leafCtx.xgValue());
+
+ leafNodes.put(idx, new XGLeafNode(val));
+ }
+
+ for (XGBoostModelParser.XgNodeContext nodeCtx : ctx.xgNode()) {
+ int idx = Integer.valueOf(nodeCtx.INT(0).getText());
+ int yesIdx = Integer.valueOf(nodeCtx.INT(1).getText());
+ int noIdx = Integer.valueOf(nodeCtx.INT(2).getText());
+ int missIdx = Integer.valueOf(nodeCtx.INT(3).getText());
+
+ XGSplitNode node = splitNodes.get(idx);
+ node.setYesNode(splitNodes.containsKey(yesIdx) ? splitNodes.get(yesIdx) : leafNodes.get(yesIdx));
+ node.setNoNode(splitNodes.containsKey(noIdx) ? splitNodes.get(noIdx) : leafNodes.get(noIdx));
+ node.setMissingNode(splitNodes.containsKey(missIdx) ? splitNodes.get(missIdx) : leafNodes.get(missIdx));
+ }
+
+ return splitNodes.containsKey(ROOT_NODE_IDX) ? splitNodes.get(ROOT_NODE_IDX) : leafNodes.get(ROOT_NODE_IDX);
+ }
+
+ /**
+ * Parses value (int of double).
+ *
+ * @param valCtx Value context.
+ * @return Value.
+ */
+ private double parseXgValue(XGBoostModelParser.XgValueContext valCtx) {
+ TerminalNode terminalNode = valCtx.INT() != null ? valCtx.INT() : valCtx.DOUBLE();
+
+ return Double.valueOf(terminalNode.getText());
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/package-info.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/package-info.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/package-info.java
new file mode 100644
index 0000000..2cb9ce7
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/visitor/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Base package for XGBoost model parser ANTLR visitor.
+ */
+package org.apache.ignite.ml.xgboost.parser.visitor;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/test/java/org/apache/ignite/ml/xgboost/IgniteMLXGBoostTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/test/java/org/apache/ignite/ml/xgboost/IgniteMLXGBoostTestSuite.java b/modules/ml/xgboost-model-parser/src/test/java/org/apache/ignite/ml/xgboost/IgniteMLXGBoostTestSuite.java
new file mode 100644
index 0000000..9ccab38
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/test/java/org/apache/ignite/ml/xgboost/IgniteMLXGBoostTestSuite.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost;
+
+import org.apache.ignite.ml.xgboost.parser.XGBoostModelParserTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/** Test suite for all module tests. */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ XGBoostModelParserTest.class
+})
+public class IgniteMLXGBoostTestSuite {
+ // No-op.
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/test/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelParserTest.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/test/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelParserTest.java b/modules/ml/xgboost-model-parser/src/test/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelParserTest.java
new file mode 100644
index 0000000..abee78f
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/test/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelParserTest.java
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost.parser;
+
+import java.net.URL;
+import java.util.Scanner;
+import org.apache.ignite.ml.inference.InfModel;
+import org.apache.ignite.ml.inference.builder.SingleInfModelBuilder;
+import org.apache.ignite.ml.inference.builder.SyncInfModelBuilder;
+import org.apache.ignite.ml.inference.reader.FileSystemInfModelReader;
+import org.apache.ignite.ml.inference.reader.InfModelReader;
+import org.apache.ignite.ml.xgboost.MapBasedXGObject;
+import org.apache.ignite.ml.xgboost.XGObject;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests for {@link XGBoostModelParser}.
+ */
+public class XGBoostModelParserTest {
+ /** Test model resource name. */
+ private static final String TEST_MODEL_RESOURCE = "datasets/agaricus-model.txt";
+
+ /** Parser. */
+ private final XGModelParser parser = new XGModelParser();
+
+ /** Model builder. */
+ private final SyncInfModelBuilder mdlBuilder = new SingleInfModelBuilder();
+
+ /** End-to-end test for {@code parse()} and {@code predict()} methods. */
+ @Test
+ public void testParseAndPredict() {
+ URL url = XGBoostModelParserTest.class.getClassLoader().getResource(TEST_MODEL_RESOURCE);
+ if (url == null)
+ throw new IllegalStateException("File not found [resource_name=" + TEST_MODEL_RESOURCE + "]");
+
+ InfModelReader reader = new FileSystemInfModelReader(url.getPath());
+
+ try (InfModel<XGObject, Double> mdl = mdlBuilder.build(reader, parser);
+ Scanner testDataScanner = new Scanner(XGBoostModelParserTest.class.getClassLoader()
+ .getResourceAsStream("datasets/agaricus-test-data.txt"));
+ Scanner testExpResultsScanner = new Scanner(XGBoostModelParserTest.class.getClassLoader()
+ .getResourceAsStream("datasets/agaricus-test-expected-results.txt"))) {
+
+ while (testDataScanner.hasNextLine()) {
+ assertTrue(testExpResultsScanner.hasNextLine());
+
+ String testDataStr = testDataScanner.nextLine();
+ String testExpResultsStr = testExpResultsScanner.nextLine();
+
+ MapBasedXGObject testObj = new MapBasedXGObject();
+
+ for (String keyValueString : testDataStr.split(" ")) {
+ String[] keyVal = keyValueString.split(":");
+
+ if (keyVal.length == 2)
+ testObj.put("f" + keyVal[0], Double.parseDouble(keyVal[1]));
+ }
+
+ double prediction = mdl.predict(testObj);
+
+ double expPrediction = Double.parseDouble(testExpResultsStr);
+
+ assertEquals(expPrediction, prediction, 1e-6);
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-model.txt
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-model.txt b/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-model.txt
new file mode 100644
index 0000000..4bf76d6
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-model.txt
@@ -0,0 +1,714 @@
+booster[0]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f56<-9.53674e-07] yes=3,no=4,missing=3
+ 3:[f60<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f23<-9.53674e-07] yes=13,no=14,missing=13
+ 13:[f24<-9.53674e-07] yes=19,no=20,missing=19
+ 19:leaf=1.99735
+ 20:leaf=-1.8
+ 14:leaf=-1.80952
+ 8:leaf=-1.95062
+ 4:[f21<-9.53674e-07] yes=9,no=10,missing=9
+ 9:leaf=1.77778
+ 10:leaf=-1.98104
+ 2:[f109<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f67<-9.53674e-07] yes=11,no=12,missing=11
+ 11:[f8<-9.53674e-07] yes=15,no=16,missing=15
+ 15:leaf=-1.99117
+ 16:leaf=1
+ 12:[f39<-9.53674e-07] yes=17,no=18,missing=17
+ 17:leaf=1.77143
+ 18:leaf=-1.5
+ 6:leaf=1.85965
+booster[1]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=1.13207
+ 4:[f27<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f30<-9.53674e-07] yes=11,no=12,missing=11
+ 11:leaf=-1.12641
+ 12:leaf=1.08392
+ 8:leaf=1.09118
+ 2:[f109<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f67<-9.53674e-07] yes=9,no=10,missing=9
+ 9:[f39<-9.53674e-07] yes=13,no=14,missing=13
+ 13:[f21<-9.53674e-07] yes=17,no=18,missing=17
+ 17:leaf=-1.06692
+ 18:leaf=2.08
+ 14:leaf=-1.13236
+ 10:[f39<-9.53674e-07] yes=15,no=16,missing=15
+ 15:leaf=0.928896
+ 16:leaf=-0.784694
+ 6:leaf=0.994744
+booster[2]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=1.03409
+ 4:[f27<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f30<-9.53674e-07] yes=11,no=12,missing=11
+ 11:leaf=-1.00925
+ 12:leaf=0.934041
+ 8:leaf=0.947964
+ 2:[f109<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f39<-9.53674e-07] yes=9,no=10,missing=9
+ 9:[f112<-9.53674e-07] yes=13,no=14,missing=13
+ 13:leaf=-0.862367
+ 14:[f79<-9.53674e-07] yes=15,no=16,missing=15
+ 15:leaf=0.996309
+ 16:leaf=-0.217869
+ 10:leaf=-1.03467
+ 6:leaf=0.773973
+booster[3]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f56<-9.53674e-07] yes=3,no=4,missing=3
+ 3:[f60<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f36<-9.53674e-07] yes=11,no=12,missing=11
+ 11:[f21<-9.53674e-07] yes=15,no=16,missing=15
+ 15:leaf=0.535599
+ 16:leaf=-0.591832
+ 12:leaf=0.99398
+ 8:leaf=-0.731796
+ 4:leaf=-0.74401
+ 2:[f109<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f67<-9.53674e-07] yes=9,no=10,missing=9
+ 9:[f115<-9.53674e-07] yes=13,no=14,missing=13
+ 13:leaf=-0.991027
+ 14:[f86<-9.53674e-07] yes=17,no=18,missing=17
+ 17:leaf=-0.71378
+ 18:leaf=-0.010833
+ 10:leaf=0.382551
+ 6:leaf=0.587063
+booster[4]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.949695
+ 4:[f27<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f30<-9.53674e-07] yes=13,no=14,missing=13
+ 13:leaf=-0.846263
+ 14:leaf=0.571051
+ 8:leaf=0.604424
+ 2:[f39<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f7<-9.53674e-07] yes=9,no=10,missing=9
+ 9:leaf=0.359876
+ 10:leaf=-0.0906721
+ 6:[f1<-9.53674e-07] yes=11,no=12,missing=11
+ 11:leaf=-0.902494
+ 12:leaf=-0.222349
+booster[5]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.866121
+ 4:[f56<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f10<-9.53674e-07] yes=11,no=12,missing=11
+ 11:leaf=-0.172918
+ 12:leaf=0.444059
+ 8:leaf=-0.581706
+ 2:[f109<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f39<-9.53674e-07] yes=9,no=10,missing=9
+ 9:[f65<-9.53674e-07] yes=13,no=14,missing=13
+ 13:leaf=0.314289
+ 14:leaf=-0.137217
+ 10:leaf=-0.87866
+ 6:leaf=0.593857
+booster[6]:
+0:[f64<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f39<-9.53674e-07] yes=3,no=4,missing=3
+ 3:[f21<-9.53674e-07] yes=5,no=6,missing=5
+ 5:leaf=-0.16553
+ 6:leaf=0.424994
+ 4:[f118<-9.53674e-07] yes=7,no=8,missing=7
+ 7:leaf=-0.662592
+ 8:leaf=0.10184
+ 2:leaf=0.647963
+booster[7]:
+0:[f27<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f39<-9.53674e-07] yes=3,no=4,missing=3
+ 3:[f112<-9.53674e-07] yes=5,no=6,missing=5
+ 5:leaf=-0.205397
+ 6:[f55<-9.53674e-07] yes=9,no=10,missing=9
+ 9:leaf=0.531323
+ 10:leaf=0.0411505
+ 4:[f95<-9.53674e-07] yes=7,no=8,missing=7
+ 7:leaf=0.0893909
+ 8:leaf=-0.688257
+ 2:leaf=0.62192
+booster[8]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.559472
+ 4:leaf=0.047577
+ 2:[f21<-9.53674e-07] yes=5,no=6,missing=5
+ 5:leaf=-0.522063
+ 6:leaf=0.185313
+booster[9]:
+0:[f106<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f36<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=-0.106198
+ 4:[f29<-9.53674e-07] yes=5,no=6,missing=5
+ 5:leaf=0.451254
+ 6:leaf=0.0100806
+ 2:leaf=-0.265738
+booster[10]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f118<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.411374
+ 4:leaf=-0.00392402
+ 2:[f118<-9.53674e-07] yes=5,no=6,missing=5
+ 5:leaf=-0.370329
+ 6:leaf=0.106229
+booster[11]:
+0:[f126<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=-0.244834
+ 4:leaf=0.393425
+ 2:leaf=-0.191846
+booster[12]:
+0:[f65<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.281915
+ 2:[f126<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.0457934
+ 4:leaf=-0.335547
+booster[13]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f55<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.298848
+ 4:leaf=-0.0234579
+ 2:leaf=-0.211675
+booster[14]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.180838
+ 2:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=-0.28038
+ 4:leaf=0.0867539
+booster[15]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.123414
+ 2:leaf=-0.136942
+booster[16]:
+0:[f36<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.154724
+ 2:[f118<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=-0.17891
+ 4:leaf=0.28564
+booster[17]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.1202
+ 2:leaf=-0.113537
+booster[18]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0946849
+ 2:leaf=0.147314
+booster[19]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.128399
+ 2:leaf=0.117783
+booster[20]:
+0:[f36<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.135164
+ 2:[f55<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=-0.042949
+ 4:leaf=0.173579
+booster[21]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0957448
+ 2:leaf=-0.104156
+booster[22]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0925588
+ 2:leaf=-0.0798059
+booster[23]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0830908
+ 2:leaf=0.126943
+booster[24]:
+0:[f126<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0823832
+ 2:leaf=-0.0899369
+booster[25]:
+0:[f3<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0589036
+ 2:leaf=-0.0851568
+booster[26]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0859156
+ 2:leaf=-0.0815898
+booster[27]:
+0:[f21<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0637587
+ 2:leaf=-0.048542
+booster[28]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.069489
+ 2:leaf=0.058072
+booster[29]:
+0:[f36<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.149849
+ 2:leaf=0.0984096
+booster[30]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0688469
+ 2:leaf=0.0689056
+booster[31]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.071993
+ 2:leaf=0.0544265
+booster[32]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0686437
+ 2:leaf=-0.061108
+booster[33]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0522195
+ 2:leaf=-0.0544709
+booster[34]:
+0:[f126<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0445775
+ 2:leaf=-0.0612543
+booster[35]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0370941
+ 2:leaf=0.0414116
+booster[36]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0491957
+ 2:leaf=-0.0374184
+booster[37]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0428276
+ 2:leaf=0.0362258
+booster[38]:
+0:[f21<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.038428
+ 2:leaf=-0.0331781
+booster[39]:
+0:[f36<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.14093
+ 2:leaf=0.101744
+booster[40]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0443167
+ 2:leaf=-0.0668384
+booster[41]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0654174
+ 2:leaf=0.0401212
+booster[42]:
+0:[f118<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0426251
+ 2:leaf=-0.0430745
+booster[43]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0315924
+ 2:leaf=0.0413181
+booster[44]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.037716
+ 2:leaf=0.0316046
+booster[45]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0384603
+ 2:leaf=-0.031591
+booster[46]:
+0:[f9<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0264121
+ 2:leaf=0.0318885
+booster[47]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0258388
+ 2:leaf=-0.0263959
+booster[48]:
+0:[f118<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0220629
+ 2:leaf=-0.0169775
+booster[49]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0254499
+ 2:leaf=0.0207041
+booster[50]:
+0:[f126<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.022765
+ 2:leaf=-0.0334065
+booster[51]:
+0:[f21<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.022757
+ 2:leaf=-0.0227902
+booster[52]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0265489
+ 2:leaf=-0.0199871
+booster[53]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0149867
+ 2:leaf=0.022471
+booster[54]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0175078
+ 2:leaf=0.0157137
+booster[55]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0182503
+ 2:leaf=-0.0143524
+booster[56]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0115217
+ 2:leaf=0.0166359
+booster[57]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0134613
+ 2:leaf=-0.0116378
+booster[58]:
+0:[f9<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00981541
+ 2:leaf=0.0115454
+booster[59]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0116732
+ 2:leaf=0.00925633
+booster[60]:
+0:[f4<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00879889
+ 2:leaf=-0.0122642
+booster[61]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0105853
+ 2:leaf=-0.00918858
+booster[62]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00988643
+ 2:leaf=0.0133116
+booster[63]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00922858
+ 2:leaf=-0.00796718
+booster[64]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00674803
+ 2:leaf=0.00923198
+booster[65]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00946677
+ 2:leaf=-0.00611888
+booster[66]:
+0:[f21<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00809434
+ 2:leaf=-0.00524561
+booster[67]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0058383
+ 2:leaf=-0.0047337
+booster[68]:
+0:[f9<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00516364
+ 2:leaf=0.00612514
+booster[69]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00393965
+ 2:leaf=0.0055112
+booster[70]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0062736
+ 2:leaf=-0.00406246
+booster[71]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00387397
+ 2:leaf=-0.00335857
+booster[72]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00378672
+ 2:leaf=-0.00363264
+booster[73]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00348857
+ 2:leaf=0.00454308
+booster[74]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00310136
+ 2:leaf=-0.00269635
+booster[75]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00232427
+ 2:leaf=0.00316355
+booster[76]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0033131
+ 2:leaf=-0.00214357
+booster[77]:
+0:[f9<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00198535
+ 2:leaf=0.00270199
+booster[78]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00189522
+ 2:leaf=-0.00163941
+booster[79]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0018533
+ 2:leaf=0.00251417
+booster[80]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00213544
+ 2:leaf=-0.00134465
+booster[81]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0010731
+ 2:leaf=0.0017787
+booster[82]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00170681
+ 2:leaf=-0.00144721
+booster[83]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.000965197
+ 2:leaf=0.00137187
+booster[84]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0014236
+ 2:leaf=-0.000908222
+booster[85]:
+0:[f9<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.000799637
+ 2:leaf=0.00110198
+booster[86]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.000950752
+ 2:leaf=-0.000839873
+booster[87]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.000841428
+ 2:leaf=0.0011364
+booster[88]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.000900093
+ 2:leaf=-0.00055321
+booster[89]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.000479465
+ 2:leaf=0.000775463
+booster[90]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.000824745
+ 2:leaf=-0.000703525
+booster[91]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.000446206
+ 2:leaf=0.000627391
+booster[92]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.000531432
+ 2:leaf=-0.000464763
+booster[93]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.000457717
+ 2:leaf=-0.000483533
+booster[94]:
+0:leaf=-8.69481e-06
+booster[95]:
+0:leaf=-2.22842e-06
+booster[96]:
+0:leaf=-7.41984e-07
+booster[97]:
+0:leaf=6.03395e-07
+booster[98]:
+0:leaf=-2.45552e-08
+booster[99]:
+0:leaf=-2.45552e-08
+booster[100]:
+0:leaf=-2.45552e-08
+booster[101]:
+0:leaf=-2.45552e-08
+booster[102]:
+0:leaf=-2.45552e-08
+booster[103]:
+0:leaf=-2.45552e-08
+booster[104]:
+0:leaf=-2.45552e-08
+booster[105]:
+0:leaf=-2.45552e-08
+booster[106]:
+0:leaf=-2.45552e-08
+booster[107]:
+0:leaf=-2.45552e-08
+booster[108]:
+0:leaf=-2.45552e-08
+booster[109]:
+0:leaf=-2.45552e-08
+booster[110]:
+0:leaf=-2.45552e-08
+booster[111]:
+0:leaf=-2.45552e-08
+booster[112]:
+0:leaf=-2.45552e-08
+booster[113]:
+0:leaf=-2.45552e-08
+booster[114]:
+0:leaf=-2.45552e-08
+booster[115]:
+0:leaf=-2.45552e-08
+booster[116]:
+0:leaf=-2.45552e-08
+booster[117]:
+0:leaf=-2.45552e-08
+booster[118]:
+0:leaf=-2.45552e-08
+booster[119]:
+0:leaf=-2.45552e-08
+booster[120]:
+0:leaf=-2.45552e-08
+booster[121]:
+0:leaf=-2.45552e-08
+booster[122]:
+0:leaf=-2.45552e-08
+booster[123]:
+0:leaf=-2.45552e-08
+booster[124]:
+0:leaf=-2.45552e-08
+booster[125]:
+0:leaf=-2.45552e-08
+booster[126]:
+0:leaf=-2.45552e-08
+booster[127]:
+0:leaf=-2.45552e-08
+booster[128]:
+0:leaf=-2.45552e-08
+booster[129]:
+0:leaf=-2.45552e-08
+booster[130]:
+0:leaf=-2.45552e-08
+booster[131]:
+0:leaf=-2.45552e-08
+booster[132]:
+0:leaf=-2.45552e-08
+booster[133]:
+0:leaf=-2.45552e-08
+booster[134]:
+0:leaf=-2.45552e-08
+booster[135]:
+0:leaf=-2.45552e-08
+booster[136]:
+0:leaf=-2.45552e-08
+booster[137]:
+0:leaf=-2.45552e-08
+booster[138]:
+0:leaf=-2.45552e-08
+booster[139]:
+0:leaf=-2.45552e-08
+booster[140]:
+0:leaf=-2.45552e-08
+booster[141]:
+0:leaf=-2.45552e-08
+booster[142]:
+0:leaf=-2.45552e-08
+booster[143]:
+0:leaf=-2.45552e-08
+booster[144]:
+0:leaf=-2.45552e-08
+booster[145]:
+0:leaf=-2.45552e-08
+booster[146]:
+0:leaf=-2.45552e-08
+booster[147]:
+0:leaf=-2.45552e-08
+booster[148]:
+0:leaf=-2.45552e-08
+booster[149]:
+0:leaf=-2.45552e-08
+booster[150]:
+0:leaf=-2.45552e-08
+booster[151]:
+0:leaf=-2.45552e-08
+booster[152]:
+0:leaf=-2.45552e-08
+booster[153]:
+0:leaf=-2.45552e-08
+booster[154]:
+0:leaf=-2.45552e-08
+booster[155]:
+0:leaf=-2.45552e-08
+booster[156]:
+0:leaf=-2.45552e-08
+booster[157]:
+0:leaf=-2.45552e-08
+booster[158]:
+0:leaf=-2.45552e-08
+booster[159]:
+0:leaf=-2.45552e-08
+booster[160]:
+0:leaf=-2.45552e-08
+booster[161]:
+0:leaf=-2.45552e-08
+booster[162]:
+0:leaf=-2.45552e-08
+booster[163]:
+0:leaf=-2.45552e-08
+booster[164]:
+0:leaf=-2.45552e-08
+booster[165]:
+0:leaf=-2.45552e-08
+booster[166]:
+0:leaf=-2.45552e-08
+booster[167]:
+0:leaf=-2.45552e-08
+booster[168]:
+0:leaf=-2.45552e-08
+booster[169]:
+0:leaf=-2.45552e-08
+booster[170]:
+0:leaf=-2.45552e-08
+booster[171]:
+0:leaf=-2.45552e-08
+booster[172]:
+0:leaf=-2.45552e-08
+booster[173]:
+0:leaf=-2.45552e-08
+booster[174]:
+0:leaf=-2.45552e-08
+booster[175]:
+0:leaf=-2.45552e-08
+booster[176]:
+0:leaf=-2.45552e-08
+booster[177]:
+0:leaf=-2.45552e-08
+booster[178]:
+0:leaf=-2.45552e-08
+booster[179]:
+0:leaf=-2.45552e-08
+booster[180]:
+0:leaf=-2.45552e-08
+booster[181]:
+0:leaf=-2.45552e-08
+booster[182]:
+0:leaf=-2.45552e-08
+booster[183]:
+0:leaf=-2.45552e-08
+booster[184]:
+0:leaf=-2.45552e-08
+booster[185]:
+0:leaf=-2.45552e-08
+booster[186]:
+0:leaf=-2.45552e-08
+booster[187]:
+0:leaf=-2.45552e-08
+booster[188]:
+0:leaf=-2.45552e-08
+booster[189]:
+0:leaf=-2.45552e-08
+booster[190]:
+0:leaf=-2.45552e-08
+booster[191]:
+0:leaf=-2.45552e-08
+booster[192]:
+0:leaf=-2.45552e-08
+booster[193]:
+0:leaf=-2.45552e-08
+booster[194]:
+0:leaf=-2.45552e-08
+booster[195]:
+0:leaf=-2.45552e-08
+booster[196]:
+0:leaf=-2.45552e-08
+booster[197]:
+0:leaf=-2.45552e-08
+booster[198]:
+0:leaf=-2.45552e-08
+booster[199]:
+0:leaf=-2.45552e-08
\ No newline at end of file
[15/52] [abbrv] ignite git commit: IGNITE-10643: SQL: Unified
affinity key column resolution for queries. This closes #5641. This closes
#5649.
Posted by sb...@apache.org.
IGNITE-10643: SQL: Unified affinity key column resolution for queries. This closes #5641. This closes #5649.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c1edb300
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c1edb300
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c1edb300
Branch: refs/heads/ignite-627
Commit: c1edb300979b6a4127a9a676e8d504f0dac459a6
Parents: 84a8e81
Author: devozerov <vo...@gridgain.com>
Authored: Tue Dec 18 11:07:30 2018 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Tue Dec 18 11:07:30 2018 +0300
----------------------------------------------------------------------
.../processors/cache/CacheObjectContext.java | 35 +-
.../cache/GridCacheAffinityManager.java | 6 +-
.../processors/cache/GridCacheContext.java | 22 +-
.../processors/cache/GridCacheContextInfo.java | 88 ++---
.../processors/cache/GridCacheProcessor.java | 4 +-
.../cache/binary/CacheObjectBinaryContext.java | 62 ----
.../binary/CacheObjectBinaryProcessor.java | 149 --------
.../binary/CacheObjectBinaryProcessorImpl.java | 306 +++++++++++++---
.../cache/binary/IgniteBinaryImpl.java | 4 +-
.../reader/StandaloneWalRecordsIterator.java | 2 +-
.../cacheobject/IgniteCacheObjectProcessor.java | 119 ++++++-
.../IgniteCacheObjectProcessorImpl.java | 346 -------------------
.../cacheobject/UserKeyCacheObjectImpl.java | 2 +-
.../processors/query/GridQueryProcessor.java | 15 +-
.../query/GridQueryTypeDescriptor.java | 5 +
.../query/QueryTypeDescriptorImpl.java | 25 +-
.../internal/processors/query/QueryUtils.java | 35 +-
.../binary/BinaryMarshallerSelfTest.java | 2 +-
...IgniteClientCacheInitializationFailTest.java | 2 +-
.../wal/IgniteWalIteratorSwitchSegmentTest.java | 4 +-
.../query/h2/DmlStatementsProcessor.java | 2 +-
.../processors/query/h2/H2RowCacheRegistry.java | 2 +-
.../processors/query/h2/H2TableDescriptor.java | 6 +-
.../internal/processors/query/h2/H2Utils.java | 4 +-
.../processors/query/h2/IgniteH2Indexing.java | 4 +-
.../query/h2/affinity/PartitionExtractor.java | 36 +-
.../query/h2/dml/UpdatePlanBuilder.java | 2 +-
.../query/h2/opt/GridH2CollocationModel.java | 10 +-
.../query/h2/opt/GridH2IndexBase.java | 6 +-
.../query/h2/opt/GridH2RowDescriptor.java | 11 +-
.../processors/query/h2/opt/GridH2Table.java | 74 ++--
...ityKeyNameAndValueFieldNameConflictTest.java | 6 +
...acheDistributedJoinCollocatedAndNotTest.java | 2 +
.../AndOperationExtractPartitionSelfTest.java | 2 +-
...sappearedCacheCauseRetryMessageSelfTest.java | 6 +-
...appearedCacheWasNotFoundMessageSelfTest.java | 4 +-
.../InOperationExtractPartitionSelfTest.java | 5 +-
.../query/h2/twostep/JoinSqlTestHelper.java | 72 ++--
.../NonCollocatedRetryMessageSelfTest.java | 4 +-
.../h2/twostep/RetryCauseMessageSelfTest.java | 4 +-
40 files changed, 648 insertions(+), 847 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
index a34b63b..d121a5e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
@@ -25,22 +25,29 @@ import org.apache.ignite.internal.GridKernalContext;
*/
public class CacheObjectContext implements CacheObjectValueContext {
/** */
- private GridKernalContext kernalCtx;
+ private final GridKernalContext kernalCtx;
/** */
- private String cacheName;
+ private final String cacheName;
/** */
+ @SuppressWarnings("deprecation")
private AffinityKeyMapper dfltAffMapper;
+ /** Whether custom affinity mapper is used. */
+ private final boolean customAffMapper;
+
/** */
- private boolean cpyOnGet;
+ private final boolean cpyOnGet;
/** */
- private boolean storeVal;
+ private final boolean storeVal;
/** */
- private boolean addDepInfo;
+ private final boolean addDepInfo;
+
+ /** Boinary enabled flag. */
+ private final boolean binaryEnabled;
/**
* @param kernalCtx Kernal context.
@@ -48,19 +55,25 @@ public class CacheObjectContext implements CacheObjectValueContext {
* @param cpyOnGet Copy on get flag.
* @param storeVal {@code True} if should store unmarshalled value in cache.
* @param addDepInfo {@code true} if deployment info should be associated with the objects of this cache.
+ * @param binaryEnabled Binary enabled flag.
*/
+ @SuppressWarnings("deprecation")
public CacheObjectContext(GridKernalContext kernalCtx,
String cacheName,
AffinityKeyMapper dfltAffMapper,
+ boolean customAffMapper,
boolean cpyOnGet,
boolean storeVal,
- boolean addDepInfo) {
+ boolean addDepInfo,
+ boolean binaryEnabled) {
this.kernalCtx = kernalCtx;
this.cacheName = cacheName;
this.dfltAffMapper = dfltAffMapper;
+ this.customAffMapper = customAffMapper;
this.cpyOnGet = cpyOnGet;
this.storeVal = storeVal;
this.addDepInfo = addDepInfo;
+ this.binaryEnabled = binaryEnabled;
}
/**
@@ -88,10 +101,18 @@ public class CacheObjectContext implements CacheObjectValueContext {
/**
* @return Default affinity mapper.
*/
+ @SuppressWarnings("deprecation")
public AffinityKeyMapper defaultAffMapper() {
return dfltAffMapper;
}
+ /**
+ * @return Whether custom affinity mapper is used.
+ */
+ public boolean customAffinityMapper() {
+ return customAffMapper;
+ }
+
/** {@inheritDoc} */
@Override public GridKernalContext kernalContext() {
return kernalCtx;
@@ -99,7 +120,7 @@ public class CacheObjectContext implements CacheObjectValueContext {
/** {@inheritDoc} */
@Override public boolean binaryEnabled() {
- return false;
+ return binaryEnabled;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java
index e20855f..1315c67 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java
@@ -193,10 +193,12 @@ public class GridCacheAffinityManager extends GridCacheManagerAdapter {
* @return Affinity key.
*/
public Object affinityKey(Object key) {
+ CacheObjectContext coCtx = cctx.cacheObjectContext();
+
if (key instanceof CacheObject && !(key instanceof BinaryObject))
- key = ((CacheObject)key).value(cctx.cacheObjectContext(), false);
+ key = ((CacheObject)key).value(coCtx, false);
- return (key instanceof GridCacheInternal ? cctx.defaultAffMapper() : affMapper).affinityKey(key);
+ return (key instanceof GridCacheInternal ? coCtx.defaultAffMapper() : affMapper).affinityKey(key);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index ffb1886..426a29c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -47,7 +47,6 @@ import org.apache.ignite.binary.BinaryField;
import org.apache.ignite.binary.BinaryObjectBuilder;
import org.apache.ignite.cache.CacheInterceptor;
import org.apache.ignite.cache.CacheMode;
-import org.apache.ignite.cache.affinity.AffinityKeyMapper;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -256,9 +255,6 @@ public class GridCacheContext<K, V> implements Externalizable {
/** */
private boolean deferredDel;
- /** */
- private boolean customAffMapper;
-
/** Whether {@link EventType#EVT_CACHE_REBALANCE_STARTED} was sent (used only for REPLICATED cache). */
private volatile boolean rebalanceStartedEvtSent;
@@ -465,13 +461,6 @@ public class GridCacheContext<K, V> implements Externalizable {
}
/**
- * @return {@code True} if custom {@link AffinityKeyMapper} is configured for cache.
- */
- public boolean customAffinityMapper() {
- return customAffMapper;
- }
-
- /**
* @return Dynamic deployment ID.
*/
public IgniteUuid dynamicDeploymentId() {
@@ -1228,13 +1217,6 @@ public class GridCacheContext<K, V> implements Externalizable {
}
/**
- * @return Default affinity key mapper.
- */
- public AffinityKeyMapper defaultAffMapper() {
- return cacheObjCtx.defaultAffMapper();
- }
-
- /**
* @return Compression manager.
*/
public CacheCompressionManager compress() {
@@ -1248,8 +1230,6 @@ public class GridCacheContext<K, V> implements Externalizable {
*/
public void cacheObjectContext(CacheObjectContext cacheObjCtx) {
this.cacheObjCtx = cacheObjCtx;
-
- customAffMapper = cacheCfg.getAffinityMapper().getClass() != cacheObjCtx.defaultAffMapper().getClass();
}
/**
@@ -2302,7 +2282,7 @@ public class GridCacheContext<K, V> implements Externalizable {
BinaryObjectBuilderImpl builder0 = (BinaryObjectBuilderImpl)buider;
- if (!customAffinityMapper()) {
+ if (!cacheObjCtx.customAffinityMapper()) {
CacheDefaultBinaryAffinityKeyMapper mapper =
(CacheDefaultBinaryAffinityKeyMapper)cacheObjCtx.defaultAffMapper();
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContextInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContextInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContextInfo.java
index 673c32e..958f4f8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContextInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContextInfo.java
@@ -18,7 +18,6 @@
package org.apache.ignite.internal.processors.cache;
import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.lang.IgniteUuid;
@@ -29,15 +28,9 @@ import org.jetbrains.annotations.Nullable;
*/
@GridToStringExclude
public class GridCacheContextInfo<K, V> {
- /** Full cache context. Can be {@code null} in case a cache is not started. */
- @Nullable private volatile GridCacheContext gridCacheContext;
-
/** Cache is client or not. */
private final boolean clientCache;
- /** Kernal context. */
- private final GridKernalContext ctx;
-
/** Dynamic cache deployment ID. */
private final IgniteUuid dynamicDeploymentId;
@@ -50,96 +43,90 @@ public class GridCacheContextInfo<K, V> {
/** Cache ID. */
private final int cacheId;
+ /** Full cache context. Can be {@code null} in case a cache is not started. */
+ @Nullable private volatile GridCacheContext cctx;
+
/**
* Constructor of full cache context.
*
- * @param gridCacheContext Cache context.
+ * @param cctx Cache context.
* @param clientCache Client cache or not.
*/
- public GridCacheContextInfo(GridCacheContext<K, V> gridCacheContext, boolean clientCache) {
- this.gridCacheContext = gridCacheContext;
- this.ctx = gridCacheContext.kernalContext();
- this.config = gridCacheContext.config();
- this.dynamicDeploymentId = null;
- this.groupId = gridCacheContext.groupId();
- this.cacheId = gridCacheContext.cacheId();
+ public GridCacheContextInfo(GridCacheContext<K, V> cctx, boolean clientCache) {
+ config = cctx.config();
+ dynamicDeploymentId = null;
+ groupId = cctx.groupId();
+ cacheId = cctx.cacheId();
+
this.clientCache = clientCache;
+
+ this.cctx = cctx;
}
/**
* Constructor of not started cache context.
*
* @param cacheDesc Cache descriptor.
- * @param ctx Kernal context.
*/
- public GridCacheContextInfo(DynamicCacheDescriptor cacheDesc, GridKernalContext ctx) {
- this.config = cacheDesc.cacheConfiguration();
- this.dynamicDeploymentId = cacheDesc.deploymentId();
- this.groupId = cacheDesc.groupId();
- this.ctx = ctx;
- this.clientCache = true;
-
- this.cacheId = CU.cacheId(config.getName());
+ public GridCacheContextInfo(DynamicCacheDescriptor cacheDesc) {
+ config = cacheDesc.cacheConfiguration();
+ dynamicDeploymentId = cacheDesc.deploymentId();
+ groupId = cacheDesc.groupId();
+ cacheId = CU.cacheId(config.getName());
+ clientCache = true;
}
/**
* @return Cache configuration.
*/
public CacheConfiguration config() {
- return isCacheContextInited() ? gridCacheContext.config() : config;
+ return config;
}
/**
* @return Cache name.
*/
public String name() {
- return isCacheContextInited() ? gridCacheContext.name() : config.getName();
- }
-
- /**
- * @return {@code true} in case cache use custom affinity mapper.
- */
- public boolean customAffinityMapper() {
- return isCacheContextInited() && gridCacheContext.customAffinityMapper();
+ return config.getName();
}
/**
* @return Cache group id.
*/
public int groupId() {
- return isCacheContextInited() ? gridCacheContext.groupId() : groupId;
+ return groupId;
}
/**
* @return Cache id.
*/
public int cacheId() {
- return isCacheContextInited() ? gridCacheContext.cacheId() : cacheId;
+ return cacheId;
}
/**
* @return {@code true} in case affinity node.
*/
public boolean affinityNode() {
- return isCacheContextInited() && gridCacheContext.affinityNode();
+ return cctx != null && cctx.affinityNode();
}
/**
* @return Cache context. {@code null} for not started cache.
*/
- @Nullable public GridCacheContext gridCacheContext() {
- return gridCacheContext;
+ @Nullable public GridCacheContext cacheContext() {
+ return cctx;
}
/**
* @return Dynamic deployment ID.
*/
public IgniteUuid dynamicDeploymentId() {
- GridCacheContext ctx = gridCacheContext;
+ GridCacheContext cctx0 = cctx;
- if (ctx != null)
- return ctx.dynamicDeploymentId();
+ if (cctx0 != null)
+ return cctx0.dynamicDeploymentId();
assert dynamicDeploymentId != null : "Deployment id is not set and cache context is not initialized: " + this;
@@ -149,13 +136,13 @@ public class GridCacheContextInfo<K, V> {
/**
* Set real cache context in case cache has been fully initted and start.
*
- * @param gridCacheCtx Initted cache context.
+ * @param cctx Initted cache context.
*/
- public void initCacheContext(GridCacheContext<?, ?> gridCacheCtx) {
- assert this.gridCacheContext == null : this.gridCacheContext;
- assert gridCacheCtx != null;
+ public void initCacheContext(GridCacheContext<?, ?> cctx) {
+ assert this.cctx == null : this.cctx;
+ assert cctx != null;
- this.gridCacheContext = gridCacheCtx;
+ this.cctx = cctx;
}
/**
@@ -166,17 +153,10 @@ public class GridCacheContextInfo<K, V> {
}
/**
- * @return Kernal context.
- */
- public GridKernalContext context() {
- return ctx;
- }
-
- /**
* @return {@code true} If Cache context is initted.
*/
public boolean isCacheContextInited() {
- return gridCacheContext != null;
+ return cctx != null;
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 885ee22..5bd9eb8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -1298,7 +1298,9 @@ public class GridCacheProcessor extends GridProcessorAdapter {
public void initQueryStructuresForNotStartedCache(DynamicCacheDescriptor cacheDesc) throws IgniteCheckedException {
QuerySchema schema = cacheDesc.schema() != null ? cacheDesc.schema() : new QuerySchema();
- GridCacheContextInfo cacheInfo = new GridCacheContextInfo(cacheDesc, ctx);
+ CacheObjectContext coCtx = cacheDesc.cacheObjectContext(ctx.cacheObjects());
+
+ GridCacheContextInfo cacheInfo = new GridCacheContextInfo(cacheDesc);
ctx.query().onCacheStart(cacheInfo, schema, cacheDesc.sql());
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryContext.java
deleted file mode 100644
index 7f7e26e..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryContext.java
+++ /dev/null
@@ -1,62 +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.
- */
-
-package org.apache.ignite.internal.processors.cache.binary;
-
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.internal.processors.cache.CacheDefaultBinaryAffinityKeyMapper;
-import org.apache.ignite.internal.processors.cache.CacheObjectContext;
-import org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper;
-
-/**
- *
- */
-public class CacheObjectBinaryContext extends CacheObjectContext {
- /** */
- private boolean binaryEnabled;
-
- /**
- * @param kernalCtx Kernal context.
- * @param ccfg Cache configuration.
- * @param binaryEnabled Binary enabled flag.
- * @param cpyOnGet Copy on get flag.
- * @param storeVal {@code True} if should store unmarshalled value in cache.
- * @param depEnabled {@code true} if deployment is enabled for the given cache.
- */
- public CacheObjectBinaryContext(GridKernalContext kernalCtx,
- CacheConfiguration ccfg,
- boolean cpyOnGet,
- boolean storeVal,
- boolean binaryEnabled,
- boolean depEnabled) {
- super(kernalCtx,
- ccfg.getName(),
- binaryEnabled ? new CacheDefaultBinaryAffinityKeyMapper(ccfg.getKeyConfiguration()) :
- new GridCacheDefaultAffinityKeyMapper(),
- cpyOnGet,
- storeVal,
- depEnabled);
-
- this.binaryEnabled = binaryEnabled;
- }
-
- /** {@inheritDoc} */
- @Override public boolean binaryEnabled() {
- return binaryEnabled;
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessor.java
deleted file mode 100644
index 781bc5e..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessor.java
+++ /dev/null
@@ -1,149 +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.
- */
-
-package org.apache.ignite.internal.processors.cache.binary;
-
-import java.util.Collection;
-import java.util.Map;
-import org.apache.ignite.IgniteBinary;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.binary.BinaryObject;
-import org.apache.ignite.binary.BinaryObjectBuilder;
-import org.apache.ignite.binary.BinaryType;
-import org.apache.ignite.internal.binary.BinaryFieldMetadata;
-import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Extended cache object processor interface with additional methods for binary.
- */
-public interface CacheObjectBinaryProcessor extends IgniteCacheObjectProcessor {
- /**
- * @param clsName Class name.
- * @return Builder.
- */
- public BinaryObjectBuilder builder(String clsName);
-
- /**
- * Creates builder initialized by existing binary object.
- *
- * @param binaryObj Binary object to edit.
- * @return Binary builder.
- */
- public BinaryObjectBuilder builder(BinaryObject binaryObj);
-
- /**
- * @param typeId Type ID.
- * @param newMeta New meta data.
- * @param failIfUnregistered Fail if unregistered.
- * @throws IgniteException In case of error.
- */
- public void addMeta(int typeId, final BinaryType newMeta, boolean failIfUnregistered) throws IgniteException;
-
- /**
- * Adds metadata locally without triggering discovery exchange.
- *
- * Must be used only during startup and only if it is guaranteed that all nodes have the same copy
- * of BinaryType.
- *
- * @param typeId Type ID.
- * @param newMeta New meta data.
- * @throws IgniteException In case of error.
- */
- public void addMetaLocally(int typeId, final BinaryType newMeta) throws IgniteException;
-
- /**
- * @param typeId Type ID.
- * @param typeName Type name.
- * @param affKeyFieldName Affinity key field name.
- * @param fieldTypeIds Fields map.
- * @param isEnum Enum flag.
- * @param enumMap Enum name to ordinal mapping.
- * @throws IgniteException In case of error.
- */
- public void updateMetadata(int typeId, String typeName, @Nullable String affKeyFieldName,
- Map<String, BinaryFieldMetadata> fieldTypeIds, boolean isEnum, @Nullable Map<String, Integer> enumMap)
- throws IgniteException;
-
- /**
- * @param typeId Type ID.
- * @return Meta data.
- * @throws IgniteException In case of error.
- */
- @Nullable public BinaryType metadata(int typeId) throws IgniteException;
-
-
- /**
- * @param typeId Type ID.
- * @param schemaId Schema ID.
- * @return Meta data.
- * @throws IgniteException In case of error.
- */
- @Nullable public BinaryType metadata(int typeId, int schemaId) throws IgniteException;
-
- /**
- * @param typeIds Type ID.
- * @return Meta data.
- * @throws IgniteException In case of error.
- */
- public Map<Integer, BinaryType> metadata(Collection<Integer> typeIds) throws IgniteException;
-
- /**
- * @return Metadata for all types.
- * @throws IgniteException In case of error.
- */
- public Collection<BinaryType> metadata() throws IgniteException;
-
- /**
- * @param typeName Type name.
- * @param ord ordinal.
- * @return Enum object.
- * @throws IgniteException If failed.
- */
- public BinaryObject buildEnum(String typeName, int ord) throws IgniteException;
-
- /**
- * @param typeName Type name.
- * @param name Name.
- * @return Enum object.
- * @throws IgniteException If failed.
- */
- public BinaryObject buildEnum(String typeName, String name) throws IgniteException;
-
- /**
- * Register enum type
- *
- * @param typeName Type name.
- * @param vals Mapping of enum constant names to ordinals.
- * @return Binary Type for registered enum.
- */
- public BinaryType registerEnum(String typeName, Map<String, Integer> vals) throws IgniteException;
-
- /**
- * @return Binaries interface.
- * @throws IgniteException If failed.
- */
- @Override public IgniteBinary binary() throws IgniteException;
-
- /**
- * @param obj Original object.
- * @param failIfUnregistered Throw exception if class isn't registered.
- * @return Binary object (in case binary marshaller is used).
- * @throws IgniteException If failed.
- */
- public Object marshalToBinary(Object obj, boolean failIfUnregistered) throws IgniteException;
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
index 8dcc510..0a1e887 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
@@ -19,10 +19,13 @@ package org.apache.ignite.internal.processors.cache.binary;
import java.io.File;
import java.io.Serializable;
+import java.math.BigDecimal;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
@@ -43,6 +46,7 @@ import org.apache.ignite.binary.BinaryObjectBuilder;
import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.binary.BinaryTypeConfiguration;
+import org.apache.ignite.cache.affinity.AffinityKeyMapper;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.BinaryConfiguration;
import org.apache.ignite.configuration.CacheConfiguration;
@@ -67,14 +71,25 @@ import org.apache.ignite.internal.binary.GridBinaryMarshaller;
import org.apache.ignite.internal.binary.builder.BinaryObjectBuilderImpl;
import org.apache.ignite.internal.binary.streams.BinaryInputStream;
import org.apache.ignite.internal.binary.streams.BinaryOffheapInputStream;
+import org.apache.ignite.internal.processors.GridProcessorAdapter;
+import org.apache.ignite.internal.processors.cache.CacheDefaultBinaryAffinityKeyMapper;
import org.apache.ignite.internal.processors.cache.CacheObject;
+import org.apache.ignite.internal.processors.cache.CacheObjectByteArrayImpl;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectImpl;
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
+import org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper;
import org.apache.ignite.internal.processors.cache.GridCacheUtils;
+import org.apache.ignite.internal.processors.cache.IncompleteCacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.processors.cache.KeyCacheObjectImpl;
import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
-import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessorImpl;
+import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
+import org.apache.ignite.internal.processors.cacheobject.UserCacheObjectByteArrayImpl;
+import org.apache.ignite.internal.processors.cacheobject.UserCacheObjectImpl;
+import org.apache.ignite.internal.processors.cacheobject.UserKeyCacheObjectImpl;
+import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.MutableSingletonList;
@@ -90,6 +105,7 @@ import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.lang.IgniteFuture;
+import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.spi.IgniteNodeValidationResult;
import org.apache.ignite.spi.discovery.DiscoveryDataBag;
@@ -108,8 +124,10 @@ import static org.apache.ignite.internal.GridComponent.DiscoveryDataExchangeType
/**
* Binary processor implementation.
*/
-public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorImpl implements
- CacheObjectBinaryProcessor {
+public class CacheObjectBinaryProcessorImpl extends GridProcessorAdapter implements IgniteCacheObjectProcessor {
+ /** Immutable classes. */
+ private static final Collection<Class<?>> IMMUTABLE_CLS = new HashSet<>();
+
/** */
private volatile boolean discoveryStarted;
@@ -139,7 +157,8 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
private long waitSchemaTimeout = IgniteSystemProperties.getLong(IGNITE_WAIT_SCHEMA_UPDATE, 30_000);
/** For tests. */
- public static boolean useTestBinaryCtx = false;
+ @SuppressWarnings("PublicField")
+ public static boolean useTestBinaryCtx;
/** */
@GridToStringExclude
@@ -154,9 +173,28 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
/** Cached affinity key field names. */
private final ConcurrentHashMap<Integer, T1<BinaryField>> affKeyFields = new ConcurrentHashMap<>();
+ /*
+ * Static initializer
+ */
+ static {
+ IMMUTABLE_CLS.add(String.class);
+ IMMUTABLE_CLS.add(Boolean.class);
+ IMMUTABLE_CLS.add(Byte.class);
+ IMMUTABLE_CLS.add(Short.class);
+ IMMUTABLE_CLS.add(Character.class);
+ IMMUTABLE_CLS.add(Integer.class);
+ IMMUTABLE_CLS.add(Long.class);
+ IMMUTABLE_CLS.add(Float.class);
+ IMMUTABLE_CLS.add(Double.class);
+ IMMUTABLE_CLS.add(UUID.class);
+ IMMUTABLE_CLS.add(IgniteUuid.class);
+ IMMUTABLE_CLS.add(BigDecimal.class);
+ }
+
/**
* @param ctx Kernal context.
*/
+ @SuppressWarnings("deprecation")
public CacheObjectBinaryProcessorImpl(GridKernalContext ctx) {
super(ctx);
@@ -277,7 +315,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
}
/** {@inheritDoc} */
- @Override public void onDisconnected(IgniteFuture<?> reconnectFut) throws IgniteCheckedException {
+ @Override public void onDisconnected(IgniteFuture<?> reconnectFut) {
this.reconnectFut = reconnectFut;
if (transport != null)
@@ -291,7 +329,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> onReconnected(boolean clusterRestarted) throws IgniteCheckedException {
- this.reconnectFut = null;
+ reconnectFut = null;
return super.onReconnected(clusterRestarted);
}
@@ -304,13 +342,33 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
}
/** {@inheritDoc} */
+ @Nullable @Override public CacheObject prepareForCache(@Nullable CacheObject obj, GridCacheContext cctx) {
+ if (obj == null)
+ return null;
+
+ return obj.prepareForCache(cctx.cacheObjectContext());
+ }
+
+ /** {@inheritDoc} */
@Override public int typeId(String typeName) {
if (binaryCtx == null)
- return super.typeId(typeName);
+ return 0;
return binaryCtx.typeId(typeName);
}
+ /** {@inheritDoc} */
+ @Override public boolean immutable(Object obj) {
+ assert obj != null;
+
+ return IMMUTABLE_CLS.contains(obj.getClass());
+ }
+
+ /** {@inheritDoc} */
+ @Override public void onContinuousProcessorStarted(GridKernalContext ctx) {
+ // No-op.
+ }
+
/**
* @param obj Object.
* @return Bytes.
@@ -462,7 +520,8 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
}
/** {@inheritDoc} */
- @Override public void addMeta(final int typeId, final BinaryType newMeta, boolean failIfUnregistered) throws BinaryObjectException {
+ @Override public void addMeta(final int typeId, final BinaryType newMeta, boolean failIfUnregistered)
+ throws BinaryObjectException {
assert newMeta != null;
assert newMeta instanceof BinaryTypeImpl;
@@ -827,7 +886,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
return field;
}
else {
- affKeyFields.putIfAbsent(typeId, new T1<BinaryField>(null));
+ affKeyFields.putIfAbsent(typeId, new T1<>(null));
return null;
}
@@ -846,7 +905,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
if (obj == null)
return null;
- return isBinaryObject(obj) ? ((BinaryObject)obj).field(fieldName) : super.field(obj, fieldName);
+ return isBinaryObject(obj) ? ((BinaryObject)obj).field(fieldName) : null;
}
/** {@inheritDoc} */
@@ -862,30 +921,44 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
}
/** {@inheritDoc} */
- @Override public CacheObjectContext contextForCache(CacheConfiguration cfg) throws IgniteCheckedException {
- assert cfg != null;
-
- boolean binaryEnabled = marsh instanceof BinaryMarshaller && !GridCacheUtils.isSystemCache(cfg.getName()) &&
- !GridCacheUtils.isIgfsCache(ctx.config(), cfg.getName());
-
- CacheObjectContext ctx0 = super.contextForCache(cfg);
-
- CacheObjectContext res = new CacheObjectBinaryContext(ctx,
- cfg,
- ctx0.copyOnGet(),
- ctx0.storeValue(),
- binaryEnabled,
- ctx0.addDeploymentInfo());
-
- ctx.resource().injectGeneric(res.defaultAffMapper());
-
- return res;
+ @SuppressWarnings("deprecation")
+ @Override public CacheObjectContext contextForCache(CacheConfiguration ccfg) throws IgniteCheckedException {
+ assert ccfg != null;
+
+ boolean storeVal = !ccfg.isCopyOnRead() || (!isBinaryEnabled(ccfg) &&
+ (QueryUtils.isEnabled(ccfg) || ctx.config().isPeerClassLoadingEnabled()));
+
+ boolean binaryEnabled = marsh instanceof BinaryMarshaller && !GridCacheUtils.isSystemCache(ccfg.getName()) &&
+ !GridCacheUtils.isIgfsCache(ctx.config(), ccfg.getName());
+
+ AffinityKeyMapper cacheAffMapper = ccfg.getAffinityMapper();
+
+ boolean customAffMapper =
+ cacheAffMapper != null &&
+ !(cacheAffMapper instanceof CacheDefaultBinaryAffinityKeyMapper) &&
+ !(cacheAffMapper instanceof GridCacheDefaultAffinityKeyMapper);
+
+ AffinityKeyMapper dfltAffMapper = binaryEnabled ?
+ new CacheDefaultBinaryAffinityKeyMapper(ccfg.getKeyConfiguration()) :
+ new GridCacheDefaultAffinityKeyMapper();
+
+ ctx.resource().injectGeneric(dfltAffMapper);
+
+ return new CacheObjectContext(ctx,
+ ccfg.getName(),
+ dfltAffMapper,
+ customAffMapper,
+ ccfg.isCopyOnRead(),
+ storeVal,
+ ctx.config().isPeerClassLoadingEnabled() && !isBinaryEnabled(ccfg),
+ binaryEnabled
+ );
}
/** {@inheritDoc} */
@Override public byte[] marshal(CacheObjectValueContext ctx, Object val) throws IgniteCheckedException {
if (!ctx.binaryEnabled() || binaryMarsh == null)
- return super.marshal(ctx, val);
+ return CU.marshal(ctx.kernalContext().cache().context(), ctx.addDeploymentInfo(), val);
byte[] arr = binaryMarsh.marshal(val, false);
@@ -898,7 +971,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
@Override public Object unmarshal(CacheObjectValueContext ctx, byte[] bytes, ClassLoader clsLdr)
throws IgniteCheckedException {
if (!ctx.binaryEnabled() || binaryMarsh == null)
- return super.unmarshal(ctx, bytes, clsLdr);
+ return U.unmarshal(ctx.kernalContext(), bytes, U.resolveClassLoader(clsLdr, ctx.kernalContext().config()));
return binaryMarsh.unmarshal(bytes, clsLdr);
}
@@ -906,8 +979,19 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
/** {@inheritDoc} */
@Override public KeyCacheObject toCacheKeyObject(CacheObjectContext ctx, @Nullable GridCacheContext cctx,
Object obj, boolean userObj) {
- if (!ctx.binaryEnabled())
- return super.toCacheKeyObject(ctx, cctx, obj, userObj);
+ if (!ctx.binaryEnabled()) {
+ if (obj instanceof KeyCacheObject) {
+ KeyCacheObject key = (KeyCacheObject)obj;
+
+ if (key.partition() == -1)
+ // Assume all KeyCacheObjects except BinaryObject can not be reused for another cache.
+ key.partition(partition(ctx, cctx, key));
+
+ return (KeyCacheObject)obj;
+ }
+
+ return toCacheKeyObject0(ctx, cctx, obj, userObj);
+ }
if (obj instanceof KeyCacheObject) {
KeyCacheObject key = (KeyCacheObject)obj;
@@ -926,7 +1010,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
obj = toBinary(obj, false);
if (obj instanceof BinaryObjectImpl) {
- ((BinaryObjectImpl)obj).partition(partition(ctx, cctx, obj));
+ ((KeyCacheObject) obj).partition(partition(ctx, cctx, obj));
return (KeyCacheObject)obj;
}
@@ -934,11 +1018,33 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
return toCacheKeyObject0(ctx, cctx, obj, userObj);
}
+ /**
+ * @param obj Object.
+ * @param userObj If {@code true} then given object is object provided by user and should be copied
+ * before stored in cache.
+ * @return Key cache object.
+ */
+ protected KeyCacheObject toCacheKeyObject0(CacheObjectContext ctx,
+ @Nullable GridCacheContext cctx,
+ Object obj,
+ boolean userObj) {
+ int part = partition(ctx, cctx, obj);
+
+ if (!userObj)
+ return new KeyCacheObjectImpl(obj, null, part);
+
+ return new UserKeyCacheObjectImpl(obj, part);
+ }
+
/** {@inheritDoc} */
@Nullable @Override public CacheObject toCacheObject(CacheObjectContext ctx, @Nullable Object obj,
boolean userObj, boolean failIfUnregistered) {
- if (!ctx.binaryEnabled())
- return super.toCacheObject(ctx, obj, userObj, failIfUnregistered);
+ if (!ctx.binaryEnabled()) {
+ if (obj == null || obj instanceof CacheObject)
+ return (CacheObject)obj;
+
+ return toCacheObject0(obj, userObj);
+ }
if (obj == null || obj instanceof CacheObject)
return (CacheObject)obj;
@@ -951,23 +1057,136 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
return toCacheObject0(obj, userObj);
}
+ /**
+ * @param obj Object.
+ * @param userObj If {@code true} then given object is object provided by user and should be copied
+ * before stored in cache.
+ * @return Cache object.
+ */
+ private CacheObject toCacheObject0(@Nullable Object obj, boolean userObj) {
+ assert obj != null;
+
+ if (obj instanceof byte[]) {
+ if (!userObj)
+ return new CacheObjectByteArrayImpl((byte[])obj);
+
+ return new UserCacheObjectByteArrayImpl((byte[])obj);
+ }
+
+ if (!userObj)
+ return new CacheObjectImpl(obj, null);
+
+ return new UserCacheObjectImpl(obj, null);
+ }
+
+ /**
+ * @param ctx Cache objects context.
+ * @param cctx Cache context.
+ * @param obj Object.
+ * @return Object partition.
+ */
+ private int partition(CacheObjectContext ctx, @Nullable GridCacheContext cctx, Object obj) {
+ try {
+ return cctx != null ?
+ cctx.affinity().partition(obj, false) :
+ ctx.kernalContext().affinity().partition0(ctx.cacheName(), obj, null);
+ }
+ catch (IgniteCheckedException e) {
+ U.error(log, "Failed to get partition", e);
+
+ return -1;
+ }
+ }
+
/** {@inheritDoc} */
@Override public CacheObject toCacheObject(CacheObjectContext ctx, byte type, byte[] bytes) {
- if (type == BinaryObjectImpl.TYPE_BINARY)
- return new BinaryObjectImpl(binaryContext(), bytes, 0);
- else if (type == BinaryObjectImpl.TYPE_BINARY_ENUM)
- return new BinaryEnumObjectImpl(binaryContext(), bytes);
+ switch (type) {
+ case BinaryObjectImpl.TYPE_BINARY:
+ return new BinaryObjectImpl(binaryContext(), bytes, 0);
- return super.toCacheObject(ctx, type, bytes);
+ case BinaryObjectImpl.TYPE_BINARY_ENUM:
+ return new BinaryEnumObjectImpl(binaryContext(), bytes);
+
+ case CacheObject.TYPE_BYTE_ARR:
+ return new CacheObjectByteArrayImpl(bytes);
+
+ case CacheObject.TYPE_REGULAR:
+ return new CacheObjectImpl(null, bytes);
+ }
+
+ throw new IllegalArgumentException("Invalid object type: " + type);
}
/** {@inheritDoc} */
@Override public KeyCacheObject toKeyCacheObject(CacheObjectContext ctx, byte type, byte[] bytes)
throws IgniteCheckedException {
- if (type == BinaryObjectImpl.TYPE_BINARY)
- return new BinaryObjectImpl(binaryContext(), bytes, 0);
+ switch (type) {
+ case BinaryObjectImpl.TYPE_BINARY:
+ return new BinaryObjectImpl(binaryContext(), bytes, 0);
+
+ case CacheObject.TYPE_BYTE_ARR:
+ throw new IllegalArgumentException("Byte arrays cannot be used as cache keys.");
+
+ case CacheObject.TYPE_REGULAR:
+ return new KeyCacheObjectImpl(ctx.kernalContext().cacheObjects().unmarshal(ctx, bytes, null), bytes, -1);
+ }
+
+ throw new IllegalArgumentException("Invalid object type: " + type);
+ }
+
+ /** {@inheritDoc} */
+ @Override public CacheObject toCacheObject(CacheObjectContext ctx, ByteBuffer buf) {
+ int len = buf.getInt();
- return super.toKeyCacheObject(ctx, type, bytes);
+ assert len >= 0 : len;
+
+ byte type = buf.get();
+
+ byte[] data = new byte[len];
+
+ buf.get(data);
+
+ return toCacheObject(ctx, type, data);
+ }
+
+ /** {@inheritDoc} */
+ @Override public IncompleteCacheObject toCacheObject(CacheObjectContext ctx, ByteBuffer buf,
+ @Nullable IncompleteCacheObject incompleteObj) {
+ if (incompleteObj == null)
+ incompleteObj = new IncompleteCacheObject(buf);
+
+ if (incompleteObj.isReady())
+ return incompleteObj;
+
+ incompleteObj.readData(buf);
+
+ if (incompleteObj.isReady())
+ incompleteObj.object(toCacheObject(ctx, incompleteObj.type(), incompleteObj.data()));
+
+ return incompleteObj;
+ }
+
+ /** {@inheritDoc} */
+ @Override public IncompleteCacheObject toKeyCacheObject(CacheObjectContext ctx, ByteBuffer buf,
+ @Nullable IncompleteCacheObject incompleteObj) throws IgniteCheckedException {
+ if (incompleteObj == null)
+ incompleteObj = new IncompleteCacheObject(buf);
+
+ if (incompleteObj.isReady())
+ return incompleteObj;
+
+ incompleteObj.readData(buf);
+
+ if (incompleteObj.isReady())
+ incompleteObj.object(toKeyCacheObject(ctx, incompleteObj.type(), incompleteObj.data()));
+
+ return incompleteObj;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public CacheObject toCacheObject(CacheObjectContext ctx, @Nullable Object obj,
+ boolean userObj) {
+ return toCacheObject(ctx, obj, userObj, false);
}
/** {@inheritDoc} */
@@ -1177,6 +1396,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
}
/** */
+ @SuppressWarnings("PublicInnerClass")
public static class TestBinaryContext extends BinaryContext {
/** */
private List<TestBinaryContextListener> listeners;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/IgniteBinaryImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/IgniteBinaryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/IgniteBinaryImpl.java
index 5f4cdcd..0ee8a0c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/IgniteBinaryImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/IgniteBinaryImpl.java
@@ -37,12 +37,12 @@ public class IgniteBinaryImpl implements IgniteBinary {
private GridKernalContext ctx;
/** */
- private CacheObjectBinaryProcessor proc;
+ private IgniteCacheObjectProcessor proc;
/**
* @param ctx Context.
*/
- public IgniteBinaryImpl(GridKernalContext ctx, CacheObjectBinaryProcessor proc) {
+ public IgniteBinaryImpl(GridKernalContext ctx, IgniteCacheObjectProcessor proc) {
this.ctx = ctx;
this.proc = proc;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java
index 00495e1..238f99a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java
@@ -400,7 +400,7 @@ class StandaloneWalRecordsIterator extends AbstractWalRecordsIterator {
IgniteCacheObjectProcessor processor
) throws IgniteCheckedException {
final CacheObjectContext fakeCacheObjCtx = new CacheObjectContext(
- kernalCtx, null, null, false, false, false);
+ kernalCtx, null, null, false, false, false, false, false);
final List<DataEntry> entries = dataRec.writeEntries();
final List<DataEntry> postProcessedEntries = new ArrayList<>(entries.size());
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
index 0759a93..f59a99e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
@@ -18,11 +18,18 @@
package org.apache.ignite.internal.processors.cacheobject;
import java.nio.ByteBuffer;
+import java.util.Collection;
+import java.util.Map;
+
import org.apache.ignite.IgniteBinary;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.binary.BinaryObject;
+import org.apache.ignite.binary.BinaryObjectBuilder;
+import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.binary.BinaryFieldMetadata;
import org.apache.ignite.internal.processors.GridProcessor;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
@@ -213,6 +220,116 @@ public interface IgniteCacheObjectProcessor extends GridProcessor {
/**
* @return Ignite binary interface.
+ * @throws IgniteException If failed.
+ */
+ public IgniteBinary binary() throws IgniteException;
+
+ /**
+ * @param clsName Class name.
+ * @return Builder.
+ */
+ public BinaryObjectBuilder builder(String clsName);
+
+ /**
+ * Creates builder initialized by existing binary object.
+ *
+ * @param binaryObj Binary object to edit.
+ * @return Binary builder.
+ */
+ public BinaryObjectBuilder builder(BinaryObject binaryObj);
+
+ /**
+ * @param typeId Type ID.
+ * @param newMeta New meta data.
+ * @param failIfUnregistered Fail if unregistered.
+ * @throws IgniteException In case of error.
+ */
+ public void addMeta(int typeId, final BinaryType newMeta, boolean failIfUnregistered) throws IgniteException;
+
+ /**
+ * Adds metadata locally without triggering discovery exchange.
+ *
+ * Must be used only during startup and only if it is guaranteed that all nodes have the same copy
+ * of BinaryType.
+ *
+ * @param typeId Type ID.
+ * @param newMeta New meta data.
+ * @throws IgniteException In case of error.
+ */
+ public void addMetaLocally(int typeId, final BinaryType newMeta) throws IgniteException;
+
+ /**
+ * @param typeId Type ID.
+ * @param typeName Type name.
+ * @param affKeyFieldName Affinity key field name.
+ * @param fieldTypeIds Fields map.
+ * @param isEnum Enum flag.
+ * @param enumMap Enum name to ordinal mapping.
+ * @throws IgniteException In case of error.
+ */
+ public void updateMetadata(int typeId, String typeName, @Nullable String affKeyFieldName,
+ Map<String, BinaryFieldMetadata> fieldTypeIds, boolean isEnum, @Nullable Map<String, Integer> enumMap)
+ throws IgniteException;
+
+ /**
+ * @param typeId Type ID.
+ * @return Meta data.
+ * @throws IgniteException In case of error.
+ */
+ @Nullable public BinaryType metadata(int typeId) throws IgniteException;
+
+
+ /**
+ * @param typeId Type ID.
+ * @param schemaId Schema ID.
+ * @return Meta data.
+ * @throws IgniteException In case of error.
+ */
+ @Nullable public BinaryType metadata(int typeId, int schemaId) throws IgniteException;
+
+ /**
+ * @param typeIds Type ID.
+ * @return Meta data.
+ * @throws IgniteException In case of error.
+ */
+ public Map<Integer, BinaryType> metadata(Collection<Integer> typeIds) throws IgniteException;
+
+ /**
+ * @return Metadata for all types.
+ * @throws IgniteException In case of error.
+ */
+ public Collection<BinaryType> metadata() throws IgniteException;
+
+ /**
+ * @param typeName Type name.
+ * @param ord ordinal.
+ * @return Enum object.
+ * @throws IgniteException If failed.
+ */
+ public BinaryObject buildEnum(String typeName, int ord) throws IgniteException;
+
+ /**
+ * @param typeName Type name.
+ * @param name Name.
+ * @return Enum object.
+ * @throws IgniteException If failed.
+ */
+ public BinaryObject buildEnum(String typeName, String name) throws IgniteException;
+
+ /**
+ * Register enum type
+ *
+ * @param typeName Type name.
+ * @param vals Mapping of enum constant names to ordinals.
+ * @return Binary Type for registered enum.
+ */
+ public BinaryType registerEnum(String typeName, Map<String, Integer> vals) throws IgniteException;
+
+ /**
+ * @param obj Original object.
+ * @param failIfUnregistered Throw exception if class isn't registered.
+ * @return Binary object (in case binary marshaller is used).
+ * @throws IgniteException If failed.
*/
- public IgniteBinary binary();
+ public Object marshalToBinary(Object obj, boolean failIfUnregistered) throws IgniteException;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
deleted file mode 100644
index 2170d54..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
+++ /dev/null
@@ -1,346 +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.
- */
-
-package org.apache.ignite.internal.processors.cacheobject;
-
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.UUID;
-import org.apache.ignite.IgniteBinary;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.internal.processors.GridProcessorAdapter;
-import org.apache.ignite.internal.processors.cache.CacheObject;
-import org.apache.ignite.internal.processors.cache.CacheObjectByteArrayImpl;
-import org.apache.ignite.internal.processors.cache.CacheObjectContext;
-import org.apache.ignite.internal.processors.cache.CacheObjectImpl;
-import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
-import org.apache.ignite.internal.processors.cache.GridCacheContext;
-import org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper;
-import org.apache.ignite.internal.processors.cache.IncompleteCacheObject;
-import org.apache.ignite.internal.processors.cache.KeyCacheObject;
-import org.apache.ignite.internal.processors.cache.KeyCacheObjectImpl;
-import org.apache.ignite.internal.processors.query.QueryUtils;
-import org.apache.ignite.internal.util.typedef.internal.CU;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.lang.IgniteUuid;
-import org.jetbrains.annotations.Nullable;
-
-/**
- *
- */
-public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter implements IgniteCacheObjectProcessor {
- /** Immutable classes. */
- private static final Collection<Class<?>> IMMUTABLE_CLS = new HashSet<>();
-
- /** */
- private IgniteBinary noOpBinary = new NoOpBinary();
-
- /*
- * Static initializer
- */
- static {
- IMMUTABLE_CLS.add(String.class);
- IMMUTABLE_CLS.add(Boolean.class);
- IMMUTABLE_CLS.add(Byte.class);
- IMMUTABLE_CLS.add(Short.class);
- IMMUTABLE_CLS.add(Character.class);
- IMMUTABLE_CLS.add(Integer.class);
- IMMUTABLE_CLS.add(Long.class);
- IMMUTABLE_CLS.add(Float.class);
- IMMUTABLE_CLS.add(Double.class);
- IMMUTABLE_CLS.add(UUID.class);
- IMMUTABLE_CLS.add(IgniteUuid.class);
- IMMUTABLE_CLS.add(BigDecimal.class);
- }
-
- /**
- * @param ctx Context.
- */
- public IgniteCacheObjectProcessorImpl(GridKernalContext ctx) {
- super(ctx);
- }
-
- /** {@inheritDoc} */
- @Override public IgniteBinary binary() {
- return noOpBinary;
- }
-
- /** {@inheritDoc} */
- @Nullable @Override public CacheObject prepareForCache(@Nullable CacheObject obj, GridCacheContext cctx) {
- if (obj == null)
- return null;
-
- return obj.prepareForCache(cctx.cacheObjectContext());
- }
-
- /** {@inheritDoc} */
- @Override public byte[] marshal(CacheObjectValueContext ctx, Object val) throws IgniteCheckedException {
- return CU.marshal(ctx.kernalContext().cache().context(), ctx.addDeploymentInfo(), val);
- }
-
- /** {@inheritDoc} */
- @Override public Object unmarshal(CacheObjectValueContext ctx, byte[] bytes, ClassLoader clsLdr)
- throws IgniteCheckedException {
- return U.unmarshal(ctx.kernalContext(), bytes, U.resolveClassLoader(clsLdr, ctx.kernalContext().config()));
- }
-
- /** {@inheritDoc} */
- @Override public KeyCacheObject toCacheKeyObject(CacheObjectContext ctx,
- @Nullable GridCacheContext cctx,
- Object obj,
- boolean userObj) {
- if (obj instanceof KeyCacheObject) {
- KeyCacheObject key = (KeyCacheObject)obj;
-
- if (key.partition() == -1)
- // Assume all KeyCacheObjects except BinaryObject can not be reused for another cache.
- key.partition(partition(ctx, cctx, key));
-
- return (KeyCacheObject)obj;
- }
-
- return toCacheKeyObject0(ctx, cctx, obj, userObj);
- }
-
- /**
- * @param obj Object.
- * @param userObj If {@code true} then given object is object provided by user and should be copied
- * before stored in cache.
- * @return Key cache object.
- */
- protected KeyCacheObject toCacheKeyObject0(CacheObjectContext ctx,
- @Nullable GridCacheContext cctx,
- Object obj,
- boolean userObj) {
- int part = partition(ctx, cctx, obj);
-
- if (!userObj)
- return new KeyCacheObjectImpl(obj, null, part);
-
- return new UserKeyCacheObjectImpl(obj, part);
- }
-
- /** {@inheritDoc} */
- @Override public CacheObject toCacheObject(CacheObjectContext ctx, byte type, byte[] bytes) {
- switch (type) {
- case CacheObject.TYPE_BYTE_ARR:
- return new CacheObjectByteArrayImpl(bytes);
-
- case CacheObject.TYPE_REGULAR:
- return new CacheObjectImpl(null, bytes);
- }
-
- throw new IllegalArgumentException("Invalid object type: " + type);
- }
-
- /** {@inheritDoc} */
- @Override public KeyCacheObject toKeyCacheObject(CacheObjectContext ctx, byte type, byte[] bytes) throws IgniteCheckedException {
- switch (type) {
- case CacheObject.TYPE_BYTE_ARR:
- throw new IllegalArgumentException("Byte arrays cannot be used as cache keys.");
-
- case CacheObject.TYPE_REGULAR:
- return new KeyCacheObjectImpl(ctx.kernalContext().cacheObjects().unmarshal(ctx, bytes, null), bytes, -1);
- }
-
- throw new IllegalArgumentException("Invalid object type: " + type);
- }
-
- /** {@inheritDoc} */
- @Override public CacheObject toCacheObject(CacheObjectContext ctx, ByteBuffer buf) {
- int len = buf.getInt();
-
- assert len >= 0 : len;
-
- byte type = buf.get();
-
- byte[] data = new byte[len];
-
- buf.get(data);
-
- return toCacheObject(ctx, type, data);
- }
-
- /** {@inheritDoc} */
- @Override public IncompleteCacheObject toCacheObject(
- final CacheObjectContext ctx,
- final ByteBuffer buf,
- @Nullable IncompleteCacheObject incompleteObj
- ) throws IgniteCheckedException {
- if (incompleteObj == null)
- incompleteObj = new IncompleteCacheObject(buf);
-
- if (incompleteObj.isReady())
- return incompleteObj;
-
- incompleteObj.readData(buf);
-
- if (incompleteObj.isReady())
- incompleteObj.object(toCacheObject(ctx, incompleteObj.type(), incompleteObj.data()));
-
- return incompleteObj;
- }
-
- /** {@inheritDoc} */
- @Override public IncompleteCacheObject toKeyCacheObject(
- final CacheObjectContext ctx,
- final ByteBuffer buf,
- @Nullable IncompleteCacheObject incompleteObj
- ) throws IgniteCheckedException {
- if (incompleteObj == null)
- incompleteObj = new IncompleteCacheObject(buf);
-
- if (incompleteObj.isReady())
- return incompleteObj;
-
- incompleteObj.readData(buf);
-
- if (incompleteObj.isReady())
- incompleteObj.object(toKeyCacheObject(ctx, incompleteObj.type(), incompleteObj.data()));
-
- return incompleteObj;
- }
-
- /** {@inheritDoc} */
- @Nullable @Override public CacheObject toCacheObject(CacheObjectContext ctx,
- @Nullable Object obj,
- boolean userObj) {
- return toCacheObject(ctx, obj, userObj, false);
- }
-
- /** {@inheritDoc} */
- @Nullable @Override public CacheObject toCacheObject(CacheObjectContext ctx, @Nullable Object obj, boolean userObj,
- boolean failIfUnregistered) {
- if (obj == null || obj instanceof CacheObject)
- return (CacheObject)obj;
-
- return toCacheObject0(obj, userObj);
- }
-
- /**
- * @param obj Object.
- * @param userObj If {@code true} then given object is object provided by user and should be copied
- * before stored in cache.
- * @return Cache object.
- */
- protected CacheObject toCacheObject0(@Nullable Object obj, boolean userObj) {
- assert obj != null;
-
- if (obj instanceof byte[]) {
- if (!userObj)
- return new CacheObjectByteArrayImpl((byte[])obj);
-
- return new UserCacheObjectByteArrayImpl((byte[])obj);
- }
-
- if (!userObj)
- return new CacheObjectImpl(obj, null);
-
- return new UserCacheObjectImpl(obj, null);
- }
-
- /**
- * @param ctx Cache objects context.
- * @param cctx Cache context.
- * @param obj Object.
- * @return Object partition.
- */
- protected final int partition(CacheObjectContext ctx, @Nullable GridCacheContext cctx, Object obj) {
- try {
- return cctx != null ?
- cctx.affinity().partition(obj, false) :
- ctx.kernalContext().affinity().partition0(ctx.cacheName(), obj, null);
- }
- catch (IgniteCheckedException e) {
- U.error(log, "Failed to get partition", e);
-
- return -1;
- }
- }
-
- /** {@inheritDoc} */
- @Override public CacheObjectContext contextForCache(CacheConfiguration ccfg) throws IgniteCheckedException {
- assert ccfg != null;
-
- boolean storeVal = !ccfg.isCopyOnRead() || (!isBinaryEnabled(ccfg) &&
- (QueryUtils.isEnabled(ccfg) || ctx.config().isPeerClassLoadingEnabled()));
-
- CacheObjectContext res = new CacheObjectContext(ctx,
- ccfg.getName(),
- ccfg.getAffinityMapper() != null ? ccfg.getAffinityMapper() : new GridCacheDefaultAffinityKeyMapper(),
- ccfg.isCopyOnRead(),
- storeVal,
- ctx.config().isPeerClassLoadingEnabled() && !isBinaryEnabled(ccfg));
-
- ctx.resource().injectGeneric(res.defaultAffMapper());
-
- return res;
- }
-
- /** {@inheritDoc} */
- @Override public boolean immutable(Object obj) {
- assert obj != null;
-
- return IMMUTABLE_CLS.contains(obj.getClass());
- }
-
- /** {@inheritDoc} */
- @Override public void onContinuousProcessorStarted(GridKernalContext ctx) throws IgniteCheckedException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public int typeId(String typeName) {
- return 0;
- }
-
- /** {@inheritDoc} */
- @Override public Object unwrapTemporary(GridCacheContext ctx, Object obj) throws IgniteException {
- return obj;
- }
-
- /** {@inheritDoc} */
- @Override public boolean isBinaryObject(Object obj) {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override public boolean isBinaryEnabled(CacheConfiguration<?, ?> ccfg) {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override public int typeId(Object obj) {
- return 0;
- }
-
- /** {@inheritDoc} */
- @Override public Object field(Object obj, String fieldName) {
- return null;
- }
-
- /** {@inheritDoc} */
- @Override public boolean hasField(Object obj, String fieldName) {
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
index de57667..24bf22b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
@@ -44,7 +44,7 @@ public class UserKeyCacheObjectImpl extends KeyCacheObjectImpl {
* @param key Key.
* @param part Partition.
*/
- UserKeyCacheObjectImpl(Object key, int part) {
+ public UserKeyCacheObjectImpl(Object key, int part) {
super(key, null, part);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index 65c8205..eee21e2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -682,7 +682,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
ctx.cache().context().database().checkpointReadLock();
try {
- if (cacheInfo.isClientCache() && cacheInfo.isCacheContextInited() && idx.initCacheContext(cacheInfo.gridCacheContext()))
+ if (cacheInfo.isClientCache() && cacheInfo.isCacheContextInited() && idx.initCacheContext(cacheInfo.cacheContext()))
return;
synchronized (stateMux) {
@@ -701,8 +701,15 @@ public class GridQueryProcessor extends GridProcessorAdapter {
if (!F.isEmpty(qryEntities)) {
for (QueryEntity qryEntity : qryEntities) {
- QueryTypeCandidate cand = QueryUtils.typeForQueryEntity(cacheName, schemaName, cacheInfo, qryEntity,
- mustDeserializeClss, escape);
+ QueryTypeCandidate cand = QueryUtils.typeForQueryEntity(
+ ctx,
+ cacheName,
+ schemaName,
+ cacheInfo,
+ qryEntity,
+ mustDeserializeClss,
+ escape
+ );
cands.add(cand);
}
@@ -1448,7 +1455,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
SchemaIndexCacheVisitor visitor;
if (cacheInfo.isCacheContextInited()) {
- GridCacheContext cctx = cacheInfo.gridCacheContext();
+ GridCacheContext cctx = cacheInfo.cacheContext();
SchemaIndexCacheFilter filter = new TableCacheFilter(cctx, op0.tableName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryTypeDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryTypeDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryTypeDescriptor.java
index af42452..13ae9bf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryTypeDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryTypeDescriptor.java
@@ -138,6 +138,11 @@ public interface GridQueryTypeDescriptor {
public String affinityKey();
/**
+ * @return Whether custom affinity key mapper exists.
+ */
+ public boolean customAffinityKeyMapper();
+
+ /**
* @return BinaryObject's type ID if indexed value is BinaryObject, otherwise value class' hash code.
*/
public int typeId();
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
index 87394f6..722205b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
@@ -108,6 +108,9 @@ public class QueryTypeDescriptorImpl implements GridQueryTypeDescriptor {
private String affKey;
/** */
+ private boolean customAffKeyMapper;
+
+ /** */
private String keyFieldName;
/** */
@@ -123,7 +126,7 @@ public class QueryTypeDescriptorImpl implements GridQueryTypeDescriptor {
private List<GridQueryProperty> propsWithDefaultValue;
/** */
- @Nullable private CacheObjectContext coCtx;
+ private final CacheObjectContext coCtx;
/**
* Constructor.
@@ -131,7 +134,7 @@ public class QueryTypeDescriptorImpl implements GridQueryTypeDescriptor {
* @param cacheName Cache name.
* @param coCtx Cache object context.
*/
- public QueryTypeDescriptorImpl(String cacheName, @Nullable CacheObjectContext coCtx) {
+ public QueryTypeDescriptorImpl(String cacheName, CacheObjectContext coCtx) {
this.cacheName = cacheName;
this.coCtx = coCtx;
}
@@ -481,6 +484,18 @@ public class QueryTypeDescriptorImpl implements GridQueryTypeDescriptor {
this.affKey = affKey;
}
+ /** {@inheritDoc} */
+ @Override public boolean customAffinityKeyMapper() {
+ return customAffKeyMapper;
+ }
+
+ /**
+ * @param customAffKeyMapper Whether custom affinity key mapper is set.
+ */
+ public void customAffinityKeyMapper(boolean customAffKeyMapper) {
+ this.customAffKeyMapper = customAffKeyMapper;
+ }
+
/**
* @return Aliases.
*/
@@ -564,14 +579,12 @@ public class QueryTypeDescriptorImpl implements GridQueryTypeDescriptor {
boolean isKey = false;
if (F.eq(prop.name(), keyFieldName) || (keyFieldName == null && F.eq(prop.name(), KEY_FIELD_NAME))) {
- propVal = key instanceof KeyCacheObject && coCtx != null ?
- ((KeyCacheObject)key).value(coCtx, true) : key;
+ propVal = key instanceof KeyCacheObject ? ((CacheObject) key).value(coCtx, true) : key;
isKey = true;
}
else if (F.eq(prop.name(), valFieldName) || (valFieldName == null && F.eq(prop.name(), VAL_FIELD_NAME))) {
- propVal = val instanceof CacheObject && coCtx != null ?
- ((CacheObject)val).value(coCtx, true) : val;
+ propVal = val instanceof CacheObject ? ((CacheObject)val).value(coCtx, true) : val;
}
else {
propVal = prop.value(key, val);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
index 08d44bd..e251bd6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
@@ -404,16 +404,15 @@ public class QueryUtils {
* @return Type candidate.
* @throws IgniteCheckedException If failed.
*/
- public static QueryTypeCandidate typeForQueryEntity(String cacheName, String schemaName,
+ public static QueryTypeCandidate typeForQueryEntity(GridKernalContext ctx, String cacheName, String schemaName,
GridCacheContextInfo cacheInfo,
QueryEntity qryEntity, List<Class<?>> mustDeserializeClss, boolean escape)
throws IgniteCheckedException {
- GridKernalContext ctx = cacheInfo.context();
CacheConfiguration<?, ?> ccfg = cacheInfo.config();
boolean binaryEnabled = ctx.cacheObjects().isBinaryEnabled(ccfg);
- CacheObjectContext coCtx = binaryEnabled ? ctx.cacheObjects().contextForCache(ccfg) : null;
+ CacheObjectContext coCtx = ctx.cacheObjects().contextForCache(ccfg);
QueryTypeDescriptorImpl desc = new QueryTypeDescriptorImpl(cacheName, coCtx);
@@ -493,27 +492,31 @@ public class QueryUtils {
String affField = null;
- // Need to setup affinity key for distributed joins.
- String keyType = qryEntity.getKeyType();
+ if (!coCtx.customAffinityMapper()) {
+ String keyType = qryEntity.getKeyType();
- if (!cacheInfo.customAffinityMapper() && keyType != null) {
- if (coCtx != null) {
+ if (keyType != null) {
CacheDefaultBinaryAffinityKeyMapper mapper =
(CacheDefaultBinaryAffinityKeyMapper)coCtx.defaultAffMapper();
BinaryField field = mapper.affinityKeyField(keyType);
- if (field != null)
- affField = field.name();
- }
- }
+ if (field != null) {
+ String affField0 = field.name();
- if (affField != null) {
- if (!escape)
- affField = normalizeObjectName(affField, false);
+ if (!F.isEmpty(qryEntity.getKeyFields()) && qryEntity.getKeyFields().contains(affField0)) {
+ affField = affField0;
- desc.affinityKey(affField);
+ if (!escape)
+ affField = normalizeObjectName(affField, false);
+ }
+ }
+ }
}
+ else
+ desc.customAffinityKeyMapper(true);
+
+ desc.affinityKey(affField);
}
else {
processClassMeta(qryEntity, desc, coCtx);
@@ -531,6 +534,8 @@ public class QueryUtils {
desc.affinityKey(affField);
}
}
+ else
+ desc.customAffinityKeyMapper(true);
typeId = new QueryTypeIdKey(cacheName, valCls);
altTypeId = new QueryTypeIdKey(cacheName, valTypeId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
index eaca668..17689aa 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
@@ -2601,7 +2601,7 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
BinaryObjectImpl po = marshal(simpleObject(), marsh);
- CacheObjectContext coCtx = new CacheObjectContext(newContext(), null, null, false, true, false);
+ CacheObjectContext coCtx = new CacheObjectContext(newContext(), null, null, false, false, true, false, false);
assert po.value(coCtx, false) == po.value(coCtx, false);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
index a30ae20..167a7cd 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
@@ -345,7 +345,7 @@ public class IgniteClientCacheInitializationFailTest extends GridCommonAbstractT
/** {@inheritDoc} */
@Override public void registerCache(String cacheName, String schemaName,
GridCacheContextInfo<?, ?> cacheInfo) throws IgniteCheckedException {
- if (FAILED_CACHES.contains(cacheInfo.name()) && cacheInfo.gridCacheContext().kernalContext().clientNode())
+ if (FAILED_CACHES.contains(cacheInfo.name()) && cacheInfo.cacheContext().kernalContext().clientNode())
throw new IgniteCheckedException("Test query exception " + cacheInfo.name() + " " + new Random().nextInt());
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalIteratorSwitchSegmentTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalIteratorSwitchSegmentTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalIteratorSwitchSegmentTest.java
index 001f77c..0f6c03f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalIteratorSwitchSegmentTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalIteratorSwitchSegmentTest.java
@@ -40,6 +40,7 @@ import org.apache.ignite.internal.pagemem.wal.record.WALRecord;
import org.apache.ignite.internal.processors.cache.GridCacheIoManager;
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.WalStateManager;
+import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
import org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager;
import org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
@@ -52,7 +53,6 @@ import org.apache.ignite.internal.processors.cache.persistence.wal.reader.Standa
import org.apache.ignite.internal.processors.cache.persistence.wal.serializer.RecordSerializer;
import org.apache.ignite.internal.processors.cache.persistence.wal.serializer.RecordSerializerFactoryImpl;
import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
-import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessorImpl;
import org.apache.ignite.internal.processors.subscription.GridInternalSubscriptionProcessor;
import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -124,7 +124,7 @@ public class IgniteWalIteratorSwitchSegmentTest extends GridCommonAbstractTest {
GridKernalContext kctx = new StandaloneGridKernalContext(
log, null, null) {
@Override public IgniteCacheObjectProcessor cacheObjects() {
- return new IgniteCacheObjectProcessorImpl(this);
+ return new CacheObjectBinaryProcessorImpl(this);
}
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java
index a8d447c..dfd677b 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java
@@ -1233,7 +1233,7 @@ public class DmlStatementsProcessor {
IgniteQueryErrorCode.TABLE_NOT_FOUND);
}
- H2Utils.checkAndStartNotStartedCache(tbl);
+ H2Utils.checkAndStartNotStartedCache(ctx, tbl);
UpdatePlan plan = UpdatePlanBuilder.planForBulkLoad(cmd, tbl);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2RowCacheRegistry.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2RowCacheRegistry.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2RowCacheRegistry.java
index ca135f1..7c06cd0 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2RowCacheRegistry.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2RowCacheRegistry.java
@@ -69,7 +69,7 @@ public class H2RowCacheRegistry {
HashMap<Integer, H2RowCache> caches0 = copy();
if (cacheInfo.affinityNode()) {
- GridCacheContext cacheCtx = cacheInfo.gridCacheContext();
+ GridCacheContext cacheCtx = cacheInfo.cacheContext();
assert cacheCtx != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1edb300/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TableDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TableDescriptor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TableDescriptor.java
index 7ec8b9b..5a0cc44 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TableDescriptor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TableDescriptor.java
@@ -174,7 +174,7 @@ public class H2TableDescriptor implements GridH2SystemIndexFactory {
* @return Cache context.
*/
public GridCacheContext cache() {
- return cacheInfo.gridCacheContext();
+ return cacheInfo.cacheContext();
}
/**
@@ -204,7 +204,7 @@ public class H2TableDescriptor implements GridH2SystemIndexFactory {
*/
H2RowFactory rowFactory(GridH2RowDescriptor rowDesc) {
if (cacheInfo.affinityNode())
- return new H2RowFactory(rowDesc, cacheInfo.gridCacheContext());
+ return new H2RowFactory(rowDesc, cacheInfo.cacheContext());
return null;
}
@@ -437,7 +437,7 @@ public class H2TableDescriptor implements GridH2SystemIndexFactory {
if (cacheInfo.affinityNode()) {
assert pkHashIdx == null : pkHashIdx;
- pkHashIdx = new H2PkHashIndex(cacheInfo.gridCacheContext(), tbl, PK_HASH_IDX_NAME, cols);
+ pkHashIdx = new H2PkHashIndex(cacheInfo.cacheContext(), tbl, PK_HASH_IDX_NAME, cols);
return pkHashIdx;
}
[24/52] [abbrv] ignite git commit: IGNITE-10289: [ML] Import models
from XGBoost
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-test-data.txt
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-test-data.txt b/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-test-data.txt
new file mode 100644
index 0000000..a5be7ab
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/test/resources/datasets/agaricus-test-data.txt
@@ -0,0 +1,1611 @@
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1
+0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 4:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 4:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1
+0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1
+0 3:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1
+0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 4:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1
+0 4:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 3:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1
+0 3:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1
+0 4:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+0 4:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1
+0 4:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1
+0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+0 4:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 4:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1
+1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1
+1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1
+0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1
+1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1
+1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1
+0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1
+1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1
+0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1
+1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1
+1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1
+
<TRUNCATED>
[22/52] [abbrv] ignite git commit: IGNITE-10257 control.sh utility
should request SSL keystore and truststore passwords if necessary - Fixes
#5647.
Posted by sb...@apache.org.
IGNITE-10257 control.sh utility should request SSL keystore and truststore passwords if necessary - Fixes #5647.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ece5869b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ece5869b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ece5869b
Branch: refs/heads/ignite-627
Commit: ece5869bb9e7ff638352f07b63192ec2867afb8a
Parents: afe23b6
Author: Sergey Antonov <an...@gmail.com>
Authored: Tue Dec 18 17:48:48 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Tue Dec 18 17:48:48 2018 +0300
----------------------------------------------------------------------
.../internal/commandline/CommandHandler.java | 208 ++++++++++++-------
1 file changed, 129 insertions(+), 79 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ece5869b/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
index 44f652c..9923fb4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
@@ -155,6 +155,7 @@ import static org.apache.ignite.internal.visor.baseline.VisorBaselineOperation.V
import static org.apache.ignite.internal.visor.verify.VisorViewCacheCmd.CACHES;
import static org.apache.ignite.internal.visor.verify.VisorViewCacheCmd.GROUPS;
import static org.apache.ignite.internal.visor.verify.VisorViewCacheCmd.SEQ;
+import static org.apache.ignite.ssl.SslContextFactory.DFLT_SSL_PROTOCOL;
/**
* Class that execute several commands passed via command line.
@@ -367,14 +368,7 @@ public class CommandHandler {
private static final String UTILITY_NAME = "control.sh";
/** Common options. */
- private static final String COMMON_OPTIONS = String.join(" ", op(CMD_HOST, "HOST_OR_IP"), op(CMD_PORT, "PORT"),
- op(CMD_USER, "USER"), op(CMD_PASSWORD, "PASSWORD"),
- op(CMD_PING_INTERVAL, "PING_INTERVAL"), op(CMD_PING_TIMEOUT, "PING_TIMEOUT"),
- op(CMD_SSL_PROTOCOL, "SSL_PROTOCOL[, SSL_PROTOCOL_2, ...]"),
- op(CMD_SSL_CIPHER_SUITES, "SSL_CIPHER_1[, SSL_CIPHER_2, ...]"),
- op(CMD_SSL_KEY_ALGORITHM, "SSL_KEY_ALGORITHM"),
- op(CMD_KEYSTORE_TYPE, "KEYSTORE_TYPE"), op(CMD_KEYSTORE, "KEYSTORE"), op(CMD_KEYSTORE_PASSWORD, "KEYSTORE_PASSWORD"),
- op(CMD_TRUSTSTORE_TYPE, "TRUSTSTORE_TYPE"), op(CMD_TRUSTSTORE, "TRUSTSTORE"), op(CMD_TRUSTSTORE_PASSWORD, "TRUSTSTORE_PASSWORD"));
+ private static final String COMMON_OPTIONS = String.join(" ", getCommonOptions());
/** Utility name with common options. */
private static final String UTILITY_NAME_WITH_COMMON_OPTIONS = String.join(" ", UTILITY_NAME, COMMON_OPTIONS);
@@ -401,6 +395,34 @@ public class CommandHandler {
private final boolean enableExperimental = IgniteSystemProperties.getBoolean(IGNITE_ENABLE_EXPERIMENTAL_COMMAND, false);
/**
+ * Creates list of common utility options.
+ *
+ * @return List of common utility options.
+ */
+ private static List<String> getCommonOptions() {
+ List<String> list = new ArrayList<>(32);
+
+ list.add(op(CMD_HOST, "HOST_OR_IP"));
+ list.add(op(CMD_PORT, "PORT"));
+ list.add(op(CMD_USER, "USER"));
+ list.add(op(CMD_PASSWORD, "PASSWORD"));
+ list.add(op(CMD_PING_INTERVAL, "PING_INTERVAL"));
+ list.add(op(CMD_PING_TIMEOUT, "PING_TIMEOUT"));
+
+ list.add(op(CMD_SSL_PROTOCOL, "SSL_PROTOCOL[, SSL_PROTOCOL_2, ...]"));
+ list.add(op(CMD_SSL_CIPHER_SUITES, "SSL_CIPHER_1[, SSL_CIPHER_2, ...]"));
+ list.add(op(CMD_SSL_KEY_ALGORITHM, "SSL_KEY_ALGORITHM"));
+ list.add(op(CMD_KEYSTORE_TYPE, "KEYSTORE_TYPE"));
+ list.add(op(CMD_KEYSTORE, "KEYSTORE"));
+ list.add(op(CMD_KEYSTORE_PASSWORD, "KEYSTORE_PASSWORD"));
+ list.add(op(CMD_TRUSTSTORE_TYPE, "TRUSTSTORE_TYPE"));
+ list.add(op(CMD_TRUSTSTORE, "TRUSTSTORE"));
+ list.add(op(CMD_TRUSTSTORE_PASSWORD, "TRUSTSTORE_PASSWORD"));
+
+ return list;
+ }
+
+ /**
* Output specified string to console.
*
* @param s String to output.
@@ -649,7 +671,9 @@ public class CommandHandler {
* @return List of hosts.
*/
private Stream<IgniteBiTuple<GridClientNode, String>> listHosts(GridClient client) throws GridClientException {
- return client.compute().nodes(GridClientNode::connectable).stream()
+ return client.compute()
+ .nodes(GridClientNode::connectable)
+ .stream()
.flatMap(node -> Stream.concat(
node.tcpAddresses() == null ? Stream.empty() : node.tcpAddresses().stream(),
node.tcpHostNames() == null ? Stream.empty() : node.tcpHostNames().stream()
@@ -661,14 +685,17 @@ public class CommandHandler {
* @param client Client.
* @return List of hosts.
*/
- private Stream<IgniteBiTuple<GridClientNode, List<String>>> listHostsByClientNode(GridClient client) throws GridClientException {
+ private Stream<IgniteBiTuple<GridClientNode, List<String>>> listHostsByClientNode(
+ GridClient client
+ ) throws GridClientException {
return client.compute().nodes(GridClientNode::connectable).stream()
.map(node -> new IgniteBiTuple<>(node,
Stream.concat(
node.tcpAddresses() == null ? Stream.empty() : node.tcpAddresses().stream(),
node.tcpHostNames() == null ? Stream.empty() : node.tcpHostNames().stream()
)
- .map(addr -> addr + ":" + node.tcpPort()).collect(Collectors.toList())));
+ .map(addr -> addr + ":" + node.tcpPort()).collect(Collectors.toList()))
+ );
}
/**
@@ -1835,7 +1862,7 @@ public class CommandHandler {
VisorTxTaskArg txArgs = null;
- String sslProtocol = SslContextFactory.DFLT_SSL_PROTOCOL;
+ String sslProtocol = DFLT_SSL_PROTOCOL;
String sslCipherSuites = "";
@@ -2416,6 +2443,41 @@ public class CommandHandler {
}
/**
+ * Requests password from console with message.
+ *
+ * @param msg Message.
+ * @return Password.
+ */
+ private char[] requestPasswordFromConsole(String msg) {
+ Console console = System.console();
+
+ if (console == null)
+ throw new UnsupportedOperationException("Failed to securely read password (console is unavailable): " + msg);
+ else
+ return console.readPassword(msg);
+ }
+
+ /**
+ * Requests user data from console with message.
+ *
+ * @param msg Message.
+ * @return Input user data.
+ */
+ private String requestDataFromConsole(String msg) {
+ Console console = System.console();
+
+ if (console != null)
+ return console.readLine(msg);
+ else {
+ Scanner scanner = new Scanner(System.in);
+
+ log(msg);
+
+ return scanner.nextLine();
+ }
+ }
+
+ /**
* Check if raw arg is command or option.
*
* @return {@code true} If raw arg is command, overwise {@code false}.
@@ -2542,6 +2604,52 @@ public class CommandHandler {
.collect(Collectors.toList());
}
+ /** */
+ private void printHelp() {
+ log("This utility can do the following commands:");
+
+ usage(i("Activate cluster:"), ACTIVATE);
+ usage(i("Deactivate cluster:"), DEACTIVATE, op(CMD_AUTO_CONFIRMATION));
+ usage(i("Print current cluster state:"), STATE);
+ usage(i("Print cluster baseline topology:"), BASELINE);
+ usage(i("Add nodes into baseline topology:"), BASELINE, BASELINE_ADD, "consistentId1[,consistentId2,....,consistentIdN]", op(CMD_AUTO_CONFIRMATION));
+ usage(i("Remove nodes from baseline topology:"), BASELINE, BASELINE_REMOVE, "consistentId1[,consistentId2,....,consistentIdN]", op(CMD_AUTO_CONFIRMATION));
+ usage(i("Set baseline topology:"), BASELINE, BASELINE_SET, "consistentId1[,consistentId2,....,consistentIdN]", op(CMD_AUTO_CONFIRMATION));
+ usage(i("Set baseline topology based on version:"), BASELINE, BASELINE_SET_VERSION + " topologyVersion", op(CMD_AUTO_CONFIRMATION));
+ usage(i("List or kill transactions:"), TX, op(TX_XID, "XID"), op(TX_DURATION, "SECONDS"), op(TX_SIZE, "SIZE"), op(TX_LABEL, "PATTERN_REGEX"), op(or(TX_SERVERS, TX_CLIENTS)), op(TX_NODES, "consistentId1[,consistentId2,....,consistentIdN]"), op(TX_LIMIT, "NUMBER"), op(TX_ORDER, or("DURATION", "SIZE", CMD_TX_ORDER_START_TIME)), op(TX_KILL), op(CMD_AUTO_CONFIRMATION));
+
+ if (enableExperimental) {
+ usage(i("Print absolute paths of unused archived wal segments on each node:"), WAL, WAL_PRINT, "[consistentId1,consistentId2,....,consistentIdN]");
+ usage(i("Delete unused archived wal segments on each node:"), WAL, WAL_DELETE, "[consistentId1,consistentId2,....,consistentIdN] ", op(CMD_AUTO_CONFIRMATION));
+ }
+
+ log(i("View caches information in a cluster. For more details type:"));
+ log(i(String.join(" ", UTILITY_NAME, CACHE.text(), HELP.text()), 2));
+ nl();
+
+ log("By default commands affecting the cluster require interactive confirmation.");
+ log("Use " + CMD_AUTO_CONFIRMATION + " option to disable it.");
+ nl();
+
+ log("Default values:");
+ log(i("HOST_OR_IP=" + DFLT_HOST, 2));
+ log(i("PORT=" + DFLT_PORT, 2));
+ log(i("PING_INTERVAL=" + DFLT_PING_INTERVAL, 2));
+ log(i("PING_TIMEOUT=" + DFLT_PING_TIMEOUT, 2));
+ log(i("SSL_PROTOCOL=" + DFLT_SSL_PROTOCOL, 2));
+ log(i("SSL_KEY_ALGORITHM=" + SslContextFactory.DFLT_KEY_ALGORITHM, 2));
+ log(i("KEY_STORE_TYPE=" + SslContextFactory.DFLT_STORE_TYPE, 2));
+ log(i("TRUST_STORE_TYPE=" + SslContextFactory.DFLT_STORE_TYPE, 2));
+ nl();
+
+ log("Exit codes:");
+ log(i(EXIT_CODE_OK + " - successful execution.", 2));
+ log(i(EXIT_CODE_INVALID_ARGUMENTS + " - invalid arguments.", 2));
+ log(i(EXIT_CODE_CONNECTION_FAILED + " - connection failed.", 2));
+ log(i(ERR_AUTHENTICATION_FAILED + " - authentication failed.", 2));
+ log(i(EXIT_CODE_UNEXPECTED_ERROR + " - unexpected error.", 2));
+ }
+
/**
* Parse and execute command.
*
@@ -2556,48 +2664,7 @@ public class CommandHandler {
try {
if (F.isEmpty(rawArgs) || (rawArgs.size() == 1 && CMD_HELP.equalsIgnoreCase(rawArgs.get(0)))) {
- log("This utility can do the following commands:");
-
- usage(i("Activate cluster:"), ACTIVATE);
- usage(i("Deactivate cluster:"), DEACTIVATE, op(CMD_AUTO_CONFIRMATION));
- usage(i("Print current cluster state:"), STATE);
- usage(i("Print cluster baseline topology:"), BASELINE);
- usage(i("Add nodes into baseline topology:"), BASELINE, BASELINE_ADD, "consistentId1[,consistentId2,....,consistentIdN]", op(CMD_AUTO_CONFIRMATION));
- usage(i("Remove nodes from baseline topology:"), BASELINE, BASELINE_REMOVE, "consistentId1[,consistentId2,....,consistentIdN]", op(CMD_AUTO_CONFIRMATION));
- usage(i("Set baseline topology:"), BASELINE, BASELINE_SET, "consistentId1[,consistentId2,....,consistentIdN]", op(CMD_AUTO_CONFIRMATION));
- usage(i("Set baseline topology based on version:"), BASELINE, BASELINE_SET_VERSION + " topologyVersion", op(CMD_AUTO_CONFIRMATION));
- usage(i("List or kill transactions:"), TX, op(TX_XID, "XID"), op(TX_DURATION, "SECONDS"), op(TX_SIZE, "SIZE"), op(TX_LABEL, "PATTERN_REGEX"), op(or(TX_SERVERS, TX_CLIENTS)), op(TX_NODES, "consistentId1[,consistentId2,....,consistentIdN]"), op(TX_LIMIT, "NUMBER"), op(TX_ORDER, or("DURATION", "SIZE", CMD_TX_ORDER_START_TIME)), op(TX_KILL), op(CMD_AUTO_CONFIRMATION));
-
- if (enableExperimental) {
- usage(i("Print absolute paths of unused archived wal segments on each node:"), WAL, WAL_PRINT, "[consistentId1,consistentId2,....,consistentIdN]");
- usage(i("Delete unused archived wal segments on each node:"), WAL, WAL_DELETE, "[consistentId1,consistentId2,....,consistentIdN] ", op(CMD_AUTO_CONFIRMATION));
- }
-
- log(i("View caches information in a cluster. For more details type:"));
- log(i(String.join(" ", UTILITY_NAME, CACHE.text(), HELP.text()), 2));
- nl();
-
- log("By default commands affecting the cluster require interactive confirmation.");
- log("Use " + CMD_AUTO_CONFIRMATION + " option to disable it.");
- nl();
-
- log("Default values:");
- log(i("HOST_OR_IP=" + DFLT_HOST, 2));
- log(i("PORT=" + DFLT_PORT, 2));
- log(i("PING_INTERVAL=" + DFLT_PING_INTERVAL, 2));
- log(i("PING_TIMEOUT=" + DFLT_PING_TIMEOUT, 2));
- log(i("SSL_PROTOCOL=" + SslContextFactory.DFLT_SSL_PROTOCOL, 2));
- log(i("SSL_KEY_ALGORITHM=" + SslContextFactory.DFLT_KEY_ALGORITHM, 2));
- log(i("KEY_STORE_TYPE=" + SslContextFactory.DFLT_STORE_TYPE, 2));
- log(i("TRUST_STORE_TYPE=" + SslContextFactory.DFLT_STORE_TYPE, 2));
- nl();
-
- log("Exit codes:");
- log(i(EXIT_CODE_OK + " - successful execution.", 2));
- log(i(EXIT_CODE_INVALID_ARGUMENTS + " - invalid arguments.", 2));
- log(i(EXIT_CODE_CONNECTION_FAILED + " - connection failed.", 2));
- log(i(ERR_AUTHENTICATION_FAILED + " - authentication failed.", 2));
- log(i(EXIT_CODE_UNEXPECTED_ERROR + " - unexpected error.", 2));
+ printHelp();
return EXIT_CODE_OK;
}
@@ -2650,7 +2717,7 @@ public class CommandHandler {
List<String> sslProtocols = split(args.sslProtocol(), ",");
- String sslProtocol = F.isEmpty(sslProtocols) ? SslContextFactory.DFLT_SSL_PROTOCOL : sslProtocols.get(0);
+ String sslProtocol = F.isEmpty(sslProtocols) ? DFLT_SSL_PROTOCOL : sslProtocols.get(0);
factory.setProtocol(sslProtocol);
factory.setKeyAlgorithm(args.sslKeyAlgorithm());
@@ -2660,13 +2727,12 @@ public class CommandHandler {
factory.setCipherSuites(split(args.getSslCipherSuites(), ","));
- if (args.sslKeyStorePath() == null)
- throw new IllegalArgumentException("SSL key store location is not specified.");
-
factory.setKeyStoreFilePath(args.sslKeyStorePath());
if (args.sslKeyStorePassword() != null)
factory.setKeyStorePassword(args.sslKeyStorePassword());
+ else
+ factory.setKeyStorePassword(requestPasswordFromConsole("SSL keystore password: "));
factory.setKeyStoreType(args.sslKeyStoreType());
@@ -2677,6 +2743,8 @@ public class CommandHandler {
if (args.sslTrustStorePassword() != null)
factory.setTrustStorePassword(args.sslTrustStorePassword());
+ else
+ factory.setTrustStorePassword(requestPasswordFromConsole("SSL truststore password: "));
factory.setTrustStoreType(args.sslTrustStoreType());
}
@@ -2726,27 +2794,10 @@ public class CommandHandler {
if (tryConnectMaxCount > 0 && isAuthError(e)) {
log("Authentication error, try connection again.");
- final Console console = System.console();
-
- if (console != null) {
- if (F.isEmpty(args.getUserName()))
- args.setUserName(console.readLine("user: "));
+ if (F.isEmpty(args.getUserName()))
+ args.setUserName(requestDataFromConsole("user: "));
- args.setPassword(new String(console.readPassword("password: ")));
- }
- else {
- Scanner scanner = new Scanner(System.in);
-
- if (F.isEmpty(args.getUserName())) {
- log("user: ");
-
- args.setUserName(scanner.next());
- }
-
- log("password: ");
-
- args.setPassword(scanner.next());
- }
+ args.setPassword(new String(requestPasswordFromConsole("password: ")));
tryConnectAgain = true;
@@ -2791,7 +2842,6 @@ public class CommandHandler {
*
* @return Last operation result;
*/
- @SuppressWarnings("unchecked")
public <T> T getLastOperationResult() {
return (T)lastOperationRes;
}
[26/52] [abbrv] ignite git commit: IGNITE-10289: [ML] Import models
from XGBoost
Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/resources/datasets/agaricus-test-expected-results.txt
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/datasets/agaricus-test-expected-results.txt b/examples/src/main/resources/datasets/agaricus-test-expected-results.txt
new file mode 100644
index 0000000..b6947fd
--- /dev/null
+++ b/examples/src/main/resources/datasets/agaricus-test-expected-results.txt
@@ -0,0 +1,1611 @@
+0.00025412877
+0.99888784
+0.00025412877
+0.00020371929
+0.0016852723
+0.004336959
+0.99888605
+0.00025412877
+0.99888784
+0.0007407177
+0.99888784
+0.00048179296
+6.019019e-06
+0.00025412877
+7.060129e-06
+0.0003617697
+0.00047204422
+0.99879885
+0.0012118616
+0.00040873847
+0.00047204422
+0.0003617697
+0.00025412877
+0.0004505964
+0.00031991434
+0.9996768
+0.004901804
+0.00052038184
+0.0004505964
+6.019019e-06
+0.00020371929
+0.00052038184
+0.00065504765
+0.0011316377
+0.0002305175
+0.00047204422
+0.004901804
+0.9993381
+0.0002305175
+0.00047204422
+0.0011316377
+0.00020371929
+0.00019959644
+0.0002305175
+0.0002305175
+0.0021919373
+0.0008000284
+0.0051317057
+0.0012118616
+0.00052038184
+0.0003617697
+0.00019959644
+0.99951875
+0.00040873847
+0.00022004127
+0.00039074913
+0.00020371929
+0.00019959644
+0.00040873847
+0.00052038184
+0.0014905198
+7.905719e-06
+0.9994962
+7.905719e-06
+0.99888784
+0.0004505964
+0.9994567
+0.00052038184
+0.00019959644
+0.0004370383
+0.00065504765
+0.0023671745
+0.00019959644
+7.060129e-06
+0.0011316377
+0.00025412877
+0.00065504765
+5.322418e-06
+0.00037842535
+6.243038e-06
+0.0008000284
+0.0013067605
+0.00040873847
+0.0017210845
+0.00025412877
+0.00022004127
+0.9993862
+0.99888784
+0.00019959644
+0.0003455418
+0.0007407177
+0.0002305175
+0.00022004127
+0.0007075034
+0.00019959644
+0.0002305175
+0.0004370383
+0.0004505964
+0.0016852723
+0.0011316377
+0.0002352789
+0.0057994546
+0.0008000284
+0.0031079606
+0.00065504765
+0.00039074913
+0.00018479073
+0.00040873847
+0.0004370383
+0.0023447894
+0.0010494431
+0.0003617697
+0.00052038184
+0.00022004127
+7.060129e-06
+0.9989686
+0.00025412877
+0.0027754887
+0.0012795585
+0.0025701027
+0.00037842535
+0.00040873847
+0.00031991434
+0.0004505964
+0.0015961447
+0.0015961447
+0.00037842535
+5.322418e-06
+0.00025412877
+0.0007407177
+0.00040873847
+0.0002305175
+0.00039074913
+0.0011866327
+0.0016852723
+0.0011866327
+0.00047204422
+0.00022004127
+0.0015629282
+0.99941325
+0.00052038184
+0.00052038184
+7.6220385e-06
+0.00018479073
+0.0007075034
+0.00040873847
+5.322418e-06
+0.00018479073
+0.9993862
+0.00039074913
+0.0057447995
+0.0007075034
+0.0043782797
+0.00047204422
+0.0002305175
+0.004336959
+0.0003455418
+0.0017210845
+0.00048179296
+0.00037842535
+0.99965084
+0.9989686
+0.00019959644
+0.00031991434
+0.00020371929
+0.0043782797
+0.9994567
+0.00040873847
+0.00041718033
+0.002676164
+0.0028780429
+0.0003455418
+0.005320857
+0.99879885
+0.0008000284
+0.0057994546
+0.9996768
+0.0004505964
+0.0011866327
+0.00019959644
+0.00020587152
+0.0004505964
+0.005083311
+3.2162723e-05
+0.0003455418
+0.00040873847
+6.7399155e-06
+0.00047204422
+0.999337
+5.322418e-06
+8.940421e-06
+0.99893767
+0.99888605
+7.6220385e-06
+0.99965084
+0.0031376088
+7.060129e-06
+7.905719e-06
+6.243038e-06
+0.00022004127
+4.237742e-05
+0.99965084
+6.7399155e-06
+5.322418e-06
+7.060129e-06
+8.940421e-06
+0.00052038184
+0.0053715007
+0.00019060042
+0.00031991434
+0.00041718033
+6.7399155e-06
+4.237742e-05
+0.0007075034
+0.00047204422
+6.019019e-06
+0.00041718033
+0.0017210845
+7.905719e-06
+0.9989686
+6.019019e-06
+0.9994567
+7.060129e-06
+7.6220385e-06
+8.940421e-06
+7.060129e-06
+5.322418e-06
+0.9994147
+0.0004505964
+8.940421e-06
+7.905719e-06
+8.940421e-06
+0.00015625419
+0.0014905198
+5.322418e-06
+0.0007075034
+7.6220385e-06
+5.322418e-06
+0.9997003
+0.00020371929
+7.060129e-06
+5.322418e-06
+8.940421e-06
+8.940421e-06
+6.243038e-06
+4.325291e-05
+0.99901485
+8.940421e-06
+0.9994137
+7.6220385e-06
+3.5457782e-05
+0.00015625419
+3.5457782e-05
+6.7399155e-06
+5.322418e-06
+8.940421e-06
+4.237742e-05
+7.060129e-06
+0.00020587152
+0.9997141
+0.00015625419
+4.237742e-05
+0.00047204422
+0.9993862
+8.940421e-06
+0.9997141
+3.2162723e-05
+6.243038e-06
+8.940421e-06
+7.6220385e-06
+6.019019e-06
+7.6220385e-06
+6.243038e-06
+0.9997141
+7.060129e-06
+5.322418e-06
+3.923348e-05
+7.905719e-06
+5.322418e-06
+7.905719e-06
+0.9990878
+0.00039074913
+5.322418e-06
+6.243038e-06
+0.00052038184
+7.6220385e-06
+8.940421e-06
+7.905719e-06
+7.060129e-06
+6.243038e-06
+8.940421e-06
+6.019019e-06
+0.99955446
+7.6220385e-06
+6.243038e-06
+0.9994567
+6.243038e-06
+5.322418e-06
+0.9994572
+7.060129e-06
+7.060129e-06
+5.322418e-06
+0.99955446
+6.243038e-06
+7.905719e-06
+7.060129e-06
+7.060129e-06
+0.99955446
+0.00020587152
+6.7399155e-06
+7.6220385e-06
+7.905719e-06
+8.940421e-06
+7.060129e-06
+3.2162723e-05
+0.9994572
+0.99973494
+6.019019e-06
+0.00015625419
+7.6220385e-06
+5.322418e-06
+6.7399155e-06
+6.019019e-06
+5.322418e-06
+0.00022004127
+7.6220385e-06
+3.923348e-05
+6.019019e-06
+7.905719e-06
+0.00014466306
+8.940421e-06
+5.322418e-06
+0.0007075034
+8.940421e-06
+6.019019e-06
+7.6220385e-06
+5.322418e-06
+7.905719e-06
+4.237742e-05
+6.243038e-06
+4.237742e-05
+0.0010494431
+8.940421e-06
+0.0002305175
+7.905719e-06
+0.9994147
+8.940421e-06
+0.9995196
+0.00025665603
+3.2162723e-05
+6.243038e-06
+0.00022004127
+7.6220385e-06
+0.00020587152
+0.00017226019
+3.282719e-05
+0.00014466306
+6.019019e-06
+0.9990878
+0.0001594819
+6.7399155e-06
+0.00014466306
+0.9993678
+3.6372072e-05
+7.060129e-06
+7.060129e-06
+3.2162723e-05
+3.2162723e-05
+0.00023281
+6.7399155e-06
+7.6220385e-06
+4.792357e-05
+6.7399155e-06
+5.322418e-06
+0.00022695896
+0.00022695896
+0.99948114
+8.940421e-06
+7.060129e-06
+0.0001594819
+7.905719e-06
+0.9994147
+4.237742e-05
+3.2162723e-05
+7.6220385e-06
+0.00017670133
+7.060129e-06
+6.019019e-06
+6.019019e-06
+6.7399155e-06
+0.99973494
+6.243038e-06
+0.00017226019
+0.00020587152
+6.019019e-06
+4.671893e-05
+3.2162723e-05
+6.243038e-06
+0.00020587152
+4.792357e-05
+6.7399155e-06
+6.7399155e-06
+5.322418e-06
+0.00015625419
+0.00020587152
+2.9776578e-05
+4.237742e-05
+0.9993381
+3.7123496e-05
+0.0001594819
+0.00019060042
+0.00020587152
+0.00023761873
+0.99973494
+0.00017226019
+3.5457782e-05
+0.00020587152
+0.00017670133
+3.2162723e-05
+3.2162723e-05
+3.6372072e-05
+4.237742e-05
+0.00017226019
+0.00015625419
+0.00022695896
+0.00023281
+0.00021012398
+4.792357e-05
+4.237742e-05
+0.00019060042
+4.891363e-05
+3.5457782e-05
+0.00023281
+4.671893e-05
+0.00017670133
+0.00014466306
+0.00017226019
+0.00020587152
+0.00020587152
+0.00017226019
+6.7399155e-06
+3.2162723e-05
+3.5457782e-05
+3.923348e-05
+4.325291e-05
+4.237742e-05
+0.99824166
+0.00017226019
+3.2162723e-05
+0.00017226019
+2.9776578e-05
+0.00022695896
+4.671893e-05
+0.00017226019
+0.00022695896
+4.325291e-05
+0.00019480144
+3.5457782e-05
+3.5457782e-05
+4.325291e-05
+0.99901485
+3.5457782e-05
+0.00020587152
+3.923348e-05
+5.322418e-06
+4.792357e-05
+0.9993381
+0.00017670133
+0.00020587152
+0.00023761873
+3.282719e-05
+0.00020587152
+0.00016359365
+4.671893e-05
+3.2162723e-05
+0.00020587152
+3.6372072e-05
+5.322418e-06
+0.00019060042
+0.00020587152
+4.671893e-05
+0.99955446
+6.7399155e-06
+0.00020587152
+0.9990164
+0.00015625419
+6.7399155e-06
+0.00019060042
+0.00019060042
+0.0001594819
+0.9987974
+0.00020587152
+4.671893e-05
+4.671893e-05
+0.99995637
+0.00020587152
+0.00015625419
+0.00017226019
+2.9776578e-05
+3.923348e-05
+0.00017226019
+0.0001594819
+0.00017226019
+0.00023281
+3.923348e-05
+3.282719e-05
+0.00022695896
+4.671893e-05
+0.00017226019
+0.00017670133
+4.792357e-05
+0.00015625419
+0.00018035136
+4.325291e-05
+3.5457782e-05
+3.2162723e-05
+0.00017226019
+0.00016359365
+0.00018035136
+0.00015625419
+0.00022695896
+0.00017226019
+3.2162723e-05
+4.792357e-05
+0.00019060042
+3.5457782e-05
+0.00022695896
+2.9776578e-05
+0.00015625419
+0.00020587152
+3.6372072e-05
+0.00020587152
+4.792357e-05
+3.5457782e-05
+4.4368186e-05
+6.019019e-06
+4.325291e-05
+4.792357e-05
+0.0001594819
+0.00020587152
+0.00015625419
+3.3673645e-05
+4.671893e-05
+0.00022695896
+3.2162723e-05
+0.00017226019
+7.905719e-06
+3.5457782e-05
+0.9998155
+3.5457782e-05
+0.00017226019
+0.00015625419
+4.792357e-05
+8.940421e-06
+4.4368186e-05
+0.00017670133
+0.00015625419
+0.00020587152
+3.5457782e-05
+0.00021012398
+4.792357e-05
+3.2162723e-05
+4.671893e-05
+4.237742e-05
+4.671893e-05
+0.9979381
+0.00023281
+0.00025665603
+4.237742e-05
+4.671893e-05
+0.00021012398
+3.2162723e-05
+4.671893e-05
+3.5457782e-05
+4.671893e-05
+3.5457782e-05
+3.2162723e-05
+4.671893e-05
+0.00022695896
+3.5457782e-05
+3.6372072e-05
+0.00020587152
+0.00021012398
+0.9999701
+4.009836e-05
+0.00017670133
+5.2833246e-05
+0.00016359365
+0.00021554108
+0.00021554108
+3.7123496e-05
+0.9979381
+4.792357e-05
+4.009836e-05
+0.9996495
+0.00019480144
+0.9999324
+0.9999671
+5.2833246e-05
+0.9999671
+0.9999671
+0.9999013
+0.00017670133
+0.99897456
+0.00023281
+4.891363e-05
+5.2833246e-05
+0.9998155
+0.9996221
+0.00022695896
+0.00016359365
+5.2833246e-05
+5.2833246e-05
+0.9996495
+0.00017670133
+4.792357e-05
+4.009836e-05
+3.6372072e-05
+0.9999671
+0.00017226019
+0.00025665603
+0.9998288
+4.009836e-05
+0.9999255
+3.7123496e-05
+0.00023761873
+4.891363e-05
+0.00015625419
+0.9999255
+0.00019060042
+0.9979381
+0.00019480144
+0.9999671
+3.3673645e-05
+0.9999671
+4.671893e-05
+0.00019480144
+0.99995637
+5.2833246e-05
+0.00023761873
+4.237742e-05
+5.2833246e-05
+3.7123496e-05
+0.00023281
+0.9998155
+0.00018035136
+0.9987974
+0.00023761873
+0.00020587152
+0.9998155
+3.6372072e-05
+0.9998288
+5.2833246e-05
+4.325291e-05
+4.009836e-05
+5.2833246e-05
+0.99824166
+4.009836e-05
+4.891363e-05
+0.99994016
+0.9979381
+0.9979381
+0.00015625419
+5.2833246e-05
+0.9999255
+0.9979381
+4.792357e-05
+0.99897456
+0.00020587152
+5.2833246e-05
+0.9999671
+0.00022695896
+0.00025665603
+0.9987974
+5.2833246e-05
+4.792357e-05
+4.009836e-05
+4.891363e-05
+0.9996221
+0.00025665603
+5.2833246e-05
+0.00025665603
+0.99897456
+5.2833246e-05
+0.99897456
+0.00023281
+0.9996495
+0.00025665603
+0.00023281
+0.9999671
+0.00019480144
+0.9999255
+0.00017670133
+0.00023281
+0.00018035136
+4.237742e-05
+0.00025665603
+4.891363e-05
+0.00018035136
+5.2833246e-05
+0.9999671
+5.2833246e-05
+0.9999671
+0.00019480144
+4.009836e-05
+0.9999255
+0.00025665603
+0.9987974
+0.00025665603
+0.00018035136
+0.00017670133
+3.7123496e-05
+0.9996495
+4.009836e-05
+0.00021554108
+0.00019060042
+0.99995637
+0.9999709
+0.00019480144
+3.7123496e-05
+4.009836e-05
+3.5457782e-05
+0.9999709
+0.00019480144
+0.00019480144
+0.9999671
+0.9996221
+0.00023281
+0.00017670133
+0.00023281
+3.7123496e-05
+4.237742e-05
+4.009836e-05
+0.00018035136
+0.99995637
+0.00019480144
+0.00017226019
+4.009836e-05
+3.7123496e-05
+3.7123496e-05
+5.2833246e-05
+0.00025665603
+4.792357e-05
+0.9996221
+0.9999255
+0.99897456
+0.00021554108
+3.5457782e-05
+5.2833246e-05
+4.009836e-05
+0.00023281
+3.6372072e-05
+5.2833246e-05
+4.891363e-05
+3.2162723e-05
+3.5457782e-05
+0.99995637
+0.99995637
+0.9996221
+0.99897456
+5.2833246e-05
+0.9998288
+4.009836e-05
+0.99995637
+0.00021554108
+0.99994016
+0.9999105
+5.2833246e-05
+3.923348e-05
+0.99996495
+0.00023281
+0.9999701
+0.9999671
+0.00019480144
+0.9999341
+0.9999341
+0.9987974
+0.9999709
+0.9999255
+0.00016359365
+0.9998617
+0.9999701
+0.9999341
+0.9999701
+0.9999709
+0.9999701
+0.9999324
+0.9979381
+0.9999709
+0.9999324
+0.9999671
+0.9999013
+4.009836e-05
+0.9998288
+0.9979381
+0.9999709
+0.00025665603
+0.99824166
+3.6372072e-05
+5.2833246e-05
+0.9999341
+0.9999701
+0.9999709
+0.9999709
+0.00015625419
+0.99995637
+0.9999614
+3.6372072e-05
+0.00019480144
+0.9999255
+0.9999709
+0.9999709
+0.9999701
+0.99994016
+0.99997354
+0.00023761873
+0.99995637
+0.99996495
+0.9999324
+0.00017670133
+0.00019480144
+0.00017670133
+0.009167032
+0.9999341
+5.2833246e-05
+0.9999126
+4.009836e-05
+0.9999604
+0.9999341
+0.9999341
+0.9999126
+0.9999709
+0.9999341
+0.9999126
+0.00019480144
+0.9999671
+0.9999671
+0.9999324
+0.9999126
+0.9999709
+0.9999604
+0.9999341
+0.99996495
+0.99994016
+0.9999255
+0.9999604
+0.9999341
+0.9999255
+0.9999341
+0.99997354
+0.9999701
+0.9999324
+0.9999207
+0.99997354
+0.99994016
+0.9999126
+0.9999324
+0.9999709
+0.9999207
+0.99994016
+0.00037019775
+0.9999207
+0.99996495
+0.99997354
+0.9999671
+0.9999207
+0.99996495
+0.0013293574
+0.99994016
+0.9999324
+0.99996495
+0.9999604
+0.9999105
+0.9999701
+0.9999324
+0.9999701
+0.9999341
+0.9999324
+0.99997354
+0.9999126
+0.99997354
+0.9999207
+0.9999207
+0.9999341
+0.99995637
+0.9999709
+0.9999701
+0.99997354
+0.99997354
+0.99997354
+0.9999604
+0.9999709
+0.9999255
+0.9999341
+0.9999126
+0.9999105
+0.9999701
+0.0008625914
+0.99997354
+0.99997354
+0.99995637
+0.9999341
+0.9999255
+0.9999341
+0.9999324
+0.99994016
+0.9999013
+0.9999207
+0.9999709
+0.9999701
+0.9999324
+0.9992411
+0.99997354
+0.9999013
+0.9999324
+0.9999324
+0.9999701
+0.9999341
+0.9999324
+0.9999105
+0.9999701
+0.9999709
+0.9999207
+0.9999709
+0.9999126
+0.99994016
+0.99982506
+0.9999341
+0.00046149982
+0.9999639
+0.99996495
+0.99996495
+0.9996221
+0.9999255
+0.99997354
+0.99996495
+0.9999255
+0.9999105
+0.00078249123
+0.9999604
+0.99994016
+0.9999709
+0.00025665603
+0.99994016
+0.99489474
+0.9998155
+0.9999255
+0.9999324
+0.9999614
+0.9999701
+0.9999671
+0.9999324
+0.9999671
+0.00039583017
+0.9999614
+0.9999709
+0.9999614
+0.9999709
+0.9999701
+0.9999701
+0.9999341
+0.9999207
+0.9999341
+0.9999709
+0.00039583017
+0.9999207
+0.9999701
+0.99995637
+0.99982506
+0.9996221
+0.9999207
+0.9999671
+0.9999341
+0.9999126
+0.9999255
+0.9999324
+0.9999255
+0.99985075
+0.9999614
+0.0009514644
+0.99994016
+0.9999671
+0.9992411
+0.009360342
+0.9999105
+0.9999207
+0.99994016
+0.0004272755
+0.9998312
+0.99980205
+0.99982506
+0.99980205
+0.0007991346
+0.9999255
+0.0004272755
+0.9999324
+0.0006919931
+0.00078249123
+0.9999207
+0.9990392
+0.0012328194
+0.0007991346
+0.9990392
+0.9999614
+0.99997354
+0.9999299
+0.98975986
+0.00088093686
+0.00088093686
+0.99998844
+0.00043636683
+0.0006919931
+0.99996495
+0.009360342
+0.9971035
+0.99997354
+0.9999701
+0.99980205
+0.99489474
+0.99927515
+0.9943492
+0.9991503
+0.99927515
+0.9998617
+0.9999341
+0.9990822
+0.9991503
+0.00084514386
+0.0007474052
+0.9991503
+0.004096335
+0.9999671
+0.99527174
+0.9999639
+0.9990392
+0.9997862
+0.99996495
+0.99051267
+0.013955284
+0.008114705
+0.9890587
+0.00076283637
+0.00093165156
+0.008114705
+0.00039583017
+0.99994016
+0.99527174
+0.00078249123
+0.99918026
+0.9999832
+0.99998736
+0.00040811044
+0.99927515
+0.99932885
+0.99997354
+0.9999639
+0.00047131904
+0.9999701
+0.9998312
+0.00086311874
+0.9991503
+0.99051243
+0.98975986
+0.9990392
+0.9992411
+0.99980205
+0.9998617
+0.001503084
+0.0047280774
+0.999936
+0.99997354
+0.0008239167
+0.98955053
+0.99980205
+0.00040811044
+0.9999832
+0.9990392
+0.0006919931
+0.99998736
+0.9999832
+0.99998736
+0.008151155
+0.98955053
+0.9999341
+0.9999013
+0.99998736
+0.9999639
+0.99997354
+0.99980205
+0.9998617
+0.0009514644
+0.9998617
+0.99997354
+0.99998736
+0.99918026
+0.00040811044
+0.99982506
+0.9998437
+0.9943492
+0.9991503
+0.00046149982
+0.9990392
+0.009360342
+0.016082935
+0.99998736
+0.9999299
+0.9998312
+0.00093165156
+0.0003778439
+0.9991503
+0.9999639
+0.9991503
+0.009167032
+0.0007474052
+0.9990822
+0.0007991346
+0.99918026
+0.99478984
+0.98955053
+0.99982506
+0.001503084
+0.99998736
+0.0011414601
+0.9967257
+0.99997354
+0.99998736
+0.99998736
+0.99997354
+0.9998617
+0.99051243
+0.9999832
+0.0013293574
+0.0011414601
+0.9999207
+0.0013939476
+0.00039583017
+0.98955053
+0.99478984
+0.99985075
+0.9991503
+0.99998736
+0.98955053
+0.9992411
+0.00034274196
+0.99994016
+0.999811
+0.99478984
+0.99437463
+0.99998844
+0.9998312
+0.00093165156
+0.98975986
+0.001503084
+0.99997354
+0.9999324
+0.99998736
+0.9999614
+0.9990392
+0.0013293574
+0.00086311874
+0.99996495
+0.9999207
+0.9991503
+0.9999126
+0.99527174
+0.0013293574
+0.99994016
+0.999936
+0.99996805
+0.9999708
+0.9999877
+0.9999832
+0.99996364
+0.9999888
+0.99998605
+0.99998367
+0.9999877
+0.99996483
+0.9999888
+0.9999678
+0.9999852
+0.999967
+0.9999434
+0.9999678
+0.99996483
+0.99998605
+0.9999708
+0.99996483
+0.9999639
+0.9999888
+0.99998736
+0.99998724
+0.9999678
+0.99996364
+0.9999815
+0.99996483
+0.999938
+0.99996805
+0.9999851
+0.9999331
+0.99992275
+0.999938
+0.9999602
+0.99998605
+0.99998975
+0.9999678
+0.99996483
+0.9999877
+0.9999639
+0.9999888
+0.99998605
+0.99998975
+0.99998605
+0.9999685
+0.9999815
+0.9999864
+0.9999864
+0.9999888
+0.9999888
+0.99996483
+0.99998605
+0.99992275
+0.99998736
+0.99998724
+0.9999864
+0.999967
+0.99998605
+0.99998903
+0.99998724
+0.99996364
+0.9999708
+0.9999888
+0.9999708
+0.999984
+0.9999708
+0.9999602
+0.99996805
+0.99998605
+0.99998844
+0.9999888
+0.9999877
+0.99998605
+0.99998724
+0.9999851
+0.99993765
+0.9999851
+0.99998903
+0.999967
+6.9338246e-05
+0.9999831
+0.9999877
+0.99996483
+0.99996483
+1.618272e-05
+0.9999815
+0.9999639
+0.9999708
+0.999967
+0.99998474
+0.9999877
+0.99996805
+0.9999434
+0.99998724
+0.9999602
+0.9999888
+0.9999708
+0.9999851
+0.99996805
+0.99998367
+0.9999877
+0.99998367
+0.9999434
+0.9999708
+0.99996483
+0.99998605
+0.99992275
+0.9999434
+0.9999685
+5.9588056e-05
+0.999938
+0.9999815
+0.999967
+0.9999678
+0.99996483
+0.99996877
+0.9999852
+0.9999602
+0.99998903
+0.99992275
+0.9999714
+0.99992275
+0.99998546
+0.9999317
+0.99996483
+0.9999317
+0.99998367
+0.9999602
+0.9999888
+0.9999888
+0.9999888
+0.99996483
+0.99998724
+0.00013585434
+0.9999317
+0.9999299
+0.9999678
+0.999938
+0.9999831
+0.9999685
+0.9999317
+0.9999864
+0.99998605
+0.99998367
+0.9999708
+0.9999602
+0.99998605
+0.9999851
+0.9999602
+0.9999877
+0.99998736
+0.99998736
+0.99998903
+0.99998367
+0.0001542339
+0.9999678
+0.99996364
+0.9999678
+0.99996483
+3.2848795e-05
+0.9999815
+0.9999602
+0.9999888
+0.99999
+0.9999852
+0.9999639
+0.9999877
+0.99996805
+0.9999602
+0.9999888
+0.9999602
+0.9999888
+0.99998546
+0.00017812874
+0.9999888
+0.99998975
+0.99996364
+0.9999602
+0.9999815
+0.9999888
+0.9999888
+0.99998975
+0.9999393
+0.9999877
+0.99996483
+0.9999602
+5.9588056e-05
+0.00083521125
+3.2848795e-05
+0.99998367
+0.99996555
+0.00035159392
+0.9999852
+0.99998903
+0.9999602
+0.999984
+0.99998796
+0.9999877
+0.9999678
+0.0015203392
+0.99996555
+0.9999602
+0.99998796
+0.99998844
+0.00017812874
+0.99998903
+0.99998903
+0.99998796
+0.99994457
+0.9999678
+3.793864e-05
+3.0411753e-05
+0.99996805
+0.004148995
+0.99998903
+0.9999815
+5.9588056e-05
+5.1143885e-05
+0.9999852
+0.99998796
+3.689701e-05
+0.99999
+0.00013585434
+0.0007576517
+0.99998534
+0.99996555
+0.9999393
+0.99993896
+0.9999639
+0.00032551744
+0.99998903
+0.99996555
+0.99996555
+0.99996877
+0.99996877
+0.0001542339
+0.99998903
+0.99994457
+0.99999
+0.99998367
+0.9999815
+0.9999393
+0.0001542339
+0.9999331
+0.9999602
+6.9338246e-05
+0.99996805
+0.99999
+3.689701e-05
+0.9999888
+1.618272e-05
+0.99998903
+0.00035159392
+0.99998736
+0.9999851
+0.99998796
+1.8690242e-05
+0.99998903
+0.9999685
+0.99998903
+0.00016491521
+0.9988481
+1.8690242e-05
+1.8300698e-05
+0.99996483
+0.99996555
+0.00013585434
+0.99998903
+0.99996555
+0.999984
+3.0411753e-05
+0.99993765
+0.99998796
+3.793864e-05
+0.99993896
+0.99998796
+0.99996877
+0.99998796
+0.99998796
+0.0001542339
+3.2848795e-05
+0.99996877
+0.999984
+7.4894415e-05
+0.99992275
+0.00017812874
+0.99996805
+0.9999888
+0.0007576517
+0.99996555
+1.8690242e-05
+0.9985933
+0.99996877
+3.793864e-05
+0.00013585434
+6.8820795e-05
+0.99996877
+0.99996877
+0.00017812874
+0.99998677
+1.8300698e-05
+0.99998546
+0.99998903
+0.99998677
+0.9999331
+0.9999331
+0.9999331
+0.9988721
+0.9917278
+0.9999393
+0.9999864
+0.99996805
+0.99998534
+0.0001542339
+0.9999393
+0.99998903
+0.99996877
+0.00035159392
+0.99998546
+0.9999815
+1.618272e-05
+0.99996555
+5.223249e-05
+0.00014279263
+0.99998903
+0.99998796
+0.0023245455
+0.99996555
+0.99998903
+0.9999331
+3.793864e-05
+0.00035159392
+0.99996555
+3.793864e-05
+0.9999331
+0.9912554
+0.00017812874
+0.9999331
+0.00013585434
+0.99996483
+0.99998796
+0.99998796
+0.99996877
+6.8820795e-05
+0.9999714
+1.8300698e-05
+0.00014279263
+0.9999888
+0.99996877
+0.9999685
+0.99998724
+3.5123998e-05
+6.9338246e-05
+3.689701e-05
+0.004572132
+0.99993896
+0.9999714
+0.9999393
+0.99998796
+0.0036705781
+0.9912554
+0.99998903
+0.99996555
+0.004045122
+1.8690242e-05
+0.00032551744
+0.999984
+0.9999685
+0.99998546
+7.4894415e-05
+0.00032551744
+0.00017812874
+3.793864e-05
+0.99999
+0.99998796
+0.00010311027
+0.9999602
+0.99998903
+0.99998975
+3.5123998e-05
+0.99996555
+1.8300698e-05
+3.2848795e-05
+0.99878174
+0.00013585434
+0.00013585434
+0.00016491521
+1.8300698e-05
+0.99996877
+0.00013585434
+0.99996877
+0.0001542339
+0.99996555
+1.618272e-05
+0.9999685
+0.0001542339
+0.99998605
+0.99998534
+0.999984
+0.0016758427
+0.99998546
+0.99996364
+0.99998534
+1.8690242e-05
+0.99998546
+0.9999685
+0.0009444215
+0.9999299
+0.004045122
+6.9338246e-05
+1.8690242e-05
+0.00035159392
+0.99996877
+5.9588056e-05
+6.8820795e-05
+0.99998534
+3.2848795e-05
+0.0017189811
+1.8690242e-05
+0.99999
+0.9999678
+0.99993896
+0.00010311027
+0.99996555
+0.9999888
+3.2848795e-05
+0.00083521125
+0.9999685
+0.00013585434
+0.999984
+0.99998903
+6.8820795e-05
+6.8820795e-05
+0.00032551744
+0.9999714
+0.00035159392
+0.00016491521
+0.00016491521
+3.793864e-05
+0.99998546
+1.8690242e-05
+0.99996877
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/resources/ml/mnist_tf_model/saved_model.pb
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/ml/mnist_tf_model/saved_model.pb b/examples/src/main/resources/ml/mnist_tf_model/saved_model.pb
deleted file mode 100644
index 4d36671..0000000
Binary files a/examples/src/main/resources/ml/mnist_tf_model/saved_model.pb and /dev/null differ
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/resources/ml/mnist_tf_model/variables/variables.data-00000-of-00001
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/ml/mnist_tf_model/variables/variables.data-00000-of-00001 b/examples/src/main/resources/ml/mnist_tf_model/variables/variables.data-00000-of-00001
deleted file mode 100644
index a65398f..0000000
Binary files a/examples/src/main/resources/ml/mnist_tf_model/variables/variables.data-00000-of-00001 and /dev/null differ
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/resources/ml/mnist_tf_model/variables/variables.index
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/ml/mnist_tf_model/variables/variables.index b/examples/src/main/resources/ml/mnist_tf_model/variables/variables.index
deleted file mode 100644
index 221dd2d..0000000
Binary files a/examples/src/main/resources/ml/mnist_tf_model/variables/variables.index and /dev/null differ
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/resources/models/mnist_tf_model/saved_model.pb
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/models/mnist_tf_model/saved_model.pb b/examples/src/main/resources/models/mnist_tf_model/saved_model.pb
new file mode 100644
index 0000000..4d36671
Binary files /dev/null and b/examples/src/main/resources/models/mnist_tf_model/saved_model.pb differ
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/resources/models/mnist_tf_model/variables/variables.data-00000-of-00001
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/models/mnist_tf_model/variables/variables.data-00000-of-00001 b/examples/src/main/resources/models/mnist_tf_model/variables/variables.data-00000-of-00001
new file mode 100644
index 0000000..a65398f
Binary files /dev/null and b/examples/src/main/resources/models/mnist_tf_model/variables/variables.data-00000-of-00001 differ
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/resources/models/mnist_tf_model/variables/variables.index
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/models/mnist_tf_model/variables/variables.index b/examples/src/main/resources/models/mnist_tf_model/variables/variables.index
new file mode 100644
index 0000000..221dd2d
Binary files /dev/null and b/examples/src/main/resources/models/mnist_tf_model/variables/variables.index differ
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/examples/src/main/resources/models/xgboost/agaricus-model.txt
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/models/xgboost/agaricus-model.txt b/examples/src/main/resources/models/xgboost/agaricus-model.txt
new file mode 100644
index 0000000..4bf76d6
--- /dev/null
+++ b/examples/src/main/resources/models/xgboost/agaricus-model.txt
@@ -0,0 +1,714 @@
+booster[0]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f56<-9.53674e-07] yes=3,no=4,missing=3
+ 3:[f60<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f23<-9.53674e-07] yes=13,no=14,missing=13
+ 13:[f24<-9.53674e-07] yes=19,no=20,missing=19
+ 19:leaf=1.99735
+ 20:leaf=-1.8
+ 14:leaf=-1.80952
+ 8:leaf=-1.95062
+ 4:[f21<-9.53674e-07] yes=9,no=10,missing=9
+ 9:leaf=1.77778
+ 10:leaf=-1.98104
+ 2:[f109<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f67<-9.53674e-07] yes=11,no=12,missing=11
+ 11:[f8<-9.53674e-07] yes=15,no=16,missing=15
+ 15:leaf=-1.99117
+ 16:leaf=1
+ 12:[f39<-9.53674e-07] yes=17,no=18,missing=17
+ 17:leaf=1.77143
+ 18:leaf=-1.5
+ 6:leaf=1.85965
+booster[1]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=1.13207
+ 4:[f27<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f30<-9.53674e-07] yes=11,no=12,missing=11
+ 11:leaf=-1.12641
+ 12:leaf=1.08392
+ 8:leaf=1.09118
+ 2:[f109<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f67<-9.53674e-07] yes=9,no=10,missing=9
+ 9:[f39<-9.53674e-07] yes=13,no=14,missing=13
+ 13:[f21<-9.53674e-07] yes=17,no=18,missing=17
+ 17:leaf=-1.06692
+ 18:leaf=2.08
+ 14:leaf=-1.13236
+ 10:[f39<-9.53674e-07] yes=15,no=16,missing=15
+ 15:leaf=0.928896
+ 16:leaf=-0.784694
+ 6:leaf=0.994744
+booster[2]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=1.03409
+ 4:[f27<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f30<-9.53674e-07] yes=11,no=12,missing=11
+ 11:leaf=-1.00925
+ 12:leaf=0.934041
+ 8:leaf=0.947964
+ 2:[f109<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f39<-9.53674e-07] yes=9,no=10,missing=9
+ 9:[f112<-9.53674e-07] yes=13,no=14,missing=13
+ 13:leaf=-0.862367
+ 14:[f79<-9.53674e-07] yes=15,no=16,missing=15
+ 15:leaf=0.996309
+ 16:leaf=-0.217869
+ 10:leaf=-1.03467
+ 6:leaf=0.773973
+booster[3]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f56<-9.53674e-07] yes=3,no=4,missing=3
+ 3:[f60<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f36<-9.53674e-07] yes=11,no=12,missing=11
+ 11:[f21<-9.53674e-07] yes=15,no=16,missing=15
+ 15:leaf=0.535599
+ 16:leaf=-0.591832
+ 12:leaf=0.99398
+ 8:leaf=-0.731796
+ 4:leaf=-0.74401
+ 2:[f109<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f67<-9.53674e-07] yes=9,no=10,missing=9
+ 9:[f115<-9.53674e-07] yes=13,no=14,missing=13
+ 13:leaf=-0.991027
+ 14:[f86<-9.53674e-07] yes=17,no=18,missing=17
+ 17:leaf=-0.71378
+ 18:leaf=-0.010833
+ 10:leaf=0.382551
+ 6:leaf=0.587063
+booster[4]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.949695
+ 4:[f27<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f30<-9.53674e-07] yes=13,no=14,missing=13
+ 13:leaf=-0.846263
+ 14:leaf=0.571051
+ 8:leaf=0.604424
+ 2:[f39<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f7<-9.53674e-07] yes=9,no=10,missing=9
+ 9:leaf=0.359876
+ 10:leaf=-0.0906721
+ 6:[f1<-9.53674e-07] yes=11,no=12,missing=11
+ 11:leaf=-0.902494
+ 12:leaf=-0.222349
+booster[5]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.866121
+ 4:[f56<-9.53674e-07] yes=7,no=8,missing=7
+ 7:[f10<-9.53674e-07] yes=11,no=12,missing=11
+ 11:leaf=-0.172918
+ 12:leaf=0.444059
+ 8:leaf=-0.581706
+ 2:[f109<-9.53674e-07] yes=5,no=6,missing=5
+ 5:[f39<-9.53674e-07] yes=9,no=10,missing=9
+ 9:[f65<-9.53674e-07] yes=13,no=14,missing=13
+ 13:leaf=0.314289
+ 14:leaf=-0.137217
+ 10:leaf=-0.87866
+ 6:leaf=0.593857
+booster[6]:
+0:[f64<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f39<-9.53674e-07] yes=3,no=4,missing=3
+ 3:[f21<-9.53674e-07] yes=5,no=6,missing=5
+ 5:leaf=-0.16553
+ 6:leaf=0.424994
+ 4:[f118<-9.53674e-07] yes=7,no=8,missing=7
+ 7:leaf=-0.662592
+ 8:leaf=0.10184
+ 2:leaf=0.647963
+booster[7]:
+0:[f27<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f39<-9.53674e-07] yes=3,no=4,missing=3
+ 3:[f112<-9.53674e-07] yes=5,no=6,missing=5
+ 5:leaf=-0.205397
+ 6:[f55<-9.53674e-07] yes=9,no=10,missing=9
+ 9:leaf=0.531323
+ 10:leaf=0.0411505
+ 4:[f95<-9.53674e-07] yes=7,no=8,missing=7
+ 7:leaf=0.0893909
+ 8:leaf=-0.688257
+ 2:leaf=0.62192
+booster[8]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.559472
+ 4:leaf=0.047577
+ 2:[f21<-9.53674e-07] yes=5,no=6,missing=5
+ 5:leaf=-0.522063
+ 6:leaf=0.185313
+booster[9]:
+0:[f106<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f36<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=-0.106198
+ 4:[f29<-9.53674e-07] yes=5,no=6,missing=5
+ 5:leaf=0.451254
+ 6:leaf=0.0100806
+ 2:leaf=-0.265738
+booster[10]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f118<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.411374
+ 4:leaf=-0.00392402
+ 2:[f118<-9.53674e-07] yes=5,no=6,missing=5
+ 5:leaf=-0.370329
+ 6:leaf=0.106229
+booster[11]:
+0:[f126<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=-0.244834
+ 4:leaf=0.393425
+ 2:leaf=-0.191846
+booster[12]:
+0:[f65<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.281915
+ 2:[f126<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.0457934
+ 4:leaf=-0.335547
+booster[13]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:[f55<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=0.298848
+ 4:leaf=-0.0234579
+ 2:leaf=-0.211675
+booster[14]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.180838
+ 2:[f21<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=-0.28038
+ 4:leaf=0.0867539
+booster[15]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.123414
+ 2:leaf=-0.136942
+booster[16]:
+0:[f36<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.154724
+ 2:[f118<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=-0.17891
+ 4:leaf=0.28564
+booster[17]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.1202
+ 2:leaf=-0.113537
+booster[18]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0946849
+ 2:leaf=0.147314
+booster[19]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.128399
+ 2:leaf=0.117783
+booster[20]:
+0:[f36<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.135164
+ 2:[f55<-9.53674e-07] yes=3,no=4,missing=3
+ 3:leaf=-0.042949
+ 4:leaf=0.173579
+booster[21]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0957448
+ 2:leaf=-0.104156
+booster[22]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0925588
+ 2:leaf=-0.0798059
+booster[23]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0830908
+ 2:leaf=0.126943
+booster[24]:
+0:[f126<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0823832
+ 2:leaf=-0.0899369
+booster[25]:
+0:[f3<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0589036
+ 2:leaf=-0.0851568
+booster[26]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0859156
+ 2:leaf=-0.0815898
+booster[27]:
+0:[f21<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0637587
+ 2:leaf=-0.048542
+booster[28]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.069489
+ 2:leaf=0.058072
+booster[29]:
+0:[f36<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.149849
+ 2:leaf=0.0984096
+booster[30]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0688469
+ 2:leaf=0.0689056
+booster[31]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.071993
+ 2:leaf=0.0544265
+booster[32]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0686437
+ 2:leaf=-0.061108
+booster[33]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0522195
+ 2:leaf=-0.0544709
+booster[34]:
+0:[f126<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0445775
+ 2:leaf=-0.0612543
+booster[35]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0370941
+ 2:leaf=0.0414116
+booster[36]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0491957
+ 2:leaf=-0.0374184
+booster[37]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0428276
+ 2:leaf=0.0362258
+booster[38]:
+0:[f21<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.038428
+ 2:leaf=-0.0331781
+booster[39]:
+0:[f36<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.14093
+ 2:leaf=0.101744
+booster[40]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0443167
+ 2:leaf=-0.0668384
+booster[41]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0654174
+ 2:leaf=0.0401212
+booster[42]:
+0:[f118<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0426251
+ 2:leaf=-0.0430745
+booster[43]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0315924
+ 2:leaf=0.0413181
+booster[44]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.037716
+ 2:leaf=0.0316046
+booster[45]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0384603
+ 2:leaf=-0.031591
+booster[46]:
+0:[f9<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0264121
+ 2:leaf=0.0318885
+booster[47]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0258388
+ 2:leaf=-0.0263959
+booster[48]:
+0:[f118<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0220629
+ 2:leaf=-0.0169775
+booster[49]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0254499
+ 2:leaf=0.0207041
+booster[50]:
+0:[f126<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.022765
+ 2:leaf=-0.0334065
+booster[51]:
+0:[f21<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.022757
+ 2:leaf=-0.0227902
+booster[52]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0265489
+ 2:leaf=-0.0199871
+booster[53]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0149867
+ 2:leaf=0.022471
+booster[54]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0175078
+ 2:leaf=0.0157137
+booster[55]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0182503
+ 2:leaf=-0.0143524
+booster[56]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0115217
+ 2:leaf=0.0166359
+booster[57]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0134613
+ 2:leaf=-0.0116378
+booster[58]:
+0:[f9<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00981541
+ 2:leaf=0.0115454
+booster[59]:
+0:[f55<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0116732
+ 2:leaf=0.00925633
+booster[60]:
+0:[f4<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00879889
+ 2:leaf=-0.0122642
+booster[61]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0105853
+ 2:leaf=-0.00918858
+booster[62]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00988643
+ 2:leaf=0.0133116
+booster[63]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00922858
+ 2:leaf=-0.00796718
+booster[64]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00674803
+ 2:leaf=0.00923198
+booster[65]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00946677
+ 2:leaf=-0.00611888
+booster[66]:
+0:[f21<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00809434
+ 2:leaf=-0.00524561
+booster[67]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0058383
+ 2:leaf=-0.0047337
+booster[68]:
+0:[f9<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00516364
+ 2:leaf=0.00612514
+booster[69]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00393965
+ 2:leaf=0.0055112
+booster[70]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0062736
+ 2:leaf=-0.00406246
+booster[71]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00387397
+ 2:leaf=-0.00335857
+booster[72]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00378672
+ 2:leaf=-0.00363264
+booster[73]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00348857
+ 2:leaf=0.00454308
+booster[74]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00310136
+ 2:leaf=-0.00269635
+booster[75]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00232427
+ 2:leaf=0.00316355
+booster[76]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0033131
+ 2:leaf=-0.00214357
+booster[77]:
+0:[f9<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.00198535
+ 2:leaf=0.00270199
+booster[78]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00189522
+ 2:leaf=-0.00163941
+booster[79]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0018533
+ 2:leaf=0.00251417
+booster[80]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00213544
+ 2:leaf=-0.00134465
+booster[81]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.0010731
+ 2:leaf=0.0017787
+booster[82]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.00170681
+ 2:leaf=-0.00144721
+booster[83]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.000965197
+ 2:leaf=0.00137187
+booster[84]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.0014236
+ 2:leaf=-0.000908222
+booster[85]:
+0:[f9<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.000799637
+ 2:leaf=0.00110198
+booster[86]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.000950752
+ 2:leaf=-0.000839873
+booster[87]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.000841428
+ 2:leaf=0.0011364
+booster[88]:
+0:[f29<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.000900093
+ 2:leaf=-0.00055321
+booster[89]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.000479465
+ 2:leaf=0.000775463
+booster[90]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.000824745
+ 2:leaf=-0.000703525
+booster[91]:
+0:[f112<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=-0.000446206
+ 2:leaf=0.000627391
+booster[92]:
+0:[f51<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.000531432
+ 2:leaf=-0.000464763
+booster[93]:
+0:[f39<-9.53674e-07] yes=1,no=2,missing=1
+ 1:leaf=0.000457717
+ 2:leaf=-0.000483533
+booster[94]:
+0:leaf=-8.69481e-06
+booster[95]:
+0:leaf=-2.22842e-06
+booster[96]:
+0:leaf=-7.41984e-07
+booster[97]:
+0:leaf=6.03395e-07
+booster[98]:
+0:leaf=-2.45552e-08
+booster[99]:
+0:leaf=-2.45552e-08
+booster[100]:
+0:leaf=-2.45552e-08
+booster[101]:
+0:leaf=-2.45552e-08
+booster[102]:
+0:leaf=-2.45552e-08
+booster[103]:
+0:leaf=-2.45552e-08
+booster[104]:
+0:leaf=-2.45552e-08
+booster[105]:
+0:leaf=-2.45552e-08
+booster[106]:
+0:leaf=-2.45552e-08
+booster[107]:
+0:leaf=-2.45552e-08
+booster[108]:
+0:leaf=-2.45552e-08
+booster[109]:
+0:leaf=-2.45552e-08
+booster[110]:
+0:leaf=-2.45552e-08
+booster[111]:
+0:leaf=-2.45552e-08
+booster[112]:
+0:leaf=-2.45552e-08
+booster[113]:
+0:leaf=-2.45552e-08
+booster[114]:
+0:leaf=-2.45552e-08
+booster[115]:
+0:leaf=-2.45552e-08
+booster[116]:
+0:leaf=-2.45552e-08
+booster[117]:
+0:leaf=-2.45552e-08
+booster[118]:
+0:leaf=-2.45552e-08
+booster[119]:
+0:leaf=-2.45552e-08
+booster[120]:
+0:leaf=-2.45552e-08
+booster[121]:
+0:leaf=-2.45552e-08
+booster[122]:
+0:leaf=-2.45552e-08
+booster[123]:
+0:leaf=-2.45552e-08
+booster[124]:
+0:leaf=-2.45552e-08
+booster[125]:
+0:leaf=-2.45552e-08
+booster[126]:
+0:leaf=-2.45552e-08
+booster[127]:
+0:leaf=-2.45552e-08
+booster[128]:
+0:leaf=-2.45552e-08
+booster[129]:
+0:leaf=-2.45552e-08
+booster[130]:
+0:leaf=-2.45552e-08
+booster[131]:
+0:leaf=-2.45552e-08
+booster[132]:
+0:leaf=-2.45552e-08
+booster[133]:
+0:leaf=-2.45552e-08
+booster[134]:
+0:leaf=-2.45552e-08
+booster[135]:
+0:leaf=-2.45552e-08
+booster[136]:
+0:leaf=-2.45552e-08
+booster[137]:
+0:leaf=-2.45552e-08
+booster[138]:
+0:leaf=-2.45552e-08
+booster[139]:
+0:leaf=-2.45552e-08
+booster[140]:
+0:leaf=-2.45552e-08
+booster[141]:
+0:leaf=-2.45552e-08
+booster[142]:
+0:leaf=-2.45552e-08
+booster[143]:
+0:leaf=-2.45552e-08
+booster[144]:
+0:leaf=-2.45552e-08
+booster[145]:
+0:leaf=-2.45552e-08
+booster[146]:
+0:leaf=-2.45552e-08
+booster[147]:
+0:leaf=-2.45552e-08
+booster[148]:
+0:leaf=-2.45552e-08
+booster[149]:
+0:leaf=-2.45552e-08
+booster[150]:
+0:leaf=-2.45552e-08
+booster[151]:
+0:leaf=-2.45552e-08
+booster[152]:
+0:leaf=-2.45552e-08
+booster[153]:
+0:leaf=-2.45552e-08
+booster[154]:
+0:leaf=-2.45552e-08
+booster[155]:
+0:leaf=-2.45552e-08
+booster[156]:
+0:leaf=-2.45552e-08
+booster[157]:
+0:leaf=-2.45552e-08
+booster[158]:
+0:leaf=-2.45552e-08
+booster[159]:
+0:leaf=-2.45552e-08
+booster[160]:
+0:leaf=-2.45552e-08
+booster[161]:
+0:leaf=-2.45552e-08
+booster[162]:
+0:leaf=-2.45552e-08
+booster[163]:
+0:leaf=-2.45552e-08
+booster[164]:
+0:leaf=-2.45552e-08
+booster[165]:
+0:leaf=-2.45552e-08
+booster[166]:
+0:leaf=-2.45552e-08
+booster[167]:
+0:leaf=-2.45552e-08
+booster[168]:
+0:leaf=-2.45552e-08
+booster[169]:
+0:leaf=-2.45552e-08
+booster[170]:
+0:leaf=-2.45552e-08
+booster[171]:
+0:leaf=-2.45552e-08
+booster[172]:
+0:leaf=-2.45552e-08
+booster[173]:
+0:leaf=-2.45552e-08
+booster[174]:
+0:leaf=-2.45552e-08
+booster[175]:
+0:leaf=-2.45552e-08
+booster[176]:
+0:leaf=-2.45552e-08
+booster[177]:
+0:leaf=-2.45552e-08
+booster[178]:
+0:leaf=-2.45552e-08
+booster[179]:
+0:leaf=-2.45552e-08
+booster[180]:
+0:leaf=-2.45552e-08
+booster[181]:
+0:leaf=-2.45552e-08
+booster[182]:
+0:leaf=-2.45552e-08
+booster[183]:
+0:leaf=-2.45552e-08
+booster[184]:
+0:leaf=-2.45552e-08
+booster[185]:
+0:leaf=-2.45552e-08
+booster[186]:
+0:leaf=-2.45552e-08
+booster[187]:
+0:leaf=-2.45552e-08
+booster[188]:
+0:leaf=-2.45552e-08
+booster[189]:
+0:leaf=-2.45552e-08
+booster[190]:
+0:leaf=-2.45552e-08
+booster[191]:
+0:leaf=-2.45552e-08
+booster[192]:
+0:leaf=-2.45552e-08
+booster[193]:
+0:leaf=-2.45552e-08
+booster[194]:
+0:leaf=-2.45552e-08
+booster[195]:
+0:leaf=-2.45552e-08
+booster[196]:
+0:leaf=-2.45552e-08
+booster[197]:
+0:leaf=-2.45552e-08
+booster[198]:
+0:leaf=-2.45552e-08
+booster[199]:
+0:leaf=-2.45552e-08
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/src/main/java/org/apache/ignite/ml/inference/builder/IgniteDistributedInfModelBuilder.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/inference/builder/IgniteDistributedInfModelBuilder.java b/modules/ml/src/main/java/org/apache/ignite/ml/inference/builder/IgniteDistributedInfModelBuilder.java
index 7a176e0..2c6d917 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/inference/builder/IgniteDistributedInfModelBuilder.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/inference/builder/IgniteDistributedInfModelBuilder.java
@@ -176,17 +176,18 @@ public class IgniteDistributedInfModelBuilder implements AsyncInfModelBuilder {
if (!running.get())
throw new IllegalStateException("Inference model is not running");
- reqQueue.put(input);
+ CompletableFuture<O> fut = new CompletableFuture<>();
try {
- CompletableFuture<O> fut = new CompletableFuture<>();
futures.put(fut);
- return fut;
}
catch (InterruptedException e) {
close(); // In case of exception in the above code the model state becomes invalid and model is closed.
throw new RuntimeException(e);
}
+
+ reqQueue.put(input);
+ return fut;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/pom.xml
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/pom.xml b/modules/ml/xgboost-model-parser/pom.xml
new file mode 100644
index 0000000..d70ae0b
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/pom.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+<!--
+ POM file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <properties>
+ <antlr.version>4.7.1</antlr.version>
+ </properties>
+
+ <parent>
+ <artifactId>ignite-parent</artifactId>
+ <groupId>org.apache.ignite</groupId>
+ <version>1</version>
+ <relativePath>../../../parent</relativePath>
+ </parent>
+
+ <artifactId>ignite-ml-xgboost-model-parser</artifactId>
+ <version>2.7.0-SNAPSHOT</version>
+ <url>http://ignite.apache.org</url>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-ml</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.antlr</groupId>
+ <artifactId>antlr4-runtime</artifactId>
+ <version>${antlr.version}</version>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/MapBasedXGObject.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/MapBasedXGObject.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/MapBasedXGObject.java
new file mode 100644
index 0000000..20bdf1f
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/MapBasedXGObject.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/** Map based implementation of {@link XGObject}. */
+public class MapBasedXGObject implements XGObject {
+ /** */
+ private static final long serialVersionUID = 4378979710350902592L;
+
+ /** Key-value map. */
+ private final Map<String, Double> map;
+
+ /**
+ * Constructs a new instance of map based {@link XGObject} with empty map.
+ */
+ public MapBasedXGObject() {
+ this(new HashMap<>());
+ }
+
+ /**
+ * Constructs a new instance of map based {@link XGObject} with the specified map.
+ *
+ * @param map Map.
+ */
+ public MapBasedXGObject(Map<String, Double> map) {
+ this.map = map;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Double getFeature(String featureName) {
+ return map.get(featureName);
+ }
+
+ /**
+ * Puts feature value with the specified feature name.
+ *
+ * @param featureName Feature name.
+ * @param val Feature value.
+ */
+ public void put(String featureName, Double val) {
+ map.put(featureName, val);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGLeafNode.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGLeafNode.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGLeafNode.java
new file mode 100644
index 0000000..da572db
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGLeafNode.java
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost;
+
+/** XGBoost model leaf node. */
+public class XGLeafNode implements XGNode {
+ /** Value. */
+ private final double val;
+
+ /**
+ * Constructs a new instance of leaf node.
+ *
+ * @param val Value.
+ */
+ public XGLeafNode(double val) {
+ this.val = val;
+ }
+
+ /** {@inheritDoc} */
+ @Override public double predict(XGObject obj) {
+ return val;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGModel.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGModel.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGModel.java
new file mode 100644
index 0000000..3ca9d54
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGModel.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost;
+
+import java.util.List;
+import org.apache.ignite.ml.inference.InfModel;
+
+/**
+ * XGBoost model.
+ */
+public class XGModel implements InfModel<XGObject, Double> {
+ /** List of decision trees. */
+ private final List<XGNode> trees;
+
+ /**
+ * Constructs a new XGBoost model.
+ *
+ * @param trees List of XGBoost trees.
+ */
+ public XGModel(List<XGNode> trees) {
+ this.trees = trees;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Double predict(XGObject obj) {
+ double res = 0;
+
+ for (XGNode tree : trees)
+ res += tree.predict(obj);
+
+ return (1.0 / (1.0 + Math.exp(-res)));
+ }
+
+ /** {@inheritDoc} */
+ @Override public void close() {
+ // Do nothing.
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGNode.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGNode.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGNode.java
new file mode 100644
index 0000000..f3401a7
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGNode.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost;
+
+/** XGBoost model node. */
+public interface XGNode {
+ /**
+ * Predicts label for the specified object.
+ *
+ * @param obj Object.
+ * @return Label.
+ */
+ public double predict(XGObject obj);
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGObject.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGObject.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGObject.java
new file mode 100644
index 0000000..408c170
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGObject.java
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost;
+
+import java.io.Serializable;
+
+/**
+ * Base interface for objects processed by XGBoost model.
+ */
+public interface XGObject extends Serializable {
+ /**
+ * Returns feature value by the specified name.
+ *
+ * @param featureName Feature name.
+ * @return Feature value.
+ */
+ public Double getFeature(String featureName);
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGSplitNode.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGSplitNode.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGSplitNode.java
new file mode 100644
index 0000000..16c0ed4
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/XGSplitNode.java
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost;
+
+/** XGBoost model split node. */
+public class XGSplitNode implements XGNode {
+ /** Feature name. */
+ private final String featureName;
+
+ /** Threshold. */
+ private final double threshold;
+
+ /** "Yes" child node. */
+ private XGNode yesNode;
+
+ /** "No" child node. */
+ private XGNode noNode;
+
+ /** "Missing" child node. */
+ private XGNode missingNode;
+
+ /**
+ * Constructs a new instance of XGBoost model split node.
+ *
+ * @param featureName Feature name.
+ * @param threshold Threshold.
+ */
+ public XGSplitNode(String featureName, double threshold) {
+ this.featureName = featureName;
+ this.threshold = threshold;
+ }
+
+ /** {@inheritDoc} */
+ @Override public double predict(XGObject obj) {
+ Double featureVal = obj.getFeature(featureName);
+
+ if (featureVal == null)
+ return missingNode.predict(obj);
+ else if (featureVal < threshold)
+ return yesNode.predict(obj);
+ else
+ return noNode.predict(obj);
+ }
+
+ /** */
+ public void setYesNode(XGNode yesNode) {
+ this.yesNode = yesNode;
+ }
+
+ /** */
+ public void setNoNode(XGNode noNode) {
+ this.noNode = noNode;
+ }
+
+ /** */
+ public void setMissingNode(XGNode missingNode) {
+ this.missingNode = missingNode;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/package-info.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/package-info.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/package-info.java
new file mode 100644
index 0000000..ca95b1d
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Base package for XGBoost model parser, correspondent DTOs and util classes.
+ */
+package org.apache.ignite.ml.xgboost;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelBaseVisitor.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelBaseVisitor.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelBaseVisitor.java
new file mode 100644
index 0000000..725b3c8
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelBaseVisitor.java
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost.parser;
+
+import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
+
+/**
+ * This class provides an empty implementation of {@link XGBoostModelVisitor},
+ * which can be extended to create a visitor which only needs to handle a subset
+ * of the available methods.
+ *
+ * @param <T> The return type of the visit operation. Use {@link Void} for
+ * operations with no return type.
+ */
+public class XGBoostModelBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements XGBoostModelVisitor<T> {
+ /**
+ * {@inheritDoc}
+ *
+ * <p>The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.</p>
+ */
+ @Override public T visitXgValue(XGBoostModelParser.XgValueContext ctx) { return visitChildren(ctx); }
+
+ /**
+ * {@inheritDoc}
+ *
+ * <p>The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.</p>
+ */
+ @Override public T visitXgHeader(XGBoostModelParser.XgHeaderContext ctx) { return visitChildren(ctx); }
+
+ /**
+ * {@inheritDoc}
+ *
+ * <p>The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.</p>
+ */
+ @Override public T visitXgNode(XGBoostModelParser.XgNodeContext ctx) { return visitChildren(ctx); }
+
+ /**
+ * {@inheritDoc}
+ *
+ * <p>The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.</p>
+ */
+ @Override public T visitXgLeaf(XGBoostModelParser.XgLeafContext ctx) { return visitChildren(ctx); }
+
+ /**
+ * {@inheritDoc}
+ *
+ * <p>The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.</p>
+ */
+ @Override public T visitXgTree(XGBoostModelParser.XgTreeContext ctx) { return visitChildren(ctx); }
+
+ /**
+ * {@inheritDoc}
+ *
+ * <p>The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.</p>
+ */
+ @Override public T visitXgModel(XGBoostModelParser.XgModelContext ctx) { return visitChildren(ctx); }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelLexer.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelLexer.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelLexer.java
new file mode 100644
index 0000000..fcec81f
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelLexer.java
@@ -0,0 +1,210 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost.parser;
+
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.RuntimeMetaData;
+import org.antlr.v4.runtime.Vocabulary;
+import org.antlr.v4.runtime.VocabularyImpl;
+import org.antlr.v4.runtime.atn.ATN;
+import org.antlr.v4.runtime.atn.ATNDeserializer;
+import org.antlr.v4.runtime.atn.LexerATNSimulator;
+import org.antlr.v4.runtime.atn.PredictionContextCache;
+import org.antlr.v4.runtime.dfa.DFA;
+
+/**
+ * XGBoost model lexer generated by ANTLR.
+ */
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
+public class XGBoostModelLexer extends Lexer {
+ /** ANTLR version checker. */
+ static {
+ RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION);
+ }
+
+ /** Decision to DFA. */
+ protected static final DFA[] _decisionToDFA;
+
+ /** Shared context cache. */
+ protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache();
+
+ /** */
+ public static final int
+ YES = 1, NO = 2, MISSING = 3, EQ = 4, COMMA = 5, PLUS = 6, MINUS = 7, DOT = 8, EXP = 9,
+ BOOSTER = 10, LBRACK = 11, RBRACK = 12, COLON = 13, LEAF = 14, INT = 15, DOUBLE = 16,
+ STRING = 17, NEWLINE = 18, LT = 19, WS = 20;
+
+ /** Channel names. */
+ public static String[] channelNames = {
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
+ };
+
+ /** Mode names. */
+ public static String[] modeNames = {
+ "DEFAULT_MODE"
+ };
+
+ /** Rule names. */
+ public static final String[] ruleNames = {
+ "YES", "NO", "MISSING", "EQ", "COMMA", "PLUS", "MINUS", "DOT", "EXP",
+ "BOOSTER", "LBRACK", "RBRACK", "COLON", "LEAF", "INT", "DOUBLE", "STRING",
+ "NEWLINE", "LT", "WS"
+ };
+
+ /** Literal names. */
+ private static final String[] _LITERAL_NAMES = {
+ null, "'yes'", "'no'", "'missing'", "'='", "','", "'+'", "'-'", "'.'",
+ null, "'booster'", "'['", "']'", "':'", "'leaf'", null, null, null, null,
+ "'<'"
+ };
+
+ /** Symbolic names. */
+ private static final String[] _SYMBOLIC_NAMES = {
+ null, "YES", "NO", "MISSING", "EQ", "COMMA", "PLUS", "MINUS", "DOT", "EXP",
+ "BOOSTER", "LBRACK", "RBRACK", "COLON", "LEAF", "INT", "DOUBLE", "STRING",
+ "NEWLINE", "LT", "WS"
+ };
+
+ /** Vocabulary. */
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * Token names.
+ *
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+
+ /** */
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "<INVALID>";
+ }
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Deprecated
+ @Override public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+ /**
+ * Constructs a new instance of XGBoost model lexer.
+ *
+ * @param input Character stream.
+ */
+ public XGBoostModelLexer(CharStream input) {
+ super(input);
+ _interp = new LexerATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String getGrammarFileName() {
+ return "XGBoostModel.g4";
+ }
+
+ /** {@inheritDoc} */
+ @Override public String[] getRuleNames() {
+ return ruleNames;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String getSerializedATN() {
+ return _serializedATN;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String[] getChannelNames() {
+ return channelNames;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String[] getModeNames() {
+ return modeNames;
+ }
+
+ /** {@inheritDoc} */
+ @Override public ATN getATN() {
+ return _ATN;
+ }
+
+ /** Serialized ATN. */
+ public static final String _serializedATN =
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\26\u0083\b\1\4\2" +
+ "\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4" +
+ "\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22" +
+ "\t\22\4\23\t\23\4\24\t\24\4\25\t\25\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\4\3" +
+ "\4\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n" +
+ "\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\r\3\r\3\16\3\16" +
+ "\3\17\3\17\3\17\3\17\3\17\3\20\3\20\5\20\\\n\20\3\20\6\20_\n\20\r\20\16" +
+ "\20`\3\21\3\21\3\21\7\21f\n\21\f\21\16\21i\13\21\3\21\3\21\3\21\5\21n" +
+ "\n\21\3\22\3\22\6\22r\n\22\r\22\16\22s\3\23\3\23\3\23\5\23y\n\23\3\24" +
+ "\3\24\3\25\6\25~\n\25\r\25\16\25\177\3\25\3\25\2\2\26\3\3\5\4\7\5\t\6" +
+ "\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24" +
+ "\'\25)\26\3\2\b\4\2GGgg\3\2\62;\5\2C\\aac|\6\2\62;C\\aac|\4\2\f\f\17\17" +
+ "\4\2\13\13\"\"\2\u008a\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2" +
+ "\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25" +
+ "\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2" +
+ "\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\3+\3\2\2" +
+ "\2\5/\3\2\2\2\7\62\3\2\2\2\t:\3\2\2\2\13<\3\2\2\2\r>\3\2\2\2\17@\3\2\2" +
+ "\2\21B\3\2\2\2\23D\3\2\2\2\25F\3\2\2\2\27N\3\2\2\2\31P\3\2\2\2\33R\3\2" +
+ "\2\2\35T\3\2\2\2\37[\3\2\2\2!b\3\2\2\2#o\3\2\2\2%x\3\2\2\2\'z\3\2\2\2" +
+ ")}\3\2\2\2+,\7{\2\2,-\7g\2\2-.\7u\2\2.\4\3\2\2\2/\60\7p\2\2\60\61\7q\2" +
+ "\2\61\6\3\2\2\2\62\63\7o\2\2\63\64\7k\2\2\64\65\7u\2\2\65\66\7u\2\2\66" +
+ "\67\7k\2\2\678\7p\2\289\7i\2\29\b\3\2\2\2:;\7?\2\2;\n\3\2\2\2<=\7.\2\2" +
+ "=\f\3\2\2\2>?\7-\2\2?\16\3\2\2\2@A\7/\2\2A\20\3\2\2\2BC\7\60\2\2C\22\3" +
+ "\2\2\2DE\t\2\2\2E\24\3\2\2\2FG\7d\2\2GH\7q\2\2HI\7q\2\2IJ\7u\2\2JK\7v" +
+ "\2\2KL\7g\2\2LM\7t\2\2M\26\3\2\2\2NO\7]\2\2O\30\3\2\2\2PQ\7_\2\2Q\32\3" +
+ "\2\2\2RS\7<\2\2S\34\3\2\2\2TU\7n\2\2UV\7g\2\2VW\7c\2\2WX\7h\2\2X\36\3" +
+ "\2\2\2Y\\\5\r\7\2Z\\\5\17\b\2[Y\3\2\2\2[Z\3\2\2\2[\\\3\2\2\2\\^\3\2\2" +
+ "\2]_\t\3\2\2^]\3\2\2\2_`\3\2\2\2`^\3\2\2\2`a\3\2\2\2a \3\2\2\2bc\5\37" +
+ "\20\2cg\5\21\t\2df\t\3\2\2ed\3\2\2\2fi\3\2\2\2ge\3\2\2\2gh\3\2\2\2hm\3" +
+ "\2\2\2ig\3\2\2\2jk\5\23\n\2kl\5\37\20\2ln\3\2\2\2mj\3\2\2\2mn\3\2\2\2" +
+ "n\"\3\2\2\2oq\t\4\2\2pr\t\5\2\2qp\3\2\2\2rs\3\2\2\2sq\3\2\2\2st\3\2\2" +
+ "\2t$\3\2\2\2uv\7\17\2\2vy\7\f\2\2wy\t\6\2\2xu\3\2\2\2xw\3\2\2\2y&\3\2" +
+ "\2\2z{\7>\2\2{(\3\2\2\2|~\t\7\2\2}|\3\2\2\2~\177\3\2\2\2\177}\3\2\2\2" +
+ "\177\u0080\3\2\2\2\u0080\u0081\3\2\2\2\u0081\u0082\b\25\2\2\u0082*\3\2" +
+ "\2\2\n\2[`gmsx\177\3\b\2\2";
+
+ /** ATN. */
+ public static final ATN _ATN =
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+
+ /** */
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/4ae29fca/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelListener.java
----------------------------------------------------------------------
diff --git a/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelListener.java b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelListener.java
new file mode 100644
index 0000000..c0ad15a
--- /dev/null
+++ b/modules/ml/xgboost-model-parser/src/main/java/org/apache/ignite/ml/xgboost/parser/XGBoostModelListener.java
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.ml.xgboost.parser;
+
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+
+/**
+ * This interface defines a complete listener for a parse tree produced by
+ * {@link XGBoostModelParser}.
+ */
+public interface XGBoostModelListener extends ParseTreeListener {
+ /**
+ * Enter a parse tree produced by {@link XGBoostModelParser#xgValue}.
+ * @param ctx the parse tree
+ */
+ public void enterXgValue(XGBoostModelParser.XgValueContext ctx);
+
+ /**
+ * Exit a parse tree produced by {@link XGBoostModelParser#xgValue}.
+ * @param ctx the parse tree
+ */
+ public void exitXgValue(XGBoostModelParser.XgValueContext ctx);
+
+ /**
+ * Enter a parse tree produced by {@link XGBoostModelParser#xgHeader}.
+ * @param ctx the parse tree
+ */
+ public void enterXgHeader(XGBoostModelParser.XgHeaderContext ctx);
+
+ /**
+ * Exit a parse tree produced by {@link XGBoostModelParser#xgHeader}.
+ * @param ctx the parse tree
+ */
+ public void exitXgHeader(XGBoostModelParser.XgHeaderContext ctx);
+
+ /**
+ * Enter a parse tree produced by {@link XGBoostModelParser#xgNode}.
+ * @param ctx the parse tree
+ */
+ public void enterXgNode(XGBoostModelParser.XgNodeContext ctx);
+
+ /**
+ * Exit a parse tree produced by {@link XGBoostModelParser#xgNode}.
+ * @param ctx the parse tree
+ */
+ public void exitXgNode(XGBoostModelParser.XgNodeContext ctx);
+
+ /**
+ * Enter a parse tree produced by {@link XGBoostModelParser#xgLeaf}.
+ * @param ctx the parse tree
+ */
+ public void enterXgLeaf(XGBoostModelParser.XgLeafContext ctx);
+
+ /**
+ * Exit a parse tree produced by {@link XGBoostModelParser#xgLeaf}.
+ * @param ctx the parse tree
+ */
+ public void exitXgLeaf(XGBoostModelParser.XgLeafContext ctx);
+
+ /**
+ * Enter a parse tree produced by {@link XGBoostModelParser#xgTree}.
+ * @param ctx the parse tree
+ */
+ public void enterXgTree(XGBoostModelParser.XgTreeContext ctx);
+
+ /**
+ * Exit a parse tree produced by {@link XGBoostModelParser#xgTree}.
+ * @param ctx the parse tree
+ */
+ public void exitXgTree(XGBoostModelParser.XgTreeContext ctx);
+
+ /**
+ * Enter a parse tree produced by {@link XGBoostModelParser#xgModel}.
+ * @param ctx the parse tree
+ */
+ public void enterXgModel(XGBoostModelParser.XgModelContext ctx);
+
+ /**
+ * Exit a parse tree produced by {@link XGBoostModelParser#xgModel}.
+ * @param ctx the parse tree
+ */
+ public void exitXgModel(XGBoostModelParser.XgModelContext ctx);
+}
\ No newline at end of file
[03/52] [abbrv] ignite git commit: IGNITE-10239 Update navigation and
top menu. - Fixes #5630.
Posted by sb...@apache.org.
IGNITE-10239 Update navigation and top menu. - Fixes #5630.
Signed-off-by: Andrey Novikov <an...@gridgain.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9dc251cd
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9dc251cd
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9dc251cd
Branch: refs/heads/ignite-627
Commit: 9dc251cd036a840313e3fb34aa9e522620fc2365
Parents: 8ef8466
Author: Ilya Borisov <Kl...@gmail.com>
Authored: Mon Dec 17 16:29:24 2018 +0700
Committer: Andrey Novikov <an...@gridgain.com>
Committed: Mon Dec 17 16:29:24 2018 +0700
----------------------------------------------------------------------
.../e2e/testcafe/components/topNavigation.js | 6 +-
.../e2e/testcafe/components/userMenu.js | 2 +-
modules/web-console/frontend/app/app.config.js | 7 +
modules/web-console/frontend/app/app.js | 8 +-
.../connected-clusters-badge/style.scss | 34 ++--
.../connected-clusters-badge/template.pug | 5 +-
.../page-configure/icons/configuration.icon.svg | 13 ++
.../app/components/page-configure/index.js | 193 ------------------
.../app/components/page-configure/index.ts | 194 +++++++++++++++++++
.../page-forgot-password/controller.js | 8 +-
.../app/components/page-forgot-password/run.js | 11 +-
.../components/page-forgot-password/style.scss | 38 ++--
.../page-forgot-password/template.pug | 53 +++--
.../app/components/page-landing/index.js | 11 +-
.../app/components/page-landing/public.pug | 21 ++
.../app/components/page-landing/style.scss | 12 ++
.../app/components/page-landing/template.pug | 8 -
.../page-password-changed/controller.js | 26 ---
.../page-password-changed/controller.ts | 32 +++
.../components/page-password-changed/index.js | 10 +-
.../components/page-password-changed/style.scss | 13 +-
.../page-password-changed/template.pug | 9 +-
.../page-password-reset/controller.js | 11 +-
.../app/components/page-password-reset/index.js | 10 +-
.../components/page-password-reset/style.scss | 15 +-
.../components/page-password-reset/template.pug | 102 ++++------
.../app/components/page-queries/index.js | 100 ----------
.../app/components/page-queries/index.ts | 110 +++++++++++
.../app/components/page-signin/controller.ts | 7 +-
.../frontend/app/components/page-signin/run.ts | 10 +-
.../app/components/page-signin/style.scss | 33 +---
.../app/components/page-signin/template.pug | 73 +++----
.../app/components/page-signup/controller.ts | 11 +-
.../frontend/app/components/page-signup/run.js | 11 +-
.../app/components/page-signup/style.scss | 26 +--
.../app/components/page-signup/template.pug | 36 ++--
.../permanent-notifications/component.ts | 25 +++
.../permanent-notifications/controller.ts | 28 +++
.../components/permanent-notifications/index.ts | 21 ++
.../permanent-notifications/style.scss | 54 ++++++
.../permanent-notifications/template.pug | 23 +++
.../app/components/timed-redirection/style.scss | 1 +
.../components/web-console-footer/component.js | 4 +-
.../web-console-footer-links/component.js | 23 ---
.../web-console-footer-links/style.scss | 31 ---
.../web-console-footer-links/template.pug | 17 --
.../components/web-console-footer/controller.ts | 27 +++
.../app/components/web-console-footer/index.js | 11 +-
.../components/web-console-footer/style.scss | 93 ++++++---
.../components/web-console-footer/template.pug | 20 +-
.../components/web-console-header/component.js | 53 -----
.../components/web-console-header/component.ts | 43 ++++
.../components/demo-mode-button/component.ts | 24 +++
.../components/demo-mode-button/controller.ts | 46 +++++
.../components/demo-mode-button/template.pug | 20 ++
.../components/user-menu/component.ts | 25 +++
.../components/user-menu/controller.ts | 53 +++++
.../components/user-menu/style.scss | 28 +++
.../components/user-menu/template.pug | 26 +++
.../web-console-header-content/component.ts | 25 +++
.../web-console-header-content/controller.ts | 45 +++++
.../web-console-header-content/style.scss | 44 +++++
.../web-console-header-content/template.pug | 24 +++
.../web-console-header-extension/component.js | 22 ---
.../web-console-header-extension/template.pug | 15 --
.../app/components/web-console-header/index.js | 8 +-
.../components/web-console-header/style.scss | 168 +++-------------
.../components/web-console-header/template.pug | 32 ++-
.../components/web-console-sidebar/component.ts | 25 +++
.../web-console-sidebar/controller.ts | 30 +++
.../app/components/web-console-sidebar/index.ts | 25 +++
.../components/web-console-sidebar/style.scss | 44 +++++
.../components/web-console-sidebar/template.pug | 22 +++
.../web-console-sidebar-navigation/component.ts | 28 +++
.../controller.ts | 24 +++
.../web-console-sidebar-navigation/style.scss | 108 +++++++++++
.../web-console-sidebar-navigation/template.pug | 35 ++++
.../web-console-sidebar-overflow/component.ts | 26 +++
.../web-console-sidebar-overflow/controller.ts | 50 +++++
.../web-console-sidebar-overflow/style.scss | 52 +++++
.../web-console-sidebar-overflow/template.pug | 18 ++
.../app/modules/branding/branding.module.js | 10 +-
.../app/modules/branding/branding.service.js | 4 -
.../app/modules/branding/footer.directive.js | 39 ----
.../modules/branding/header-logo.directive.js | 39 ----
.../app/modules/branding/header-logo.pug | 18 --
.../modules/branding/header-title.directive.js | 44 -----
.../branding/powered-by-apache.directive.js | 39 ----
.../app/modules/branding/powered-by-apache.pug | 18 --
.../frontend/app/modules/demo/Demo.module.js | 28 ---
.../app/modules/navbar/Navbar.provider.js | 30 ---
.../app/modules/navbar/navbar.directive.js | 32 ---
.../app/modules/navbar/navbar.module.js | 9 +-
.../app/modules/navbar/userbar.directive.js | 59 ------
.../web-console/frontend/app/services/store.ts | 75 +++++++
.../frontend/app/store/actions/ui.ts | 36 ++++
.../frontend/app/store/actions/user.ts | 24 +++
.../frontend/app/store/effects/ui.ts | 32 +++
modules/web-console/frontend/app/store/index.ts | 48 +++++
.../web-console/frontend/app/store/ofType.ts | 26 +++
.../frontend/app/store/reducers/ui.ts | 50 +++++
.../frontend/app/store/reduxDebug.ts | 45 +++++
.../frontend/app/store/selectors/ui.ts | 29 +++
modules/web-console/frontend/app/types/index.ts | 30 +++
.../public/images/icons/cluster.icon.svg | 10 +
.../images/icons/connectedClusters.icon.svg | 1 -
.../public/images/icons/downloadAgent.icon.svg | 16 ++
.../frontend/public/images/icons/index.js | 5 +-
.../frontend/public/images/icons/menu.icon.svg | 7 +
.../frontend/public/images/icons/sql.icon.svg | 3 +
.../frontend/public/stylesheets/style.scss | 74 +++++--
modules/web-console/frontend/views/base.pug | 11 +-
.../frontend/views/includes/header-left.pug | 42 ----
.../frontend/views/includes/header-right.pug | 35 ----
modules/web-console/frontend/views/public.pug | 20 ++
115 files changed, 2390 insertions(+), 1433 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/e2e/testcafe/components/topNavigation.js
----------------------------------------------------------------------
diff --git a/modules/web-console/e2e/testcafe/components/topNavigation.js b/modules/web-console/e2e/testcafe/components/topNavigation.js
index b4262d0..6db745e 100644
--- a/modules/web-console/e2e/testcafe/components/topNavigation.js
+++ b/modules/web-console/e2e/testcafe/components/topNavigation.js
@@ -17,5 +17,7 @@
import {Selector} from 'testcafe';
-export const configureNavButton = Selector('.wch-nav-item').withText('Configure');
-export const queriesNavButton = Selector('.wch-nav-item').withText('Queries');
+export const toggleMenuButton = Selector('.web-console-header__togle-menu-button');
+
+export const configureNavButton = Selector('.web-console-sidebar-navigation__link[title="Configuration"]');
+export const queriesNavButton = Selector('.web-console-sidebar-navigation__link[title="Queries"]');
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/e2e/testcafe/components/userMenu.js
----------------------------------------------------------------------
diff --git a/modules/web-console/e2e/testcafe/components/userMenu.js b/modules/web-console/e2e/testcafe/components/userMenu.js
index 75246c8..973f21f 100644
--- a/modules/web-console/e2e/testcafe/components/userMenu.js
+++ b/modules/web-console/e2e/testcafe/components/userMenu.js
@@ -17,7 +17,7 @@
import {Selector, t} from 'testcafe';
-const _selector = Selector('[ignite-userbar]');
+const _selector = Selector('user-menu');
export const userMenu = {
_selector,
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/app.config.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/app.config.js b/modules/web-console/frontend/app/app.config.js
index 88bffee..04c02ea 100644
--- a/modules/web-console/frontend/app/app.config.js
+++ b/modules/web-console/frontend/app/app.config.js
@@ -22,6 +22,7 @@ import isNil from 'lodash/isNil';
import isEmpty from 'lodash/isEmpty';
import mixin from 'lodash/mixin';
+import {user as userAction, register as registerStore} from './store';
const nonNil = negate(isNil);
const nonEmpty = negate(isEmpty);
@@ -36,6 +37,8 @@ import validationTemplateUrl from 'views/templates/validation-error.tpl.pug';
const igniteConsoleCfg = angular.module('ignite-console.config', ['ngAnimate', 'mgcrea.ngStrap']);
+igniteConsoleCfg.run(registerStore);
+
// Configure AngularJS animation: do not animate fa-spin.
igniteConsoleCfg.config(['$animateProvider', ($animateProvider) => {
$animateProvider.classNameFilter(/^((?!(fa-spin|ng-animate-disabled)).)*$/);
@@ -133,3 +136,7 @@ igniteConsoleCfg.directive('uiGridSelection', function() {
}
};
});
+
+igniteConsoleCfg.run(['$rootScope', 'Store', ($root, store) => {
+ $root.$on('user', (event, user) => store.dispatch(userAction({...user})));
+}]);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/app.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/app.js b/modules/web-console/frontend/app/app.js
index 2dd2733..e1cbdbb 100644
--- a/modules/web-console/frontend/app/app.js
+++ b/modules/web-console/frontend/app/app.js
@@ -96,6 +96,7 @@ import {CSV} from './services/CSV';
import {$exceptionHandler} from './services/exceptionHandler';
import IGFSs from './services/IGFSs';
import Models from './services/Models';
+import {Store} from './services/store';
import AngularStrapTooltip from './services/AngularStrapTooltip.decorator';
import AngularStrapSelect from './services/AngularStrapSelect.decorator';
@@ -159,6 +160,8 @@ import pageSignup from './components/page-signup';
import pageSignin from './components/page-signin';
import pageForgotPassword from './components/page-forgot-password';
import formSignup from './components/form-signup';
+import sidebar from './components/web-console-sidebar';
+import permanentNotifications from './components/permanent-notifications';
import igniteServices from './services';
@@ -266,7 +269,9 @@ export default angular.module('ignite-console', [
progressLine.name,
formField.name,
formSignup.name,
- timedRedirection.name
+ timedRedirection.name,
+ sidebar.name,
+ permanentNotifications.name
])
.service('$exceptionHandler', $exceptionHandler)
// Directives.
@@ -314,6 +319,7 @@ export default angular.module('ignite-console', [
.service('CSV', CSV)
.service('IGFSs', IGFSs)
.service('Models', Models)
+.service('Store', Store)
// Filters.
.filter('byName', byName)
.filter('bytes', bytes)
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/connected-clusters-badge/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/connected-clusters-badge/style.scss b/modules/web-console/frontend/app/components/connected-clusters-badge/style.scss
index 3b2d202..e46e382 100644
--- a/modules/web-console/frontend/app/components/connected-clusters-badge/style.scss
+++ b/modules/web-console/frontend/app/components/connected-clusters-badge/style.scss
@@ -18,26 +18,26 @@
connected-clusters {
@import "./../../../public/stylesheets/variables.scss";
- div {
- position: absolute;
- top: 0;
- right: 30px;
+ height: 100%;
+ display: flex;
- display: flex;
- align-items: center;
- padding: 3px 10px;
-
- cursor: pointer;
- color: white;
- font-size: 12px;
- line-height: 12px;
+ .connected-cluster-badge__count {
+ color: $ignite-brand-success;
+ margin-left: 5px;
+ }
- background-color: $text-color;
+ button {
+ height: 100%;
+ width: 100%;
+ background: none !important;
+ border: none !important;
+ margin: 0 !important;
+ padding: 0 !important;
+ outline: none !important;
- border-radius: 0 0 4px 4px;
+ display: flex;
+ align-items: center;
- [ignite-icon] {
- margin-right: 6px;
- }
+ font-size: 14px;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/connected-clusters-badge/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/connected-clusters-badge/template.pug b/modules/web-console/frontend/app/components/connected-clusters-badge/template.pug
index 49224e5..dfb4bd9 100644
--- a/modules/web-console/frontend/app/components/connected-clusters-badge/template.pug
+++ b/modules/web-console/frontend/app/components/connected-clusters-badge/template.pug
@@ -14,6 +14,5 @@
See the License for the specific language governing permissions and
limitations under the License.
-div(ng-click='$ctrl.show()')
- svg(ignite-icon='connectedClusters')
- | Connected clusters: {{ $ctrl.connectedClusters }}
+button(type='button' ng-click='$ctrl.show()')
+ | My Connected Clusters: <span class='connected-cluster-badge__count'>{{ $ctrl.connectedClusters }}</span>
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-configure/icons/configuration.icon.svg
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/icons/configuration.icon.svg b/modules/web-console/frontend/app/components/page-configure/icons/configuration.icon.svg
new file mode 100644
index 0000000..7c0ac7a
--- /dev/null
+++ b/modules/web-console/frontend/app/components/page-configure/icons/configuration.icon.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17">
+ <g fill="none" fill-rule="evenodd" transform="translate(0 1)">
+ <rect width="11" height="2" x="9" y="1" fill="currentColor" rx="1"/>
+ <rect width="5" height="2" x="15" y="7" fill="currentColor" rx="1"/>
+ <rect width="8" height="2" x="12" y="13" fill="currentColor" rx="1"/>
+ <rect width="5" height="2" y="1" fill="currentColor" rx="1"/>
+ <rect width="11" height="2" y="7" fill="currentColor" rx="1"/>
+ <rect width="8" height="2" y="13" fill="currentColor" rx="1"/>
+ <circle cx="5" cy="1.776" r="1" stroke="currentColor" stroke-width="2"/>
+ <circle cx="11" cy="7.776" r="1" stroke="currentColor" stroke-width="2"/>
+ <circle cx="8" cy="13.776" r="1" stroke="currentColor" stroke-width="2"/>
+ </g>
+</svg>
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-configure/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/index.js b/modules/web-console/frontend/app/components/page-configure/index.js
deleted file mode 100644
index 531b46c..0000000
--- a/modules/web-console/frontend/app/components/page-configure/index.js
+++ /dev/null
@@ -1,193 +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 angular from 'angular';
-
-import 'angular1-async-filter';
-import {UIRouterRx} from '@uirouter/rx';
-import uiValidate from 'angular-ui-validate';
-
-import component from './component';
-import ConfigureState from './services/ConfigureState';
-import PageConfigure from './services/PageConfigure';
-import ConfigurationDownload from './services/ConfigurationDownload';
-import ConfigChangesGuard from './services/ConfigChangesGuard';
-import ConfigSelectionManager from './services/ConfigSelectionManager';
-import SummaryZipper from './services/SummaryZipper';
-import ConfigurationResource from './services/ConfigurationResource';
-import selectors from './store/selectors';
-import effects from './store/effects';
-
-import projectStructurePreview from './components/modal-preview-project';
-import itemsTable from './components/pc-items-table';
-import pcUiGridFilters from './components/pc-ui-grid-filters';
-import isInCollection from './components/pcIsInCollection';
-import pcValidation from './components/pcValidation';
-import fakeUiCanExit from './components/fakeUICanExit';
-import formUICanExitGuard from './components/formUICanExitGuard';
-import modalImportModels from './components/modal-import-models';
-import buttonImportModels from './components/button-import-models';
-import buttonDownloadProject from './components/button-download-project';
-import buttonPreviewProject from './components/button-preview-project';
-import previewPanel from './components/preview-panel';
-import pcSplitButton from './components/pc-split-button';
-
-import {errorState} from './transitionHooks/errorState';
-import {default as ActivitiesData} from 'app/core/activities/Activities.data';
-
-import 'rxjs/add/operator/withLatestFrom';
-import 'rxjs/add/operator/skip';
-
-import {Observable} from 'rxjs/Observable';
-
-Observable.prototype.debug = function(l) {
- return this.do((v) => console.log(l, v), (e) => console.error(l, e), () => console.log(l, 'completed'));
-};
-
-import {
- editReducer2,
- shortObjectsReducer,
- reducer,
- editReducer,
- loadingReducer,
- itemsEditReducerFactory,
- mapStoreReducerFactory,
- mapCacheReducerFactory,
- basicCachesActionTypes,
- clustersActionTypes,
- shortClustersActionTypes,
- cachesActionTypes,
- shortCachesActionTypes,
- modelsActionTypes,
- shortModelsActionTypes,
- igfssActionTypes,
- shortIGFSsActionTypes,
- refsReducer
-} from './reducer';
-
-import {reducer as reduxDevtoolsReducer, devTools} from './reduxDevtoolsIntegration';
-import {registerStates} from './states';
-
-/**
- * @param {uirouter.UIRouter} $uiRouter
- * @param {ActivitiesData} ActivitiesData
- */
-function registerActivitiesHook($uiRouter, ActivitiesData) {
- $uiRouter.transitionService.onSuccess({to: 'base.configuration.**'}, (transition) => {
- ActivitiesData.post({group: 'configuration', action: transition.targetState().name()});
- });
-}
-
-registerActivitiesHook.$inject = ['$uiRouter', 'IgniteActivitiesData'];
-
-export default angular
- .module('ignite-console.page-configure', [
- 'ui.router',
- 'asyncFilter',
- uiValidate,
- pcUiGridFilters.name,
- projectStructurePreview.name,
- itemsTable.name,
- pcValidation.name,
- modalImportModels.name,
- buttonImportModels.name,
- buttonDownloadProject.name,
- buttonPreviewProject.name,
- previewPanel.name,
- pcSplitButton.name
- ])
- .config(registerStates)
- .config(['DefaultStateProvider', (DefaultState) => {
- DefaultState.setRedirectTo(() => 'base.configuration.overview');
- }])
- .run(registerActivitiesHook)
- .run(['ConfigEffects', 'ConfigureState', '$uiRouter', (ConfigEffects, ConfigureState, $uiRouter) => {
- $uiRouter.plugin(UIRouterRx);
-
- if (devTools) {
- devTools.subscribe((e) => {
- if (e.type === 'DISPATCH' && e.state) ConfigureState.actions$.next(e);
- });
-
- ConfigureState.actions$
- .filter((e) => e.type !== 'DISPATCH')
- .withLatestFrom(ConfigureState.state$.skip(1))
- .subscribe(([action, state]) => devTools.send(action, state));
-
- ConfigureState.addReducer(reduxDevtoolsReducer);
- }
-
- ConfigureState.addReducer(refsReducer({
- models: {at: 'domains', store: 'caches'},
- caches: {at: 'caches', store: 'models'}
- }));
-
- ConfigureState.addReducer((state, action) => Object.assign({}, state, {
- clusterConfiguration: editReducer(state.clusterConfiguration, action),
- configurationLoading: loadingReducer(state.configurationLoading, action),
- basicCaches: itemsEditReducerFactory(basicCachesActionTypes)(state.basicCaches, action),
- clusters: mapStoreReducerFactory(clustersActionTypes)(state.clusters, action),
- shortClusters: mapCacheReducerFactory(shortClustersActionTypes)(state.shortClusters, action),
- caches: mapStoreReducerFactory(cachesActionTypes)(state.caches, action),
- shortCaches: mapCacheReducerFactory(shortCachesActionTypes)(state.shortCaches, action),
- models: mapStoreReducerFactory(modelsActionTypes)(state.models, action),
- shortModels: mapCacheReducerFactory(shortModelsActionTypes)(state.shortModels, action),
- igfss: mapStoreReducerFactory(igfssActionTypes)(state.igfss, action),
- shortIgfss: mapCacheReducerFactory(shortIGFSsActionTypes)(state.shortIgfss, action),
- edit: editReducer2(state.edit, action)
- }));
-
- ConfigureState.addReducer(shortObjectsReducer);
-
- ConfigureState.addReducer((state, action) => {
- switch (action.type) {
- case 'APPLY_ACTIONS_UNDO':
- return action.state;
-
- default:
- return state;
- }
- });
-
- const la = ConfigureState.actions$.scan((acc, action) => [...acc, action], []);
-
- ConfigureState.actions$
- .filter((a) => a.type === 'UNDO_ACTIONS')
- .withLatestFrom(la, ({actions}, actionsWindow, initialState) => {
- return {
- type: 'APPLY_ACTIONS_UNDO',
- state: actionsWindow.filter((a) => !actions.includes(a)).reduce(ConfigureState._combinedReducer, {})
- };
- })
- .do((a) => ConfigureState.dispatchAction(a))
- .subscribe();
- ConfigEffects.connect();
- }])
- .component('pageConfigure', component)
- .directive('pcIsInCollection', isInCollection)
- .directive('fakeUiCanExit', fakeUiCanExit)
- .directive('formUiCanExitGuard', formUICanExitGuard)
- .factory('configSelectionManager', ConfigSelectionManager)
- .service('IgniteSummaryZipper', SummaryZipper)
- .service('IgniteConfigurationResource', ConfigurationResource)
- .service('ConfigSelectors', selectors)
- .service('ConfigEffects', effects)
- .service('ConfigChangesGuard', ConfigChangesGuard)
- .service('PageConfigure', PageConfigure)
- .service('ConfigureState', ConfigureState)
- .service('ConfigurationDownload', ConfigurationDownload)
- .run(errorState);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-configure/index.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/index.ts b/modules/web-console/frontend/app/components/page-configure/index.ts
new file mode 100644
index 0000000..dd2ad20
--- /dev/null
+++ b/modules/web-console/frontend/app/components/page-configure/index.ts
@@ -0,0 +1,194 @@
+/*
+ * 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 angular from 'angular';
+
+import 'angular1-async-filter';
+import {UIRouterRx} from '@uirouter/rx';
+import uiValidate from 'angular-ui-validate';
+
+import component from './component';
+import ConfigureState from './services/ConfigureState';
+import PageConfigure from './services/PageConfigure';
+import ConfigurationDownload from './services/ConfigurationDownload';
+import ConfigChangesGuard from './services/ConfigChangesGuard';
+import ConfigSelectionManager from './services/ConfigSelectionManager';
+import SummaryZipper from './services/SummaryZipper';
+import ConfigurationResource from './services/ConfigurationResource';
+import selectors from './store/selectors';
+import effects from './store/effects';
+
+import projectStructurePreview from './components/modal-preview-project';
+import itemsTable from './components/pc-items-table';
+import pcUiGridFilters from './components/pc-ui-grid-filters';
+import isInCollection from './components/pcIsInCollection';
+import pcValidation from './components/pcValidation';
+import fakeUiCanExit from './components/fakeUICanExit';
+import formUICanExitGuard from './components/formUICanExitGuard';
+import modalImportModels from './components/modal-import-models';
+import buttonImportModels from './components/button-import-models';
+import buttonDownloadProject from './components/button-download-project';
+import buttonPreviewProject from './components/button-preview-project';
+import previewPanel from './components/preview-panel';
+import pcSplitButton from './components/pc-split-button';
+
+import {errorState} from './transitionHooks/errorState';
+import {default as ActivitiesData} from 'app/core/activities/Activities.data';
+
+import 'rxjs/add/operator/withLatestFrom';
+import 'rxjs/add/operator/skip';
+
+import {Observable} from 'rxjs/Observable';
+
+import {navigationMenuItem, AppStore} from '../../store';
+import {default as configurationIcon} from './icons/configuration.icon.svg';
+import {default as IconsService} from '../ignite-icon/service';
+
+Observable.prototype.debug = function(l) {
+ return this.do((v) => console.log(l, v), (e) => console.error(l, e), () => console.log(l, 'completed'));
+};
+
+import {
+ editReducer2,
+ shortObjectsReducer,
+ reducer,
+ editReducer,
+ loadingReducer,
+ itemsEditReducerFactory,
+ mapStoreReducerFactory,
+ mapCacheReducerFactory,
+ basicCachesActionTypes,
+ clustersActionTypes,
+ shortClustersActionTypes,
+ cachesActionTypes,
+ shortCachesActionTypes,
+ modelsActionTypes,
+ shortModelsActionTypes,
+ igfssActionTypes,
+ shortIGFSsActionTypes,
+ refsReducer
+} from './reducer';
+
+import {reducer as reduxDevtoolsReducer, devTools} from './reduxDevtoolsIntegration';
+import {registerStates} from './states';
+
+/**
+ * @param {uirouter.UIRouter} $uiRouter
+ * @param {ActivitiesData} ActivitiesData
+ */
+function registerActivitiesHook($uiRouter, ActivitiesData) {
+ $uiRouter.transitionService.onSuccess({to: 'base.configuration.**'}, (transition) => {
+ ActivitiesData.post({group: 'configuration', action: transition.targetState().name()});
+ });
+}
+
+registerActivitiesHook.$inject = ['$uiRouter', 'IgniteActivitiesData'];
+
+export default angular
+ .module('ignite-console.page-configure', [
+ 'ui.router',
+ 'asyncFilter',
+ uiValidate,
+ pcUiGridFilters.name,
+ projectStructurePreview.name,
+ itemsTable.name,
+ pcValidation.name,
+ modalImportModels.name,
+ buttonImportModels.name,
+ buttonDownloadProject.name,
+ buttonPreviewProject.name,
+ previewPanel.name,
+ pcSplitButton.name
+ ])
+ .config(registerStates)
+ .config(['DefaultStateProvider', (DefaultState) => {
+ DefaultState.setRedirectTo(() => 'base.configuration.overview');
+ }])
+ .run(registerActivitiesHook)
+ .run(['ConfigEffects', 'ConfigureState', '$uiRouter', 'Store', 'IgniteIcon', (ConfigEffects, ConfigureState, $uiRouter, store: AppStore, icons: IconsService) => {
+ icons.registerIcons({configuration: configurationIcon});
+
+ $uiRouter.plugin(UIRouterRx);
+
+ ConfigureState.addReducer(refsReducer({
+ models: {at: 'domains', store: 'caches'},
+ caches: {at: 'caches', store: 'models'}
+ }));
+
+ ConfigureState.addReducer((state, action) => Object.assign({}, state, {
+ clusterConfiguration: editReducer(state.clusterConfiguration, action),
+ configurationLoading: loadingReducer(state.configurationLoading, action),
+ basicCaches: itemsEditReducerFactory(basicCachesActionTypes)(state.basicCaches, action),
+ clusters: mapStoreReducerFactory(clustersActionTypes)(state.clusters, action),
+ shortClusters: mapCacheReducerFactory(shortClustersActionTypes)(state.shortClusters, action),
+ caches: mapStoreReducerFactory(cachesActionTypes)(state.caches, action),
+ shortCaches: mapCacheReducerFactory(shortCachesActionTypes)(state.shortCaches, action),
+ models: mapStoreReducerFactory(modelsActionTypes)(state.models, action),
+ shortModels: mapCacheReducerFactory(shortModelsActionTypes)(state.shortModels, action),
+ igfss: mapStoreReducerFactory(igfssActionTypes)(state.igfss, action),
+ shortIgfss: mapCacheReducerFactory(shortIGFSsActionTypes)(state.shortIgfss, action),
+ edit: editReducer2(state.edit, action)
+ }));
+
+ ConfigureState.addReducer(shortObjectsReducer);
+
+ ConfigureState.addReducer((state, action) => {
+ switch (action.type) {
+ case 'APPLY_ACTIONS_UNDO':
+ return action.state;
+
+ default:
+ return state;
+ }
+ });
+
+ const la = ConfigureState.actions$.scan((acc, action) => [...acc, action], []);
+
+ ConfigureState.actions$
+ .filter((a) => a.type === 'UNDO_ACTIONS')
+ .withLatestFrom(la, ({actions}, actionsWindow, initialState) => {
+ return {
+ type: 'APPLY_ACTIONS_UNDO',
+ state: actionsWindow.filter((a) => !actions.includes(a)).reduce(ConfigureState._combinedReducer, {})
+ };
+ })
+ .do((a) => ConfigureState.dispatchAction(a))
+ .subscribe();
+ ConfigEffects.connect();
+
+ store.dispatch(navigationMenuItem({
+ activeSref: 'base.configuration.**',
+ icon: 'configuration',
+ label: 'Configuration',
+ order: 1,
+ sref: 'base.configuration.overview'
+ }));
+ }])
+ .component('pageConfigure', component)
+ .directive('pcIsInCollection', isInCollection)
+ .directive('fakeUiCanExit', fakeUiCanExit)
+ .directive('formUiCanExitGuard', formUICanExitGuard)
+ .factory('configSelectionManager', ConfigSelectionManager)
+ .service('IgniteSummaryZipper', SummaryZipper)
+ .service('IgniteConfigurationResource', ConfigurationResource)
+ .service('ConfigSelectors', selectors)
+ .service('ConfigEffects', effects)
+ .service('ConfigChangesGuard', ConfigChangesGuard)
+ .service('PageConfigure', PageConfigure)
+ .service('ConfigureState', ConfigureState)
+ .service('ConfigurationDownload', ConfigurationDownload)
+ .run(errorState);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-forgot-password/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-forgot-password/controller.js b/modules/web-console/frontend/app/components/page-forgot-password/controller.js
index 7d06773..86597af 100644
--- a/modules/web-console/frontend/app/components/page-forgot-password/controller.js
+++ b/modules/web-console/frontend/app/components/page-forgot-password/controller.js
@@ -24,22 +24,26 @@ export default class PageForgotPassword {
data = {email: null};
/** @type {string} */
serverError = null;
+ /** @type {JQLite} */
+ el;
- static $inject = ['Auth', 'IgniteMessages', 'IgniteFormUtils'];
+ static $inject = ['Auth', 'IgniteMessages', 'IgniteFormUtils', '$element'];
/**
* @param {import('app/modules/user/Auth.service').default} Auth
*/
- constructor(Auth, IgniteMessages, IgniteFormUtils) {
+ constructor(Auth, IgniteMessages, IgniteFormUtils, el) {
this.Auth = Auth;
this.IgniteMessages = IgniteMessages;
this.IgniteFormUtils = IgniteFormUtils;
+ this.el = el;
}
/** @param {import('./types').IForgotPasswordFormController} form */
canSubmitForm(form) {
return form.$error.server ? true : !form.$invalid;
}
$postLink() {
+ this.el.addClass('public-page');
this.form.email.$validators.server = () => !this.serverError;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-forgot-password/run.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-forgot-password/run.js b/modules/web-console/frontend/app/components/page-forgot-password/run.js
index c7ee6a6..d9259e9 100644
--- a/modules/web-console/frontend/app/components/page-forgot-password/run.js
+++ b/modules/web-console/frontend/app/components/page-forgot-password/run.js
@@ -15,6 +15,8 @@
* limitations under the License.
*/
+import publicTemplate from '../../../views/public.pug';
+
/**
* @param {import("@uirouter/angularjs").UIRouter} $uiRouter
*/
@@ -23,7 +25,14 @@ export function registerState($uiRouter) {
const state = {
name: 'forgotPassword',
url: '/forgot-password',
- component: 'pageForgotPassword',
+ views: {
+ '': {
+ template: publicTemplate
+ },
+ 'page@forgotPassword': {
+ component: 'pageForgotPassword'
+ }
+ },
unsaved: true,
tfMetaTags: {
title: 'Forgot Password'
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-forgot-password/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-forgot-password/style.scss b/modules/web-console/frontend/app/components/page-forgot-password/style.scss
index 86425c1..7893c62 100644
--- a/modules/web-console/frontend/app/components/page-forgot-password/style.scss
+++ b/modules/web-console/frontend/app/components/page-forgot-password/style.scss
@@ -20,34 +20,22 @@ page-forgot-password {
flex-direction: column;
flex: 1 0 auto;
- section {
- margin-left: auto;
- margin-right: auto;
- width: 530px;
-
- h3 {
- font-size: 38px;
- font-weight: 300;
- margin: 30px 0 30px;
- }
-
- p {
- margin-bottom: 20px;
- }
+ p {
+ margin-bottom: 20px;
+ }
- .form-field {
- margin: 10px 0;
- }
+ .form-field {
+ margin: 10px 0;
+ }
- .form-footer {
- padding: 15px 0;
- text-align: right;
- display: flex;
- align-items: center;
+ .form-footer {
+ padding: 15px 0;
+ text-align: right;
+ display: flex;
+ align-items: center;
- .btn-ignite {
- margin-left: auto;
- }
+ .btn-ignite {
+ margin-left: auto;
}
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-forgot-password/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-forgot-password/template.pug b/modules/web-console/frontend/app/components/page-forgot-password/template.pug
index 82e7898..309e9b9 100644
--- a/modules/web-console/frontend/app/components/page-forgot-password/template.pug
+++ b/modules/web-console/frontend/app/components/page-forgot-password/template.pug
@@ -16,34 +16,25 @@
include /app/helpers/jade/mixins
-web-console-header
- web-console-header-left
- ignite-header-title
-
-.container--responsive.body-container
- section
- - const form = '$ctrl.form'
- h3 Forgot password?
- p Enter the email address for your account & we'll email you a link to reset your password.
- form(name=form novalidate ng-submit='$ctrl.remindPassword()')
- +form-field__email({
- label: 'Email:',
- model: '$ctrl.data.email',
- name: '"email"',
- placeholder: 'Input email',
- required: true
- })(
- ng-model-options='{allowInvalid: true}'
- autocomplete='email'
- ignite-auto-focus
- tabindex='0'
- )
- +form-field__error({error: 'server', message: `{{$ctrl.serverError}}`})
- footer.form-footer
- a(ui-sref='signin') Back to sign in
- button.btn-ignite.btn-ignite--primary(
- tabindex='1'
- type='submit'
- ) Send it to me
-
-web-console-footer
+h3.public-page__title Forgot password?
+p Enter the email address for your account & we'll email you a link to reset your password.
+form(name='$ctrl.form' novalidate ng-submit='$ctrl.remindPassword()')
+ +form-field__email({
+ label: 'Email:',
+ model: '$ctrl.data.email',
+ name: '"email"',
+ placeholder: 'Input email',
+ required: true
+ })(
+ ng-model-options='{allowInvalid: true}'
+ autocomplete='email'
+ ignite-auto-focus
+ tabindex='0'
+ )
+ +form-field__error({error: 'server', message: `{{$ctrl.serverError}}`})
+ footer.form-footer
+ a(ui-sref='signin') Back to sign in
+ button.btn-ignite.btn-ignite--primary(
+ tabindex='1'
+ type='submit'
+ ) Send it to me
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-landing/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-landing/index.js b/modules/web-console/frontend/app/components/page-landing/index.js
index 8f678f3..cabb5bb 100644
--- a/modules/web-console/frontend/app/components/page-landing/index.js
+++ b/modules/web-console/frontend/app/components/page-landing/index.js
@@ -17,6 +17,7 @@
import angular from 'angular';
+import baseTemplate from './public.pug';
import template from './template.pug';
import './style.scss';
@@ -44,7 +45,15 @@ export default angular
$stateProvider
.state('landing', {
url: '/',
- template: '<page-landing></page-landing>',
+ views: {
+ '@': {
+ template: baseTemplate
+ },
+ 'page@landing': {
+ component: 'pageLanding'
+ }
+ },
+ // template: '<page-landing></page-landing>',
redirectTo: (trans) => {
return trans.injector().get('User').read()
.then(() => {
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-landing/public.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-landing/public.pug b/modules/web-console/frontend/app/components/page-landing/public.pug
new file mode 100644
index 0000000..d9153f5
--- /dev/null
+++ b/modules/web-console/frontend/app/components/page-landing/public.pug
@@ -0,0 +1,21 @@
+//-
+ 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.
+
+web-console-header(hide-menu-button='true')
+ .web-console-header-content__title Management console for Apache Ignite
+ .page-landing__button-signin.btn-ignite.btn-ignite--primary(ui-sref='signin') Sign In
+.content(ui-view='page')
+web-console-footer.web-console-footer__page-bottom
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-landing/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-landing/style.scss b/modules/web-console/frontend/app/components/page-landing/style.scss
index a92206b..90f3dda 100644
--- a/modules/web-console/frontend/app/components/page-landing/style.scss
+++ b/modules/web-console/frontend/app/components/page-landing/style.scss
@@ -24,8 +24,20 @@
@include custom_btn;
}
+.page-landing__button-signin {
+ align-self: center;
+ margin-left: 30px;
+ margin-right: var(--page-side-padding) !important;
+ min-width: 80px;
+ font-weight: 500;
+ padding: 10px 25px !important;
+ flex: 0 0 auto;
+}
+
page-landing {
font-family: Roboto;
+ display: block;
+ margin: 0 calc(var(--page-side-padding) * -1) calc(var(--page-side-padding) * -1);
.btn-custom {
@include custom_btn;
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-landing/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-landing/template.pug b/modules/web-console/frontend/app/components/page-landing/template.pug
index 0fc1f9c..bf926fa 100644
--- a/modules/web-console/frontend/app/components/page-landing/template.pug
+++ b/modules/web-console/frontend/app/components/page-landing/template.pug
@@ -14,12 +14,6 @@
See the License for the specific language governing permissions and
limitations under the License.
-web-console-header
- web-console-header-left
- ignite-header-title
- web-console-header-right
- a#signin_show.btn-ignite.btn-ignite--primary(ui-sref='signin') Sign In
-
section.intro-container-wrapper
.container
.col-lg-6.col-md-6.col-sm-6.col-xs-12.intro-content
@@ -62,5 +56,3 @@ section.features-container-wrapper
p The Web Console allows you to have accounts with different roles.
.align-center.text-center
a.btn.btn-lg.btn-primary.btn-custom(ui-sref='signup') Get Started
-
-web-console-footer
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-password-changed/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-password-changed/controller.js b/modules/web-console/frontend/app/components/page-password-changed/controller.js
deleted file mode 100644
index e3b0a03..0000000
--- a/modules/web-console/frontend/app/components/page-password-changed/controller.js
+++ /dev/null
@@ -1,26 +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.
- */
-
-export default class {
- static $inject = ['$state', '$timeout'];
-
- constructor($state, $timeout) {
- $timeout(() => {
- $state.go('signin');
- }, 10000);
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-password-changed/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-password-changed/controller.ts b/modules/web-console/frontend/app/components/page-password-changed/controller.ts
new file mode 100644
index 0000000..9696a09
--- /dev/null
+++ b/modules/web-console/frontend/app/components/page-password-changed/controller.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 {StateService} from '@uirouter/angularjs';
+
+export default class implements ng.IPostLink {
+ static $inject = ['$state', '$timeout', '$element'];
+
+ constructor($state: StateService, $timeout: ng.ITimeoutService, private el: JQLite) {
+ $timeout(() => {
+ $state.go('signin');
+ }, 10000);
+ }
+
+ $postLink() {
+ this.el.addClass('public-page');
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-password-changed/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-password-changed/index.js b/modules/web-console/frontend/app/components/page-password-changed/index.js
index 7c244be..903138f 100644
--- a/modules/web-console/frontend/app/components/page-password-changed/index.js
+++ b/modules/web-console/frontend/app/components/page-password-changed/index.js
@@ -19,6 +19,7 @@ import angular from 'angular';
import template from './template.pug';
import controller from './controller';
+import publicTemplate from '../../../views/public.pug';
import './style.scss';
@@ -32,7 +33,14 @@ export default angular
.config(['$stateProvider', ($stateProvider) => {
$stateProvider.state('password.send', {
url: '/changed',
- component: 'pagePasswordChanged',
+ views: {
+ '@': {
+ template: publicTemplate
+ },
+ 'page@password.send': {
+ component: 'pagePasswordChanged'
+ }
+ },
tfMetaTags: {
title: 'Password send'
},
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-password-changed/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-password-changed/style.scss b/modules/web-console/frontend/app/components/page-password-changed/style.scss
index eeb44ec..e32e9b2 100644
--- a/modules/web-console/frontend/app/components/page-password-changed/style.scss
+++ b/modules/web-console/frontend/app/components/page-password-changed/style.scss
@@ -19,17 +19,10 @@ page-password-changed {
display: flex;
flex: 1 0 auto;
flex-direction: column;
-
min-height: 100%;
-
- font-family: Roboto;
-
- .body-container {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- }
+ justify-content: center;
+ align-items: center;
+ max-width: initial !important;
h2 {
margin-bottom: 30px;
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-password-changed/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-password-changed/template.pug b/modules/web-console/frontend/app/components/page-password-changed/template.pug
index 7d2d986..82c2cc1 100644
--- a/modules/web-console/frontend/app/components/page-password-changed/template.pug
+++ b/modules/web-console/frontend/app/components/page-password-changed/template.pug
@@ -14,9 +14,8 @@
See the License for the specific language governing permissions and
limitations under the License.
-.container.body-container
- h2 Ready!
+h2 Ready!
- p
- | Further instructions for password reset have been sent to your e-mail address.#[br]
- | You'll be redirected back automatically in a few seconds. If not, please #[a(ui-sref='signin') click here].
+p
+ | Further instructions for password reset have been sent to your e-mail address.#[br]
+ | You'll be redirected back automatically in a few seconds. If not, please #[a(ui-sref='signin') click here].
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-password-reset/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-password-reset/controller.js b/modules/web-console/frontend/app/components/page-password-reset/controller.js
index 53d6c69..b69e566 100644
--- a/modules/web-console/frontend/app/components/page-password-reset/controller.js
+++ b/modules/web-console/frontend/app/components/page-password-reset/controller.js
@@ -16,7 +16,9 @@
*/
export default class {
- static $inject = ['$modal', '$http', '$state', 'IgniteMessages'];
+ static $inject = ['$modal', '$http', '$state', 'IgniteMessages', '$element'];
+ /** @type {JQLite} */
+ el;
/**
* @param {mgcrea.ngStrap.modal.IModalService} $modal
@@ -24,10 +26,15 @@ export default class {
* @param {import('@uirouter/angularjs').StateService} $state
* @param {ReturnType<typeof import('app/services/Messages.service').default>} Messages
*/
- constructor($modal, $http, $state, Messages) {
+ constructor($modal, $http, $state, Messages, el) {
this.$http = $http;
this.$state = $state;
this.Messages = Messages;
+ this.el = el;
+ }
+
+ $postLink() {
+ this.el.addClass('public-page');
}
$onInit() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-password-reset/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-password-reset/index.js b/modules/web-console/frontend/app/components/page-password-reset/index.js
index e1042a6..c07fa23 100644
--- a/modules/web-console/frontend/app/components/page-password-reset/index.js
+++ b/modules/web-console/frontend/app/components/page-password-reset/index.js
@@ -22,6 +22,7 @@ import _ from 'lodash';
import template from './template.pug';
import controller from './controller';
+import publicTemplate from '../../../views/public.pug';
import './style.scss';
@@ -42,7 +43,14 @@ export default angular
})
.state('password.reset', {
url: '/reset?{token}',
- component: 'pagePasswordReset',
+ views: {
+ '@': {
+ template: publicTemplate
+ },
+ 'page@password.reset': {
+ component: 'pagePasswordReset'
+ }
+ },
redirectTo: (trans) => {
if (_.isEmpty(trans.params('to').token))
return 'signin';
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-password-reset/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-password-reset/style.scss b/modules/web-console/frontend/app/components/page-password-reset/style.scss
index 75f758e..05ef953 100644
--- a/modules/web-console/frontend/app/components/page-password-reset/style.scss
+++ b/modules/web-console/frontend/app/components/page-password-reset/style.scss
@@ -20,12 +20,19 @@ page-password-reset {
flex: 1 0 auto;
flex-direction: column;
- footer {
+ .form-footer {
+ padding: 15px 0;
+ text-align: right;
display: flex;
- justify-content: flex-end;
+ align-items: center;
+
+ .btn-ignite {
+ margin-left: auto;
+ }
}
- .btn-ignite + .btn-ignite {
- margin-left: 10px;
+ form {
+ display: grid;
+ grid-gap: 10px;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-password-reset/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-password-reset/template.pug b/modules/web-console/frontend/app/components/page-password-reset/template.pug
index 1acfab8..c0df3c9 100644
--- a/modules/web-console/frontend/app/components/page-password-reset/template.pug
+++ b/modules/web-console/frontend/app/components/page-password-reset/template.pug
@@ -16,65 +16,45 @@
include /app/helpers/jade/mixins
-web-console-header
- web-console-header-left
- ignite-header-title
+//- This doesn't seem to do anything 😵
+.main-content(ng-if='error')
+ .text-center
+ p {{::$ctrl.ui.error}}
+h3.public-page__title(ng-if-start='$ctrl.ui.token && !$ctrl.ui.error') Reset Password
+form.page-password-reset__grid(name='$ctrl.form' ng-init='reset_info.token = token' ng-if-end)
+ +form-field__email({
+ label: 'E-mail:',
+ model: '$ctrl.ui.email',
+ disabled: true
+ })
+
+ +form-field__password({
+ label: 'New password:',
+ model: '$ctrl.ui.password',
+ name: '"password"',
+ required: true,
+ placeholder: 'New password'
+ })(
+ ignite-auto-focus
+ ignite-on-enter-focus-move='passwordConfirmInput'
+ )
+ +form-field__password({
+ label: 'Confirm password:',
+ model: 'confirm',
+ name: '"passwordConfirm"',
+ required: true,
+ placeholder: 'Confirm new password'
+ })(
+ ignite-on-enter-focus-move='resetForm.$valid && resetPassword(user_info)'
+ ignite-match='$ctrl.ui.password'
+ )
+
+ footer.form-footer
+ a(ui-sref='default-state') Cancel
+ button.btn-ignite.btn-ignite--primary(
+ ng-disabled='$ctrl.form.$invalid'
+ ng-click='$ctrl.resetPassword()'
+ )
+ svg.icon-left(ignite-icon='checkmark')
+ | Save Changes
-.container.body-container
- .row
- .main-content(ng-if='error')
- .text-center
- p {{::$ctrl.ui.error}}
- div(ng-if='$ctrl.ui.token && !$ctrl.ui.error')
- header.header-with-selector
- div
- h1 Reset Password
-
- -var form = '$ctrl.form'
- form.theme--ignite(name='$ctrl.form' ng-init='reset_info.token = token')
- .row
- .col-50
- +form-field__email({
- label: 'E-mail:',
- model: '$ctrl.ui.email',
- disabled: true
- })
-
- .row
- .col-50
- +form-field__password({
- label: 'New password:',
- model: '$ctrl.ui.password',
- name: '"password"',
- required: true,
- placeholder: 'New password'
- })(
- ignite-auto-focus
- ignite-on-enter-focus-move='passwordConfirmInput'
- )
-
- .row
- .col-50
- +form-field__password({
- label: 'Confirm password:',
- model: 'confirm',
- name: '"passwordConfirm"',
- required: true,
- placeholder: 'Confirm new password'
- })(
- ignite-on-enter-focus-move='resetForm.$valid && resetPassword(user_info)'
- ignite-match='$ctrl.ui.password'
- )
-
- hr
-
- footer
- a.btn-ignite.btn-ignite--link-success(type='button' ui-sref='default-state') Cancel
- button.btn-ignite.btn-ignite--success(
- ng-disabled='$ctrl.form.$invalid'
- ng-click='$ctrl.resetPassword()'
- )
- svg.icon-left(ignite-icon='checkmark')
- | Save Changes
-
-web-console-footer
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-queries/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-queries/index.js b/modules/web-console/frontend/app/components/page-queries/index.js
deleted file mode 100644
index ba9e511..0000000
--- a/modules/web-console/frontend/app/components/page-queries/index.js
+++ /dev/null
@@ -1,100 +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 './style.scss';
-
-import angular from 'angular';
-
-import queriesNotebooksList from './components/queries-notebooks-list';
-import queriesNotebook from './components/queries-notebook';
-import pageQueriesCmp from './component';
-import {default as ActivitiesData} from 'app/core/activities/Activities.data';
-import Notebook from './notebook.service';
-
-/**
- * @param {uirouter.UIRouter} $uiRouter
- * @param {ActivitiesData} ActivitiesData
- */
-function registerActivitiesHook($uiRouter, ActivitiesData) {
- $uiRouter.transitionService.onSuccess({to: 'base.sql.**'}, (transition) => {
- ActivitiesData.post({group: 'sql', action: transition.targetState().name()});
- });
-}
-
-registerActivitiesHook.$inject = ['$uiRouter', 'IgniteActivitiesData'];
-
-export default angular.module('ignite-console.sql', [
- 'ui.router',
- queriesNotebooksList.name,
- queriesNotebook.name
-])
- .component('pageQueries', pageQueriesCmp)
- .component('pageQueriesSlot', {
- require: {
- pageQueries: '^pageQueries'
- },
- bindings: {
- slotName: '<'
- },
- controller: class {
- static $inject = ['$transclude', '$timeout'];
-
- constructor($transclude, $timeout) {
- this.$transclude = $transclude;
- this.$timeout = $timeout;
- }
-
- $postLink() {
- this.$transclude((clone) => {
- this.pageQueries[this.slotName].empty();
- clone.appendTo(this.pageQueries[this.slotName]);
- });
- }
- },
- transclude: true
- })
- .service('IgniteNotebook', Notebook)
- .config(['$stateProvider', ($stateProvider) => {
- // set up the states
- $stateProvider
- .state('base.sql', {
- abstract: true
- })
- .state('base.sql.tabs', {
- url: '/queries',
- component: 'pageQueries',
- redirectTo: 'base.sql.tabs.notebooks-list',
- permission: 'query'
- })
- .state('base.sql.tabs.notebooks-list', {
- url: '/notebooks',
- component: 'queriesNotebooksList',
- permission: 'query',
- tfMetaTags: {
- title: 'Notebooks'
- }
- })
- .state('base.sql.notebook', {
- url: '/notebook/{noteId}',
- component: 'queriesNotebook',
- permission: 'query',
- tfMetaTags: {
- title: 'Query notebook'
- }
- });
- }])
- .run(registerActivitiesHook);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-queries/index.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-queries/index.ts b/modules/web-console/frontend/app/components/page-queries/index.ts
new file mode 100644
index 0000000..2e25cb0
--- /dev/null
+++ b/modules/web-console/frontend/app/components/page-queries/index.ts
@@ -0,0 +1,110 @@
+/*
+ * 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 './style.scss';
+
+import angular from 'angular';
+
+import queriesNotebooksList from './components/queries-notebooks-list';
+import queriesNotebook from './components/queries-notebook';
+import pageQueriesCmp from './component';
+import {default as ActivitiesData} from 'app/core/activities/Activities.data';
+import Notebook from './notebook.service';
+import {navigationMenuItem, AppStore} from '../../store';
+
+/**
+ * @param {uirouter.UIRouter} $uiRouter
+ * @param {ActivitiesData} ActivitiesData
+ */
+function registerActivitiesHook($uiRouter, ActivitiesData) {
+ $uiRouter.transitionService.onSuccess({to: 'base.sql.**'}, (transition) => {
+ ActivitiesData.post({group: 'sql', action: transition.targetState().name()});
+ });
+}
+
+registerActivitiesHook.$inject = ['$uiRouter', 'IgniteActivitiesData'];
+
+export default angular.module('ignite-console.sql', [
+ 'ui.router',
+ queriesNotebooksList.name,
+ queriesNotebook.name
+])
+ .run(['Store', (store: AppStore) => {
+ store.dispatch(navigationMenuItem({
+ activeSref: 'base.sql.**',
+ icon: 'sql',
+ label: 'Queries',
+ order: 2,
+ sref: 'base.sql.tabs.notebooks-list'
+ }));
+ }])
+ .component('pageQueries', pageQueriesCmp)
+ .component('pageQueriesSlot', {
+ require: {
+ pageQueries: '^pageQueries'
+ },
+ bindings: {
+ slotName: '<'
+ },
+ controller: class {
+ static $inject = ['$transclude', '$timeout'];
+
+ constructor($transclude, $timeout) {
+ this.$transclude = $transclude;
+ this.$timeout = $timeout;
+ }
+
+ $postLink() {
+ this.$transclude((clone) => {
+ this.pageQueries[this.slotName].empty();
+ clone.appendTo(this.pageQueries[this.slotName]);
+ });
+ }
+ },
+ transclude: true
+ })
+ .service('IgniteNotebook', Notebook)
+ .config(['$stateProvider', ($stateProvider) => {
+ // set up the states
+ $stateProvider
+ .state('base.sql', {
+ abstract: true
+ })
+ .state('base.sql.tabs', {
+ url: '/queries',
+ component: 'pageQueries',
+ redirectTo: 'base.sql.tabs.notebooks-list',
+ permission: 'query'
+ })
+ .state('base.sql.tabs.notebooks-list', {
+ url: '/notebooks',
+ component: 'queriesNotebooksList',
+ permission: 'query',
+ tfMetaTags: {
+ title: 'Notebooks'
+ }
+ })
+ .state('base.sql.notebook', {
+ url: '/notebook/{noteId}',
+ component: 'queriesNotebook',
+ permission: 'query',
+ tfMetaTags: {
+ title: 'Query notebook'
+ }
+ });
+ }])
+ .run(registerActivitiesHook);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-signin/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-signin/controller.ts b/modules/web-console/frontend/app/components/page-signin/controller.ts
index c461b86..18fee0b 100644
--- a/modules/web-console/frontend/app/components/page-signin/controller.ts
+++ b/modules/web-console/frontend/app/components/page-signin/controller.ts
@@ -27,7 +27,7 @@ interface ISigninFormController extends ng.IFormController {
password: ng.INgModelController
}
-export default class {
+export default class implements ng.IPostLink {
data: ISiginData = {
email: null,
password: null
@@ -37,15 +37,16 @@ export default class {
serverError: string = null;
- static $inject = ['Auth', 'IgniteMessages', 'IgniteFormUtils'];
+ static $inject = ['Auth', 'IgniteMessages', 'IgniteFormUtils', '$element'];
- constructor(private Auth: AuthService, private IgniteMessages, private IgniteFormUtils) {}
+ constructor(private Auth: AuthService, private IgniteMessages, private IgniteFormUtils, private el: JQLite) {}
canSubmitForm(form: ISigninFormController) {
return form.$error.server ? true : !form.$invalid;
}
$postLink() {
+ this.el.addClass('public-page');
this.form.email.$validators.server = () => !this.serverError;
this.form.password.$validators.server = () => !this.serverError;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-signin/run.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-signin/run.ts b/modules/web-console/frontend/app/components/page-signin/run.ts
index aa5647c..4c0a1e6 100644
--- a/modules/web-console/frontend/app/components/page-signin/run.ts
+++ b/modules/web-console/frontend/app/components/page-signin/run.ts
@@ -15,6 +15,7 @@
* limitations under the License.
*/
+import publicTemplate from '../../../views/public.pug';
import {UIRouter} from '@uirouter/angularjs';
import {IIgniteNg1StateDeclaration} from 'app/types';
@@ -22,7 +23,14 @@ export function registerState($uiRouter: UIRouter) {
const state: IIgniteNg1StateDeclaration = {
url: '/signin',
name: 'signin',
- component: 'pageSignin',
+ views: {
+ '': {
+ template: publicTemplate
+ },
+ 'page@signin': {
+ component: 'pageSignin'
+ }
+ },
unsaved: true,
redirectTo: (trans) => {
const skipStates = new Set(['signup', 'forgotPassword', 'landing']);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-signin/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-signin/style.scss b/modules/web-console/frontend/app/components/page-signin/style.scss
index 51da101..729d439 100644
--- a/modules/web-console/frontend/app/components/page-signin/style.scss
+++ b/modules/web-console/frontend/app/components/page-signin/style.scss
@@ -18,32 +18,19 @@
page-signin {
display: flex;
flex-direction: column;
- flex: 1 0 auto;
- section {
- margin-left: auto;
- margin-right: auto;
- width: 530px;
-
- h3 {
- font-size: 38px;
- font-weight: 300;
- margin: 30px 0 30px;
- }
-
- .form-field {
- margin: 10px 0;
- }
+ .form-field {
+ margin: 10px 0;
+ }
- .form-footer {
- padding: 15px 0;
- text-align: right;
- display: flex;
- align-items: center;
+ .form-footer {
+ padding: 15px 0;
+ text-align: right;
+ display: flex;
+ align-items: center;
- .btn-ignite {
- margin-left: auto;
- }
+ .btn-ignite {
+ margin-left: auto;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-signin/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-signin/template.pug b/modules/web-console/frontend/app/components/page-signin/template.pug
index b31a9bd..2a128a0 100644
--- a/modules/web-console/frontend/app/components/page-signin/template.pug
+++ b/modules/web-console/frontend/app/components/page-signin/template.pug
@@ -16,44 +16,35 @@
include /app/helpers/jade/mixins
-web-console-header
- web-console-header-left
- ignite-header-title
-
-.container--responsive.body-container
- section
- -var form = '$ctrl.form'
- h3 Sign In
- form(name=form novalidate ng-submit='$ctrl.signin()')
- +form-field__email({
- label: 'Email:',
- model: '$ctrl.data.email',
- name: '"email"',
- placeholder: 'Input email',
- required: true
- })(
- ng-model-options='{allowInvalid: true}'
- autocomplete='email'
- ignite-auto-focus
- )
- +form-field__error({error: 'server', message: `{{$ctrl.serverError}}`})
- +form-field__password({
- label: 'Password:',
- model: '$ctrl.data.password',
- name: '"password"',
- placeholder: 'Input password',
- required: true
- })(
- ng-model-options='{allowInvalid: true}'
- autocomplete='current-password'
- )
- +form-field__error({error: 'server', message: `{{$ctrl.serverError}}`})
- footer.form-footer
- a(ui-sref='forgotPassword({email: $ctrl.data.email})') Forgot password?
- button.btn-ignite.btn-ignite--primary(
- type='submit'
- ) Sign In
- footer.page-signin__no-account-message
- | Don't have an account? #[a(ui-sref='signup') Get started]
-
-web-console-footer
+h3.public-page__title Sign In
+form(name='$ctrl.form' novalidate ng-submit='$ctrl.signin()')
+ +form-field__email({
+ label: 'Email:',
+ model: '$ctrl.data.email',
+ name: '"email"',
+ placeholder: 'Input email',
+ required: true
+ })(
+ ng-model-options='{allowInvalid: true}'
+ autocomplete='email'
+ ignite-auto-focus
+ )
+ +form-field__error({error: 'server', message: `{{$ctrl.serverError}}`})
+ +form-field__password({
+ label: 'Password:',
+ model: '$ctrl.data.password',
+ name: '"password"',
+ placeholder: 'Input password',
+ required: true
+ })(
+ ng-model-options='{allowInvalid: true}'
+ autocomplete='current-password'
+ )
+ +form-field__error({error: 'server', message: `{{$ctrl.serverError}}`})
+ footer.form-footer
+ a(ui-sref='forgotPassword({email: $ctrl.data.email})') Forgot password?
+ button.btn-ignite.btn-ignite--primary(
+ type='submit'
+ ) Sign In
+footer.page-signin__no-account-message
+ | Don't have an account? #[a(ui-sref='signup') Get started]
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-signup/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-signup/controller.ts b/modules/web-console/frontend/app/components/page-signup/controller.ts
index ddf77be..93d9987 100644
--- a/modules/web-console/frontend/app/components/page-signup/controller.ts
+++ b/modules/web-console/frontend/app/components/page-signup/controller.ts
@@ -20,7 +20,7 @@ import MessagesFactory from '../../services/Messages.service';
import FormUtilsFactoryFactory from '../../services/FormUtils.service';
import {ISignupData} from '../form-signup';
-export default class PageSignup {
+export default class PageSignup implements ng.IPostLink {
form: ng.IFormController;
data: ISignupData = {
@@ -34,14 +34,19 @@ export default class PageSignup {
serverError: string | null = null;
- static $inject = ['Auth', 'IgniteMessages', 'IgniteFormUtils'];
+ static $inject = ['Auth', 'IgniteMessages', 'IgniteFormUtils', '$element'];
constructor(
private Auth: Auth,
private IgniteMessages: ReturnType<typeof MessagesFactory>,
- private IgniteFormUtils: ReturnType<typeof FormUtilsFactoryFactory>
+ private IgniteFormUtils: ReturnType<typeof FormUtilsFactoryFactory>,
+ private el: JQLite
) {}
+ $postLink() {
+ this.el.addClass('public-page');
+ }
+
canSubmitForm(form: PageSignup['form']) {
return form.$error.server ? true : !form.$invalid;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-signup/run.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-signup/run.js b/modules/web-console/frontend/app/components/page-signup/run.js
index 1d04fa2..bd27638 100644
--- a/modules/web-console/frontend/app/components/page-signup/run.js
+++ b/modules/web-console/frontend/app/components/page-signup/run.js
@@ -15,6 +15,8 @@
* limitations under the License.
*/
+import publicTemplate from '../../../views/public.pug';
+
/**
* @param {import("@uirouter/angularjs").UIRouter} $uiRouter
*/
@@ -23,7 +25,14 @@ export function registerState($uiRouter) {
const state = {
name: 'signup',
url: '/signup',
- component: 'pageSignup',
+ views: {
+ '': {
+ template: publicTemplate
+ },
+ 'page@signup': {
+ component: 'pageSignup'
+ }
+ },
unsaved: true,
tfMetaTags: {
title: 'Sign Up'
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-signup/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-signup/style.scss b/modules/web-console/frontend/app/components/page-signup/style.scss
index 98c4729..0930036 100644
--- a/modules/web-console/frontend/app/components/page-signup/style.scss
+++ b/modules/web-console/frontend/app/components/page-signup/style.scss
@@ -20,26 +20,14 @@ page-signup {
flex-direction: column;
flex: 1 0 auto;
- section {
- h3 {
- font-size: 38px;
- font-weight: 300;
- margin: 30px 0 30px;
- }
-
- margin-left: auto;
- margin-right: auto;
- width: 530px;
-
- form footer {
- padding: 15px 0;
- text-align: right;
- display: flex;
- align-items: center;
+ form footer {
+ padding: 15px 0;
+ text-align: right;
+ display: flex;
+ align-items: center;
- .btn-ignite {
- margin-left: auto;
- }
+ .btn-ignite {
+ margin-left: auto;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/page-signup/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-signup/template.pug b/modules/web-console/frontend/app/components/page-signup/template.pug
index 5584dfc..686079a 100644
--- a/modules/web-console/frontend/app/components/page-signup/template.pug
+++ b/modules/web-console/frontend/app/components/page-signup/template.pug
@@ -14,26 +14,16 @@
See the License for the specific language governing permissions and
limitations under the License.
-include /app/helpers/jade/mixins
-
-web-console-header
- web-console-header-left
- ignite-header-title
-
-.container--responsive.body-container
- section
- h3 Don't Have An Account?
- form(name='$ctrl.form' novalidate ng-submit='$ctrl.signup()')
- form-signup(
- outer-form='$ctrl.form'
- ng-model='$ctrl.data'
- server-error='$ctrl.serverError'
- )
- footer.full-width.form-footer
- button.btn-ignite.btn-ignite--primary(
- type='submit'
- ) Sign Up
- footer.page-signup__has-account-message
- | Already have an account? #[a(ui-sref='signin') Sign in here]
-
-web-console-footer
+h3.public-page__title Don't Have An Account?
+form(name='$ctrl.form' novalidate ng-submit='$ctrl.signup()')
+ form-signup(
+ outer-form='$ctrl.form'
+ ng-model='$ctrl.data'
+ server-error='$ctrl.serverError'
+ )
+ footer.full-width.form-footer
+ button.btn-ignite.btn-ignite--primary(
+ type='submit'
+ ) Sign Up
+footer.page-signup__has-account-message
+ | Already have an account? #[a(ui-sref='signin') Sign in here]
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/permanent-notifications/component.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/permanent-notifications/component.ts b/modules/web-console/frontend/app/components/permanent-notifications/component.ts
new file mode 100644
index 0000000..e86d3e5
--- /dev/null
+++ b/modules/web-console/frontend/app/components/permanent-notifications/component.ts
@@ -0,0 +1,25 @@
+/*
+ * 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 template from './template.pug';
+import controller from './controller';
+import './style.scss';
+
+export const component: ng.IComponentOptions = {
+ template,
+ controller
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/permanent-notifications/controller.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/permanent-notifications/controller.ts b/modules/web-console/frontend/app/components/permanent-notifications/controller.ts
new file mode 100644
index 0000000..d672304
--- /dev/null
+++ b/modules/web-console/frontend/app/components/permanent-notifications/controller.ts
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+export default class PermanentNotifications {
+ static $inject = ['UserNotifications', '$rootScope', '$window']
+ constructor(
+ private UserNotifications: unknown,
+ private $rootScope: ng.IRootScopeService,
+ private $window: ng.IWindowService
+ ) {}
+ closeDemo() {
+ this.$window.close();
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9dc251cd/modules/web-console/frontend/app/components/permanent-notifications/index.ts
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/permanent-notifications/index.ts b/modules/web-console/frontend/app/components/permanent-notifications/index.ts
new file mode 100644
index 0000000..33a9189
--- /dev/null
+++ b/modules/web-console/frontend/app/components/permanent-notifications/index.ts
@@ -0,0 +1,21 @@
+/*
+ * 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 {component} from './component';
+
+export default angular.module('ignite-console.permanent-notifications', [])
+ .component('permanentNotifications', component);
[20/52] [abbrv] ignite git commit: IGNITE-1094 muted test related
(revert dddde3d63621b02e0015aa98fabdffaa27b9a12b) - Fixes #5692.
Posted by sb...@apache.org.
IGNITE-1094 muted test related (revert dddde3d63621b02e0015aa98fabdffaa27b9a12b) - Fixes #5692.
Signed-off-by: Dmitriy Govorukhin <dm...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/64e0e69a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/64e0e69a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/64e0e69a
Branch: refs/heads/ignite-627
Commit: 64e0e69a542dff79c7abf5f46193a6eaa3b5485b
Parents: 00af5e6
Author: Slava Koptilin <sl...@gmail.com>
Authored: Tue Dec 18 16:22:45 2018 +0300
Committer: Dmitriy Govorukhin <dm...@gmail.com>
Committed: Tue Dec 18 16:22:45 2018 +0300
----------------------------------------------------------------------
.../persistence/standbycluster/IgniteChangeGlobalStateTest.java | 2 ++
.../cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java | 2 ++
.../cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java | 2 ++
.../cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java | 1 +
.../ignite/cache/store/jdbc/CacheJdbcBlobStoreFactorySelfTest.java | 2 ++
.../ignite/cache/store/jdbc/CacheJdbcPojoStoreFactorySelfTest.java | 2 ++
6 files changed, 11 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/64e0e69a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateTest.java
index ede7fb1..5fb6dc1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateTest.java
@@ -557,6 +557,8 @@ public class IgniteChangeGlobalStateTest extends IgniteChangeGlobalStateAbstract
*/
@Test
public void testActivateAfterFailGetLock() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-10723");
+
Ignite ig1P = primary(0);
Ignite ig2P = primary(1);
Ignite ig3P = primary(2);
http://git-wip-us.apache.org/repos/asf/ignite/blob/64e0e69a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java b/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
index a0663f3..e115551 100644
--- a/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
+++ b/modules/hibernate-4.2/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
@@ -90,6 +90,8 @@ public class CacheHibernateStoreFactorySelfTest extends GridCommonAbstractTest {
*/
@Test
public void testIncorrectBeanConfiguration() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-10723");
+
GridTestUtils.assertThrows(log, new Callable<Object>() {
@Override public Object call() throws Exception {
try(Ignite ignite =
http://git-wip-us.apache.org/repos/asf/ignite/blob/64e0e69a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java b/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
index 8519923..86a058b 100644
--- a/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
+++ b/modules/hibernate-5.1/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateStoreFactorySelfTest.java
@@ -90,6 +90,8 @@ public class CacheHibernateStoreFactorySelfTest extends GridCommonAbstractTest {
*/
@Test
public void testIncorrectBeanConfiguration() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-10723");
+
GridTestUtils.assertThrows(log, new Callable<Object>() {
@Override public Object call() throws Exception {
try(Ignite ignite =
http://git-wip-us.apache.org/repos/asf/ignite/blob/64e0e69a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
index a2c3a39..b737efb 100644
--- a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
+++ b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
@@ -40,6 +40,7 @@ public class GridPartitionedCacheJtaLookupClassNameSelfTest extends AbstractCach
/**
*
*/
+ @IgniteIgnore(value = "https://issues.apache.org/jira/browse/IGNITE-10723", forceFailure = true)
public void testIncompatibleTmLookup() {
final IgniteEx ignite = grid(0);
http://git-wip-us.apache.org/repos/asf/ignite/blob/64e0e69a/modules/spring/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcBlobStoreFactorySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/spring/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcBlobStoreFactorySelfTest.java b/modules/spring/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcBlobStoreFactorySelfTest.java
index c6a73e0..1822bec 100644
--- a/modules/spring/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcBlobStoreFactorySelfTest.java
+++ b/modules/spring/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcBlobStoreFactorySelfTest.java
@@ -84,6 +84,8 @@ public class CacheJdbcBlobStoreFactorySelfTest extends GridCommonAbstractTest {
*/
@Test
public void testIncorrectBeanConfiguration() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-10723");
+
GridTestUtils.assertThrows(log, new Callable<Object>() {
@Override public Object call() throws Exception {
try(Ignite ignite = Ignition.start("modules/spring/src/test/config/incorrect-store-cache.xml")) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/64e0e69a/modules/spring/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactorySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/spring/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactorySelfTest.java b/modules/spring/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactorySelfTest.java
index a6c4d4c..141bb63 100644
--- a/modules/spring/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactorySelfTest.java
+++ b/modules/spring/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactorySelfTest.java
@@ -76,6 +76,8 @@ public class CacheJdbcPojoStoreFactorySelfTest extends GridCommonAbstractTest {
*/
@Test
public void testIncorrectBeanConfiguration() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-10723");
+
GridTestUtils.assertThrowsAnyCause(log, new Callable<Object>() {
@Override public Object call() throws Exception {
try (Ignite ignored = Ignition.start("modules/spring/src/test/config/pojo-incorrect-store-cache.xml")) {
[09/52] [abbrv] ignite git commit: IGNITE-10682 Disable unnecessary
loaded plugins for the Inspection test suite. - Fixes #5666.
Posted by sb...@apache.org.
IGNITE-10682 Disable unnecessary loaded plugins for the Inspection test suite. - Fixes #5666.
Signed-off-by: Dmitriy Pavlov <dp...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5310d373
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5310d373
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5310d373
Branch: refs/heads/ignite-627
Commit: 5310d373a7b36aad27e8b21eb0463cb9d96fad69
Parents: 8cb502b
Author: Maxim Muzafarov <ma...@gmail.com>
Authored: Mon Dec 17 19:31:01 2018 +0300
Committer: Dmitriy Pavlov <dp...@apache.org>
Committed: Mon Dec 17 19:31:01 2018 +0300
----------------------------------------------------------------------
idea/disabled_plugins.txt | 113 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 113 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/5310d373/idea/disabled_plugins.txt
----------------------------------------------------------------------
diff --git a/idea/disabled_plugins.txt b/idea/disabled_plugins.txt
new file mode 100644
index 0000000..1dad326
--- /dev/null
+++ b/idea/disabled_plugins.txt
@@ -0,0 +1,113 @@
+AntSupport
+CVS
+ClearcasePlugin
+Coverage
+DevKit
+Emma
+GenerateToString
+Geronimo
+Glassfish
+Guice
+HtmlTools
+IdeaServerPlugin
+Inspection-JS
+InspectionGadgets
+IntentionPowerPack
+J2ME
+JBoss
+JSIntentionPowerPack
+JSR45Plugin
+JSTestDriver Plugin
+JUnit
+Java EE: Web Services (JAX-WS)
+JavaScript
+JavaScriptDebugger
+Jetty
+NodeJS
+Osmorc
+PerforceDirectPlugin
+Pythonid
+QuirksMode
+Refactor-X
+Resin
+SourceSafe
+StrutsAssistant
+Subversion
+TFS
+TestNG-J
+Tomcat
+Type Migration
+W3Validators
+WebServicesPlugin
+WebSphere
+Weblogic
+XPathView
+XSLT-Debugger
+ZKM
+com.android.tools.idea.smali
+com.intellij.aop
+com.intellij.apacheConfig
+com.intellij.appengine
+com.intellij.aspectj
+com.intellij.beanValidation
+com.intellij.cdi
+com.intellij.commander
+com.intellij.copyright
+com.intellij.css
+com.intellij.database
+com.intellij.diagram
+com.intellij.dmserver
+com.intellij.dsm
+com.intellij.flex
+com.intellij.freemarker
+com.intellij.guice
+com.intellij.gwt
+com.intellij.hibernate
+com.intellij.java-i18n
+com.intellij.java.cucumber
+com.intellij.javaee
+com.intellij.javaee.view
+com.intellij.jsf
+com.intellij.jsp
+com.intellij.persistence
+com.intellij.phing
+com.intellij.seam
+com.intellij.seam.pageflow
+com.intellij.seam.pages
+com.intellij.spring
+com.intellij.spring.batch
+com.intellij.spring.data
+com.intellij.spring.integration
+com.intellij.spring.osgi
+com.intellij.spring.roo
+com.intellij.spring.security
+com.intellij.spring.webflow
+com.intellij.spring.ws
+com.intellij.struts2
+com.intellij.tapestry
+com.intellij.tasks
+com.intellij.tcserver
+com.intellij.uiDesigner
+com.intellij.velocity
+com.jetbrains.jarFinder
+com.jetbrains.php
+com.jetbrains.php.framework
+com.jetbrains.plugins.asp
+com.jetbrains.plugins.webDeployment
+hg4idea
+org.coffeescript
+org.intellij.grails
+org.intellij.groovy
+org.intellij.intelliLang
+org.jetbrains.android
+org.jetbrains.idea.eclipse
+org.jetbrains.idea.maven.ext
+org.jetbrains.kotlin
+org.jetbrains.plugins.django-db-config
+org.jetbrains.plugins.github
+org.jetbrains.plugins.gradle
+org.jetbrains.plugins.haml
+org.jetbrains.plugins.less
+org.jetbrains.plugins.ruby
+org.jetbrains.plugins.sass
+org.jetbrains.plugins.yaml
\ No newline at end of file