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 2017/05/15 10:25:30 UTC

[01/14] ignite git commit: IGNITE-5082 Fixed UI for header and footer.

Repository: ignite
Updated Branches:
  refs/heads/ignite-5075 e4be5ab86 -> 6dac535eb


IGNITE-5082 Fixed UI for header and footer.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/63fda7fa
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/63fda7fa
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/63fda7fa

Branch: refs/heads/ignite-5075
Commit: 63fda7fa56d629e71d84024d07833fe14a562b7e
Parents: 0167182
Author: Ilya Borisov <ib...@gridgain.com>
Authored: Fri May 12 13:28:47 2017 +0700
Committer: Andrey Novikov <an...@gridgain.com>
Committed: Fri May 12 13:28:47 2017 +0700

----------------------------------------------------------------------
 modules/web-console/frontend/app/app.js         |   7 +-
 .../cluster-select/cluster-select.pug           |   6 +-
 .../cluster-select/cluster-select.scss          |  30 ++++
 .../app/components/cluster-select/index.js      |   1 +
 .../components/web-console-footer/component.js  |  23 ++++
 .../app/components/web-console-footer/index.js  |  23 ++++
 .../components/web-console-footer/style.scss    |  41 ++++++
 .../components/web-console-footer/template.pug  |  19 +++
 .../components/web-console-header/component.js  |  34 +++++
 .../app/components/web-console-header/index.js  |  23 ++++
 .../components/web-console-header/style.scss    | 136 +++++++++++++++++++
 .../components/web-console-header/template.pug  |  25 ++++
 .../app/modules/branding/branding.provider.js   |   2 +-
 .../modules/branding/header-title.directive.js  |   6 +-
 .../branding/powered-by-apache.directive.js     |   3 +-
 .../frontend/app/modules/states/signin.state.js |   2 +
 .../frontend/gulpfile.babel.js/paths.js         |   1 +
 .../frontend/public/images/ignite-logo.png      | Bin 1982 -> 0 bytes
 .../frontend/public/images/ignite-logo.svg      |  17 +++
 .../frontend/public/images/ignite-logo@2x.png   | Bin 3325 -> 0 bytes
 .../stylesheets/_bootstrap-variables.scss       |   4 +-
 .../frontend/public/stylesheets/style.scss      |  76 ++---------
 .../frontend/public/stylesheets/variables.scss  |   2 +
 modules/web-console/frontend/views/403.tpl.pug  |   8 +-
 modules/web-console/frontend/views/404.tpl.pug  |   8 +-
 modules/web-console/frontend/views/base.pug     |   8 +-
 modules/web-console/frontend/views/base2.pug    |   8 +-
 .../frontend/views/includes/header-left.pug     |  64 +++++++++
 .../frontend/views/includes/header-right.pug    |  40 ++++++
 .../frontend/views/includes/header.pug          |  57 --------
 modules/web-console/frontend/views/index.pug    |   2 +-
 .../web-console/frontend/views/reset.tpl.pug    |  12 +-
 .../web-console/frontend/views/signin.tpl.pug   |  12 +-
 33 files changed, 541 insertions(+), 159 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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 1f87196..ab32589 100644
--- a/modules/web-console/frontend/app/app.js
+++ b/modules/web-console/frontend/app/app.js
@@ -116,6 +116,8 @@ import igniteListOfRegisteredUsers from './components/list-of-registered-users';
 import IgniteActivitiesUserDialog from './components/activities-user-dialog';
 import clusterSelect from './components/cluster-select';
 import './components/input-dialog';
+import webConsoleHeader from './components/web-console-header';
+import webConsoleFooter from './components/web-console-footer';
 
 // Inject external modules.
 import 'ignite_modules_temp/index';
@@ -173,7 +175,10 @@ angular
     // Ignite configuration module.
     'ignite-console.config',
     // Ignite modules.
-    'ignite-console.modules'
+    'ignite-console.modules',
+    // Components
+    webConsoleHeader.name,
+    webConsoleFooter.name
 ])
 // Directives.
 .directive(...igniteAutoFocus)

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/app/components/cluster-select/cluster-select.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/cluster-select/cluster-select.pug b/modules/web-console/frontend/app/components/cluster-select/cluster-select.pug
index c290838..444e567 100644
--- a/modules/web-console/frontend/app/components/cluster-select/cluster-select.pug
+++ b/modules/web-console/frontend/app/components/cluster-select/cluster-select.pug
@@ -14,7 +14,7 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-ul.nav.navbar-nav(ng-if='!IgniteDemoMode' ng-switch='ctrl.clusters.length' style='padding-right: 5px')
+ul.nav(ng-switch='ctrl.clusters.length')
     li.disabled(ng-switch-when='0')
         a
             i.icon-cluster
@@ -35,7 +35,7 @@ ul.nav.navbar-nav(ng-if='!IgniteDemoMode' ng-switch='ctrl.clusters.length' style
                 div(ng-click='item.click()')
                     i.icon-cluster.pull-left(style='margin: 0; padding-left: 10px;')
                     div: a {{item.name}}
-i.icon-help(ng-if='!IgniteDemoMode' bs-tooltip='' data-placement='bottom' data-html=true style='line-height: 25px'
+
+i.icon-help(bs-tooltip='' data-placement='bottom' data-html=true
     data-title='Multi-Cluster Support<br/>\
         <a href="https://apacheignite-tools.readme.io/docs/multi-cluster-support" target="_blank">More info</a>')
-span(ng-if='!IgniteDemoMode' style='padding-right: 20px')

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/app/components/cluster-select/cluster-select.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/cluster-select/cluster-select.scss b/modules/web-console/frontend/app/components/cluster-select/cluster-select.scss
new file mode 100644
index 0000000..835d9c3
--- /dev/null
+++ b/modules/web-console/frontend/app/components/cluster-select/cluster-select.scss
@@ -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.
+ */
+
+ignite-cluster-select {
+    @import "./../../../public/stylesheets/variables.scss";
+
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+
+    .icon-help {
+        margin-left: 4px;
+
+        color: $text-color;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/app/components/cluster-select/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/cluster-select/index.js b/modules/web-console/frontend/app/components/cluster-select/index.js
index b73845e..607b0db 100644
--- a/modules/web-console/frontend/app/components/cluster-select/index.js
+++ b/modules/web-console/frontend/app/components/cluster-select/index.js
@@ -16,6 +16,7 @@
  */
 
 import template from './cluster-select.pug';
+import './cluster-select.scss';
 import controller from './cluster-select.controller';
 
 export default [() => {

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
new file mode 100644
index 0000000..40a1051
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-footer/component.js
@@ -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.
+ */
+
+import template from './template.pug';
+import './style.scss';
+
+export default {
+    template
+};

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
new file mode 100644
index 0000000..8796bb7
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-footer/index.js
@@ -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.
+ */
+
+import angular from 'angular';
+import component from './component';
+
+export default angular
+    .module('ignite-console.web-console-footer', [])
+    .component('webConsoleFooter', component);

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
new file mode 100644
index 0000000..0b2fa8b
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-footer/style.scss
@@ -0,0 +1,41 @@
+/*
+ * 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 {
+    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;
+    }
+
+    .wcf-content {
+        display: flex;
+        flex-direction: row;
+        align-items: center;
+    }
+    
+    ignite-powered-by-apache {
+        margin-left: auto;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
new file mode 100644
index 0000000..be9cc6a
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-footer/template.pug
@@ -0,0 +1,19 @@
+//-
+    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.
+
+.container.wcf-content
+    ignite-footer
+    ignite-powered-by-apache
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
new file mode 100644
index 0000000..35d9be2
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/component.js
@@ -0,0 +1,34 @@
+/*
+ * 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', 'IgniteBranding'];
+
+        constructor($rootScope, branding) {
+            Object.assign(this, {$rootScope, branding});
+        }
+    },
+    transclude: {
+        slotLeft: '?webConsoleHeaderLeft',
+        slotRight: '?webConsoleHeaderRight'
+    }
+};

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
new file mode 100644
index 0000000..36caa3d
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/index.js
@@ -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.
+ */
+
+import angular from 'angular';
+import component from './component';
+
+export default angular
+	.module('ignite-console.web-console-header', [])
+	.component('webConsoleHeader', component);

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
new file mode 100644
index 0000000..5e382c8
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/style.scss
@@ -0,0 +1,136 @@
+/*
+ * 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 {
+    @import "./../../../public/stylesheets/variables.scss";
+
+    $nav-item-margin: 42px;
+
+    display: block;
+    font-family: Roboto;
+    font-size: 16px;
+    border-bottom: 4px solid red;
+    background: white;
+
+    .wch-slot {
+        &>* {
+            display: flex;
+            flex-direction: row;
+            justify-content: center;
+            align-items: center;
+            padding-top: 7px;
+        }
+
+        &.wch-slot-left {
+            margin-left: 105px;
+        }
+
+        &.wch-slot-right {
+            margin: 0 0 0 auto;
+        }
+    }
+
+    .wch-content {
+        display: flex;
+        flex-direction: row;
+        flex-wrap: wrap;
+        align-items: center;
+        justify-content: center;
+        min-height: 80px;
+        padding: 10px 0;
+    }
+
+    .wch-logo {
+        height: 40px;
+    }
+
+    .wch-nav-item {
+        cursor: pointer;
+        font-size: 16px;
+        white-space: nowrap;
+
+        $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, .active {
+            color: $color-active;
+        }
+
+        &[disabled] {
+            opacity: 0.5;
+            cursor: default;
+        }
+
+        .caret {
+            margin-left: 4px;
+        }
+
+        &:not(:last-child) {
+            margin-right: $nav-item-margin;
+        }
+    }
+
+    .wch-demo-toggle {
+        margin-right: 10px;
+
+        // When in demo mode and clusters are hidden
+        &:nth-last-child(2) {
+            margin-right: $nav-item-margin;
+        }
+
+        .btn-demo {
+            padding: 8px 10px;
+            font-size: $font-size-base;
+            line-height: 18px;
+            border-radius: 4px;
+
+            margin-right: 0;
+        }
+    }
+
+    .wch-revert-identity {
+        font-size: $font-size-base;
+        line-height: 16px;
+        padding: 4px;
+        background: $brand-warning;
+        text-align: center;
+        
+        .link-info {
+            color: $brand-info;
+        }
+
+        &+.wch-revert-identity {
+            border-top: 1px solid darken($brand-warning, 15%);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
new file mode 100644
index 0000000..9e0d576
--- /dev/null
+++ b/modules/web-console/frontend/app/components/web-console-header/template.pug
@@ -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.
+
+.wch-revert-identity(ng-show='$ctrl.$rootScope.user.becomeUsed')
+    | You are currently viewing user #[strong {{$ctrl.$rootScope.user.firstName}} {{$ctrl.$rootScope.user.lastName}}] as administrator. #[a.link-info(ng-click='$ctrl.$rootScope.revertIdentity()') Revert to your identity?]
+
+.wch-content.container
+    a(ui-sref="signin")
+        img.wch-logo(ng-src="{{::$ctrl.branding.headerLogo}}")
+        
+    .wch-slot.wch-slot-left(ng-transclude="slotLeft")
+    .wch-slot.wch-slot-right(ng-transclude="slotRight")
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/app/modules/branding/branding.provider.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/branding/branding.provider.js b/modules/web-console/frontend/app/modules/branding/branding.provider.js
index 0545ff3..280325e 100644
--- a/modules/web-console/frontend/app/modules/branding/branding.provider.js
+++ b/modules/web-console/frontend/app/modules/branding/branding.provider.js
@@ -18,7 +18,7 @@
 export default ['IgniteBranding', [function() {
     let titleSuffix = ' – Apache Ignite Web Console';
 
-    let headerLogo = '/images/ignite-logo.png';
+    let headerLogo = '/images/ignite-logo.svg';
 
     let headerText = 'Management console for Apache Ignite';
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
index d560e0a..aedd4b9 100644
--- a/modules/web-console/frontend/app/modules/branding/header-title.directive.js
+++ b/modules/web-console/frontend/app/modules/branding/header-title.directive.js
@@ -15,7 +15,11 @@
  * limitations under the License.
  */
 
-const template = '<h1 class="title">{{::title.text}}</h1>';
+const template = `
+    <h1
+        style="margin: 0;font-size: 1.4em;"
+    >{{::title.text}}</h1>
+`;
 
 export default ['igniteHeaderTitle', ['IgniteBranding', (branding) => {
     function controller() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
index dce7d55..e88f71f 100644
--- 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
@@ -28,8 +28,7 @@ export default ['ignitePoweredByApache', ['IgniteBranding', (branding) => {
         restrict: 'E',
         template,
         controller,
-        controllerAs: 'poweredBy',
-        replace: true
+        controllerAs: 'poweredBy'
     };
 }]];
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/app/modules/states/signin.state.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/signin.state.js b/modules/web-console/frontend/app/modules/states/signin.state.js
index 2625aaa..630fb65 100644
--- a/modules/web-console/frontend/app/modules/states/signin.state.js
+++ b/modules/web-console/frontend/app/modules/states/signin.state.js
@@ -37,6 +37,8 @@ angular
                     .catch(() => {});
             }]
         },
+        controllerAs: '$ctrl',
+        controller() {},
         metaTags: {
         }
     });

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/gulpfile.babel.js/paths.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/gulpfile.babel.js/paths.js b/modules/web-console/frontend/gulpfile.babel.js/paths.js
index 92b354a..311865e 100644
--- a/modules/web-console/frontend/gulpfile.babel.js/paths.js
+++ b/modules/web-console/frontend/gulpfile.babel.js/paths.js
@@ -46,6 +46,7 @@ const resourcePaths = [
 
 const resourceModulePaths = [
     igniteModulesDir + '/**/images/*.png',
+    igniteModulesDir + '/**/images/*.svg',
     igniteModulesDir + '/*.ico'
 ];
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/public/images/ignite-logo.png
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/ignite-logo.png b/modules/web-console/frontend/public/images/ignite-logo.png
deleted file mode 100644
index ea08d1b..0000000
Binary files a/modules/web-console/frontend/public/images/ignite-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/public/images/ignite-logo.svg
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/ignite-logo.svg b/modules/web-console/frontend/public/images/ignite-logo.svg
new file mode 100644
index 0000000..be2e72f
--- /dev/null
+++ b/modules/web-console/frontend/public/images/ignite-logo.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="90" height="39" version="1.1" viewBox="0 0 90 39" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata>
+  <rdf:RDF>
+   <cc:Work rdf:about="">
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <dc:title/>
+   </cc:Work>
+  </rdf:RDF>
+ </metadata>
+ <g fill-rule="evenodd">
+  <path d="m34.623 23.128c0 2.87 0.83 4.46 2.494 4.771 1.663 0.312 2.889-0.072 3.679-1.153 0.374-0.457 0.644-1.174 0.81-2.152a9.075 9.075 0 0 0 0.032 -2.9 5.796 5.796 0 0 0 -1.029 -2.556c-0.54-0.748-1.33-1.123-2.369-1.123-1.414 0-2.37 0.52-2.869 1.56-0.5 1.04-0.748 2.223-0.748 3.553m7.109 7.172v-1.06c-0.749 1.165-1.757 1.892-3.025 2.183-1.268 0.29-2.525 0.187-3.772-0.312-1.248-0.499-2.319-1.424-3.212-2.775-0.895-1.35-1.341-3.128-1.341-5.332 0-2.577 0.592-4.666 1.777-6.268 1.186-1.599 3.087-2.4 5.707-2.4 1.995 0 3.844 0.54 5.55 1.622 1.704 1.08 2.556 3.077 2.556 5.986v8.793c0 2.91-0.852 4.895-2.556 5.955a10.315 10.315 0 0 1 -5.55 1.59c-3.826 0-6.196-1.787-7.11-5.363h4.553c0.332 0.582 0.842 1.03 1.528 1.342 0.685 0.311 1.371 0.394 2.057 0.249 0.686-0.146 1.31-0.552 1.871-1.217 0.562-0.665 0.883-1.662 0.967-2.993m19.456 0.998h-2.183c-0.623 0-1.133-0.197-1.528-0.592s-0.592-0.905-0.592-1.528v-8.481c0-0.998-0.302-1.725-0.904-2.183a3.275 3.275 0 0 0 -2.027 -0.686c-0.748 0-1.414 0.229-1.996
  0.686-0.582 0.458-0.872 1.185-0.872 2.183v10.601h-4.366v-9.728c0-2.827 0.737-4.718 2.213-5.675a9.675 9.675 0 0 1 4.896 -1.559c1.828 0 3.512 0.478 5.05 1.434 1.538 0.957 2.308 2.89 2.308 5.8v9.728zm1.06-15.147h4.366v15.147h-4.366zm12.402 15.147a32.414 32.414 0 0 1 -4.458 -0.063c-1.6-0.124-2.4-1.142-2.4-3.055v-16.228h2.244c0.54 0 1.018 0.208 1.435 0.623 0.414 0.416 0.623 0.915 0.623 1.497v0.586h2.557v0.872c0 0.625-0.208 1.134-0.624 1.529a2.094 2.094 0 0 1 -1.496 0.592h-0.437v9.344c0 0.708 0.415 1.06 1.247 1.06h1.31v3.243z"/>
+  <path d="m79.078 21.32h6.36c-0.082-1.122-0.373-1.954-0.872-2.494-0.54-0.582-1.309-0.873-2.307-0.873-0.915 0-1.663 0.291-2.245 0.873-0.583 0.582-0.894 1.414-0.936 2.494m7.484 4.865h3.118c-0.458 1.746-1.331 3.076-2.62 3.99-1.289 0.957-2.91 1.435-4.863 1.435-2.37 0-4.22-0.769-5.55-2.307-1.332-1.497-1.996-3.638-1.996-6.424 0-2.66 0.644-4.74 1.933-6.235 1.33-1.538 3.18-2.308 5.55-2.308 2.495 0 4.428 0.748 5.8 2.245 1.33 1.539 1.996 3.68 1.996 6.423v0.686c0 0.209-0.022 0.354-0.063 0.436h-10.789c0.042 1.29 0.353 2.245 0.936 2.869 0.54 0.666 1.35 0.998 2.432 0.998 0.707 0 1.31-0.145 1.808-0.436a0.875 0.875 0 0 0 0.344 -0.22l0.342-0.342c0.041-0.124 0.198-0.29 0.468-0.499 0.27-0.207 0.655-0.311 1.154-0.311m-61.482-17.658h2.245c0.581 0 1.08 0.208 1.496 0.623 0.415 0.417 0.624 0.915 0.624 1.497v20.651h-4.366v-22.771zm37.168 3.425h2.245c0.582 0 1.08 0.208 1.497 0.623 0.415 0.416 0.624 0.915 0.624 1.497v1.31h-4.366zm-26.818-1.739c0-0.384-0.13-0.712-0.387-0.983a1.263 1.263 0 0 0 -0.955 -0.407 1.
 36 1.36 0 0 0 -1.006 0.425c-0.263 0.266-0.394 0.55-0.394 0.852 0 0.398 0.122 0.737 0.366 1.019 0.254 0.295 0.578 0.443 0.972 0.443 0.377 0 0.706-0.131 0.985-0.393 0.279-0.263 0.419-0.58 0.419-0.956zm0.693 1.966h-0.693v-0.49c-0.35 0.384-0.821 0.576-1.414 0.576a2.01 2.01 0 0 1 -1.425 -0.556c-0.418-0.391-0.627-0.89-0.627-1.496 0-0.627 0.22-1.143 0.662-1.548 0.407-0.373 0.887-0.56 1.442-0.56 0.578 0 1.032 0.2 1.362 0.598v-0.501h0.693zm4.213-1.987c0-0.384-0.136-0.708-0.407-0.973a1.359 1.359 0 0 0 -0.983 -0.396c-0.4 0-0.73 0.145-0.988 0.436a1.386 1.386 0 0 0 -0.358 0.954c0 0.338 0.105 0.634 0.313 0.885 0.256 0.309 0.615 0.464 1.077 0.464 0.385 0 0.705-0.132 0.961-0.395 0.257-0.263 0.385-0.588 0.385-0.975m0.741-0.092c0 0.62-0.194 1.133-0.58 1.54-0.393 0.417-0.898 0.625-1.514 0.625-0.569 0-1.017-0.185-1.341-0.556v1.788h-0.725v-5.309h0.694v0.477c0.178-0.185 0.377-0.325 0.597-0.418 0.22-0.094 0.46-0.141 0.724-0.141a2.18 2.18 0 0 1 1.469 0.545c0.45 0.39 0.676 0.872 0.676 1.449m4.077 0.113c0-0.
 384-0.129-0.712-0.386-0.983a1.265 1.265 0 0 0 -0.956 -0.407c-0.39 0-0.727 0.142-1.005 0.425-0.264 0.266-0.395 0.55-0.395 0.852 0 0.398 0.122 0.737 0.367 1.019 0.254 0.295 0.578 0.443 0.971 0.443 0.378 0 0.706-0.131 0.985-0.393 0.28-0.263 0.42-0.58 0.42-0.956zm0.693 1.966h-0.693v-0.49c-0.35 0.384-0.822 0.576-1.414 0.576a2.012 2.012 0 0 1 -1.425 -0.556c-0.418-0.391-0.627-0.89-0.627-1.496 0-0.627 0.221-1.143 0.662-1.548 0.407-0.373 0.888-0.56 1.441-0.56 0.579 0 1.033 0.2 1.363 0.598v-0.501h0.693zm4.773-1.314c-0.237 0.462-0.504 0.804-0.804 1.026-0.336 0.25-0.746 0.374-1.229 0.374a2.066 2.066 0 0 1 -1.455 -0.583 2.01 2.01 0 0 1 -0.662 -1.53h0.031a0.4 0.4 0 0 1 -0.014 0.033c0-0.624 0.213-1.136 0.639-1.534a1.94 1.94 0 0 1 1.369 -0.545c0.49 0 0.918 0.125 1.285 0.376 0.367 0.25 0.643 0.604 0.826 1.062h-0.796c-0.272-0.48-0.705-0.72-1.3-0.72-0.374 0-0.687 0.132-0.936 0.397a1.353 1.353 0 0 0 -0.376 0.964c0 0.39 0.13 0.716 0.392 0.98 0.262 0.265 0.586 0.397 0.972 0.397 0.254 0 0.495-0.063 0.724-
 0.187 0.228-0.125 0.408-0.295 0.538-0.51h0.795zm4.13 1.318h-0.716v-2.286c0-0.31-0.1-0.565-0.295-0.763-0.197-0.198-0.452-0.297-0.763-0.297-0.304 0-0.55 0.091-0.74 0.274s-0.286 0.426-0.286 0.728v2.344h-0.724v-5.31h0.724v1.662c0.277-0.277 0.625-0.416 1.044-0.416 0.46 0 0.86 0.157 1.2 0.47 0.371 0.34 0.557 0.775 0.557 1.308v2.286zm3.97-2.375a1.372 1.372 0 0 0 -0.488 -0.722 1.297 1.297 0 0 0 -0.816 -0.28c-0.38 0-0.695 0.124-0.944 0.374a1.438 1.438 0 0 0 -0.367 0.628zm0.73 0.666h-3.359c0.057 0.343 0.224 0.616 0.501 0.82 0.245 0.178 0.51 0.268 0.793 0.268 0.27 0 0.522-0.076 0.758-0.227 0.245-0.156 0.414-0.356 0.508-0.6h0.738c-0.192 0.524-0.492 0.92-0.9 1.187-0.347 0.229-0.727 0.343-1.139 0.343-0.535 0-0.994-0.192-1.376-0.576-0.405-0.41-0.607-0.916-0.607-1.517 0-0.625 0.216-1.134 0.648-1.528a1.988 1.988 0 0 1 1.383 -0.538c0.538 0 1 0.177 1.387 0.532 0.444 0.405 0.665 0.948 0.665 1.63z"/>
+  <path d="m14.941 0.14844s-16.913 6.5058-0.21875 18.049c5.98 4.135 4.9794 8.3509 4.9824 8.5059 0.945-0.975 5.7088-6.274 0.048828-12.209-5.66-5.934-7.2325-9.5967-4.8125-14.346zm-8.8359 6.4648s-13.215 8.0563-0.76172 16.07c2.403 1.553 11.088 5.9054 10.832 9.8984 0 0 5.2612-7.8044-2.4258-12.693-7.91-5.029-9.8905-10.378-7.6445-13.275zm-4.5996 15.406s-4.7235 7.1573 4.5605 8.6133c0.907 0.117 7.6331 0.81362 9.3691 3.0156 0 0-0.16105-3.801-5.623-6.043s-7.6996-2.7989-8.3066-5.5859z" fill="#f90314"/>
+ </g>
+</svg>

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/public/images/ignite-logo@2x.png
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/ignite-logo@2x.png b/modules/web-console/frontend/public/images/ignite-logo@2x.png
deleted file mode 100644
index 10005db..0000000
Binary files a/modules/web-console/frontend/public/images/ignite-logo@2x.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/public/stylesheets/_bootstrap-variables.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/stylesheets/_bootstrap-variables.scss b/modules/web-console/frontend/public/stylesheets/_bootstrap-variables.scss
index d6a51e3..eb6586f 100644
--- a/modules/web-console/frontend/public/stylesheets/_bootstrap-variables.scss
+++ b/modules/web-console/frontend/public/stylesheets/_bootstrap-variables.scss
@@ -32,9 +32,9 @@ $gray:                   lighten($gray-base, 33.5%) !default; // #555
 $gray-light:             lighten($gray-base, 46%) !default;   // #757575
 $gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
 
-$brand-primary:         #ec1c24 !default;
+$brand-primary:         #ee2b27 !default;
 $brand-success:         #50af51 !default;
-$brand-info:            #248fb2 !default;
+$brand-info:            #0067b9 !default;
 $brand-warning:         #f0ad4e !default;
 $brand-danger:          #d9534f !default;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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 f3dd3c9..7907e4c 100644
--- a/modules/web-console/frontend/public/stylesheets/style.scss
+++ b/modules/web-console/frontend/public/stylesheets/style.scss
@@ -37,16 +37,7 @@ hr {
     outline: none;
 }
 
-.navbar-default .navbar-brand, .navbar-default .navbar-brand:hover {
-    position: absolute;
-    left: 0;
-    text-align: center;
-}
 
-.navbar-brand {
-    padding: 5px 0;
-    margin: 10px 0;
-}
 
 .modal.center .modal-dialog {
     position: fixed;
@@ -74,10 +65,6 @@ hr {
     font-size: 22px;
 }
 
-.theme-line .footer {
-    text-align: center;
-}
-
 .table.table-vertical-middle tbody > tr > td {
   vertical-align: middle;
 }
@@ -87,7 +74,7 @@ hr {
     padding-right: 10px;
 }
 
-ul.navbar-nav, .sidebar-nav {
+.sidebar-nav {
     li.active > a {
         color: $link-color;
     }
@@ -266,21 +253,6 @@ ul.navbar-nav, .sidebar-nav {
     font-size: 12px;
 }
 
-.theme-line header {
-    border-bottom: 8px solid $ignite-border-bottom-color;
-
-    p {
-        color: $ignite-header-color;
-    }
-}
-
-.header .title {
-    margin: 20px 0 5px 0;
-    padding: 0 15px;
-
-    font-size: 1.4em;
-}
-
 .nav > li {
     > a {
         color: $navbar-default-link-color;
@@ -302,17 +274,6 @@ ul.navbar-nav, .sidebar-nav {
     }
 }
 
-.theme-line header .navbar-nav {
-    a {
-        line-height: 25px;
-        font-size: 18px;
-    }
-
-    > li > a {
-        padding-right: 0;
-    }
-}
-
 .theme-line .section-right {
     padding-left: 30px;
 }
@@ -330,6 +291,7 @@ ul.navbar-nav, .sidebar-nav {
 
 body {
     font-weight: 400;
+    background-color: $ignite-new-background-color;
 }
 
 h1, h2, h3, h4, h5, h6 {
@@ -337,16 +299,6 @@ h1, h2, h3, h4, h5, h6 {
     margin-bottom: 10px;
 }
 
-.container-footer {
-    margin-top: 20px;
-    margin-bottom: 20px;
-
-    p {
-        font-size: 12px;
-        margin-bottom: 0;
-    }
-}
-
 /* Modal */
 .modal {
     display: block;
@@ -447,18 +399,17 @@ h1, h2, h3, h4, h5, h6 {
     margin: 0;
 }
 
-.greedy {
+body > .wrapper,
+// Nested ui-view, like on password reset state
+body > .wrapper > ui-view {
+    display: flex;
+    flex-direction: column;
     min-height: 100%;
-    height: #{"calc(100vh - 270px)"};
-}
+    flex: 1;
 
-.signin-greedy {
-    height: #{"calc(100vh - 300px)"};
-}
-
-@media (min-width: 768px) {
-    .navbar-nav > li > a {
-        padding: 0 15px;
+    .body-container {
+        flex: 1;
+        padding-bottom: 30px;
     }
 }
 
@@ -1527,11 +1478,6 @@ input.ng-dirty.ng-invalid, button.ng-dirty.ng-invalid {
     color: $ignite-header-color;
 }
 
-.viewedUser {
-    text-align: center;
-    background-color: $brand-warning;
-}
-
 a {
     cursor: pointer;
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/public/stylesheets/variables.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/stylesheets/variables.scss b/modules/web-console/frontend/public/stylesheets/variables.scss
index 8500eac..9c77436 100644
--- a/modules/web-console/frontend/public/stylesheets/variables.scss
+++ b/modules/web-console/frontend/public/stylesheets/variables.scss
@@ -24,5 +24,7 @@ $ignite-border-color: #ddd;
 $ignite-darck-border-color: #aaa;
 $ignite-border-bottom-color: $brand-primary;
 $ignite-background-color: #fff;
+// New background color for layouts without white content box
+$ignite-new-background-color: #f9f9f9;
 $ignite-header-color: #555;
 $ignite-invalid-color: $brand-primary;

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/views/403.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/403.tpl.pug b/modules/web-console/frontend/views/403.tpl.pug
index 38d8bb5..7d65442 100644
--- a/modules/web-console/frontend/views/403.tpl.pug
+++ b/modules/web-console/frontend/views/403.tpl.pug
@@ -14,9 +14,11 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-include includes/header
+web-console-header
 
-.error-page
-    .container
+.container.body-container
+    .error-page
         h1.error-page__title 403
         h2.error-page__description You are not authorized
+
+web-console-footer
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/views/404.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/404.tpl.pug b/modules/web-console/frontend/views/404.tpl.pug
index 7d2fc55..c4cef12 100644
--- a/modules/web-console/frontend/views/404.tpl.pug
+++ b/modules/web-console/frontend/views/404.tpl.pug
@@ -14,9 +14,11 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-include includes/header
+web-console-header
 
-.error-page
-    .container
+.container.body-container
+    .error-page
         h1.error-page__title 404
         h2.error-page__description Page not found
+
+web-console-footer
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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 b05cdba..525e762 100644
--- a/modules/web-console/frontend/views/base.pug
+++ b/modules/web-console/frontend/views/base.pug
@@ -14,9 +14,13 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-include ./includes/header
+web-console-header
+    web-console-header-left
+        include ./includes/header-left
+    web-console-header-right
+        include ./includes/header-right
 
 .container.body-container
     .main-content(ui-view='')
 
-include ./includes/footer
+web-console-footer

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/views/base2.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/base2.pug b/modules/web-console/frontend/views/base2.pug
index eacfb5b..fd2331c 100644
--- a/modules/web-console/frontend/views/base2.pug
+++ b/modules/web-console/frontend/views/base2.pug
@@ -14,9 +14,13 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-include ./includes/header
+web-console-header
+    web-console-header-left
+        include ./includes/header-left
+    web-console-header-right
+        include ./includes/header-right
 
 .container.body-container
     div(ui-view='')
 
-include ./includes/footer
+web-console-footer
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
new file mode 100644
index 0000000..7578705
--- /dev/null
+++ b/modules/web-console/frontend/views/includes/header-left.pug
@@ -0,0 +1,64 @@
+//-
+    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-nav-item(ignite-sidebar)
+    div(ng-click='$event.stopPropagation()'
+        ng-class='{active: $state.includes("base.configuration")}'
+        bs-dropdown='sidebar.items'
+        data-placement='bottom-left'
+        data-trigger='hover focus'
+        data-container='self'
+        data-animation=''
+    )
+        span Configure
+            span.caret
+
+.wch-nav-item(ng-controller='notebookController')
+    div(ng-if='IgniteDemoMode' ng-class='{active: $state.includes("base.sql")}')
+        a(ui-sref='base.sql.demo') Queries
+
+    div(ng-if='!IgniteDemoMode')
+        div(ng-if='!notebooks.length' ng-class='{active: $state.includes("base.sql")}')
+            a(ng-click='createNotebook()') Queries
+
+        div(ng-if='notebooks.length'
+            ng-click='$event.stopPropagation()'
+            ng-class='{active: $state.includes("base.sql")}'
+            bs-dropdown='notebooks'
+            data-placement='bottom-left'
+            data-trigger='hover focus'
+            data-container='self'
+            data-animation=''
+            aria-haspopup='true'
+            aria-expanded='false'
+        )
+            span Queries
+                span.caret
+
+.wch-nav-item(ignite-navbar)
+    div(ng-click='$event.stopPropagation()'
+        ng-class='{active: $state.includes("base.monitoring")}'
+        ng-repeat='item in navbar.items'
+        bs-dropdown='item.children'
+        data-placement='bottom-left'
+        data-trigger='hover focus'
+        data-container='self'
+        data-animation=''
+        aria-haspopup='true'
+        aria-expanded='false'
+    )
+        span {{::item.text}}
+            span.caret
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/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
new file mode 100644
index 0000000..e8aeb01
--- /dev/null
+++ b/modules/web-console/frontend/views/includes/header-right.pug
@@ -0,0 +1,40 @@
+//-
+    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-controller='demoController')
+    button.btn.btn-info.btn-demo(
+        ng-if='IgniteDemoMode'
+        ng-click='closeDemo()'
+    ) Close Demo
+    button.btn.btn-info.btn-demo(
+        ng-if='!IgniteDemoMode'
+        ng-click='startDemo()'
+    ) Start Demo
+
+ignite-cluster-select.wch-nav-item(ng-if='!IgniteDemoMode')
+
+.wch-nav-item(ignite-userbar)
+    div(
+        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'
+        data-animation=''
+    )
+        span {{$root.user.firstName}} {{$root.user.lastName}}
+            span.caret

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/views/includes/header.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/includes/header.pug b/modules/web-console/frontend/views/includes/header.pug
deleted file mode 100644
index ff8692e..0000000
--- a/modules/web-console/frontend/views/includes/header.pug
+++ /dev/null
@@ -1,57 +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.
-
-header#header.header
-    .viewedUser(ng-show='$root.user.becomeUsed')
-        | Currently assuming #[strong {{$root.user.firstName}} {{$root.user.lastName}}], #[a(ng-click='$root.revertIdentity()') revert to your identity].
-    table.container
-        tr
-            td.col-xs-3.col-sm-3.col-md-2
-                ignite-header-logo
-            td(ng-if='$root.user' style='padding-top: 20px')
-                ul.nav.navbar-nav(ignite-sidebar ignite-navbar)
-                    li(ng-class='{active: $state.includes("base.configuration")}' bs-dropdown='sidebar.items' data-placement='bottom-right' data-trigger='hover focus' data-container='self' data-animation='' ng-click='$event.stopPropagation()')
-                        a.dropdown-toggle Configure
-                            span.caret
-
-                ul.nav.navbar-nav(ng-if='IgniteDemoMode' ng-controller='notebookController')
-                    li.sql-notebooks( ng-class='{active: $state.includes("base.sql")}')
-                        a(ui-sref='base.sql.demo') Queries
-
-                ul.nav.navbar-nav(ng-if='!IgniteDemoMode' ng-controller='notebookController')
-                    li.sql-notebooks(ng-if='!notebooks.length' ng-class='{active: $state.includes("base.sql")}')
-                        a(ng-click='createNotebook()') Queries
-
-                    li.sql-notebooks(ng-if='notebooks.length' ng-class='{active: $state.includes("base.sql")}' bs-dropdown='notebooks' data-placement='bottom-left' data-trigger='hover focus' data-container='self' data-animation='' ng-click='$event.stopPropagation()' aria-haspopup='true' aria-expanded='false')
-                        a.dropdown-toggle Queries
-                            span.caret
-
-                ul.nav.navbar-nav
-                    li(ui-sref-active='active' ng-repeat='item in navbar.items' ng-class='{active: $state.includes("base.monitoring")}' bs-dropdown='item.children' data-placement='bottom-left' data-trigger='hover focus' data-container='self' data-animation='' ng-click='$event.stopPropagation()' aria-haspopup='true' aria-expanded='false')
-                        a.dropdown-toggle {{::item.text}}
-                            span.caret
-
-                a.padding-left-dflt(ng-controller='demoController')
-                    button.btn.btn-info(ng-if='IgniteDemoMode' ng-click='closeDemo()') Close demo
-                    button.btn.btn-info(ng-if='!IgniteDemoMode' ng-click='startDemo()') Start demo
-
-                .pull-right
-                    ignite-cluster-select
-
-                    ul.nav.navbar-nav.pull-right(ignite-userbar)
-                        li(bs-dropdown='userbar.items' data-placement='bottom-right' data-trigger='hover focus' data-container='self' data-animation='' ng-class='{active: $state.includes("settings")}' ng-click='$event.stopPropagation()')
-                            a.dropdown-toggle {{user.firstName}} {{user.lastName}}
-                                span.caret

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/views/index.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/index.pug b/modules/web-console/frontend/views/index.pug
index c561c3e..c68790d 100644
--- a/modules/web-console/frontend/views/index.pug
+++ b/modules/web-console/frontend/views/index.pug
@@ -29,7 +29,7 @@ html(ng-app='ignite-console' id='app' ng-strict-di)
         meta(name='keywords' content='{{$meta.keywords}}')
         meta(ng-repeat='(key, value) in $meta.properties' name='{{::key}}' content='{{::value}}')
 
-    body.theme-line.body-overlap.greedy
+    body.theme-line.body-overlap
 
         .splash.splash-max-foreground(hide-on-state-change)
             .splash-wrapper

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/views/reset.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/reset.tpl.pug b/modules/web-console/frontend/views/reset.tpl.pug
index 9098105..6bc5b7b 100644
--- a/modules/web-console/frontend/views/reset.tpl.pug
+++ b/modules/web-console/frontend/views/reset.tpl.pug
@@ -14,13 +14,9 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-header#header.header
-    table.container
-        tr
-            td.col-xs-3.col-sm-3.col-md-2
-                ignite-header-logo
-            td
-                ignite-header-title
+web-console-header
+    web-console-header-left
+        ignite-header-title
 
 .container.body-container
     .main-content(ng-controller='resetPassword')
@@ -45,4 +41,4 @@ header#header.header
                     .settings-row
                         button.btn.btn-primary(ng-disabled='resetForm.$invalid' ng-click='resetPassword(reset_info)') Reset Password
 
-include includes/footer
+web-console-footer

http://git-wip-us.apache.org/repos/asf/ignite/blob/63fda7fa/modules/web-console/frontend/views/signin.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/signin.tpl.pug b/modules/web-console/frontend/views/signin.tpl.pug
index a6c64a8..6f8f6ad 100644
--- a/modules/web-console/frontend/views/signin.tpl.pug
+++ b/modules/web-console/frontend/views/signin.tpl.pug
@@ -17,13 +17,9 @@
 mixin lblRequired(txt)
     label.col-xs-3.col-md-3.required #{txt}
 
-header#header.header
-    table.container
-        tr
-            td.col-xs-3.col-sm-3.col-md-2
-                ignite-header-logo
-            td
-                ignite-header-title
+web-console-header
+    web-console-header-left
+        ignite-header-title
 
 .container.body-container
     .main-content(ng-controller='auth')
@@ -155,7 +151,7 @@ header#header.header
                             span.fa.fa-chevron-right(aria-hidden='true')
                             span.sr-only Next
 
-include includes/footer
+web-console-footer
 
 script.
     $('.carousel').carousel()


[07/14] ignite git commit: ignite-5075

Posted by sb...@apache.org.
ignite-5075


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5a024a5f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5a024a5f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5a024a5f

Branch: refs/heads/ignite-5075
Commit: 5a024a5f113d1a3edb427e67fbe0e68a9a5c3a1f
Parents: a9317a4
Author: sboikov <sb...@gridgain.com>
Authored: Fri May 12 15:50:49 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri May 12 15:50:49 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/ClusterCachesInfo.java     | 22 ++++-----
 .../cache/DynamicCacheDescriptor.java           | 47 +++++++++++++++++---
 .../processors/cache/GridCacheIoManager.java    | 18 +++++---
 3 files changed, 64 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/5a024a5f/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 efcf6a8..da36470 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
@@ -337,15 +337,17 @@ class ClusterCachesInfo {
                     if (needExchange) {
                         req.clientStartOnly(true);
 
-                        desc.localStartVersion(topVer.nextMinorVersion());
+                        desc.clientCacheStartVersion(topVer.nextMinorVersion());
 
                         exchangeActions.addClientCacheToStart(req, desc);
                     }
                 }
 
-                if (!needExchange) {
-                    if (desc != null)
-                        waitTopVer = desc.localStartVersion();
+                if (!needExchange && desc != null) {
+                    if (desc.clientCacheStartVersion() != null)
+                        waitTopVer = desc.clientCacheStartVersion();
+                    else
+                        waitTopVer = desc.startTopologyVersion();
                 }
             }
             else if (req.globalStateChange())
@@ -397,7 +399,7 @@ class ClusterCachesInfo {
             for (DynamicCacheDescriptor desc : addedDescs) {
                 assert desc.template() || incMinorTopVer;
 
-                desc.localStartVersion(startTopVer);
+                desc.startTopologyVersion(startTopVer);
             }
         }
 
@@ -541,8 +543,6 @@ class ClusterCachesInfo {
                     processJoiningNode(joinDiscoData, node.id());
 
                     for (DynamicCacheDescriptor desc : registeredCaches.values()) {
-                        desc.localStartVersion(topVer);
-
                         CacheConfiguration cfg = desc.cacheConfiguration();
 
                         CacheJoinNodeDiscoveryData.CacheInfo locCfg = joinDiscoData.caches().get(cfg.getName());
@@ -559,7 +559,9 @@ class ClusterCachesInfo {
                                 desc.deploymentId(),
                                 desc.schema());
 
-                            desc0.localStartVersion(desc.localStartVersion());
+                            desc0.startTopologyVersion(desc.startTopologyVersion());
+                            desc0.receivedFromStartVersion(desc.receivedFromStartVersion());
+                            desc0.clientCacheStartVersion(desc.clientCacheStartVersion());
                             desc0.receivedFrom(desc.receivedFrom());
                             desc0.staticallyConfigured(desc.staticallyConfigured());
 
@@ -574,12 +576,12 @@ class ClusterCachesInfo {
 
             for (DynamicCacheDescriptor desc : registeredCaches.values()) {
                 if (node.id().equals(desc.receivedFrom()))
-                    desc.localStartVersion(topVer);
+                    desc.receivedFromStartVersion(topVer);
             }
 
             for (DynamicCacheDescriptor desc : registeredTemplates.values()) {
                 if (node.id().equals(desc.receivedFrom()))
-                    desc.localStartVersion(topVer);
+                    desc.receivedFromStartVersion(topVer);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/5a024a5f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheDescriptor.java
index 5c7060c..cec1828 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheDescriptor.java
@@ -73,7 +73,13 @@ public class DynamicCacheDescriptor {
     private volatile CacheObjectContext objCtx;
 
     /** */
-    private volatile transient AffinityTopologyVersion locStartVer;
+    private AffinityTopologyVersion startTopVer;
+
+    /** */
+    private AffinityTopologyVersion rcvdFromVer;
+
+    /** */
+    private AffinityTopologyVersion clientCacheStartVer;
 
     /** Mutex to control schema. */
     private final Object schemaMux = new Object();
@@ -230,17 +236,46 @@ public class DynamicCacheDescriptor {
     }
 
     /**
+     * @return Topology version when node provided cache configuration was started.
+     */
+    @Nullable public AffinityTopologyVersion receivedFromStartVersion() {
+        return rcvdFromVer;
+    }
+
+    /**
+     * @param rcvdFromVer Topology version when node provided cache configuration was started.
+     */
+    public void receivedFromStartVersion(AffinityTopologyVersion rcvdFromVer) {
+        this.rcvdFromVer = rcvdFromVer;
+    }
+
+
+    /**
+     * @return Start topology version.
+     */
+    @Nullable public AffinityTopologyVersion startTopologyVersion() {
+        return startTopVer;
+    }
+
+    /**
+     * @param startTopVer Start topology version.
+     */
+    public void startTopologyVersion(AffinityTopologyVersion startTopVer) {
+        this.startTopVer = startTopVer;
+    }
+
+    /**
      * @return Version when client cache on local node was started.
      */
-    @Nullable AffinityTopologyVersion localStartVersion() {
-        return locStartVer;
+    @Nullable AffinityTopologyVersion clientCacheStartVersion() {
+        return clientCacheStartVer;
     }
 
     /**
-     * @param locStartVer Version when cache on local node was started.
+     * @param clientCacheStartVer Version when client cache on local node was started.
      */
-    public void localStartVersion(AffinityTopologyVersion locStartVer) {
-        this.locStartVer = locStartVer;
+    public void clientCacheStartVersion(AffinityTopologyVersion clientCacheStartVer) {
+        this.clientCacheStartVer = clientCacheStartVer;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/5a024a5f/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 a8a4dcd..fdd29e4 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
@@ -146,22 +146,26 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
                 if (cacheMsg instanceof GridDhtAffinityAssignmentRequest) {
                     assert cacheMsg.topologyVersion() != null : cacheMsg;
 
-                    DynamicCacheDescriptor cacheDesc = cctx.cache().cacheDescriptor(cacheMsg.cacheId());
+                    AffinityTopologyVersion startTopVer = new AffinityTopologyVersion(cctx.localNode().order());
 
-                    AffinityTopologyVersion waitVer = cacheDesc != null ? cacheDesc.localStartVersion() : null;
+                    DynamicCacheDescriptor cacheDesc = cctx.cache().cacheDescriptor(cacheMsg.cacheId());
 
-                    if (waitVer == null)
-                        waitVer = new AffinityTopologyVersion(cctx.localNode().order());
+                    if (cacheDesc != null) {
+                        if (cacheDesc.startTopologyVersion() != null)
+                            startTopVer = cacheDesc.startTopologyVersion();
+                        else if (cacheDesc.receivedFromStartVersion() != null)
+                            startTopVer = cacheDesc.receivedFromStartVersion();
+                    }
 
                     // Need to wait for exchange to avoid race between cache start and affinity request.
-                    fut = cctx.exchange().affinityReadyFuture(waitVer);
+                    fut = cctx.exchange().affinityReadyFuture(startTopVer);
 
                     if (fut != null && !fut.isDone()) {
                         if (log.isDebugEnabled()) {
                             log.debug("Wait for exchange before processing message [msg=" + msg +
                                 ", node=" + nodeId +
-                                ", waitVer=" + waitVer +
-                                ", cacheDesc=" + cctx.cache().cacheDescriptor(cacheMsg.cacheId()) + ']');
+                                ", waitVer=" + startTopVer +
+                                ", cacheDesc=" + cacheDesc + ']');
                         }
 
                         fut.listen(new CI1<IgniteInternalFuture<?>>() {


[10/14] ignite git commit: ignite-5075

Posted by sb...@apache.org.
ignite-5075


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9b850cc1
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9b850cc1
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9b850cc1

Branch: refs/heads/ignite-5075
Commit: 9b850cc181bcd25f2362edeed33f7aa8a097f555
Parents: e4be5ab
Author: sboikov <sb...@gridgain.com>
Authored: Mon May 15 12:05:07 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon May 15 12:26:29 2017 +0300

----------------------------------------------------------------------
 .../distributed/GridDistributedBaseMessage.java |   1 -
 .../cache/transactions/IgniteTxEntry.java       |   4 +-
 .../processors/cache/IgniteCacheGroupsTest.java | 187 ++++++++++++++++++-
 3 files changed, 182 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/9b850cc1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
index 65b16a4..fc209aa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
@@ -25,7 +25,6 @@ import org.apache.ignite.internal.GridDirectCollection;
 import org.apache.ignite.internal.GridDirectTransient;
 import org.apache.ignite.internal.processors.cache.GridCacheDeployable;
 import org.apache.ignite.internal.processors.cache.GridCacheIdMessage;
-import org.apache.ignite.internal.processors.cache.GridCacheMessage;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersionable;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;

http://git-wip-us.apache.org/repos/asf/ignite/blob/9b850cc1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java
index 163ed99..30aa335 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java
@@ -565,7 +565,9 @@ public class IgniteTxEntry implements GridPeerDeployAware, Message {
      */
     public void cached(GridCacheEntryEx entry) {
         assert entry == null || entry.context() == ctx : "Invalid entry assigned to tx entry [txEntry=" + this +
-            ", entry=" + entry + ", ctxNear=" + ctx.isNear() + ", ctxDht=" + ctx.isDht() + ']';
+            ", entry=" + entry +
+            ", ctxNear=" + ctx.isNear() +
+            ", ctxDht=" + ctx.isDht() + ']';
 
         this.entry = entry;
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/9b850cc1/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java
index 39dc044..c10321e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java
@@ -19,15 +19,21 @@ package org.apache.ignite.internal.processors.cache;
 
 import java.io.Serializable;
 import java.util.concurrent.ThreadLocalRandom;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.Ignition;
 import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.IgniteKernal;
 import org.apache.ignite.internal.util.lang.GridAbsPredicate;
 import org.apache.ignite.internal.util.typedef.internal.CU;
+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.TcpDiscoveryIpFinder;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -35,6 +41,8 @@ import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
 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;
 
 /**
@@ -84,7 +92,7 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
 
         Ignite client = startGrid(1);
 
-        IgniteCache c1 = client.createCache(cacheConfiguration(GROUP1, "c1", ATOMIC, 0));
+        IgniteCache c1 = client.createCache(cacheConfiguration(GROUP1, "c1", PARTITIONED, ATOMIC, 0));
 
         checkCacheGroup(0, GROUP1, true);
         checkCacheGroup(0, GROUP1, true);
@@ -137,7 +145,7 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
         for (int iter = 0; iter < 3; iter++) {
             log.info("Iteration: " + iter);
 
-            srv0.createCache(cacheConfiguration(GROUP1, "cache1", ATOMIC, 2));
+            srv0.createCache(cacheConfiguration(GROUP1, "cache1", PARTITIONED, ATOMIC, 2));
 
             for (int i = 0; i < srvs; i++) {
                 checkCacheGroup(i, GROUP1, true);
@@ -145,7 +153,7 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
                 checkCache(i, "cache1");
             }
 
-            srv0.createCache(cacheConfiguration(GROUP1, "cache2", ATOMIC, 2));
+            srv0.createCache(cacheConfiguration(GROUP1, "cache2", PARTITIONED, ATOMIC, 2));
 
             for (int i = 0; i < srvs; i++) {
                 checkCacheGroup(i, GROUP1, true);
@@ -193,8 +201,10 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
         Ignite srv0 = startGrid(0);
 
         {
-            IgniteCache<Object, Object> cache1 = srv0.createCache(cacheConfiguration("grp1", "cache1", ATOMIC, 2));
-            IgniteCache<Object, Object> cache2 = srv0.createCache(cacheConfiguration("grp1", "cache2", ATOMIC, 2));
+            IgniteCache<Object, Object> cache1 =
+                srv0.createCache(cacheConfiguration("grp1", "cache1", PARTITIONED, ATOMIC, 2));
+            IgniteCache<Object, Object> cache2 =
+                srv0.createCache(cacheConfiguration("grp1", "cache2", PARTITIONED, ATOMIC, 2));
 
             cache1.put(new Key1(1), 1);
             assertEquals(1, cache1.get(new Key1(1)));
@@ -231,8 +241,10 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
         Ignite srv0 = startGrid(0);
 
         {
-            IgniteCache<Object, Object> cache1 = srv0.createCache(cacheConfiguration("grp1", "cache1", ATOMIC, 0));
-            IgniteCache<Object, Object> cache2 = srv0.createCache(cacheConfiguration("grp1", "cache2", ATOMIC, 0));
+            IgniteCache<Object, Object> cache1 =
+                srv0.createCache(cacheConfiguration(GROUP1, "cache1", PARTITIONED, ATOMIC, 0));
+            IgniteCache<Object, Object> cache2 =
+                srv0.createCache(cacheConfiguration(GROUP1, "cache2", PARTITIONED, ATOMIC, 0));
 
             for (int i = 0; i < 10; i++) {
                 cache1.put(new Key1(i), 1);
@@ -246,6 +258,162 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
     }
 
     /**
+     * @throws Exception If failed.
+     */
+    public void testCacheApiTx() throws Exception {
+        startGridsMultiThreaded(4);
+
+        client = true;
+
+        startGrid(4);
+
+        cacheApiTest(PARTITIONED, TRANSACTIONAL, 2);
+    }
+
+    /**
+     * @param cacheMode Cache mode.
+     * @param atomicityMode Atomicity mode.
+     * @param backups Number of backups.
+     */
+    private void cacheApiTest(CacheMode cacheMode, CacheAtomicityMode atomicityMode, int backups) {
+        for (int i = 0; i < 2; i++)
+            ignite(0).createCache(cacheConfiguration(GROUP1, "cache-" + i, cacheMode, atomicityMode, backups));
+
+        for (Ignite node : Ignition.allGrids()) {
+            for (int i = 0; i < 2; i++) {
+                IgniteCache cache = node.cache("cache-" + i);
+
+                log.info("Test cache [node=" + node.name() + ", cache=" + cache.getName() +
+                    ", mode=" + cacheMode + ", atomicity=" + atomicityMode + ", backups=" + backups + ']');
+
+                cacheApiTest(cache);
+            }
+        }
+    }
+
+    /**
+     * @param cache Cache.
+     */
+    private void cacheApiTest(IgniteCache cache) {
+        int key = 1;
+
+        cache.put(key, 1);
+
+        cache.remove(key);
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testConcurrentOperations() throws Exception {
+        final int SRVS = 4;
+        final int CLIENTS = 4;
+        final int NODES = SRVS + CLIENTS;
+
+        Ignite srv0 = startGridsMultiThreaded(SRVS);
+
+        client = true;
+
+        startGridsMultiThreaded(SRVS, CLIENTS);
+
+        final int CACHES = 4;
+
+        for (int i = 0; i < CACHES; i++) {
+            srv0.createCache(cacheConfiguration(GROUP1, GROUP1 + "-" + i, PARTITIONED, ATOMIC, i));
+            srv0.createCache(cacheConfiguration(GROUP2, GROUP2 + "-" + i, PARTITIONED, TRANSACTIONAL, i));
+        }
+
+        final AtomicInteger idx = new AtomicInteger();
+
+        final AtomicBoolean err = new AtomicBoolean();
+
+        final AtomicBoolean stop = new AtomicBoolean();
+
+        IgniteInternalFuture opFut = GridTestUtils.runMultiThreadedAsync(new Runnable() {
+            @Override public void run() {
+                try {
+                    Ignite node = ignite(idx.getAndIncrement() % NODES);
+
+                    log.info("Start thread [node=" + node.name() + ']');
+
+                    ThreadLocalRandom rnd = ThreadLocalRandom.current();
+
+                    while (!stop.get()) {
+                        String grp = rnd.nextBoolean() ? GROUP1 : GROUP2;
+                        int cacheIdx = rnd.nextInt(CACHES);
+
+                        IgniteCache cache = node.cache(grp + "-" + cacheIdx);
+
+                        for (int i = 0; i < 10; i++)
+                            cacheOperation(rnd, cache);
+                    }
+                }
+                catch (Exception e) {
+                    err.set(true);
+
+                    log.error("Unexpected error: " + e, e);
+
+                    stop.set(true);
+                }
+            }
+        }, (SRVS + CLIENTS) * 2, "op-thread");
+
+        IgniteInternalFuture cacheFut = GridTestUtils.runAsync(new Runnable() {
+            @Override public void run() {
+                try {
+                    while (!stop.get()) {
+//                        ThreadLocalRandom rnd = ThreadLocalRandom.current();
+//
+//                        String grp = rnd.nextBoolean() ? GROUP1 : GROUP2;
+//
+//                        Ignite node = ignite(rnd.nextInt(NODES));
+//
+//                        IgniteCache cache = node.createCache(cacheConfiguration(grp, "tmpCache",
+//                            rnd.nextBoolean() ? ATOMIC : TRANSACTIONAL,
+//                            rnd.nextInt(3)));
+//
+//                        for (int i = 0; i < 10; i++)
+//                            cacheOperation(rnd, cache);
+//
+//                        node.destroyCache(cache.getName());
+
+                        U.sleep(1000);
+                    }
+                }
+                catch (Exception e) {
+                    err.set(true);
+
+                    log.error("Unexpected error: " + e, e);
+
+                    stop.set(true);
+                }
+            }
+        }, "cache-thread");
+
+        try {
+            U.sleep(10_000);
+        }
+        finally {
+            stop.set(true);
+        }
+
+        opFut.get();
+        cacheFut.get();
+
+        assertFalse("Unexpected error, see log for details", err.get());
+    }
+
+    /**
+     * @param rnd Random.
+     * @param cache Cache.
+     */
+    private void cacheOperation(ThreadLocalRandom rnd, IgniteCache cache) {
+        int key = rnd.nextInt(1000);
+
+        cache.put(key, 1);
+    }
+
+    /**
      *
      */
     static class Key1 implements Serializable {
@@ -311,8 +479,10 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
         }
     }
 
-    private CacheConfiguration cacheConfiguration(String grpName,
+    private CacheConfiguration cacheConfiguration(
+        String grpName,
         String name,
+        CacheMode cacheMode,
         CacheAtomicityMode atomicityMode,
         int backups) {
         CacheConfiguration ccfg = new CacheConfiguration();
@@ -321,6 +491,7 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
         ccfg.setGroupName(grpName);
         ccfg.setAtomicityMode(atomicityMode);
         ccfg.setBackups(backups);
+        ccfg.setCacheMode(cacheMode);
         ccfg.setWriteSynchronizationMode(FULL_SYNC);
 
         return ccfg;


[13/14] ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-5075-cacheStart' into ignite-5075

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-5075-cacheStart' into ignite-5075

# Conflicts:
#	modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
#	modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5972cbd0
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5972cbd0
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5972cbd0

Branch: refs/heads/ignite-5075
Commit: 5972cbd0d2d96b529f436a378af3c006f5f0729d
Parents: 9b850cc f5a5fa0
Author: sboikov <sb...@gridgain.com>
Authored: Mon May 15 13:23:41 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon May 15 13:23:41 2017 +0300

----------------------------------------------------------------------
 .../cache/CacheAffinitySharedManager.java       |  10 +-
 .../processors/cache/ClusterCachesInfo.java     |  22 +-
 .../cache/DynamicCacheDescriptor.java           |  47 +++-
 .../processors/cache/GridCacheAdapter.java      |  71 +----
 .../cache/GridCacheConcurrentMap.java           |   5 -
 .../cache/GridCacheConcurrentMapImpl.java       |  28 --
 .../processors/cache/GridCacheIoManager.java    |  13 +-
 .../processors/cache/GridCacheProxyImpl.java    |  60 ----
 .../processors/cache/GridNoStorageCacheMap.java |   5 -
 .../processors/cache/IgniteInternalCache.java   |  61 -----
 .../dht/GridCachePartitionedConcurrentMap.java  |   9 -
 .../distributed/dht/GridDhtCacheAdapter.java    | 162 -----------
 .../distributed/near/GridNearCacheAdapter.java  |  17 --
 .../GridCachePartitionedFullApiSelfTest.java    |  18 --
 .../cache/eviction/EvictionAbstractTest.java    |  13 +-
 .../hadoop/jobtracker/HadoopJobTracker.java     |  20 +-
 .../cache/hibernate/HibernateCacheProxy.java    |  25 --
 .../Apache.Ignite.Core.Tests.csproj             |   1 +
 .../Binary/BinarySelfTest.cs                    |   7 +-
 .../Binary/EnumsTest.cs                         | 274 +++++++++++++++++++
 .../Compute/ComputeApiTest.cs                   |   2 +-
 .../Impl/Binary/BinaryObject.cs                 |   2 +-
 .../Impl/Binary/BinaryReflectiveActions.cs      |   6 +-
 .../Impl/Binary/BinarySystemHandlers.cs         | 271 +++++++++---------
 .../Impl/Binary/BinaryUtils.cs                  |  30 --
 .../Impl/Binary/BinaryWriter.cs                 |  48 +++-
 modules/web-console/frontend/app/app.js         |   7 +-
 .../activities-user-dialog.tpl.pug              |  33 ++-
 .../cluster-select/cluster-select.pug           |   6 +-
 .../cluster-select/cluster-select.scss          |  30 ++
 .../app/components/cluster-select/index.js      |   1 +
 .../components/web-console-footer/component.js  |  23 ++
 .../app/components/web-console-footer/index.js  |  23 ++
 .../components/web-console-footer/style.scss    |  45 +++
 .../components/web-console-footer/template.pug  |  19 ++
 .../components/web-console-header/component.js  |  34 +++
 .../app/components/web-console-header/index.js  |  23 ++
 .../components/web-console-header/style.scss    | 127 +++++++++
 .../components/web-console-header/template.pug  |  25 ++
 .../app/modules/branding/branding.provider.js   |   2 +-
 .../modules/branding/header-title.directive.js  |   6 +-
 .../branding/powered-by-apache.directive.js     |   3 +-
 .../frontend/app/modules/states/signin.state.js |   2 +
 .../frontend/app/primitives/btn/index.scss      | 235 ++++++++++++++++
 .../frontend/app/primitives/index.js            |   2 +
 .../frontend/app/primitives/modal/index.scss    | 179 ++++++++++++
 .../frontend/app/primitives/table/index.scss    |  91 ++++++
 .../frontend/gulpfile.babel.js/paths.js         |   1 +
 .../frontend/public/images/ignite-logo.png      | Bin 1982 -> 0 bytes
 .../frontend/public/images/ignite-logo.svg      |  17 ++
 .../frontend/public/images/ignite-logo@2x.png   | Bin 3325 -> 0 bytes
 .../stylesheets/_bootstrap-variables.scss       |   4 +-
 .../frontend/public/stylesheets/style.scss      | 167 ++---------
 .../frontend/public/stylesheets/variables.scss  |   6 +
 modules/web-console/frontend/views/403.tpl.pug  |   8 +-
 modules/web-console/frontend/views/404.tpl.pug  |   8 +-
 modules/web-console/frontend/views/base.pug     |   8 +-
 modules/web-console/frontend/views/base2.pug    |   8 +-
 .../frontend/views/includes/footer.pug          |  23 --
 .../frontend/views/includes/header-left.pug     |  64 +++++
 .../frontend/views/includes/header-right.pug    |  40 +++
 .../frontend/views/includes/header.pug          |  57 ----
 modules/web-console/frontend/views/index.pug    |   2 +-
 .../web-console/frontend/views/reset.tpl.pug    |  12 +-
 .../web-console/frontend/views/signin.tpl.pug   |  14 +-
 parent/pom.xml                                  |   3 +-
 66 files changed, 1619 insertions(+), 966 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
index c3fc575,e10d385..0dab5ab
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
@@@ -383,71 -396,60 +383,72 @@@ public class CacheAffinitySharedManager
                      CU.affinityNode(cctx.localNode(), req.startCacheConfiguration().getNodeFilter());
              }
  
-             if (startCache)
+             if (startCache) {
                  cctx.cache().prepareCacheStart(cacheDesc, nearCfg, fut.topologyVersion());
  
-             if (fut.cacheAddedOnExchange(cacheDesc.cacheId(), cacheDesc.receivedFrom())) {
-                 if (fut.discoCache().cacheGroupAffinityNodes(cacheDesc.groupDescriptor().groupId()).isEmpty())
-                     U.quietAndWarn(log, "No server nodes found for cache client: " + req.cacheName());
+                 if (fut.cacheAddedOnExchange(cacheDesc.cacheId(), cacheDesc.receivedFrom())) {
 -                    if (fut.discoCache().cacheAffinityNodes(req.cacheName()).isEmpty())
++                    if (fut.discoCache().cacheGroupAffinityNodes(cacheDesc.groupDescriptor().groupId()).isEmpty())
+                         U.quietAndWarn(log, "No server nodes found for cache client: " + req.cacheName());
+                 }
              }
 +        }
  
 -            if (!crd || !lateAffAssign) {
 -                GridCacheContext cacheCtx = cctx.cacheContext(cacheDesc.cacheId());
 +        for (CacheGroupInfrastructure grp : cctx.cache().cacheGroups()) {
 +            if (grp.affinity().lastVersion().equals(AffinityTopologyVersion.NONE))
 +                initAffinity(registeredGrps.get(grp.groupId()), grp.affinity(), fut, false);
 +        }
  
 -                if (cacheCtx != null && !cacheCtx.isLocal()) {
 -                    boolean clientCacheStarted =
 -                        req.clientStartOnly() && req.initiatingNodeId().equals(cctx.localNodeId());
 +        if (crd) {
 +            for (ExchangeActions.ActionData action : exchActions.newAndClientCachesStartRequests())
 +                initStartedGroupOnCoordinator(fut, action.descriptor().groupDescriptor());
 +        }
  
 -                    if (clientCacheStarted)
 -                        initAffinity(cacheDesc, cacheCtx.affinity().affinityCache(), fut, lateAffAssign);
 -                    else if (!req.clientStartOnly()) {
 -                        GridAffinityAssignmentCache aff = cacheCtx.affinity().affinityCache();
 +        List<ExchangeActions.ActionData> closeReqs = exchActions.closeRequests(cctx.localNodeId());
  
 -                        assert aff.lastVersion().equals(AffinityTopologyVersion.NONE) : aff.lastVersion();
 +        for (ExchangeActions.ActionData req : closeReqs) {
 +            cctx.cache().blockGateway(req.request());
  
 -                        List<List<ClusterNode>> assignment = aff.calculate(fut.topologyVersion(),
 -                            fut.discoveryEvent(), fut.discoCache());
 +            if (crd) {
 +                CacheGroupInfrastructure grp = cctx.cache().cacheGroup(req.descriptor().groupDescriptor().groupId());
  
 -                        aff.initialize(fut.topologyVersion(), assignment);
 -                    }
 -                }
 -            }
 -            else
 -                initStartedCacheOnCoordinator(fut, cacheDesc.cacheId());
 -        }
 +                assert grp != null;
  
 -        for (DynamicCacheChangeRequest req : exchActions.closeRequests(cctx.localNodeId())) {
 -            Integer cacheId = CU.cacheId(req.cacheName());
 +                if (grp.affinityNode())
 +                    continue;
  
 -            cctx.cache().blockGateway(req);
 +                boolean grpClosed = false;
  
 -            if (crd) {
 -                GridCacheContext cacheCtx = cctx.cacheContext(cacheId);
 +                if (grp.sharedGroup()) {
 +                    boolean cacheRemaining = false;
 +
 +                    for (GridCacheContext ctx : cctx.cacheContexts()) {
 +                        if (ctx.group() == grp && !cacheClosed(ctx.cacheId(), closeReqs)) {
 +                            cacheRemaining = true;
 +
 +                            break;
 +                        }
 +                    }
 +
 +                    if (!cacheRemaining)
 +                        grpClosed = true;
 +                }
 +                else
 +                    grpClosed = true;
  
 -                // Client cache was stopped, need create 'client' CacheHolder.
 -                if (cacheCtx != null && !cacheCtx.affinityNode()) {
 -                    CacheHolder cache = caches.remove(cacheId);
 +                // All client cache groups were stopped, need create 'client' CacheGroupHolder.
 +                if (grpClosed) {
 +                    CacheGroupHolder grpHolder = grpHolders.remove(grp.groupId());
  
 -                    assert !cache.client() : cache;
 +                    if (grpHolder != null) {
 +                        assert !grpHolder.client() : grpHolder;
  
 -                    cache = CacheHolder2.create(cctx,
 -                        cctx.cache().cacheDescriptor(cacheId),
 -                        fut,
 -                        cache.affinity());
 +                        grpHolder = CacheGroupHolder2.create(cctx,
 +                            registeredGrps.get(grp.groupId()),
 +                            fut,
 +                            grp.affinity());
  
 -                    caches.put(cacheId, cache);
 +                        grpHolders.put(grp.groupId(), grpHolder);
 +                    }
                  }
              }
          }

http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheDescriptor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
index d505825,fdd29e4..af9b99e
--- 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
@@@ -141,14 -146,19 +141,25 @@@ public class GridCacheIoManager extend
                  if (cacheMsg instanceof GridDhtAffinityAssignmentRequest) {
                      assert cacheMsg.topologyVersion() != null : cacheMsg;
  
 -                    AffinityTopologyVersion startTopVer = new AffinityTopologyVersion(cctx.localNode().order());
 +                    // TODO IGNITE-5075.
 +                    AffinityTopologyVersion waitVer = null;//cctx.affinity().localStartVersion(((GridDhtAffinityAssignmentRequest) cacheMsg).groupId());
  
 -                    DynamicCacheDescriptor cacheDesc = cctx.cache().cacheDescriptor(cacheMsg.cacheId());
 +                    if (waitVer == null)
 +                        waitVer = new AffinityTopologyVersion(cctx.localNode().order());
  
 -                    if (cacheDesc != null) {
 -                        if (cacheDesc.startTopologyVersion() != null)
 -                            startTopVer = cacheDesc.startTopologyVersion();
 -                        else if (cacheDesc.receivedFromStartVersion() != null)
 -                            startTopVer = cacheDesc.receivedFromStartVersion();
 -                    }
++//                    AffinityTopologyVersion startTopVer = new AffinityTopologyVersion(cctx.localNode().order());
++//
++//                    DynamicCacheDescriptor cacheDesc = cctx.cache().cacheDescriptor(cacheMsg.cacheId());
++//
++//                    if (cacheDesc != null) {
++//                        if (cacheDesc.startTopologyVersion() != null)
++//                            startTopVer = cacheDesc.startTopologyVersion();
++//                        else if (cacheDesc.receivedFromStartVersion() != null)
++//                            startTopVer = cacheDesc.receivedFromStartVersion();
++//                    }
+ 
                      // Need to wait for exchange to avoid race between cache start and affinity request.
-                     fut = cctx.exchange().affinityReadyFuture(waitVer);
+                     fut = cctx.exchange().affinityReadyFuture(startTopVer);
  
                      if (fut != null && !fut.isDone()) {
                          if (log.isDebugEnabled()) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridNoStorageCacheMap.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedConcurrentMap.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
----------------------------------------------------------------------


[04/14] ignite git commit: IGNITE-5082 Fixed UI for footer.

Posted by sb...@apache.org.
IGNITE-5082 Fixed UI for footer.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/600f2b7b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/600f2b7b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/600f2b7b

Branch: refs/heads/ignite-5075
Commit: 600f2b7b726703418e02e8ee953bb821b01f4b56
Parents: 63fda7f
Author: Ilya Borisov <ib...@gridgain.com>
Authored: Fri May 12 17:45:57 2017 +0700
Committer: Andrey Novikov <an...@gridgain.com>
Committed: Fri May 12 17:45:57 2017 +0700

----------------------------------------------------------------------
 .../components/web-console-footer/style.scss    |  4 ++++
 .../frontend/views/includes/footer.pug          | 23 --------------------
 2 files changed, 4 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/600f2b7b/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 0b2fa8b..962b4f3 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
@@ -27,6 +27,10 @@ web-console-footer {
 
     p {
         margin-bottom: 0;
+
+        &:first-of-type {
+            margin-bottom: 5px;
+        }
     }
 
     .wcf-content {

http://git-wip-us.apache.org/repos/asf/ignite/blob/600f2b7b/modules/web-console/frontend/views/includes/footer.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/includes/footer.pug b/modules/web-console/frontend/views/includes/footer.pug
deleted file mode 100644
index 4ef3bf6..0000000
--- a/modules/web-console/frontend/views/includes/footer.pug
+++ /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.
-
-.container.container-footer
-    footer
-        .col-md-offset-1.col-md-10
-            ignite-footer
-        .col-md-1
-            .pull-right
-                ignite-powered-by-apache


[05/14] ignite git commit: IGNITE-5082 Fixed RAT.

Posted by sb...@apache.org.
IGNITE-5082 Fixed RAT.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4b2b6843
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4b2b6843
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4b2b6843

Branch: refs/heads/ignite-5075
Commit: 4b2b68434bf4560cb71485b93f366126730d59a7
Parents: 600f2b7
Author: Andrey Novikov <an...@gridgain.com>
Authored: Fri May 12 17:46:14 2017 +0700
Committer: Andrey Novikov <an...@gridgain.com>
Committed: Fri May 12 17:46:14 2017 +0700

----------------------------------------------------------------------
 parent/pom.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/4b2b6843/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 3b57895..12ff70a 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -900,7 +900,8 @@
                                         <exclude>**/backend/config/settings.json.sample</exclude>
                                         <exclude>**/backend/node_modules/**</exclude>
                                         <exclude>**/frontend/build/**</exclude>
-                                        <exclude>**/frontend/public/images/icons/**</exclude>
+                                        <exclude>**/frontend/public/images/**/*.png</exclude>
+                                        <exclude>**/frontend/public/images/**/*.svg</exclude>
                                         <exclude>**/frontend/ignite_modules/**</exclude>
                                         <exclude>**/frontend/ignite_modules_temp/**</exclude>
                                         <exclude>**/frontend/node_modules/**</exclude>


[03/14] ignite git commit: ignite-5075

Posted by sb...@apache.org.
ignite-5075


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a9317a4c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a9317a4c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a9317a4c

Branch: refs/heads/ignite-5075
Commit: a9317a4c2f558bd109543020c89fec3a7842c574
Parents: ca0cc87
Author: sboikov <sb...@gridgain.com>
Authored: Fri May 12 12:30:13 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri May 12 12:30:13 2017 +0300

----------------------------------------------------------------------
 .../cache/CacheAffinitySharedManager.java        | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/a9317a4c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
index d186cdb..e10d385 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
@@ -313,7 +313,7 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
             cctx.io().addHandler(cacheId, GridDhtAffinityAssignmentResponse.class,
                 new IgniteBiInClosure<UUID, GridDhtAffinityAssignmentResponse>() {
                     @Override public void apply(UUID nodeId, GridDhtAffinityAssignmentResponse res) {
-                        processAffinityAssignmentResponse(cacheId, nodeId, res);
+                        processAffinityAssignmentResponse(nodeId, res);
                     }
                 });
         }
@@ -396,12 +396,13 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
                     CU.affinityNode(cctx.localNode(), req.startCacheConfiguration().getNodeFilter());
             }
 
-            if (startCache)
+            if (startCache) {
                 cctx.cache().prepareCacheStart(cacheDesc, nearCfg, fut.topologyVersion());
 
-            if (fut.cacheAddedOnExchange(cacheDesc.cacheId(), cacheDesc.receivedFrom())) {
-                if (fut.discoCache().cacheAffinityNodes(req.cacheName()).isEmpty())
-                    U.quietAndWarn(log, "No server nodes found for cache client: " + req.cacheName());
+                if (fut.cacheAddedOnExchange(cacheDesc.cacheId(), cacheDesc.receivedFrom())) {
+                    if (fut.discoCache().cacheAffinityNodes(req.cacheName()).isEmpty())
+                        U.quietAndWarn(log, "No server nodes found for cache client: " + req.cacheName());
+                }
             }
 
             if (!crd || !lateAffAssign) {
@@ -710,11 +711,10 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
     }
 
     /**
-     * @param cacheId Cache ID.
      * @param nodeId Node ID.
      * @param res Response.
      */
-    private void processAffinityAssignmentResponse(Integer cacheId, UUID nodeId, GridDhtAffinityAssignmentResponse res) {
+    private void processAffinityAssignmentResponse(UUID nodeId, GridDhtAffinityAssignmentResponse res) {
         if (log.isDebugEnabled())
             log.debug("Processing affinity assignment response [node=" + nodeId + ", res=" + res + ']');
 
@@ -837,6 +837,7 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
     }
 
     /**
+     * @param desc Cache descriptor.
      * @param aff Affinity.
      * @param fut Exchange future.
      * @param fetch Force fetch flag.
@@ -1123,7 +1124,7 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
                     cctx.io().addHandler(desc.cacheId(), GridDhtAffinityAssignmentResponse.class,
                         new IgniteBiInClosure<UUID, GridDhtAffinityAssignmentResponse>() {
                             @Override public void apply(UUID nodeId, GridDhtAffinityAssignmentResponse res) {
-                                processAffinityAssignmentResponse(cacheId, nodeId, res);
+                                processAffinityAssignmentResponse(nodeId, res);
                             }
                         }
                     );
@@ -1216,7 +1217,7 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
             cctx.io().addHandler(cacheId, GridDhtAffinityAssignmentResponse.class,
                 new IgniteBiInClosure<UUID, GridDhtAffinityAssignmentResponse>() {
                     @Override public void apply(UUID nodeId, GridDhtAffinityAssignmentResponse res) {
-                        processAffinityAssignmentResponse(cacheId, nodeId, res);
+                        processAffinityAssignmentResponse(nodeId, res);
                     }
                 }
             );


[08/14] ignite git commit: IGNITE-5165 Add classes for new design buttons and links.

Posted by sb...@apache.org.
IGNITE-5165 Add classes for new design buttons and links.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f038f63a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f038f63a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f038f63a

Branch: refs/heads/ignite-5075
Commit: f038f63a8a67c23061014a5356cde93814d5b8d2
Parents: ed4a7a1
Author: Ilya Borisov <ib...@gridgain.com>
Authored: Mon May 15 10:31:27 2017 +0700
Committer: Andrey Novikov <an...@gridgain.com>
Committed: Mon May 15 10:31:27 2017 +0700

----------------------------------------------------------------------
 .../components/web-console-header/style.scss    |   9 -
 .../frontend/app/primitives/btn/index.scss      | 235 +++++++++++++++++++
 .../frontend/public/stylesheets/variables.scss  |   4 +
 .../frontend/views/includes/header-right.pug    |   4 +-
 4 files changed, 241 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f038f63a/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 5e382c8..78ff5f1 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
@@ -107,15 +107,6 @@ web-console-header {
         &:nth-last-child(2) {
             margin-right: $nav-item-margin;
         }
-
-        .btn-demo {
-            padding: 8px 10px;
-            font-size: $font-size-base;
-            line-height: 18px;
-            border-radius: 4px;
-
-            margin-right: 0;
-        }
     }
 
     .wch-revert-identity {

http://git-wip-us.apache.org/repos/asf/ignite/blob/f038f63a/modules/web-console/frontend/app/primitives/btn/index.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/btn/index.scss b/modules/web-console/frontend/app/primitives/btn/index.scss
index ec62df4..7905927 100644
--- a/modules/web-console/frontend/app/primitives/btn/index.scss
+++ b/modules/web-console/frontend/app/primitives/btn/index.scss
@@ -15,6 +15,9 @@
  * limitations under the License.
  */
 
+@import "./../../../public/stylesheets/variables.scss";
+
+// TODO IGNITE-5165 Remove and replace with btn-ignite in templates.
 .btn.btn--stroke {
     min-width: 36px;
     height: 36px;
@@ -54,4 +57,236 @@
         outline: none;
     }
 
+}
+
+@mixin active-focus-shadows(
+    $focus: (0 0 5px #095d9a, 0 0 5px #095d9a),
+    $active: (inset 0 1px 3px 0 rgba(0, 0, 0, 0.5))
+) {
+    &.focus, &:focus {
+        box-shadow: $focus;
+    }
+
+    &.active, &:active {
+        box-shadow: $active;
+    }
+
+    &:active, &.active {
+        &:focus, &.focus {
+            &:not([disabled]) {
+                box-shadow: $focus, $active;
+            }
+        }
+    }
+}
+
+.btn-ignite {
+    $content-padding: 12px;
+    $icon-margin: 8px;
+
+    min-height: 36px;
+    display: inline-flex;
+    flex-direction: row;
+    justify-content: center;
+    align-items: center;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0 $content-padding;
+
+    border: none;
+    border-radius: 4px;
+    text-align: center;
+    outline: none;
+    font-family: Roboto, sans-serif;
+    font-size: 14px;
+    line-height: 16px;
+    text-decoration: none;
+
+    .icon {
+        &, &-right, &-left {
+            height: 16px;
+        }
+
+        &-right {
+            margin-left: $icon-margin;
+        }
+
+        &-left {
+            margin-right: $icon-margin;
+        }
+    }
+
+    // Icon tweaks
+    .icon.fa-caret-down {
+        margin: 0 -3px;
+    }
+
+    .fa {
+        line-height: inherit !important;
+        font-size: 16px;
+    }
+}
+
+.btn-ignite--primary {
+    $accent-color: $ignite-brand-primary;
+    $text-color: white;
+
+    background-color: $accent-color;
+    color: white;
+
+    &:hover, &.hover,
+    &:active, &.active {
+        &:not([disabled]) {
+            color: white;
+            background-color: change-color($accent-color, $lightness: 41%);
+        }
+    }
+
+    @include active-focus-shadows();
+
+    &[disabled] {
+        color: transparentize($text-color, 0.5);
+        background-color: change-color($accent-color, $lightness: 77%);
+    }
+}
+
+.btn-ignite--primary-outline {
+    $accent-color: $ignite-brand-primary;
+    $hover-color: change-color($accent-color, $lightness: 36%);
+    $disabled-color: #c5c5c5;
+
+    border: 1px solid $accent-color;
+    background: white;
+    color: $accent-color;
+
+    &:hover, &.hover,
+    &:active, &.active {
+        &:not([disabled]) {
+            color: $hover-color;
+            border-color: $hover-color;
+        }
+    }
+
+    @include active-focus-shadows($active: inset 0 1px 3px 0 $hover-color);
+
+    &[disabled] {
+        color: $disabled-color;
+        border-color: $disabled-color;
+    }
+}
+
+.btn-ignite--success {
+    $accent-color: $ignite-brand-success;
+    $text-color: white;
+
+    background-color: $accent-color;
+    color: white;
+
+    &:hover, &.hover,
+    &:active, &.active {
+        &:not([disabled]) {
+            color: white;
+            background-color: change-color($accent-color, $lightness: 26%);
+        }
+    }
+
+    @include active-focus-shadows();
+
+    &[disabled] {
+        color: transparentize($text-color, 0.5);
+        background-color: change-color($accent-color, $saturation: 57%, $lightness: 68%);
+    }
+}
+
+.btn-ignite--link-success {
+    $accent-color: $ignite-brand-success;
+
+    background: transparent;
+    color: $accent-color;
+    text-decoration: underline;
+
+    &:hover, &.hover,
+    &:active, &.active {
+        &:not([disabled]) {
+            color: change-color($accent-color, $lightness: 26%);
+        }
+    }
+
+    @include active-focus-shadows($active: ());
+
+    &[disabled] {
+        color: change-color($accent-color, $saturation: 57%, $lightness: 68%);
+    }
+}
+
+.btn-ignite--secondary {
+    background-color: white;
+    color: #424242;
+    border: 1px solid #dedede;
+
+    &:hover, &.hover,
+    &:active, &.active {
+        &:not([disabled]) {
+            border-color: #c5c5c5;
+            background-color: #eeeeee;
+        }
+    }
+
+    @include active-focus-shadows();
+
+    &[disabled] {
+        opacity: 0.5;
+    }
+}
+
+.btn-ignite-group {
+    display: inline-flex;
+
+    .btn-ignite:not(:first-of-type):not(:last-of-type) {
+        border-radius: 0;
+    }
+
+    .btn-ignite:not(:last-of-type) {
+        border-right-width: 1px;
+        border-right-style: solid;
+    }
+
+    .btn-ignite:first-of-type:not(:only-child) {
+        border-top-right-radius: 0;
+        border-bottom-right-radius: 0;
+    }
+
+    .btn-ignite:last-of-type:not(:only-child) {
+        border-top-left-radius: 0;
+        border-bottom-left-radius: 0;
+    }
+
+    .btn-ignite.btn-ignite--primary {
+        $line-color: $ignite-brand-primary;
+        border-right-color: change-color($line-color, $lightness: 41%);
+    }
+}
+
+@mixin ignite-link($color, $color-hover) {
+    color: $color;
+
+    &:hover, &.hover,
+    &:focus, &.focus {
+        color: $color-hover;
+        text-decoration: none;
+    }
+}
+
+.link-primary {
+    @include ignite-link(
+        $color: $ignite-brand-primary,
+        $color-hover: change-color($ignite-brand-primary, $lightness: 41%)
+    );
+}
+
+.link-success {
+    @include ignite-link(
+        $color: $ignite-brand-success,
+        $color-hover: change-color($ignite-brand-success, $lightness: 26%)
+    );
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/f038f63a/modules/web-console/frontend/public/stylesheets/variables.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/stylesheets/variables.scss b/modules/web-console/frontend/public/stylesheets/variables.scss
index 9c77436..d75438f 100644
--- a/modules/web-console/frontend/public/stylesheets/variables.scss
+++ b/modules/web-console/frontend/public/stylesheets/variables.scss
@@ -28,3 +28,7 @@ $ignite-background-color: #fff;
 $ignite-new-background-color: #f9f9f9;
 $ignite-header-color: #555;
 $ignite-invalid-color: $brand-primary;
+
+// Color palette
+$ignite-brand-primary: #ee2b27; // Red
+$ignite-brand-success: #0067b9; // Blue
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/f038f63a/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
index e8aeb01..62227e9 100644
--- a/modules/web-console/frontend/views/includes/header-right.pug
+++ b/modules/web-console/frontend/views/includes/header-right.pug
@@ -15,11 +15,11 @@
     limitations under the License.
 
 .wch-demo-toggle(ng-controller='demoController')
-    button.btn.btn-info.btn-demo(
+    button.btn-ignite.btn-ignite--success(
         ng-if='IgniteDemoMode'
         ng-click='closeDemo()'
     ) Close Demo
-    button.btn.btn-info.btn-demo(
+    button.btn-ignite.btn-ignite--success(
         ng-if='!IgniteDemoMode'
         ng-click='startDemo()'
     ) Start Demo


[02/14] ignite git commit: Merge remote-tracking branch 'remotes/origin/master' into ignite-5075-cacheStart

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/master' into ignite-5075-cacheStart


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ca0cc87c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ca0cc87c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ca0cc87c

Branch: refs/heads/ignite-5075
Commit: ca0cc87caf6c6e47fc9669e725ec74feb9818b79
Parents: 3762b0d 63fda7f
Author: sboikov <sb...@gridgain.com>
Authored: Fri May 12 12:25:15 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri May 12 12:25:15 2017 +0300

----------------------------------------------------------------------
 modules/web-console/frontend/app/app.js         |   7 +-
 .../cluster-select/cluster-select.pug           |   6 +-
 .../cluster-select/cluster-select.scss          |  30 ++++
 .../app/components/cluster-select/index.js      |   1 +
 .../components/web-console-footer/component.js  |  23 ++++
 .../app/components/web-console-footer/index.js  |  23 ++++
 .../components/web-console-footer/style.scss    |  41 ++++++
 .../components/web-console-footer/template.pug  |  19 +++
 .../components/web-console-header/component.js  |  34 +++++
 .../app/components/web-console-header/index.js  |  23 ++++
 .../components/web-console-header/style.scss    | 136 +++++++++++++++++++
 .../components/web-console-header/template.pug  |  25 ++++
 .../app/modules/branding/branding.provider.js   |   2 +-
 .../modules/branding/header-title.directive.js  |   6 +-
 .../branding/powered-by-apache.directive.js     |   3 +-
 .../frontend/app/modules/states/signin.state.js |   2 +
 .../frontend/gulpfile.babel.js/paths.js         |   1 +
 .../frontend/public/images/ignite-logo.png      | Bin 1982 -> 0 bytes
 .../frontend/public/images/ignite-logo.svg      |  17 +++
 .../frontend/public/images/ignite-logo@2x.png   | Bin 3325 -> 0 bytes
 .../stylesheets/_bootstrap-variables.scss       |   4 +-
 .../frontend/public/stylesheets/style.scss      |  76 ++---------
 .../frontend/public/stylesheets/variables.scss  |   2 +
 modules/web-console/frontend/views/403.tpl.pug  |   8 +-
 modules/web-console/frontend/views/404.tpl.pug  |   8 +-
 modules/web-console/frontend/views/base.pug     |   8 +-
 modules/web-console/frontend/views/base2.pug    |   8 +-
 .../frontend/views/includes/header-left.pug     |  64 +++++++++
 .../frontend/views/includes/header-right.pug    |  40 ++++++
 .../frontend/views/includes/header.pug          |  57 --------
 modules/web-console/frontend/views/index.pug    |   2 +-
 .../web-console/frontend/views/reset.tpl.pug    |  12 +-
 .../web-console/frontend/views/signin.tpl.pug   |  12 +-
 33 files changed, 541 insertions(+), 159 deletions(-)
----------------------------------------------------------------------



[14/14] ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-5075-cacheStart' into ignite-5075

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-5075-cacheStart' into ignite-5075

# Conflicts:
#	modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
#	modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6dac535e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6dac535e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6dac535e

Branch: refs/heads/ignite-5075
Commit: 6dac535eb0ca6b63aa783c1a24e0aafb69034e72
Parents: 5972cbd
Author: sboikov <sb...@gridgain.com>
Authored: Mon May 15 13:24:12 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon May 15 13:24:12 2017 +0300

----------------------------------------------------------------------
 .../ignite/internal/processors/cache/GridCacheIoManager.java | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/6dac535e/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 af9b99e..bb76541 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
@@ -142,10 +142,10 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
                     assert cacheMsg.topologyVersion() != null : cacheMsg;
 
                     // TODO IGNITE-5075.
-                    AffinityTopologyVersion waitVer = null;//cctx.affinity().localStartVersion(((GridDhtAffinityAssignmentRequest) cacheMsg).groupId());
+                    AffinityTopologyVersion startTopVer = null;//cctx.affinity().localStartVersion(((GridDhtAffinityAssignmentRequest) cacheMsg).groupId());
 
-                    if (waitVer == null)
-                        waitVer = new AffinityTopologyVersion(cctx.localNode().order());
+                    if (startTopVer == null)
+                        startTopVer = new AffinityTopologyVersion(cctx.localNode().order());
 
 //                    AffinityTopologyVersion startTopVer = new AffinityTopologyVersion(cctx.localNode().order());
 //
@@ -165,7 +165,7 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
                         if (log.isDebugEnabled()) {
                             log.debug("Wait for exchange before processing message [msg=" + msg +
                                 ", node=" + nodeId +
-                                ", waitVer=" + waitVer +
+                                ", waitVer=" + startTopVer +
                                 ", cacheDesc=" + cacheDescriptor(cacheMsg) + ']');
                         }
 


[12/14] ignite git commit: Merge remote-tracking branch 'remotes/origin/master' into ignite-5075-cacheStart

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/master' into ignite-5075-cacheStart


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f5a5fa02
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f5a5fa02
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f5a5fa02

Branch: refs/heads/ignite-5075
Commit: f5a5fa020e424a6b5cd7a16d2f6c5cfc05809b44
Parents: 5a024a5 330d9ef
Author: sboikov <sb...@gridgain.com>
Authored: Mon May 15 13:12:34 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon May 15 13:12:34 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheAdapter.java      |  71 +----
 .../cache/GridCacheConcurrentMap.java           |   5 -
 .../cache/GridCacheConcurrentMapImpl.java       |  28 --
 .../processors/cache/GridCacheProxyImpl.java    |  60 ----
 .../processors/cache/GridNoStorageCacheMap.java |   5 -
 .../processors/cache/IgniteInternalCache.java   |  61 -----
 .../dht/GridCachePartitionedConcurrentMap.java  |   9 -
 .../distributed/dht/GridDhtCacheAdapter.java    | 162 -----------
 .../distributed/near/GridNearCacheAdapter.java  |  17 --
 .../GridCachePartitionedFullApiSelfTest.java    |  18 --
 .../cache/eviction/EvictionAbstractTest.java    |  13 +-
 .../hadoop/jobtracker/HadoopJobTracker.java     |  20 +-
 .../cache/hibernate/HibernateCacheProxy.java    |  25 --
 .../Apache.Ignite.Core.Tests.csproj             |   1 +
 .../Binary/BinarySelfTest.cs                    |   7 +-
 .../Binary/EnumsTest.cs                         | 274 +++++++++++++++++++
 .../Compute/ComputeApiTest.cs                   |   2 +-
 .../Impl/Binary/BinaryObject.cs                 |   2 +-
 .../Impl/Binary/BinaryReflectiveActions.cs      |   6 +-
 .../Impl/Binary/BinarySystemHandlers.cs         | 271 +++++++++---------
 .../Impl/Binary/BinaryUtils.cs                  |  30 --
 .../Impl/Binary/BinaryWriter.cs                 |  48 +++-
 .../activities-user-dialog.tpl.pug              |  33 ++-
 .../components/web-console-footer/style.scss    |   4 +
 .../components/web-console-header/style.scss    |   9 -
 .../frontend/app/primitives/btn/index.scss      | 235 ++++++++++++++++
 .../frontend/app/primitives/index.js            |   2 +
 .../frontend/app/primitives/modal/index.scss    | 179 ++++++++++++
 .../frontend/app/primitives/table/index.scss    |  91 ++++++
 .../frontend/public/stylesheets/style.scss      |  99 +------
 .../frontend/public/stylesheets/variables.scss  |   4 +
 .../frontend/views/includes/footer.pug          |  23 --
 .../frontend/views/includes/header-right.pug    |   4 +-
 .../web-console/frontend/views/signin.tpl.pug   |   2 +-
 parent/pom.xml                                  |   3 +-
 35 files changed, 1022 insertions(+), 801 deletions(-)
----------------------------------------------------------------------



[06/14] ignite git commit: IGNITE-5207 .NET: Support non-Int32 enums

Posted by sb...@apache.org.
IGNITE-5207 .NET: Support non-Int32 enums

This closes #1933


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ed4a7a13
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ed4a7a13
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ed4a7a13

Branch: refs/heads/ignite-5075
Commit: ed4a7a131ee92143f7dec003c445142af207ee96
Parents: 4b2b684
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Fri May 12 13:56:25 2017 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Fri May 12 13:56:25 2017 +0300

----------------------------------------------------------------------
 .../Apache.Ignite.Core.Tests.csproj             |   1 +
 .../Binary/BinarySelfTest.cs                    |   7 +-
 .../Binary/EnumsTest.cs                         | 274 +++++++++++++++++++
 .../Compute/ComputeApiTest.cs                   |   2 +-
 .../Impl/Binary/BinaryObject.cs                 |   2 +-
 .../Impl/Binary/BinaryReflectiveActions.cs      |   6 +-
 .../Impl/Binary/BinarySystemHandlers.cs         | 271 +++++++++---------
 .../Impl/Binary/BinaryUtils.cs                  |  30 --
 .../Impl/Binary/BinaryWriter.cs                 |  48 +++-
 9 files changed, 441 insertions(+), 200 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ed4a7a13/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
index 7adbbbe..1c84a4d 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
@@ -80,6 +80,7 @@
     <Compile Include="Binary\Serializable\CallbacksTest.cs" />
     <Compile Include="Binary\Serializable\DelegatesTest.cs" />
     <Compile Include="Binary\Serializable\BasicSerializableObjectsTest.cs" />
+    <Compile Include="Binary\EnumsTest.cs" />
     <Compile Include="Binary\Serializable\ObjectReferenceTests.cs" />
     <Compile Include="Binary\Serializable\PrimitivesTest.cs" />
     <Compile Include="Binary\Serializable\SqlDmlTest.cs" />

http://git-wip-us.apache.org/repos/asf/ignite/blob/ed4a7a13/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
index bdc0d65..01f108e 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
@@ -2436,12 +2436,7 @@ namespace Apache.Ignite.Core.Tests.Binary
             }
         }
 
-        public enum TestEnum
-        {
-            Val1, Val2, Val3 = 10
-        }
-
-        public enum TestEnum2
+        public enum TestEnum : short
         {
             Val1, Val2, Val3 = 10
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/ed4a7a13/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/EnumsTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/EnumsTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/EnumsTest.cs
new file mode 100644
index 0000000..f896ef4
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/EnumsTest.cs
@@ -0,0 +1,274 @@
+/*
+ * 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.
+ */
+
+namespace Apache.Ignite.Core.Tests.Binary
+{
+    using System;
+    using System.Runtime.Serialization;
+    using Apache.Ignite.Core.Binary;
+    using Apache.Ignite.Core.Impl.Binary;
+    using Apache.Ignite.Core.Impl.Common;
+    using NUnit.Framework;
+
+    /// <summary>
+    /// Tests enums serialization.
+    /// </summary>
+    public class EnumsTest
+    {
+        /// <summary>
+        /// Tests direct enum value serialization.
+        /// </summary>
+        [Test]
+        public void TestDirectValue()
+        {
+            CheckValue(ByteEnum.Foo);
+            CheckValue(ByteEnum.Bar);
+
+            CheckValue(SByteEnum.Foo);
+            CheckValue(SByteEnum.Bar);
+
+            CheckValue(ShortEnum.Foo);
+            CheckValue(ShortEnum.Bar);
+            
+            CheckValue(UShortEnum.Foo);
+            CheckValue(UShortEnum.Bar);
+            
+            CheckValue(IntEnum.Foo);
+            CheckValue(IntEnum.Bar);
+            
+            CheckValue(UIntEnum.Foo);
+            CheckValue(UIntEnum.Bar);
+
+            CheckValue(LongEnum.Foo, false);
+            CheckValue(LongEnum.Bar, false);
+            
+            CheckValue(ULongEnum.Foo, false);
+            CheckValue(ULongEnum.Bar, false);
+        }
+
+        /// <summary>
+        /// Checks the enum value serialization.
+        /// </summary>
+        private static void CheckValue<T>(T val, bool isBinaryEnum = true)
+        {
+            var marsh = new Marshaller(null) {CompactFooter = false};
+            var bytes = marsh.Marshal(val);
+            var res = marsh.Unmarshal<T>(bytes);
+            var binRes = marsh.Unmarshal<IBinaryObject>(bytes, BinaryMode.ForceBinary);
+
+            Assert.AreEqual(val, res);
+            Assert.AreEqual(val, binRes.Deserialize<T>());
+
+            if (isBinaryEnum)
+            {
+                Assert.AreEqual(TypeCaster<int>.Cast(val), binRes.EnumValue);
+            }
+            else
+            {
+                Assert.AreEqual(val, binRes.GetField<T>("value__"));
+            }
+
+            // Check array.
+            var arr = new[] {val, val};
+            var arrRes = TestUtils.SerializeDeserialize(arr);
+
+            Assert.AreEqual(arr, arrRes);
+        }
+
+        /// <summary>
+        /// Tests enums as a field in binarizable object.
+        /// </summary>
+        [Test]
+        public void TestBinarizableField()
+        {
+            // Min values.
+            var val = new EnumsBinarizable();
+            
+            var res = TestUtils.SerializeDeserialize(val);
+            Assert.AreEqual(val, res);
+
+            // Max values.
+            val = new EnumsBinarizable
+            {
+                Byte = ByteEnum.Bar,
+                Int = IntEnum.Bar,
+                Long = LongEnum.Bar,
+                SByte = SByteEnum.Bar,
+                Short = ShortEnum.Bar,
+                UInt = UIntEnum.Bar,
+                ULong = ULongEnum.Bar,
+                UShort = UShortEnum.Bar
+            };
+
+            res = TestUtils.SerializeDeserialize(val);
+            Assert.AreEqual(val, res);
+        }
+
+        /// <summary>
+        /// Tests enums as a field in ISerializable object.
+        /// </summary>
+        [Test]
+        public void TestSerializableField()
+        {
+            // Min values.
+            var val = new EnumsSerializable();
+
+            var res = TestUtils.SerializeDeserialize(val);
+            Assert.AreEqual(val, res);
+
+            // Max values.
+            val = new EnumsSerializable
+            {
+                Byte = ByteEnum.Bar,
+                Int = IntEnum.Bar,
+                Long = LongEnum.Bar,
+                SByte = SByteEnum.Bar,
+                Short = ShortEnum.Bar,
+                UInt = UIntEnum.Bar,
+                ULong = ULongEnum.Bar,
+                UShort = UShortEnum.Bar
+            };
+
+            res = TestUtils.SerializeDeserialize(val);
+            Assert.AreEqual(val, res);
+        }
+
+        private enum ByteEnum : byte
+        {
+            Foo = byte.MinValue,
+            Bar = byte.MaxValue
+        }
+
+        private enum SByteEnum : sbyte
+        {
+            Foo = sbyte.MinValue,
+            Bar = sbyte.MaxValue
+        }
+
+        private enum ShortEnum : short
+        {
+            Foo = short.MinValue,
+            Bar = short.MaxValue
+        }
+
+        private enum UShortEnum : ushort
+        {
+            Foo = ushort.MinValue,
+            Bar = ushort.MaxValue
+        }
+
+        private enum IntEnum
+        {
+            Foo = int.MinValue,
+            Bar = int.MaxValue
+        }
+
+        private enum UIntEnum : uint
+        {
+            Foo = uint.MinValue,
+            Bar = uint.MaxValue
+        }
+
+        private enum LongEnum : long
+        {
+            Foo = long.MinValue,
+            Bar = long.MaxValue
+        }
+
+        private enum ULongEnum : ulong
+        {
+            Foo = ulong.MinValue,
+            Bar = ulong.MaxValue
+        }
+
+        private class EnumsBinarizable
+        {
+            public ByteEnum Byte { get; set; }
+            public SByteEnum SByte { get; set; }
+            public ShortEnum Short { get; set; }
+            public UShortEnum UShort { get; set; }
+            public IntEnum Int { get; set; }
+            public UIntEnum UInt { get; set; }
+            public LongEnum Long { get; set; }
+            public ULongEnum ULong { get; set; }
+
+            private bool Equals(EnumsBinarizable other)
+            {
+                return Byte == other.Byte && SByte == other.SByte && Short == other.Short 
+                    && UShort == other.UShort && Int == other.Int && UInt == other.UInt 
+                    && Long == other.Long && ULong == other.ULong;
+            }
+
+            public override bool Equals(object obj)
+            {
+                if (ReferenceEquals(null, obj)) return false;
+                if (ReferenceEquals(this, obj)) return true;
+                if (obj.GetType() != GetType()) return false;
+                return Equals((EnumsBinarizable) obj);
+            }
+
+            public override int GetHashCode()
+            {
+                unchecked
+                {
+                    var hashCode = (int) Byte;
+                    hashCode = (hashCode * 397) ^ (int) SByte;
+                    hashCode = (hashCode * 397) ^ (int) Short;
+                    hashCode = (hashCode * 397) ^ (int) UShort;
+                    hashCode = (hashCode * 397) ^ (int) Int;
+                    hashCode = (hashCode * 397) ^ (int) UInt;
+                    hashCode = (hashCode * 397) ^ Long.GetHashCode();
+                    hashCode = (hashCode * 397) ^ ULong.GetHashCode();
+                    return hashCode;
+                }
+            }
+        }
+
+        [Serializable]
+        private class EnumsSerializable : EnumsBinarizable, ISerializable
+        {
+            public EnumsSerializable()
+            {
+                // No-op.
+            }
+
+            protected EnumsSerializable(SerializationInfo info, StreamingContext context)
+            {
+                Byte = (ByteEnum) info.GetValue("byte", typeof(ByteEnum));
+                SByte = (SByteEnum) info.GetValue("sbyte", typeof(SByteEnum));
+                Short = (ShortEnum) info.GetValue("short", typeof(ShortEnum));
+                UShort = (UShortEnum) info.GetValue("ushort", typeof(UShortEnum));
+                Int = (IntEnum) info.GetValue("int", typeof(IntEnum));
+                UInt = (UIntEnum) info.GetValue("uint", typeof(UIntEnum));
+                Long = (LongEnum) info.GetValue("long", typeof(LongEnum));
+                ULong = (ULongEnum) info.GetValue("ulong", typeof(ULongEnum));
+            }
+
+            public void GetObjectData(SerializationInfo info, StreamingContext context)
+            {
+                info.AddValue("byte", Byte);
+                info.AddValue("sbyte", SByte);
+                info.AddValue("short", Short);
+                info.AddValue("ushort", UShort);
+                info.AddValue("int", Int);
+                info.AddValue("uint", UInt);
+                info.AddValue("long", Long);
+                info.AddValue("ulong", ULong);
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/ed4a7a13/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.cs
index e403d93..b9b7a04 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.cs
@@ -1532,7 +1532,7 @@ namespace Apache.Ignite.Core.Tests.Compute
         }
     }
 
-    public enum PlatformComputeEnum
+    public enum PlatformComputeEnum : ushort
     {
         Foo,
         Bar,

http://git-wip-us.apache.org/repos/asf/ignite/blob/ed4a7a13/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObject.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObject.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObject.cs
index 690a0a4..480e0e6 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObject.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObject.cs
@@ -132,7 +132,7 @@ namespace Apache.Ignite.Core.Impl.Binary
             get
             {
                 throw new NotSupportedException("IBinaryObject.Value is only supported for enums. " +
-                    "Check IBinaryObject.IsEnum property before accessing Value.");
+                    "Check IBinaryObject.GetBinaryType().IsEnum property before accessing Value.");
             }
         }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/ed4a7a13/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryReflectiveActions.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryReflectiveActions.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryReflectiveActions.cs
index 907b465..6aaf5f9 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryReflectiveActions.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryReflectiveActions.cs
@@ -476,7 +476,7 @@ namespace Apache.Ignite.Core.Impl.Binary
                     : GetWriter<Guid?>(field, (f, w, o) => w.WriteGuid(f, o));
                 readAction = raw ? GetRawReader(field, r => r.ReadGuid()) : GetReader(field, (f, r) => r.ReadGuid(f));
             }
-            else if (type.IsEnum)
+            else if (type.IsEnum && !new[] {typeof(long), typeof(ulong)}.Contains(Enum.GetUnderlyingType(type)))
             {
                 writeAction = raw
                     ? GetRawWriter<object>(field, (w, o) => w.WriteEnum(o), true)
@@ -503,7 +503,7 @@ namespace Apache.Ignite.Core.Impl.Binary
                     ? GetRawReader(field, r => r.ReadCollection())
                     : GetReader(field, (f, r) => r.ReadCollection(f));
             }
-            else if (type == typeof (DateTime) && IsQueryField(field) && !raw)
+            else if (type == typeof(DateTime) && IsQueryField(field) && !raw)
             {
                 // Special case for DateTime and query fields.
                 // If a field is marked with [QuerySqlField], write it as TimeStamp so that queries work.
@@ -514,7 +514,7 @@ namespace Apache.Ignite.Core.Impl.Binary
                 writeAction = GetWriter<DateTime>(field, (f, w, o) => w.WriteTimestamp(f, o));
                 readAction = GetReader(field, (f, r) => r.ReadObject<DateTime>(f));
             }
-            else if (nullableType == typeof (DateTime) && IsQueryField(field) && !raw)
+            else if (nullableType == typeof(DateTime) && IsQueryField(field) && !raw)
             {
                 writeAction = GetWriter<DateTime?>(field, (f, w, o) => w.WriteTimestamp(f, o));
                 readAction = GetReader(field, (f, r) => r.ReadTimestamp(f));

http://git-wip-us.apache.org/repos/asf/ignite/blob/ed4a7a13/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinarySystemHandlers.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinarySystemHandlers.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinarySystemHandlers.cs
index a30b981..1dfc3b6 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinarySystemHandlers.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinarySystemHandlers.cs
@@ -31,8 +31,8 @@ namespace Apache.Ignite.Core.Impl.Binary
     internal static class BinarySystemHandlers
     {
         /** Write handlers. */
-        private static readonly CopyOnWriteConcurrentDictionary<Type, BinarySystemWriteHandler> WriteHandlers =
-            new CopyOnWriteConcurrentDictionary<Type, BinarySystemWriteHandler>();
+        private static readonly CopyOnWriteConcurrentDictionary<Type, IBinarySystemWriteHandler> WriteHandlers =
+            new CopyOnWriteConcurrentDictionary<Type, IBinarySystemWriteHandler>();
 
         /** Read handlers. */
         private static readonly IBinarySystemReader[] ReadHandlers = new IBinarySystemReader[255];
@@ -160,15 +160,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="type"></param>
         /// <returns></returns>
-        public static BinarySystemWriteHandler GetWriteHandler(Type type)
+        public static IBinarySystemWriteHandler GetWriteHandler(Type type)
         {
             return WriteHandlers.GetOrAdd(type, t =>
             {
-                bool supportsHandles;
-
-                var handler = FindWriteHandler(t, out supportsHandles);
-
-                return handler == null ? null : new BinarySystemWriteHandler(handler, supportsHandles);
+                return FindWriteHandler(t);
             });
         }
 
@@ -176,37 +172,49 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// Find write handler for type.
         /// </summary>
         /// <param name="type">Type.</param>
-        /// <param name="supportsHandles">Flag indicating whether returned delegate supports handles.</param>
         /// <returns>
         /// Write handler or NULL.
         /// </returns>
-        private static Action<BinaryWriter, object> FindWriteHandler(Type type, out bool supportsHandles)
+        private static IBinarySystemWriteHandler FindWriteHandler(Type type)
         {
-            supportsHandles = false;
-
             // 1. Well-known types.
             if (type == typeof(string))
-                return WriteString;
+                return new BinarySystemWriteHandler<string>(WriteString, false);
             if (type == typeof(decimal))
-                return WriteDecimal;
+                return new BinarySystemWriteHandler<decimal>(WriteDecimal, false);
             if (type == typeof(Guid))
-                return WriteGuid;
+                return new BinarySystemWriteHandler<Guid>(WriteGuid, false);
             if (type == typeof (BinaryObject))
-                return WriteBinary;
+                return new BinarySystemWriteHandler<BinaryObject>(WriteBinary, false);
             if (type == typeof (BinaryEnum))
-                return WriteBinaryEnum;
+                return new BinarySystemWriteHandler<BinaryEnum>(WriteBinaryEnum, false);
             if (type.IsEnum)
-                return WriteEnum;
+            {
+                var underlyingType = Enum.GetUnderlyingType(type);
+
+                if (underlyingType == typeof(int))
+                    return new BinarySystemWriteHandler<int>((w, i) => w.WriteEnum(i, type), false);
+                if (underlyingType == typeof(uint))
+                    return new BinarySystemWriteHandler<uint>((w, i) => w.WriteEnum(unchecked((int) i), type), false);
+                if (underlyingType == typeof(byte))
+                    return new BinarySystemWriteHandler<byte>((w, i) => w.WriteEnum(i, type), false);
+                if (underlyingType == typeof(sbyte))
+                    return new BinarySystemWriteHandler<sbyte>((w, i) => w.WriteEnum(i, type), false);
+                if (underlyingType == typeof(short))
+                    return new BinarySystemWriteHandler<short>((w, i) => w.WriteEnum(i, type), false);
+                if (underlyingType == typeof(ushort))
+                    return new BinarySystemWriteHandler<ushort>((w, i) => w.WriteEnum(i, type), false);
+
+                return null; // Other enums, such as long and ulong, can't be expressed as int.
+            }
             if (type == typeof(Ignite))
-                return WriteIgnite;
+                return new BinarySystemWriteHandler<object>(WriteIgnite, false);
 
             // All types below can be written as handles.
-            supportsHandles = true;
-
             if (type == typeof (ArrayList))
-                return WriteArrayList;
+                return new BinarySystemWriteHandler<ICollection>(WriteArrayList, true);
             if (type == typeof (Hashtable))
-                return WriteHashtable;
+                return new BinarySystemWriteHandler<IDictionary>(WriteHashtable, true);
 
             if (type.IsArray)
             {
@@ -215,49 +223,66 @@ namespace Apache.Ignite.Core.Impl.Binary
                 
                 // Primitives.
                 if (elemType == typeof (bool))
-                    return WriteBoolArray;
+                    return new BinarySystemWriteHandler<bool[]>(WriteBoolArray, true);
                 if (elemType == typeof(byte))
-                    return WriteByteArray;
+                    return new BinarySystemWriteHandler<byte[]>(WriteByteArray, true);
                 if (elemType == typeof(short))
-                    return WriteShortArray;
+                    return new BinarySystemWriteHandler<short[]>(WriteShortArray, true);
                 if (elemType == typeof(char))
-                    return WriteCharArray;
+                    return new BinarySystemWriteHandler<char[]>(WriteCharArray, true);
                 if (elemType == typeof(int))
-                    return WriteIntArray;
+                    return new BinarySystemWriteHandler<int[]>(WriteIntArray, true);
                 if (elemType == typeof(long))
-                    return WriteLongArray;
+                    return new BinarySystemWriteHandler<long[]>(WriteLongArray, true);
                 if (elemType == typeof(float))
-                    return WriteFloatArray;
+                    return new BinarySystemWriteHandler<float[]>(WriteFloatArray, true);
                 if (elemType == typeof(double))
-                    return WriteDoubleArray;
+                    return new BinarySystemWriteHandler<double[]>(WriteDoubleArray, true);
                 // Non-CLS primitives.
                 if (elemType == typeof(sbyte))
-                    return WriteSbyteArray;
+                    return new BinarySystemWriteHandler<byte[]>(WriteByteArray, true);
                 if (elemType == typeof(ushort))
-                    return WriteUshortArray;
+                    return new BinarySystemWriteHandler<short[]>(WriteShortArray, true);
                 if (elemType == typeof(uint))
-                    return WriteUintArray;
+                    return new BinarySystemWriteHandler<int[]>(WriteIntArray, true);
                 if (elemType == typeof(ulong))
-                    return WriteUlongArray;
+                    return new BinarySystemWriteHandler<long[]>(WriteLongArray, true);
                 // Special types.
                 if (elemType == typeof (decimal?))
-                    return WriteDecimalArray;
+                    return new BinarySystemWriteHandler<decimal?[]>(WriteDecimalArray, true);
                 if (elemType == typeof(string))
-                    return WriteStringArray;
+                    return new BinarySystemWriteHandler<string[]>(WriteStringArray, true);
                 if (elemType == typeof(Guid?))
-                    return WriteGuidArray;
+                    return new BinarySystemWriteHandler<Guid?[]>(WriteGuidArray, true);
                 // Enums.
-                if (elemType.IsEnum || elemType == typeof(BinaryEnum))
-                    return WriteEnumArray;
+                if (IsIntEnum(elemType) || elemType == typeof(BinaryEnum))
+                    return new BinarySystemWriteHandler<object>(WriteEnumArray, true);
 
                 // Object array.
-                return WriteArray;
+                return new BinarySystemWriteHandler<object>(WriteArray, true);
             }
 
             return null;
         }
 
         /// <summary>
+        /// Determines whether specified type is an enum which fits into Int32.
+        /// </summary>
+        private static bool IsIntEnum(Type type)
+        {
+            if (!type.IsEnum)
+                return false;
+
+            var underlyingType = Enum.GetUnderlyingType(type);
+
+            return underlyingType == typeof(int) 
+                || underlyingType == typeof(short)
+                || underlyingType == typeof(ushort)
+                || underlyingType == typeof(byte)
+                || underlyingType == typeof(sbyte);
+        }
+
+        /// <summary>
         /// Find write handler for type.
         /// </summary>
         /// <param name="type">Type.</param>
@@ -300,11 +325,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteDecimal(BinaryWriter ctx, object obj)
+        private static void WriteDecimal(BinaryWriter ctx, decimal obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeDecimal);
 
-            BinaryUtils.WriteDecimal((decimal)obj, ctx.Stream);
+            BinaryUtils.WriteDecimal(obj, ctx.Stream);
         }
         
         /// <summary>
@@ -312,11 +337,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Object.</param>
-        private static void WriteString(BinaryWriter ctx, object obj)
+        private static void WriteString(BinaryWriter ctx, string obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeString);
 
-            BinaryUtils.WriteString((string)obj, ctx.Stream);
+            BinaryUtils.WriteString(obj, ctx.Stream);
         }
 
         /// <summary>
@@ -324,11 +349,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteGuid(BinaryWriter ctx, object obj)
+        private static void WriteGuid(BinaryWriter ctx, Guid obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeGuid);
 
-            BinaryUtils.WriteGuid((Guid)obj, ctx.Stream);
+            BinaryUtils.WriteGuid(obj, ctx.Stream);
         }
 
         /// <summary>
@@ -336,11 +361,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteBoolArray(BinaryWriter ctx, object obj)
+        private static void WriteBoolArray(BinaryWriter ctx, bool[] obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeArrayBool);
 
-            BinaryUtils.WriteBooleanArray((bool[])obj, ctx.Stream);
+            BinaryUtils.WriteBooleanArray(obj, ctx.Stream);
         }
         
         /// <summary>
@@ -348,23 +373,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteByteArray(BinaryWriter ctx, object obj)
-        {
-            ctx.Stream.WriteByte(BinaryUtils.TypeArrayByte);
-
-            BinaryUtils.WriteByteArray((byte[])obj, ctx.Stream);
-        }
-
-        /// <summary>
-        /// Write sbyte array.
-        /// </summary>
-        /// <param name="ctx">Context.</param>
-        /// <param name="obj">Value.</param>
-        private static void WriteSbyteArray(BinaryWriter ctx, object obj)
+        private static void WriteByteArray(BinaryWriter ctx, byte[] obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeArrayByte);
 
-            BinaryUtils.WriteByteArray((byte[]) obj, ctx.Stream);
+            BinaryUtils.WriteByteArray(obj, ctx.Stream);
         }
 
         /// <summary>
@@ -372,26 +385,14 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteShortArray(BinaryWriter ctx, object obj)
+        private static void WriteShortArray(BinaryWriter ctx, short[] obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeArrayShort);
 
-            BinaryUtils.WriteShortArray((short[])obj, ctx.Stream);
+            BinaryUtils.WriteShortArray(obj, ctx.Stream);
         }
         
         /// <summary>
-        /// Write ushort array.
-        /// </summary>
-        /// <param name="ctx">Context.</param>
-        /// <param name="obj">Value.</param>
-        private static void WriteUshortArray(BinaryWriter ctx, object obj)
-        {
-            ctx.Stream.WriteByte(BinaryUtils.TypeArrayShort);
-
-            BinaryUtils.WriteShortArray((short[]) obj, ctx.Stream);
-        }
-
-        /// <summary>
         /// Write char array.
         /// </summary>
         /// <param name="ctx">Context.</param>
@@ -408,23 +409,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteIntArray(BinaryWriter ctx, object obj)
+        private static void WriteIntArray(BinaryWriter ctx, int[] obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeArrayInt);
 
-            BinaryUtils.WriteIntArray((int[])obj, ctx.Stream);
-        }
-
-        /// <summary>
-        /// Write uint array.
-        /// </summary>
-        /// <param name="ctx">Context.</param>
-        /// <param name="obj">Value.</param>
-        private static void WriteUintArray(BinaryWriter ctx, object obj)
-        {
-            ctx.Stream.WriteByte(BinaryUtils.TypeArrayInt);
-
-            BinaryUtils.WriteIntArray((int[]) obj, ctx.Stream);
+            BinaryUtils.WriteIntArray(obj, ctx.Stream);
         }
 
         /// <summary>
@@ -432,23 +421,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteLongArray(BinaryWriter ctx, object obj)
-        {
-            ctx.Stream.WriteByte(BinaryUtils.TypeArrayLong);
-
-            BinaryUtils.WriteLongArray((long[])obj, ctx.Stream);
-        }
-
-        /// <summary>
-        /// Write ulong array.
-        /// </summary>
-        /// <param name="ctx">Context.</param>
-        /// <param name="obj">Value.</param>
-        private static void WriteUlongArray(BinaryWriter ctx, object obj)
+        private static void WriteLongArray(BinaryWriter ctx, long[] obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeArrayLong);
 
-            BinaryUtils.WriteLongArray((long[]) obj, ctx.Stream);
+            BinaryUtils.WriteLongArray(obj, ctx.Stream);
         }
 
         /// <summary>
@@ -456,11 +433,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteFloatArray(BinaryWriter ctx, object obj)
+        private static void WriteFloatArray(BinaryWriter ctx, float[] obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeArrayFloat);
 
-            BinaryUtils.WriteFloatArray((float[])obj, ctx.Stream);
+            BinaryUtils.WriteFloatArray(obj, ctx.Stream);
         }
 
         /// <summary>
@@ -468,11 +445,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteDoubleArray(BinaryWriter ctx, object obj)
+        private static void WriteDoubleArray(BinaryWriter ctx, double[] obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeArrayDouble);
 
-            BinaryUtils.WriteDoubleArray((double[])obj, ctx.Stream);
+            BinaryUtils.WriteDoubleArray(obj, ctx.Stream);
         }
 
         /// <summary>
@@ -480,11 +457,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteDecimalArray(BinaryWriter ctx, object obj)
+        private static void WriteDecimalArray(BinaryWriter ctx, decimal?[] obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeArrayDecimal);
 
-            BinaryUtils.WriteDecimalArray((decimal?[])obj, ctx.Stream);
+            BinaryUtils.WriteDecimalArray(obj, ctx.Stream);
         }
         
         /// <summary>
@@ -492,11 +469,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteStringArray(BinaryWriter ctx, object obj)
+        private static void WriteStringArray(BinaryWriter ctx, string[] obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeArrayString);
 
-            BinaryUtils.WriteStringArray((string[])obj, ctx.Stream);
+            BinaryUtils.WriteStringArray(obj, ctx.Stream);
         }
         
         /// <summary>
@@ -504,11 +481,11 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </summary>
         /// <param name="ctx">Context.</param>
         /// <param name="obj">Value.</param>
-        private static void WriteGuidArray(BinaryWriter ctx, object obj)
+        private static void WriteGuidArray(BinaryWriter ctx, Guid?[] obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeArrayGuid);
 
-            BinaryUtils.WriteGuidArray((Guid?[])obj, ctx.Stream);
+            BinaryUtils.WriteGuidArray(obj, ctx.Stream);
         }
 
         /// <summary>
@@ -534,47 +511,39 @@ namespace Apache.Ignite.Core.Impl.Binary
         /**
          * <summary>Write ArrayList.</summary>
          */
-        private static void WriteArrayList(BinaryWriter ctx, object obj)
+        private static void WriteArrayList(BinaryWriter ctx, ICollection obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeCollection);
 
-            BinaryUtils.WriteCollection((ICollection)obj, ctx, BinaryUtils.CollectionArrayList);
+            BinaryUtils.WriteCollection(obj, ctx, BinaryUtils.CollectionArrayList);
         }
 
         /**
          * <summary>Write Hashtable.</summary>
          */
-        private static void WriteHashtable(BinaryWriter ctx, object obj)
+        private static void WriteHashtable(BinaryWriter ctx, IDictionary obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeDictionary);
 
-            BinaryUtils.WriteDictionary((IDictionary)obj, ctx, BinaryUtils.MapHashMap);
+            BinaryUtils.WriteDictionary(obj, ctx, BinaryUtils.MapHashMap);
         }
 
         /**
          * <summary>Write binary object.</summary>
          */
-        private static void WriteBinary(BinaryWriter ctx, object obj)
+        private static void WriteBinary(BinaryWriter ctx, BinaryObject obj)
         {
             ctx.Stream.WriteByte(BinaryUtils.TypeBinary);
 
-            BinaryUtils.WriteBinary(ctx.Stream, (BinaryObject)obj);
+            BinaryUtils.WriteBinary(ctx.Stream, obj);
         }
         
         /// <summary>
         /// Write enum.
         /// </summary>
-        private static void WriteEnum(BinaryWriter ctx, object obj)
+        private static void WriteBinaryEnum(BinaryWriter ctx, BinaryEnum obj)
         {
-            ctx.WriteEnum(obj);
-        }
-
-        /// <summary>
-        /// Write enum.
-        /// </summary>
-        private static void WriteBinaryEnum(BinaryWriter ctx, object obj)
-        {
-            var binEnum = (BinaryEnum) obj;
+            var binEnum = obj;
 
             ctx.Stream.WriteByte(BinaryUtils.TypeEnum);
 
@@ -790,20 +759,38 @@ namespace Apache.Ignite.Core.Impl.Binary
     /// <summary>
     /// Write delegate + handles flag.
     /// </summary>
-    internal class BinarySystemWriteHandler
+    internal interface IBinarySystemWriteHandler
+    {
+        /// <summary>
+        /// Gets a value indicating whether this handler supports handles.
+        /// </summary>
+        bool SupportsHandles { get; }
+
+        /// <summary>
+        /// Writes object to a specified writer.
+        /// </summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="obj">The object.</param>
+        void Write<T>(BinaryWriter writer, T obj);
+    }
+
+    /// <summary>
+    /// Write delegate + handles flag.
+    /// </summary>
+    internal class BinarySystemWriteHandler<T1> : IBinarySystemWriteHandler
     {
         /** */
-        private readonly Action<BinaryWriter, object> _writeAction;
+        private readonly Action<BinaryWriter, T1> _writeAction;
 
         /** */
         private readonly bool _supportsHandles;
 
         /// <summary>
-        /// Initializes a new instance of the <see cref="BinarySystemWriteHandler" /> class.
+        /// Initializes a new instance of the <see cref="BinarySystemWriteHandler{T1}" /> class.
         /// </summary>
         /// <param name="writeAction">The write action.</param>
         /// <param name="supportsHandles">Handles flag.</param>
-        public BinarySystemWriteHandler(Action<BinaryWriter, object> writeAction, bool supportsHandles)
+        public BinarySystemWriteHandler(Action<BinaryWriter, T1> writeAction, bool supportsHandles)
         {
             Debug.Assert(writeAction != null);
 
@@ -811,19 +798,13 @@ namespace Apache.Ignite.Core.Impl.Binary
             _supportsHandles = supportsHandles;
         }
 
-        /// <summary>
-        /// Writes object to a specified writer.
-        /// </summary>
-        /// <param name="writer">The writer.</param>
-        /// <param name="obj">The object.</param>
-        public void Write(BinaryWriter writer, object obj)
+        /** <inheritdoc /> */
+        public void Write<T>(BinaryWriter writer, T obj)
         {
-            _writeAction(writer, obj);
+            _writeAction(writer, TypeCaster<T1>.Cast(obj));
         }
 
-        /// <summary>
-        /// Gets a value indicating whether this handler supports handles.
-        /// </summary>
+        /** <inheritdoc /> */
         public bool SupportsHandles
         {
             get { return _supportsHandles; }

http://git-wip-us.apache.org/repos/asf/ignite/blob/ed4a7a13/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryUtils.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryUtils.cs
index dee0a80..5bc68fe 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryUtils.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryUtils.cs
@@ -1440,36 +1440,6 @@ namespace Apache.Ignite.Core.Impl.Binary
         }
 
         /// <summary>
-        /// Write enum.
-        /// </summary>
-        /// <param name="writer">Writer.</param>
-        /// <param name="val">Value.</param>
-        public static void WriteEnum<T>(BinaryWriter writer, T val)
-        {
-            writer.WriteInt(GetEnumTypeId(val.GetType(), writer.Marshaller));
-            writer.WriteInt(TypeCaster<int>.Cast(val));
-        }
-
-        /// <summary>
-        /// Gets the enum type identifier.
-        /// </summary>
-        /// <param name="enumType">The enum type.</param>
-        /// <param name="marshaller">The marshaller.</param>
-        /// <returns>Enum type id.</returns>
-        private static int GetEnumTypeId(Type enumType, Marshaller marshaller)
-        {
-            if (Enum.GetUnderlyingType(enumType) == TypInt)
-            {
-                var desc = marshaller.GetDescriptor(enumType);
-
-                return desc.TypeId;
-            }
-
-            throw new BinaryObjectException("Only Int32 underlying type is supported for enums: " +
-                                            enumType.Name);
-        }
-
-        /// <summary>
         /// Gets the enum value by type id and int representation.
         /// </summary>
         /// <typeparam name="T">Result type.</typeparam>

http://git-wip-us.apache.org/repos/asf/ignite/blob/ed4a7a13/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriter.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriter.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriter.cs
index 12cc026..56774d4 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriter.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriter.cs
@@ -858,19 +858,47 @@ namespace Apache.Ignite.Core.Impl.Binary
                 WriteNullField();
             else
             {
-                var desc = _marsh.GetDescriptor(val.GetType());
+                var type = val.GetType();
 
-                var metaHnd = _marsh.GetBinaryTypeHandler(desc);
-
-                _stream.WriteByte(BinaryUtils.TypeEnum);
+                if (!type.IsEnum)
+                {
+                    throw new BinaryObjectException("Type is not an enum: " + type);
+                }
 
-                BinaryUtils.WriteEnum(this, val);
+                var handler = BinarySystemHandlers.GetWriteHandler(type);
 
-                SaveMetadata(desc, metaHnd.OnObjectWriteFinished());
+                if (handler != null)
+                {
+                    // All enums except long/ulong.
+                    handler.Write(this, val);
+                }
+                else
+                {
+                    throw new BinaryObjectException(string.Format("Enum '{0}' has unsupported underlying type '{1}'. " +
+                                                                  "Use WriteObject instead of WriteEnum.",
+                        type, Enum.GetUnderlyingType(type)));
+                }
             }
         }
 
         /// <summary>
+        /// Write enum value.
+        /// </summary>
+        /// <param name="val">Enum value.</param>
+        /// <param name="type">Enum type.</param>
+        internal void WriteEnum(int val, Type type)
+        {
+            var desc = _marsh.GetDescriptor(type);
+
+            _stream.WriteByte(BinaryUtils.TypeEnum);
+            _stream.WriteInt(desc.TypeId);
+            _stream.WriteInt(val);
+
+            var metaHnd = _marsh.GetBinaryTypeHandler(desc);
+            SaveMetadata(desc, metaHnd.OnObjectWriteFinished());
+        }
+
+        /// <summary>
         /// Write named enum array.
         /// </summary>
         /// <typeparam name="T"></typeparam>
@@ -1120,14 +1148,6 @@ namespace Apache.Ignite.Core.Impl.Binary
                 return;
             }
 
-            // Handle enums.
-            if (type.IsEnum)
-            {
-                WriteEnum(obj);
-
-                return;
-            }
-
             // Handle special case for builder.
             if (WriteBuilderSpecials(obj))
                 return;


[09/14] ignite git commit: IGNITE-5086 Changed design for modals.

Posted by sb...@apache.org.
IGNITE-5086 Changed design for modals.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/865eed71
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/865eed71
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/865eed71

Branch: refs/heads/ignite-5075
Commit: 865eed71e9a0d735911b9409105e8e273a25ecc3
Parents: f038f63
Author: Andrey Novikov <an...@gridgain.com>
Authored: Mon May 15 15:17:28 2017 +0700
Committer: Andrey Novikov <an...@gridgain.com>
Committed: Mon May 15 15:17:28 2017 +0700

----------------------------------------------------------------------
 .../activities-user-dialog.tpl.pug              |  33 ++--
 .../frontend/app/primitives/index.js            |   2 +
 .../frontend/app/primitives/modal/index.scss    | 179 +++++++++++++++++++
 .../frontend/app/primitives/table/index.scss    |  91 ++++++++++
 .../frontend/public/stylesheets/style.scss      |  99 ++--------
 .../web-console/frontend/views/signin.tpl.pug   |   2 +-
 6 files changed, 306 insertions(+), 100 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/865eed71/modules/web-console/frontend/app/components/activities-user-dialog/activities-user-dialog.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/activities-user-dialog/activities-user-dialog.tpl.pug b/modules/web-console/frontend/app/components/activities-user-dialog/activities-user-dialog.tpl.pug
index 074851c..cb49dd0 100644
--- a/modules/web-console/frontend/app/components/activities-user-dialog/activities-user-dialog.tpl.pug
+++ b/modules/web-console/frontend/app/components/activities-user-dialog/activities-user-dialog.tpl.pug
@@ -14,23 +14,28 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-.modal(tabindex='-1' role='dialog')
+.modal.modal--ignite(tabindex='-1' role='dialog')
     .modal-dialog
         .modal-content
             .modal-header
-                h4.modal-title 
+                h4.modal-title
                     i.fa.fa-info-circle
-                    | Activities: {{ ctrl.user.userName }}
+                    | Activity details: {{ ctrl.user.userName }}
+                button.close(type='button' aria-label='Close' ng-click='$hide()')
             .modal-body.modal-body-with-scroll(id='activities-user-dialog')
-                table.table.table-striped.table-bordered.table-hover(scrollable-container='#activities-user-dialog' st-table='displayedRows' st-safe-src='ctrl.data')
-                    thead
-                        th.text-center(st-sort='action | translate') Description
-                        th.text-center(st-sort='action') Action
-                        th.text-center(st-sort='amount') Visited
-                    tbody
-                        tr(ng-repeat='row in displayedRows')
-                            td.text-left {{ row.action | translate }}
-                            td.text-left {{ row.action }}
-                            td.text-left {{ row.amount }}
+                .panel--ignite
+                    table.table--ignite(scrollable-container='#activities-user-dialog' st-table='displayedRows' st-safe-src='ctrl.data')
+                        thead
+                            th(st-sort='action | translate') Description
+                            th(st-sort='action') Action
+                            th(st-sort='amount') Visited
+                        tbody
+                            tr(ng-repeat='row in displayedRows')
+                                td
+                                    .text-overflow {{ row.action | translate }}
+                                td
+                                    .text-overflow {{ row.action }}
+                                td.text-right
+                                    .text-overflow {{ row.amount }}
             .modal-footer
-                button.btn.btn-primary(id='confirm-btn-confirm' ng-click='$hide()') Close
+                button.btn-ignite.btn-ignite--success(id='confirm-btn-confirm' ng-click='$hide()') Close

http://git-wip-us.apache.org/repos/asf/ignite/blob/865eed71/modules/web-console/frontend/app/primitives/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/index.js b/modules/web-console/frontend/app/primitives/index.js
index e72f087..8382c19 100644
--- a/modules/web-console/frontend/app/primitives/index.js
+++ b/modules/web-console/frontend/app/primitives/index.js
@@ -19,8 +19,10 @@ import './badge/index.scss';
 import './btn/index.scss';
 import './datepicker/index.scss';
 import './tabs/index.scss';
+import './table/index.scss';
 import './panel/index.scss';
 import './dropdown/index.scss';
+import './modal/index.scss';
 import './ui-grid/index.scss';
 import './ui-grid-header/index.scss';
 import './ui-grid-settings/index.scss';

http://git-wip-us.apache.org/repos/asf/ignite/blob/865eed71/modules/web-console/frontend/app/primitives/modal/index.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/modal/index.scss b/modules/web-console/frontend/app/primitives/modal/index.scss
new file mode 100644
index 0000000..dc0dfee
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/modal/index.scss
@@ -0,0 +1,179 @@
+/*
+ * 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 '../../../public/stylesheets/variables';
+
+.modal {
+    display: block;
+    overflow: hidden;
+}
+
+.modal .close {
+    position: absolute;
+    top: 10px;
+    right: 10px;
+    float: none;
+}
+
+.modal-header {
+    border-top-left-radius: 6px;
+    border-top-right-radius: 6px;
+}
+
+// Close icon
+.modal-header .close {
+    margin-right: -2px;
+}
+
+// Modal icon
+.modal-header h4 > i.fa {
+    cursor: default;
+    float: left;
+    line-height: $modal-title-line-height;
+}
+
+.modal .modal-dialog {
+    width: 650px;
+}
+
+.modal .modal-content {
+    background-color: $gray-lighter;
+
+    .input-tip {
+        padding-top: 1px;
+    }
+}
+
+.modal .modal-content .modal-header {
+    background-color: $ignite-background-color;
+    text-align: center;
+    color: $ignite-header-color;
+    padding: 15px 25px 15px 15px;
+}
+
+.modal .modal-content .modal-header h4 {
+    font-size: 22px;
+}
+
+.modal .modal-content .modal-footer {
+    margin-top: 0;
+}
+
+.modal-footer {
+    label {
+        float: left;
+        margin: 0;
+    }
+
+    .btn:last-child {
+        margin-right: 0;
+    }
+
+    .checkbox {
+        margin: 0;
+    }
+}
+
+.modal-body {
+    margin-left: 20px;
+    margin-right: 20px;
+}
+
+.modal-body-with-scroll {
+    max-height: 420px;
+    overflow-y: overlay;
+    margin: 0;
+}
+
+.modal.center .modal-dialog {
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translateX(-50%) translateY(-50%);
+    transform: translateX(-50%) translateY(-50%);
+}
+
+.modal--ignite {
+    .close {
+        position: absolute;
+        top: 23px;
+        right: 20px;
+
+        display: block;
+        width: 16px;
+        height: 16px;
+
+        opacity: 1;
+        background-image: url('/images/icons/cross.svg');
+        background-repeat: no-repeat;
+        background-position: center;
+
+        &:hover, &:focus {
+            outline: none;
+            filter: hue-rotate(1deg) brightness(.49);
+        }
+    }
+
+    .modal-content {
+        border: none;
+        border-radius: 4px;
+        background-color: white;
+
+        box-shadow: 0 2px 4px 0 rgba(35, 36, 40, 0.5);
+
+        .modal-header {
+            display: flex;
+            align-items: center;
+
+            padding: 10px 20px;
+
+            text-align: left;
+
+            border-top-left-radius: 4px;
+            border-top-right-radius: 4px;
+            border-bottom: 1px solid $table-border-color;
+
+            h4 {
+                color: $text-color;
+                font-size: 16px;
+                font-family: Roboto;
+                font-weight: 400;
+                line-height: 36px;
+                margin-top: 1px;
+                margin-bottom: -1px;
+
+                i {
+                    margin-right: 8px;
+
+                    color: #424242;
+                    font-size: 18px;
+                    line-height: inherit;
+                }
+            }
+        }
+
+        .modal-body {
+            padding: 20px;
+        }
+
+        .modal-footer {
+            padding: 10px 20px;
+
+            border-top: 1px solid $table-border-color;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/865eed71/modules/web-console/frontend/app/primitives/table/index.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/table/index.scss b/modules/web-console/frontend/app/primitives/table/index.scss
new file mode 100644
index 0000000..451e50d
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/table/index.scss
@@ -0,0 +1,91 @@
+/*
+ * 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 '../../../public/stylesheets/variables';
+
+table.table--ignite {
+    width: 100%;
+
+    font-family: Roboto;
+    line-height: 46px;
+
+    th, td {
+        padding: 0 20px;
+
+        border: solid $table-border-color;
+        border-width: 0;
+
+        &:first-child {
+            border-left-width: 1px;
+        }
+
+        &:last-child {
+            border-right-width: 1px;
+        }
+    }
+
+    th {
+        border-right-width: 1px;
+    }
+
+    td {
+        border-bottom-width: 1px;
+    }
+
+    thead {
+        border: solid $table-border-color;
+        border-width: 1px 0;
+
+        th {
+            color: $gray-light;
+            font-weight: 400;
+        }
+    }
+
+    tbody {
+        tr {
+            &:nth-child(even) {
+                background-color: $body-bg;
+            }
+        }
+
+        td {
+            color: $text-color;
+
+            .text-overflow {
+                overflow: hidden;
+                max-width: 220px;
+                text-overflow: ellipsis;
+                white-space: nowrap;
+            }
+        }
+    }
+
+    .st-sort-ascent:after,
+    .st-sort-descent:after {
+        margin-left: 5px;
+        font-family: "ui-grid";
+    }
+
+    .st-sort-ascent:after {
+        content: '\C359';
+    }
+
+    .st-sort-descent:after {
+        content: '\C358';
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/865eed71/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 7907e4c..7549549 100644
--- a/modules/web-console/frontend/public/stylesheets/style.scss
+++ b/modules/web-console/frontend/public/stylesheets/style.scss
@@ -37,16 +37,6 @@ hr {
     outline: none;
 }
 
-
-
-.modal.center .modal-dialog {
-    position: fixed;
-    top: 50%;
-    left: 50%;
-    -webkit-transform: translateX(-50%) translateY(-50%);
-    transform: translateX(-50%) translateY(-50%);
-}
-
 .border-left {
     box-shadow: 1px 0 0 0 $gray-lighter inset;
 }
@@ -300,63 +290,17 @@ h1, h2, h3, h4, h5, h6 {
 }
 
 /* Modal */
-.modal {
-    display: block;
-    overflow: hidden;
-}
-
-.modal .close {
-    position: absolute;
-    top: 10px;
-    right: 10px;
-    float: none;
-}
-
-.modal-header {
-    border-top-left-radius: 6px;
-    border-top-right-radius: 6px;
-}
-
-// Close icon
-.modal-header .close {
-    margin-right: -2px;
-}
-
-// Modal icon
-.modal-header h4 > i.fa {
-    cursor: default;
-    float: left;
-    line-height: $modal-title-line-height;
-}
-
-.modal .modal-dialog {
-    width: 650px;
-}
-
-.modal .modal-content {
-    background-color: $gray-lighter;
-
-    .input-tip {
-        padding-top: 1px;
-    }
-}
-
-.modal .modal-content .modal-header {
-    background-color: $ignite-background-color;
-    text-align: center;
-    color: $ignite-header-color;
-    padding: 15px 25px 15px 15px;
-}
-
-.modal .modal-content .modal-header h4 {
-    font-size: 22px;
-}
-
-.modal .modal-content .modal-footer {
+.login-header {
     margin-top: 0;
+    margin-bottom: 20px;
+    font-size: 2em;
 }
 
-.modal-footer {
+.login-footer {
+    padding: 15px 0;
+    text-align: right;
+    border-top: 1px solid #e5e5e5;
+
     label {
         float: left;
         margin: 0;
@@ -369,38 +313,23 @@ h1, h2, h3, h4, h5, h6 {
     .checkbox {
         margin: 0;
     }
-}
-
-.login-header {
-    margin-top: 0;
-    margin-bottom: 20px;
-    font-size: 2em;
-}
-
-.login-footer {
-    @extend .modal-footer;
-
-    padding-left: 0;
-    padding-right: 0;
 
     .btn {
         margin-right: 0;
     }
 }
 
-.modal-body {
-    margin-left: 20px;
-    margin-right: 20px;
+.greedy {
+    min-height: 100%;
+    height: #{"calc(100vh - 270px)"};
 }
 
-.modal-body-with-scroll {
-    max-height: 420px;
-    overflow-y: auto;
-    margin: 0;
+.signin-greedy {
+    height: #{"calc(100vh - 300px)"};
 }
 
 body > .wrapper,
-// Nested ui-view, like on password reset state
+    // Nested ui-view, like on password reset state
 body > .wrapper > ui-view {
     display: flex;
     flex-direction: column;

http://git-wip-us.apache.org/repos/asf/ignite/blob/865eed71/modules/web-console/frontend/views/signin.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/signin.tpl.pug b/modules/web-console/frontend/views/signin.tpl.pug
index 6f8f6ad..a32733d 100644
--- a/modules/web-console/frontend/views/signin.tpl.pug
+++ b/modules/web-console/frontend/views/signin.tpl.pug
@@ -27,7 +27,7 @@ web-console-header
             .signin-greedy
                 .col-xs-12.col-md-6
                     form(name='form' novalidate)
-                        .modal-body.row(style='padding: 0 0 10px 0; margin: 0')
+                        .row(style='padding: 0 0 10px 0; margin: 0')
                             .settings-row(ng-if='action == "signup"')
                                 h3.login-header Sign Up
                             .settings-row(ng-if='action == "signin"')


[11/14] ignite git commit: Removed unused IgniteInternalCache methods.

Posted by sb...@apache.org.
Removed unused IgniteInternalCache methods.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/330d9ef2
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/330d9ef2
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/330d9ef2

Branch: refs/heads/ignite-5075
Commit: 330d9ef26946541ae95a7221c1a2f02daf167812
Parents: 865eed7
Author: sboikov <sb...@gridgain.com>
Authored: Mon May 15 13:10:57 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon May 15 13:10:57 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheAdapter.java      |  71 +-------
 .../cache/GridCacheConcurrentMap.java           |   5 -
 .../cache/GridCacheConcurrentMapImpl.java       |  28 ----
 .../processors/cache/GridCacheProxyImpl.java    |  60 -------
 .../processors/cache/GridNoStorageCacheMap.java |   5 -
 .../processors/cache/IgniteInternalCache.java   |  61 -------
 .../dht/GridCachePartitionedConcurrentMap.java  |   9 --
 .../distributed/dht/GridDhtCacheAdapter.java    | 162 -------------------
 .../distributed/near/GridNearCacheAdapter.java  |  17 --
 .../GridCachePartitionedFullApiSelfTest.java    |  18 ---
 .../cache/eviction/EvictionAbstractTest.java    |  13 +-
 .../hadoop/jobtracker/HadoopJobTracker.java     |  20 ++-
 .../cache/hibernate/HibernateCacheProxy.java    |  25 ---
 13 files changed, 28 insertions(+), 466 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/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 694f4b0..0ad383b 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
@@ -991,78 +991,11 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
         return entrySet((CacheEntryPredicate[])null);
     }
 
-    /**
-     * Gets entry set containing internal entries.
-     *
-     * @param filter Filter.
-     * @return Entry set.
-     */
-    @Override public final Set<Cache.Entry<K, V>> entrySetx(final CacheEntryPredicate... filter) {
-        boolean keepBinary = ctx.keepBinary();
-
-        return new EntrySet(map.entrySet(filter), keepBinary);
-    }
-
-    /** {@inheritDoc} */
-    @Override public Set<Cache.Entry<K, V>> entrySet(int part) {
-        throw new UnsupportedOperationException();
-    }
-
     /** {@inheritDoc} */
     @Override public final Set<K> keySet() {
         return new KeySet(map.entrySet());
     }
 
-    /** {@inheritDoc} */
-    @Override public final Set<K> keySetx() {
-        return keySet();
-    }
-
-    /** {@inheritDoc} */
-    @Override public final Set<K> primaryKeySet() {
-        return new KeySet(map.entrySet(CU.cachePrimary(ctx.grid().affinity(ctx.name()), ctx.localNode())));
-    }
-
-    /** {@inheritDoc} */
-    @Override public Iterable<V> values() {
-        return values((CacheEntryPredicate[])null);
-    }
-
-    /**
-     * Collection of values cached on this node. You cannot modify this collection.
-     * <p>
-     * Iterator over this collection will not fail if collection was
-     * concurrently updated by another thread. This means that iterator may or
-     * may not return latest values depending on whether they were added before
-     * or after current iterator position.
-     * <p>
-     * NOTE: this operation is not distributed and returns only the values cached on this node.
-     *
-     * @param filter Filters.
-     * @return Collection of cached values.
-     */
-    public final Iterable<V> values(final CacheEntryPredicate... filter) {
-        return new Iterable<V>() {
-            @Override public Iterator<V> iterator() {
-                return new Iterator<V>() {
-                    private final Iterator<? extends GridCacheEntryEx> it = entries().iterator();
-
-                    @Override public boolean hasNext() {
-                        return it.hasNext();
-                    }
-
-                    @Override public V next() {
-                        return (V)it.next().wrap().getValue();
-                    }
-
-                    @Override public void remove() {
-                        throw new UnsupportedOperationException("remove");
-                    }
-                };
-            }
-        };
-    }
-
     /**
      *
      * @param key Entry key.
@@ -4491,7 +4424,9 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
      * @return Entry set.
      */
     public Set<Cache.Entry<K, V>> entrySet(@Nullable CacheEntryPredicate... filter) {
-        return entrySetx(filter);
+        boolean keepBinary = ctx.keepBinary();
+
+        return new EntrySet(map.entrySet(filter), keepBinary);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
index 0fe5c9f..eb3f28e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
@@ -89,11 +89,6 @@ public interface GridCacheConcurrentMap {
     public void decrementPublicSize(GridCacheEntryEx e);
 
     /**
-     * @return Random entry out of hash map.
-     */
-    public Set<KeyCacheObject> keySet(CacheEntryPredicate... filter);
-
-    /**
      * @param filter Filter.
      * @return Iterable of the mappings contained in this map, excluding entries in unvisitable state.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java
index 2c262df..45b455c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java
@@ -292,34 +292,6 @@ public abstract class GridCacheConcurrentMapImpl implements GridCacheConcurrentM
     }
 
     /** {@inheritDoc} */
-    @Override public Set<KeyCacheObject> keySet(final CacheEntryPredicate... filter) {
-        final IgnitePredicate<KeyCacheObject> p = new IgnitePredicate<KeyCacheObject>() {
-            @Override public boolean apply(KeyCacheObject key) {
-                GridCacheMapEntry entry = map.get(key);
-
-                return entry != null && entry.visitable(filter);
-            }
-        };
-
-        return new AbstractSet<KeyCacheObject>() {
-            @Override public Iterator<KeyCacheObject> iterator() {
-                return F.iterator0(map.keySet(), true, p);
-            }
-
-            @Override public int size() {
-                return F.size(iterator());
-            }
-
-            @Override public boolean contains(Object o) {
-                if (!(o instanceof KeyCacheObject))
-                    return false;
-
-                return map.keySet().contains(o) && p.apply((KeyCacheObject)o);
-            }
-        };
-    }
-
-    /** {@inheritDoc} */
     @Override public Collection<GridCacheMapEntry> entries(final CacheEntryPredicate... filter) {
         final IgnitePredicate<GridCacheMapEntry> p = new IgnitePredicate<GridCacheMapEntry>() {
             @Override public boolean apply(GridCacheMapEntry entry) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/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 837c22a..d81b9f7 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
@@ -844,42 +844,6 @@ public class GridCacheProxyImpl<K, V> implements IgniteInternalCache<K, V>, Exte
     }
 
     /** {@inheritDoc} */
-    @Override public Set<K> keySetx() {
-        CacheOperationContext prev = gate.enter(opCtx);
-
-        try {
-            return delegate.keySetx();
-        }
-        finally {
-            gate.leave(prev);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public Set<K> primaryKeySet() {
-        CacheOperationContext prev = gate.enter(opCtx);
-
-        try {
-            return delegate.primaryKeySet();
-        }
-        finally {
-            gate.leave(prev);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public Iterable<V> values() {
-        CacheOperationContext prev = gate.enter(opCtx);
-
-        try {
-            return delegate.values();
-        }
-        finally {
-            gate.leave(prev);
-        }
-    }
-
-    /** {@inheritDoc} */
     @Override public Set<Cache.Entry<K, V>> entrySet() {
         CacheOperationContext prev = gate.enter(opCtx);
 
@@ -892,30 +856,6 @@ public class GridCacheProxyImpl<K, V> implements IgniteInternalCache<K, V>, Exte
     }
 
     /** {@inheritDoc} */
-    @Override public Set<Cache.Entry<K, V>> entrySet(int part) {
-        CacheOperationContext prev = gate.enter(opCtx);
-
-        try {
-            return delegate.entrySet(part);
-        }
-        finally {
-            gate.leave(prev);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public Set<Cache.Entry<K, V>> entrySetx(CacheEntryPredicate... filter) {
-        CacheOperationContext prev = gate.enter(opCtx);
-
-        try {
-            return delegate.entrySetx(filter);
-        }
-        finally {
-            gate.leave(prev);
-        }
-    }
-
-    /** {@inheritDoc} */
     @Override public Iterator<Cache.Entry<K, V>> scanIterator(boolean keepBinary,
         @Nullable IgniteBiPredicate<Object, Object> p) throws IgniteCheckedException {
         CacheOperationContext prev = gate.enter(opCtx);

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridNoStorageCacheMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridNoStorageCacheMap.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridNoStorageCacheMap.java
index 14a8482..86a573b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridNoStorageCacheMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridNoStorageCacheMap.java
@@ -81,11 +81,6 @@ public class GridNoStorageCacheMap implements GridCacheConcurrentMap {
     }
 
     /** {@inheritDoc} */
-    @Override public Set<KeyCacheObject> keySet(CacheEntryPredicate... filter) {
-        return Collections.emptySet();
-    }
-
-    /** {@inheritDoc} */
     @Override public Iterable<GridCacheMapEntry> entries(CacheEntryPredicate... filter) {
         return Collections.emptySet();
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
index cc7fd3a..2f4a40e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
@@ -46,7 +46,6 @@ import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
 import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
 import org.apache.ignite.internal.processors.cache.dr.GridCacheDrInfo;
-import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.lang.IgniteBiInClosure;
 import org.apache.ignite.lang.IgniteBiPredicate;
@@ -878,46 +877,6 @@ public interface IgniteInternalCache<K, V> extends Iterable<Cache.Entry<K, V>> {
     public Set<K> keySet();
 
     /**
-     * @return Set of keys including internal keys.
-     */
-    public Set<K> keySetx();
-
-    /**
-     * Set of keys for which this node is primary.
-     * This set is dynamic and may change with grid topology changes.
-     * Note that this set will contain mappings for all keys, even if their values are
-     * {@code null} because they were invalidated. You can remove elements from
-     * this set, but you cannot add elements to this set. All removal operation will be
-     * reflected on the cache itself.
-     * <p>
-     * Iterator over this set will not fail if set was concurrently updated
-     * by another thread. This means that iterator may or may not return latest
-     * keys depending on whether they were added before or after current
-     * iterator position.
-     * <p>
-     * NOTE: this operation is not distributed and returns only the keys cached on this node.
-     *
-     * @return Primary key set for the current node.
-     */
-    public Set<K> primaryKeySet();
-
-    /**
-     * Collection of values cached on this node. You can remove
-     * elements from this collection, but you cannot add elements to this collection.
-     * All removal operation will be reflected on the cache itself.
-     * <p>
-     * Iterator over this collection will not fail if collection was
-     * concurrently updated by another thread. This means that iterator may or
-     * may not return latest values depending on whether they were added before
-     * or after current iterator position.
-     * <p>
-     * NOTE: this operation is not distributed and returns only the values cached on this node.
-     *
-     * @return Collection of cached values.
-     */
-    public Iterable<V> values();
-
-    /**
      * Gets set of all entries cached on this node. You can remove
      * elements from this set, but you cannot add elements to this set.
      * All removal operation will be reflected on the cache itself.
@@ -929,26 +888,6 @@ public interface IgniteInternalCache<K, V> extends Iterable<Cache.Entry<K, V>> {
     public Set<Cache.Entry<K, V>> entrySet();
 
     /**
-     * Gets set containing cache entries that belong to provided partition or {@code null}
-     * if partition is not found locally.
-     * <p>
-     * NOTE: this operation is not distributed and returns only the entries cached on this node.
-     *
-     * @param part Partition.
-     * @return Set containing partition's entries or {@code null} if partition is
-     *      not found locally.
-     */
-    @Nullable public Set<Cache.Entry<K, V>> entrySet(int part);
-
-    /**
-     * Gets entry set containing internal entries.
-     *
-     * @param filter Filter.
-     * @return Entry set.
-     */
-    public Set<Cache.Entry<K, V>> entrySetx(CacheEntryPredicate... filter);
-
-    /**
      * Starts new transaction with the specified concurrency and isolation.
      *
      * @param concurrency Concurrency.

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedConcurrentMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedConcurrentMap.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedConcurrentMap.java
index f021b65..dcc2d8b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedConcurrentMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedConcurrentMap.java
@@ -139,15 +139,6 @@ public class GridCachePartitionedConcurrentMap implements GridCacheConcurrentMap
     }
 
     /** {@inheritDoc} */
-    @Override public Set<KeyCacheObject> keySet(final CacheEntryPredicate... filter) {
-        return new PartitionedSet<KeyCacheObject>() {
-            @Override protected Set<KeyCacheObject> set(GridDhtLocalPartition part) {
-                return part.keySet(filter);
-            }
-        };
-    }
-
-    /** {@inheritDoc} */
     @Override public Iterable<GridCacheMapEntry> entries(final CacheEntryPredicate... filter) {
         return new Iterable<GridCacheMapEntry>() {
             @Override public Iterator<GridCacheMapEntry> iterator() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/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 121c734..02badc1 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
@@ -1077,101 +1077,10 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
     }
 
     /** {@inheritDoc} */
-    @Override public Set<Cache.Entry<K, V>> entrySet(int part) {
-        return new PartitionEntrySet(part);
-    }
-
-    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(GridDhtCacheAdapter.class, this, super.toString());
     }
 
-    /**
-     *
-     */
-    private class PartitionEntrySet extends AbstractSet<Cache.Entry<K, V>> {
-        /** */
-        private int partId;
-
-        /**
-         * @param partId Partition id.
-         */
-        private PartitionEntrySet(int partId) {
-            this.partId = partId;
-        }
-
-        /** {@inheritDoc} */
-        @NotNull @Override public Iterator<Cache.Entry<K, V>> iterator() {
-            final GridDhtLocalPartition part = ctx.topology().localPartition(partId,
-                ctx.discovery().topologyVersionEx(), false);
-
-            Iterator<GridCacheMapEntry> partIt = part == null ? null : part.entries().iterator();
-
-            return new PartitionEntryIterator(partIt);
-        }
-
-        /** {@inheritDoc} */
-        @Override public boolean remove(Object o) {
-            if (!(o instanceof Cache.Entry))
-                return false;
-
-            Cache.Entry<K, V> entry = (Cache.Entry<K, V>)o;
-
-            K key = entry.getKey();
-            V val = entry.getValue();
-
-            if (val == null)
-                return false;
-
-            try {
-                // Cannot use remove(key, val) since we may be in DHT cache and should go through near.
-                return GridDhtCacheAdapter.this.remove(key, val);
-            }
-            catch (IgniteCheckedException e) {
-                throw new IgniteException(e);
-            }
-        }
-
-        /** {@inheritDoc} */
-        @Override public boolean removeAll(Collection<?> c) {
-            boolean rmv = false;
-
-            for (Object o : c)
-                rmv |= remove(o);
-
-            return rmv;
-        }
-
-        /** {@inheritDoc} */
-        @Override public boolean contains(Object o) {
-            if (!(o instanceof Cache.Entry))
-                return false;
-
-            Cache.Entry<K, V> entry = (Cache.Entry<K, V>)o;
-
-            try {
-                return partId == ctx.affinity().partition(entry.getKey()) &&
-                    F.eq(entry.getValue(), localPeek(entry.getKey(), CachePeekModes.ONHEAP_ONLY, null));
-            }
-            catch (IgniteCheckedException e) {
-                throw new IgniteException(e);
-            }
-        }
-
-        /** {@inheritDoc} */
-        @Override public int size() {
-            GridDhtLocalPartition part = ctx.topology().localPartition(partId,
-                ctx.discovery().topologyVersionEx(), false);
-
-            return part != null ? part.publicSize() : 0;
-        }
-
-        /** {@inheritDoc} */
-        @Override public String toString() {
-            return S.toString(PartitionEntrySet.class, this, "super", super.toString(), true);
-        }
-    }
-
     /** {@inheritDoc} */
     @Override public List<GridCacheClearAllRunnable<K, V>> splitClearLocally(boolean srv, boolean near,
         boolean readers) {
@@ -1323,77 +1232,6 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
     }
 
     /**
-     * Complex partition iterator for both partition and swap iteration.
-     */
-    private class PartitionEntryIterator extends GridIteratorAdapter<Cache.Entry<K, V>> {
-        /** */
-        private static final long serialVersionUID = 0L;
-
-        /** Next entry. */
-        private Cache.Entry<K, V> entry;
-
-        /** Last seen entry to support remove. */
-        private Cache.Entry<K, V> last;
-
-        /** Partition iterator. */
-        private final Iterator<GridCacheMapEntry> partIt;
-
-        /**
-         * @param partIt Partition iterator.
-         */
-        private PartitionEntryIterator(@Nullable Iterator<GridCacheMapEntry> partIt) {
-            this.partIt = partIt;
-
-            advance();
-        }
-
-        /** {@inheritDoc} */
-        @Override public boolean hasNextX() {
-            return entry != null;
-        }
-
-        /** {@inheritDoc} */
-        @Override public Cache.Entry<K, V> nextX() throws IgniteCheckedException {
-            if (!hasNext())
-                throw new NoSuchElementException();
-
-            last = entry;
-
-            advance();
-
-            return last;
-        }
-
-        /** {@inheritDoc} */
-        @Override public void removeX() throws IgniteCheckedException {
-            if (last == null)
-                throw new IllegalStateException();
-
-            ctx.grid().cache(ctx.name()).remove(last.getKey(), last.getValue());
-        }
-
-        /**
-         *
-         */
-        private void advance() {
-            if (partIt != null) {
-                while (partIt.hasNext()) {
-                    GridCacheEntryEx next = partIt.next();
-
-                    if (next instanceof GridCacheMapEntry && (!((GridCacheMapEntry)next).visitable(CU.empty0())))
-                        continue;
-
-                    entry = next.wrapLazyValue(ctx.keepBinary());
-
-                    return;
-                }
-            }
-
-            entry = null;
-        }
-    }
-
-    /**
      * Multi update future.
      */
     @SuppressWarnings("TypeMayBeWeakened")

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
index 0b25f58..f8240f3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
@@ -339,23 +339,6 @@ public abstract class GridNearCacheAdapter<K, V> extends GridDistributedCacheAda
     }
 
     /** {@inheritDoc} */
-    @Override public Set<Cache.Entry<K, V>> entrySet(int part) {
-        return dht().entrySet(part);
-    }
-
-    /**
-     * @return Keys for near cache only.
-     */
-    public Set<K> nearKeySet() {
-        return super.keySet();
-    }
-
-    /** {@inheritDoc} */
-    @Override public Collection<V> values() {
-        return new GridCacheValueCollection<>(ctx, entrySet(), ctx.vararg(F.<K, V>cacheHasPeekValue()));
-    }
-
-    /** {@inheritDoc} */
     @Override public boolean evict(K key) {
         // Use unary 'and' to make sure that both sides execute.
         return super.evict(key) & dht().evict(key);

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFullApiSelfTest.java
index c10e348..ca12f70 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFullApiSelfTest.java
@@ -59,24 +59,6 @@ public class GridCachePartitionedFullApiSelfTest extends GridCacheAbstractFullAp
     /**
      * @throws Exception If failed.
      */
-    public void testPartitionEntrySetToString() throws Exception {
-        GridCacheAdapter<String, Integer> cache = ((IgniteKernal)grid(0)).internalCache(DEFAULT_CACHE_NAME);
-
-        for (int i = 0; i < 100; i++) {
-            String key = String.valueOf(i);
-
-            cache.getAndPut(key, i);
-        }
-
-        Affinity aff = grid(0).affinity(cache.name());
-
-        for (int i = 0 ; i < aff.partitions(); i++)
-            String.valueOf(cache.entrySet(i));
-    }
-
-    /**
-     * @throws Exception If failed.
-     */
     public void testUpdate() throws Exception {
         if (gridCount() > 1) {
             IgniteCache<Object, Object> cache = grid(0).cache(DEFAULT_CACHE_NAME);

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/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 b5bfcea..7fb40a3 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
@@ -780,7 +780,7 @@ public abstract class EvictionAbstractTest<T extends EvictionPolicy<?, ?>>
 
                 if (plcMax > 0) {
                     for (int i = 0; i < gridCnt; i++) {
-                        int actual = colocated(i).map().keySet().size();
+                        int actual = colocated(i).map().size();
 
                         assertTrue("Cache size is greater then policy size [expected=" + endSize + ", actual=" + actual + ']',
                             actual <= endSize + (plcMaxMemSize > 0 ? 1 : plcBatchSize));
@@ -973,15 +973,16 @@ public abstract class EvictionAbstractTest<T extends EvictionPolicy<?, ?>>
 
         /**
          * @param plc Policy.
+         * @return Policy proxy.
          */
         public static EvictionPolicyProxy proxy(EvictionPolicy plc) {
             return new EvictionPolicyProxy(plc);
         }
 
         /**
-         * Get current size.
+         * @return Get current size.
          */
-        public int getCurrentSize() {
+        int getCurrentSize() {
             try {
                 return (Integer)plc.getClass().getDeclaredMethod("getCurrentSize").invoke(plc);
             }
@@ -991,9 +992,9 @@ public abstract class EvictionAbstractTest<T extends EvictionPolicy<?, ?>>
         }
 
         /**
-         * Current memory size.
+         * @return Current memory size.
          */
-        public long getCurrentMemorySize() {
+        long getCurrentMemorySize() {
             try {
                 return (Long)plc.getClass().getMethod("getCurrentMemorySize").invoke(plc);
             }
@@ -1003,7 +1004,7 @@ public abstract class EvictionAbstractTest<T extends EvictionPolicy<?, ?>>
         }
 
         /**
-         * Current queue.
+         * @return Current queue.
          */
         public Collection<EvictableEntry> queue() {
             try {

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/HadoopJobTracker.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/HadoopJobTracker.java b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/HadoopJobTracker.java
index 9284c02..39f909e 100644
--- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/HadoopJobTracker.java
+++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/HadoopJobTracker.java
@@ -37,7 +37,9 @@ import javax.cache.expiry.ExpiryPolicy;
 import javax.cache.expiry.ModifiedExpiryPolicy;
 import javax.cache.processor.EntryProcessor;
 import javax.cache.processor.MutableEntry;
+import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.cache.CachePeekMode;
 import org.apache.ignite.events.DiscoveryEvent;
 import org.apache.ignite.events.Event;
 import org.apache.ignite.events.EventType;
@@ -101,6 +103,9 @@ import static org.apache.ignite.internal.processors.hadoop.taskexecutor.HadoopTa
  */
 public class HadoopJobTracker extends HadoopComponent {
     /** */
+    private static final CachePeekMode[] OFFHEAP_PEEK_MODE = {CachePeekMode.OFFHEAP};
+
+    /** */
     private final GridMutex mux = new GridMutex();
 
     /** */
@@ -679,9 +684,20 @@ public class HadoopJobTracker extends HadoopComponent {
         if (ctx.jobUpdateLeader()) {
             boolean checkSetup = evt.eventNode().order() < ctx.localNodeOrder();
 
+            Iterable<IgniteCache.Entry<HadoopJobId, HadoopJobMetadata>> entries;
+
+            try {
+                entries = jobMetaCache().localEntries(OFFHEAP_PEEK_MODE);
+            }
+            catch (IgniteCheckedException e) {
+                U.error(log, "Failed to get local entries", e);
+
+                return;
+            }
+
             // Iteration over all local entries is correct since system cache is REPLICATED.
-            for (Object metaObj : jobMetaCache().values()) {
-                HadoopJobMetadata meta = (HadoopJobMetadata)metaObj;
+            for (IgniteCache.Entry<HadoopJobId, HadoopJobMetadata>  entry : entries) {
+                HadoopJobMetadata meta = entry.getValue();
 
                 HadoopJobId jobId = meta.jobId();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/330d9ef2/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 3d439dd..aa1f83b 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
@@ -266,36 +266,11 @@ public class HibernateCacheProxy implements IgniteInternalCache<Object, Object>
     }
 
     /** {@inheritDoc} */
-    @Override public Set keySetx() {
-        return delegate.keySetx();
-    }
-
-    /** {@inheritDoc} */
-    @Override public Set primaryKeySet() {
-        return delegate.primaryKeySet();
-    }
-
-    /** {@inheritDoc} */
-    @Override public Iterable values() {
-        return delegate.values();
-    }
-
-    /** {@inheritDoc} */
     @Override public Set<Cache.Entry<Object, Object>> entrySet() {
         return delegate.entrySet();
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override public Set<Cache.Entry<Object,Object>> entrySet(int part) {
-        return delegate.entrySet(part);
-    }
-
-    /** {@inheritDoc} */
-    @Override public Set<Cache.Entry<Object, Object>> entrySetx(CacheEntryPredicate... filter) {
-        return delegate.entrySetx(filter);
-    }
-
-    /** {@inheritDoc} */
     @Override public Transaction txStart(
         TransactionConcurrency concurrency,
         TransactionIsolation isolation