Repository: incubator-ignite
Updated Branches:
  refs/heads/sprint-1 210bd2e3b -> 9513a6272


# IGNITE-191: WIP.


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

Branch: refs/heads/sprint-1
Commit: 0c899a885589bb2d9ac00e11bf43bd3e271aeb63
Parents: db8b4c7
Author: vozerov-gridgain <voze...@gridgain.com>
Authored: Wed Feb 11 18:04:03 2015 +0300
Committer: vozerov-gridgain <voze...@gridgain.com>
Committed: Wed Feb 11 18:04:03 2015 +0300

----------------------------------------------------------------------
 .../src/main/java/org/apache/ignite/Ignite.java |   9 +-
 .../apache/ignite/internal/GridProductImpl.java | 126 ++------------
 .../org/apache/ignite/internal/IgniteEx.java    |   5 -
 .../apache/ignite/internal/IgniteKernal.java    | 174 +++----------------
 .../impl/GridRouterCommandLineStartup.java      |   7 +-
 .../processors/cache/GridCacheSwapManager.java  |   3 -
 .../jdbc/GridCacheQueryJdbcValidationTask.java  |   5 -
 .../processors/fs/GridGgfsIpcHandler.java       |  13 +-
 .../internal/processors/fs/GridGgfsServer.java  |   2 +-
 .../processors/fs/IgniteFsProcessor.java        |   5 -
 .../license/GridLicenseProcessor.java           |  20 ---
 .../license/GridLicenseSubsystem.java           |  53 ------
 .../license/GridLicenseUseRegistry.java         |  90 ----------
 .../license/os/GridOsLicenseProcessor.java      |  15 --
 .../handlers/cache/GridCacheCommandHandler.java |   4 -
 .../version/GridVersionCommandHandler.java      |   4 +-
 .../streamer/GridStreamProcessor.java           |   5 -
 .../ignite/internal/product/IgniteProduct.java  |  76 +++++---
 .../ipc/shmem/IpcSharedMemoryNativeLoader.java  |   4 +-
 .../visor/misc/VisorLatestVersionTask.java      |   4 +-
 .../optimized/optimized-classnames.properties   |   1 -
 .../startup/cmdline/CommandLineStartup.java     |  13 +-
 .../ignite/internal/GridVersionSelfTest.java    |  69 ++++----
 .../product/GridProductVersionSelfTest.java     |   4 +-
 .../marshaller/GridMarshallerAbstractTest.java  |  39 +++--
 .../testframework/junits/GridAbstractTest.java  |   3 -
 .../ignite/testframework/junits/IgniteMock.java |   6 +
 .../processors/hadoop/GridHadoopSetup.java      |   4 +-
 .../scala/org/apache/ignite/scalar/scalar.scala |   3 +-
 .../org/apache/ignite/IgniteSpringBean.java     |   8 +
 .../ignite/visor/commands/VisorConsole.scala    |   7 +-
 .../commands/alert/VisorAlertCommand.scala      |   2 +-
 .../scala/org/apache/ignite/visor/visor.scala   |   3 +-
 33 files changed, 200 insertions(+), 586 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/Ignite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/Ignite.java 
b/modules/core/src/main/java/org/apache/ignite/Ignite.java
index 11acebb..8f85b73 100644
--- a/modules/core/src/main/java/org/apache/ignite/Ignite.java
+++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java
@@ -23,6 +23,7 @@ import org.apache.ignite.cluster.*;
 import org.apache.ignite.configuration.*;
 import org.apache.ignite.internal.product.*;
 import org.apache.ignite.internal.util.typedef.*;
+import org.apache.ignite.lang.*;
 import org.apache.ignite.plugin.*;
 import org.jetbrains.annotations.*;
 
@@ -46,7 +47,6 @@ import java.util.concurrent.*;
  * <li>{@link IgniteFs} - functionality for distributed Hadoop-compliant 
in-memory file system and map-reduce.</li>
  * <li>{@link IgniteStreamer} - functionality for streaming events workflow 
with queries and indexes into rolling windows.</li>
  * <li>{@link IgniteScheduler} - functionality for scheduling jobs using UNIX 
Cron syntax.</li>
- * <li>{@link IgniteProduct} - functionality for licence management and update 
and product related information.</li>
  * <li>{@link IgniteCompute} - functionality for executing tasks and closures 
on all grid nodes (inherited form {@link ClusterGroup}).</li>
  * <li>{@link IgniteMessaging} - functionality for topic-based message 
exchange on all grid nodes (inherited form {@link ClusterGroup}).</li>
  * <li>{@link IgniteEvents} - functionality for querying and listening to 
events on all grid nodes  (inherited form {@link ClusterGroup}).</li>
@@ -181,6 +181,13 @@ public interface Ignite extends AutoCloseable {
     public IgniteProduct product();
 
     /**
+     * Gets Ignite version.
+     *
+     * @return Ignite version.
+     */
+    public IgniteProductVersion version();
+
+    /**
      * Gets an instance of cron-based scheduler.
      *
      * @return Instance of scheduler.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/GridProductImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridProductImpl.java 
b/modules/core/src/main/java/org/apache/ignite/internal/GridProductImpl.java
index aa598c5..a017bbc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridProductImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridProductImpl.java
@@ -17,94 +17,22 @@
 
 package org.apache.ignite.internal;
 
-import org.apache.ignite.*;
 import org.apache.ignite.internal.product.*;
-import org.apache.ignite.internal.util.typedef.internal.*;
-import org.apache.ignite.lang.*;
 import org.jetbrains.annotations.*;
 
 import java.io.*;
-import java.text.*;
-import java.util.*;
 
 /**
- * {@link org.apache.ignite.internal.product.IgniteProduct} implementation.
+ * {@link IgniteProduct} implementation.
  */
-public class GridProductImpl implements IgniteProduct, Externalizable {
-    /** */
-    private static final long serialVersionUID = 0L;
-
-    /** Copyright blurb. */
-    public static final String COPYRIGHT = "2015 Copyright(C) Apache Software 
Foundation";
-
-    /** Enterprise edition flag. */
-    private static final boolean ENT;
-
-    /** Ignite version. */
-    public static final String VER;
-
-    /** Build timestamp in seconds. */
-    public static final long BUILD_TSTAMP;
-
-    /** Formatted build date. */
-    public static final String BUILD_TSTAMP_STR;
-
-    /** Revision hash. */
-    public static final String REV_HASH;
-
-    /** Release date. */
-    public static final String RELEASE_DATE;
-
-    /** Ignite version as numeric array (generated from {@link #VER}). */
-    public static final byte[] VER_BYTES;
-
-    /** Compound version. */
-    public static final String COMPOUND_VER;
-
-    /** Compound version. */
-    public static final String ACK_VER;
-
+public class GridProductImpl extends IgniteProduct {
     /** */
     private GridKernalContext ctx;
 
-    /** */
-    private IgniteProductVersion ver;
-
     /** Update notifier. */
     private GridUpdateNotifier verChecker;
 
     /**
-     *
-     */
-    static {
-        boolean ent0;
-
-        try {
-            ent0 = Class.forName("org.gridgain.grid.kernal.breadcrumb") != 
null;
-        }
-        catch (ClassNotFoundException ignored) {
-            ent0 = false;
-        }
-
-        ENT = ent0;
-
-        VER = GridProperties.get("ignite.version");
-        BUILD_TSTAMP = Long.valueOf(GridProperties.get("ignite.build"));
-        REV_HASH = GridProperties.get("ignite.revision");
-        RELEASE_DATE = GridProperties.get("ignite.rel.date");
-
-        VER_BYTES = U.intToBytes(VER.hashCode());
-
-        COMPOUND_VER = VER;
-
-        BUILD_TSTAMP_STR = new SimpleDateFormat("yyyyMMdd").format(new 
Date(BUILD_TSTAMP * 1000));
-
-        String rev = REV_HASH.length() > 8 ? REV_HASH.substring(0, 8) : 
REV_HASH;
-
-        ACK_VER = COMPOUND_VER + '#' + BUILD_TSTAMP_STR + "-sha1:" + rev;
-    }
-
-    /**
      * Required by {@link Externalizable}.
      */
     public GridProductImpl() {
@@ -118,8 +46,18 @@ public class GridProductImpl implements IgniteProduct, 
Externalizable {
     public GridProductImpl(GridKernalContext ctx, GridUpdateNotifier 
verChecker) {
         this.ctx = ctx;
         this.verChecker = verChecker;
+    }
+
+    /** {@inheritDoc} */
+    @Override public long gracePeriodLeft() {
+        ctx.gateway().readLock();
 
-        ver = IgniteProductVersion.fromString(VER + '-' + BUILD_TSTAMP + '-' + 
REV_HASH);
+        try {
+            return ctx.license().gracePeriodLeft();
+        }
+        finally {
+            ctx.gateway().readUnlock();
+        }
     }
 
     /** {@inheritDoc} */
@@ -147,16 +85,6 @@ public class GridProductImpl implements IgniteProduct, 
Externalizable {
     }
 
     /** {@inheritDoc} */
-    @Override public IgniteProductVersion version() {
-        return ver;
-    }
-
-    /** {@inheritDoc} */
-    @Override public String copyright() {
-        return COPYRIGHT;
-    }
-
-    /** {@inheritDoc} */
     @Nullable @Override public String latestVersion() {
         ctx.gateway().readLock();
 
@@ -167,32 +95,4 @@ public class GridProductImpl implements IgniteProduct, 
Externalizable {
             ctx.gateway().readUnlock();
         }
     }
-
-    /** {@inheritDoc} */
-    @Override public void ackVisor(IgniteLogger log) {
-        if (ENT)
-            U.quietAndInfo(log, "To start GUI Management & Monitoring run 
ggvisorui.{sh|bat}");
-        else
-            U.quietAndInfo(log, "To start Console Management & Monitoring run 
ignitevisorcmd.{sh|bat}");
-    }
-
-    /** {@inheritDoc} */
-    @Override public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject(ctx);
-    }
-
-    /** {@inheritDoc} */
-    @Override public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
-        ctx = (GridKernalContext)in.readObject();
-    }
-
-    /**
-     * Reconstructs object on unmarshalling.
-     *
-     * @return Reconstructed object.
-     * @throws ObjectStreamException Thrown in case of unmarshalling error.
-     */
-    private Object readResolve() throws ObjectStreamException {
-        return ctx.product();
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/IgniteEx.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteEx.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteEx.java
index 515a337..fccd9c0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteEx.java
@@ -96,11 +96,6 @@ public interface IgniteEx extends Ignite, ClusterGroupEx, 
IgniteCluster {
     public Collection<String> compatibleVersions();
 
     /**
-     * @return Grace period left in minutes if bursting or {@code -1} 
otherwise.
-     */
-    public long licenseGracePeriodLeft();
-
-    /**
      * Whether or not remote JMX management is enabled for this node.
      *
      * @return {@code True} if remote JMX management is enabled - {@code 
false} otherwise.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 620b1fe..dd76a3a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -92,10 +92,9 @@ import java.util.concurrent.atomic.*;
 
 import static org.apache.ignite.IgniteSystemProperties.*;
 import static org.apache.ignite.internal.GridKernalState.*;
-import static org.apache.ignite.internal.GridProductImpl.*;
+import static org.apache.ignite.internal.product.IgniteProduct.*;
 import static org.apache.ignite.internal.IgniteComponentType.*;
 import static org.apache.ignite.internal.IgniteNodeAttributes.*;
-import static 
org.apache.ignite.internal.processors.license.GridLicenseSubsystem.*;
 import static org.apache.ignite.internal.util.nodestart.IgniteNodeStartUtils.*;
 import static org.apache.ignite.lifecycle.LifecycleEventType.*;
 
@@ -124,15 +123,9 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
     /** Periodic version check delay. */
     private static final long PERIODIC_VER_CHECK_CONN_TIMEOUT = 10 * 1000; // 
10 seconds.
 
-    /** Periodic version check delay. */
-    private static final long PERIODIC_LIC_CHECK_DELAY = 1000 * 60; // Every 
minute.
-
     /** Periodic starvation check interval. */
     private static final long PERIODIC_STARVATION_CHECK_FREQ = 1000 * 30;
 
-    /** Shutdown delay in msec. when license violation detected. */
-    private static final int SHUTDOWN_DELAY = 60 * 1000;
-
     /** */
     private IgniteConfiguration cfg;
 
@@ -188,10 +181,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
 
     /** */
     @GridToStringExclude
-    private Timer licTimer;
-
-    /** */
-    @GridToStringExclude
     private Timer metricsLogTimer;
 
     /** Indicate error on grid stop. */
@@ -210,10 +199,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
     @GridToStringExclude
     private final AtomicReference<GridKernalGateway> gw = new 
AtomicReference<>();
 
-    /** Data Grid edition usage registered flag. */
-    @GridToStringExclude
-    private volatile boolean dbUsageRegistered;
-
     /** */
     @GridToStringExclude
     private final Collection<String> compatibleVers;
@@ -282,7 +267,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
 
     /** {@inheritDoc} */
     @Override public String getCopyright() {
-        return ctx.product().copyright();
+        return IgniteProduct.COPYRIGHT;
     }
 
     /** {@inheritDoc} */
@@ -307,7 +292,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
 
     /** {@inheritDoc} */
     @Override public String getFullVersion() {
-        return COMPOUND_VER + '-' + BUILD_TSTAMP_STR;
+        return VER_STR + '-' + BUILD_TSTAMP_STR;
     }
 
     /** {@inheritDoc} */
@@ -621,7 +606,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
 
         if (notifyEnabled) {
             try {
-                verChecker0 = new GridUpdateNotifier(gridName, VER, SITE, gw, 
false);
+                verChecker0 = new GridUpdateNotifier(gridName, VER_STR, SITE, 
gw, false);
 
                 verChecker0.checkForNewVersion(execSvc, log);
             }
@@ -795,9 +780,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
                 comp.onKernalStart();
             }
 
-            // Ack the license.
-            ctx.license().ackLicense();
-
             // Register MBeans.
             registerKernalMBean();
             registerLocalNodeMBean();
@@ -894,49 +876,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
             }, interval, interval);
         }
 
-        if (!isDaemon()) {
-            licTimer = new Timer("ignite-license-checker");
-
-            // Setup periodic license check.
-            licTimer.scheduleAtFixedRate(new GridTimerTask() {
-                @Override public void safeRun() throws InterruptedException {
-                    try {
-                        ctx.license().checkLicense();
-                    }
-                    // This exception only happens when license processor was 
unable
-                    // to resolve license violation on its own and this grid 
instance
-                    // now needs to be shutdown.
-                    //
-                    // Note that in most production configurations the license 
will
-                    // have certain grace period and license processor will 
attempt
-                    // to reload the license during the grace period.
-                    //
-                    // This exception thrown here means that grace period, if 
any,
-                    // has expired and license violation is still unresolved.
-                    catch (IgniteProductLicenseException ignored) {
-                        U.error(log, "License violation is unresolved. Ignite 
node will shutdown in " +
-                            (SHUTDOWN_DELAY / 1000) + " sec.");
-                        U.error(log, "  ^-- Contact your support for immediate 
assistance (!)");
-
-                        // Allow interruption to break from here since
-                        // node is stopping anyways.
-                        Thread.sleep(SHUTDOWN_DELAY);
-
-                        G.stop(gridName, true);
-                    }
-                    // Safety net.
-                    catch (Throwable e) {
-                        U.error(log, "Unable to check the license due to 
system error.", e);
-                        U.error(log, "Grid instance will be stopped...");
-
-                        // Stop the grid if we get unknown license-related 
error.
-                        // Should never happen. Practically an assertion...
-                        G.stop(gridName, true);
-                    }
-                }
-            }, PERIODIC_LIC_CHECK_DELAY, PERIODIC_LIC_CHECK_DELAY);
-        }
-
         long metricsLogFreq = cfg.getMetricsLogFrequency();
 
         if (metricsLogFreq > 0) {
@@ -1033,7 +972,8 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
         ctx.performance().logSuggestions(log, gridName);
 
         ackBenchmarks();
-        ackVisor();
+
+        U.quietAndInfo(log, "To start Console Management & Monitoring run 
ignitevisorcmd.{sh|bat}");
 
         ackStart(rtBean);
 
@@ -1050,13 +990,11 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
             String nid = localNode().id().toString().toUpperCase();
             String nid8 = U.id8(localNode().id()).toUpperCase();
 
-            IgniteProductLicense lic = ctx.license().license();
-
             String body =
                 "Ignite node started with the following parameters:" + NL +
                 NL +
                 "----" + NL +
-                "Ignite ver. " + COMPOUND_VER + '#' + BUILD_TSTAMP_STR + 
"-sha1:" + REV_HASH + NL +
+                "Ignite ver. " + VER_STR + '#' + BUILD_TSTAMP_STR + "-sha1:" + 
REV_HASH_STR + NL +
                 "Grid name: " + gridName + NL +
                 "Node ID: " + nid + NL +
                 "Node order: " + localNode().order() + NL +
@@ -1069,15 +1007,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
                 "JVM name: " + U.jvmName() + NL +
                 "JVM vendor: " + U.jvmVendor() + NL +
                 "JVM version: " + U.jvmVersion() + NL +
-                "VM name: " + rtBean.getName() + NL;
-
-            if (lic != null) {
-                body +=
-                    "License ID: " + lic.id().toString().toUpperCase() + NL +
-                    "Licensed to: " + lic.userOrganization() + NL;
-            }
-
-            body +=
+                "VM name: " + rtBean.getName() + NL +
                 "----" + NL +
                 NL +
                 "NOTE:" + NL +
@@ -1265,7 +1195,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
 
         // Stick in some system level attributes
         add(attrs, ATTR_JIT_NAME, U.getCompilerMx() == null ? "" : 
U.getCompilerMx().getName());
-        add(attrs, ATTR_BUILD_VER, COMPOUND_VER);
+        add(attrs, ATTR_BUILD_VER, VER_STR);
         add(attrs, ATTR_BUILD_DATE, build);
         add(attrs, ATTR_COMPATIBLE_VERS, (Serializable)compatibleVersions());
         add(attrs, ATTR_MARSHALLER, cfg.getMarshaller().getClass().getName());
@@ -1508,7 +1438,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
         // Set all node attributes into discovery manager,
         // so they can be distributed to all nodes.
         if (mgr instanceof GridDiscoveryManager)
-            ((GridDiscoveryManager)mgr).setNodeAttributes(attrs, 
ctx.product().version());
+            ((GridDiscoveryManager)mgr).setNodeAttributes(attrs, 
IgniteProduct.VER);
 
         // Add manager to registry before it starts to avoid
         // cases when manager is started but registry does not
@@ -1623,18 +1553,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
     }
 
     /**
-     * Acks Visor instructions.
-     */
-    private void ackVisor() {
-        assert log != null;
-
-        if (isDaemon())
-            return;
-
-        ctx.product().ackVisor(log);
-    }
-
-    /**
      * Acks benchmarking instructions.
      */
     private void ackBenchmarks() {
@@ -1651,7 +1569,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
         String fileName = log.fileName();
 
         if (System.getProperty(IGNITE_NO_ASCII) == null) {
-            String ver = "ver. " + ACK_VER;
+            String ver = "ver. " + ACK_VER_STR;
 
             // Big thanks to: http://patorjk.com/software/taag
             // Font name "Small Slant"
@@ -1663,7 +1581,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
                     "/___/\\___/_/|_/___/ /_/ /___/  ",
                     " ",
                     ver,
-                    COPYRIGHT,
+                    IgniteProduct.COPYRIGHT,
                     "",
                     "Quiet mode.");
 
@@ -1683,7 +1601,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
                     ">>> /___/\\___/_/|_/___/ /_/ /___/   " + NL +
                     ">>> " + NL +
                     ">>> " + ver + NL +
-                    ">>> " + COPYRIGHT + NL
+                    ">>> " + IgniteProduct.COPYRIGHT + NL
                 );
             }
         }
@@ -1704,7 +1622,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
         if (log.isInfoEnabled()) {
             log.info("");
 
-            String ack = "Ignite ver. " + COMPOUND_VER + '#' + 
BUILD_TSTAMP_STR + "-sha1:" + REV_HASH;
+            String ack = "Ignite ver. " + VER_STR + '#' + BUILD_TSTAMP_STR + 
"-sha1:" + REV_HASH_STR;
 
             String dash = U.dash(ack.length());
 
@@ -1883,10 +1801,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
             if (starveTimer != null)
                 starveTimer.cancel();
 
-            // Cancel license timer.
-            if (licTimer != null)
-                licTimer.cancel();
-
             // Cancel metrics log timer.
             if (metricsLogTimer != null)
                 metricsLogTimer.cancel();
@@ -1970,7 +1884,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
 
             if (log.isInfoEnabled())
                 if (!errOnStop) {
-                    String ack = "Ignite ver. " + COMPOUND_VER + '#' + 
BUILD_TSTAMP_STR + "-sha1:" + REV_HASH +
+                    String ack = "Ignite ver. " + VER_STR + '#' + 
BUILD_TSTAMP_STR + "-sha1:" + REV_HASH_STR +
                         " stopped OK";
 
                     String dash = U.dash(ack.length());
@@ -1985,7 +1899,7 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
                         NL);
                 }
                 else {
-                    String ack = "Ignite ver. " + COMPOUND_VER + '#' + 
BUILD_TSTAMP_STR + "-sha1:" + REV_HASH +
+                    String ack = "Ignite ver. " + VER_STR + '#' + 
BUILD_TSTAMP_STR + "-sha1:" + REV_HASH_STR +
                         " stopped with ERRORS";
 
                     String dash = U.dash(ack.length());
@@ -2007,27 +1921,17 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
             if (isSmtpEnabled() && isAdminEmailsSet() && 
cfg.isLifeCycleEmailNotification()) {
                 String errOk = errOnStop ? "with ERRORS" : "OK";
 
-                String headline = "Ignite ver. " + COMPOUND_VER + '#' + 
BUILD_TSTAMP_STR +
+                String headline = "Ignite ver. " + VER_STR + '#' + 
BUILD_TSTAMP_STR +
                     " stopped " + errOk + ":";
                 String subj = "Ignite node stopped " + errOk + ": " + nid8;
 
-                IgniteProductLicense lic = ctx.license() != null ? 
ctx.license().license() : null;
-
                 String body =
                     headline + NL + NL +
                     "----" + NL +
-                    "Ignite ver. " + COMPOUND_VER + '#' + BUILD_TSTAMP_STR + 
"-sha1:" + REV_HASH + NL +
+                    "Ignite ver. " + VER_STR + '#' + BUILD_TSTAMP_STR + 
"-sha1:" + REV_HASH_STR + NL +
                     "Grid name: " + gridName + NL +
                     "Node ID: " + nid + NL +
-                    "Node uptime: " + X.timeSpan2HMSM(U.currentTimeMillis() - 
startTime) + NL;
-
-                if (lic != null) {
-                    body +=
-                        "License ID: " + lic.id().toString().toUpperCase() + 
NL +
-                        "Licensed to: " + lic.userOrganization() + NL;
-                }
-
-                body +=
+                    "Node uptime: " + X.timeSpan2HMSM(U.currentTimeMillis() - 
startTime) + NL +
                     "----" + NL +
                     NL +
                     "NOTE:" + NL +
@@ -2885,12 +2789,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
         guard();
 
         try {
-            if (!dbUsageRegistered) {
-                GridLicenseUseRegistry.onUsage(DATA_GRID, getClass());
-
-                dbUsageRegistered = true;
-            }
-
             return ctx.cache().transactions();
         }
         finally {
@@ -2903,12 +2801,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
         guard();
 
         try {
-            if (!dbUsageRegistered) {
-                GridLicenseUseRegistry.onUsage(DATA_GRID, getClass());
-
-                dbUsageRegistered = true;
-            }
-
             return ctx.cache().publicCache(name);
         }
         finally {
@@ -2921,12 +2813,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
         guard();
 
         try {
-            if (!dbUsageRegistered) {
-                GridLicenseUseRegistry.onUsage(DATA_GRID, getClass());
-
-                dbUsageRegistered = true;
-            }
-
             return ctx.cache().publicJCache(name);
         }
         finally {
@@ -2939,12 +2825,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
         guard();
 
         try {
-            if (!dbUsageRegistered) {
-                GridLicenseUseRegistry.onUsage(DATA_GRID, getClass());
-
-                dbUsageRegistered = true;
-            }
-
             return ctx.cache().publicCaches();
         }
         finally {
@@ -3006,12 +2886,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
         guard();
 
         try {
-            if (!dbUsageRegistered) {
-                GridLicenseUseRegistry.onUsage(DATA_GRID, getClass());
-
-                dbUsageRegistered = true;
-            }
-
             return ctx.<K, V>dataLoad().dataLoader(cacheName);
         }
         finally {
@@ -3176,6 +3050,11 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
     }
 
     /** {@inheritDoc} */
+    @Override public IgniteProductVersion version() {
+        return IgniteProduct.VER;
+    }
+
+    /** {@inheritDoc} */
     @Override public IgniteScheduler scheduler() {
         return scheduler;
     }
@@ -3186,11 +3065,6 @@ public class IgniteKernal extends ClusterGroupAdapter 
implements IgniteEx, Ignit
     }
 
     /** {@inheritDoc} */
-    @Override public long licenseGracePeriodLeft() {
-        return ctx.license().gracePeriodLeft();
-    }
-
-    /** {@inheritDoc} */
     @Override public void close() throws IgniteException {
         Ignition.stop(gridName, true);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridRouterCommandLineStartup.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridRouterCommandLineStartup.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridRouterCommandLineStartup.java
index 946896c..09f62ef 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridRouterCommandLineStartup.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridRouterCommandLineStartup.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.client.router.impl;
 import org.apache.ignite.*;
 import org.apache.ignite.internal.client.router.*;
 import org.apache.ignite.internal.processors.spring.*;
+import org.apache.ignite.internal.product.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.lang.*;
@@ -29,7 +30,7 @@ import java.net.*;
 import java.util.*;
 import java.util.logging.*;
 
-import static org.apache.ignite.internal.GridProductImpl.*;
+import static org.apache.ignite.internal.product.IgniteProduct.*;
 import static org.apache.ignite.internal.IgniteComponentType.*;
 
 /**
@@ -103,8 +104,8 @@ public class GridRouterCommandLineStartup {
             "/___/\\___/_/|_/___/ /_/ /___/  ",
             " ",
             "Ignite Router Command Line Loader",
-            "ver. " + ACK_VER,
-            COPYRIGHT,
+            "ver. " + ACK_VER_STR,
+            IgniteProduct.COPYRIGHT,
             " "
         );
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java
index 01f3a80..6b3f819 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java
@@ -41,7 +41,6 @@ import java.util.concurrent.*;
 
 import static org.apache.ignite.cache.CacheMemoryMode.*;
 import static org.apache.ignite.events.EventType.*;
-import static 
org.apache.ignite.internal.processors.license.GridLicenseSubsystem.*;
 
 /**
  * Handles all swap operations.
@@ -108,8 +107,6 @@ public class GridCacheSwapManager<K, V> extends 
GridCacheManagerAdapter<K, V> {
      */
     private void initOffHeap() {
         // Register big data usage.
-        GridLicenseUseRegistry.onUsage(DATA_GRID, GridOffHeapMapFactory.class);
-
         long max = cctx.config().getOffHeapMaxMemory();
 
         long init = max > 0 ? max / 1024 : 8L * 1024L * 1024L;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcValidationTask.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcValidationTask.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcValidationTask.java
index ce25f00..1751930 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcValidationTask.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcValidationTask.java
@@ -20,7 +20,6 @@ package 
org.apache.ignite.internal.processors.cache.query.jdbc;
 import org.apache.ignite.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.compute.*;
-import org.apache.ignite.internal.processors.license.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.resources.*;
@@ -28,8 +27,6 @@ import org.jetbrains.annotations.*;
 
 import java.util.*;
 
-import static 
org.apache.ignite.internal.processors.license.GridLicenseSubsystem.*;
-
 /**
  * Task to validate connection. Checks that cache with provided name exists in 
grid.
  */
@@ -41,8 +38,6 @@ public class GridCacheQueryJdbcValidationTask extends 
ComputeTaskSplitAdapter<St
     @Override protected Collection<? extends ComputeJob> split(int gridSize,
         @Nullable final String cacheName) {
         // Register big data usage.
-        GridLicenseUseRegistry.onUsage(DATA_GRID, getClass());
-
         return F.asSet(new ComputeJobAdapter() {
             @IgniteInstanceResource
             private Ignite ignite;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/GridGgfsIpcHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/GridGgfsIpcHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/GridGgfsIpcHandler.java
index 5658e5f..697f152 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/GridGgfsIpcHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/GridGgfsIpcHandler.java
@@ -22,7 +22,6 @@ import org.apache.ignite.ignitefs.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.fs.common.*;
 import org.apache.ignite.internal.processors.closure.*;
-import org.apache.ignite.internal.processors.license.*;
 import org.apache.ignite.internal.util.future.*;
 import org.apache.ignite.internal.util.lang.*;
 import org.apache.ignite.internal.util.typedef.*;
@@ -34,8 +33,6 @@ import java.io.*;
 import java.util.*;
 import java.util.concurrent.atomic.*;
 
-import static 
org.apache.ignite.internal.processors.license.GridLicenseSubsystem.*;
-
 /**
  * GGFS IPC handler.
  */
@@ -62,19 +59,14 @@ class GridGgfsIpcHandler implements GridGgfsServerHandler {
     /** Stopping flag. */
     private volatile boolean stopping;
 
-    /** Management connection. */
-    private final boolean mgmt;
-
     /**
      * Constructs GGFS IPC handler.
      *
      * @param ggfsCtx Context.
-     * @param mgmt Management connection flag.
      */
-    GridGgfsIpcHandler(GridGgfsContext ggfsCtx, boolean mgmt) {
+    GridGgfsIpcHandler(GridGgfsContext ggfsCtx) {
         assert ggfsCtx != null;
 
-        this.mgmt = mgmt;
         ctx = ggfsCtx.kernalContext();
         ggfs = ggfsCtx.ggfs();
 
@@ -109,9 +101,6 @@ class GridGgfsIpcHandler implements GridGgfsServerHandler {
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<GridGgfsMessage> handleAsync(final 
GridGgfsClientSession ses,
         final GridGgfsMessage msg, DataInput in) {
-        if (!mgmt)
-            GridLicenseUseRegistry.onUsage(HADOOP, getClass());
-
         try {
             // Even if will be closed right after this call, response write 
error will be ignored.
             if (stopping)

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/GridGgfsServer.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/GridGgfsServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/GridGgfsServer.java
index a784ffb..15806fc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/GridGgfsServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/GridGgfsServer.java
@@ -128,7 +128,7 @@ public class GridGgfsServer {
         if (srvEndpoint.getPort() >= 0)
             
ggfsCtx.kernalContext().ports().registerPort(srvEndpoint.getPort(), TCP, 
srvEndpoint.getClass());
 
-        hnd = new GridGgfsIpcHandler(ggfsCtx, mgmt);
+        hnd = new GridGgfsIpcHandler(ggfsCtx);
 
         // Start client accept worker.
         acceptWorker = new AcceptWorker();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/IgniteFsProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/IgniteFsProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/IgniteFsProcessor.java
index aee707c..619d739 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/IgniteFsProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/fs/IgniteFsProcessor.java
@@ -27,7 +27,6 @@ import org.apache.ignite.ignitefs.*;
 import org.apache.ignite.ignitefs.mapreduce.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.processors.cache.*;
-import org.apache.ignite.internal.processors.license.*;
 import org.apache.ignite.internal.util.ipc.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
@@ -43,7 +42,6 @@ import static org.apache.ignite.cache.CacheMemoryMode.*;
 import static org.apache.ignite.cache.CacheMode.*;
 import static org.apache.ignite.ignitefs.IgniteFsMode.*;
 import static org.apache.ignite.internal.IgniteNodeAttributes.*;
-import static 
org.apache.ignite.internal.processors.license.GridLicenseSubsystem.*;
 
 /**
  * Fully operational Ignite file system processor.
@@ -79,9 +77,6 @@ public class IgniteFsProcessor extends 
IgniteFsProcessorAdapter {
 
         assert cfgs != null && cfgs.length > 0;
 
-        // Register HDFS edition usage with license manager.
-        GridLicenseUseRegistry.onUsage(HADOOP, getClass());
-
         validateLocalGgfsConfigurations(cfgs);
 
         // Start GGFS instances.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseProcessor.java
index 4af94d5..f74aca4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseProcessor.java
@@ -36,26 +36,6 @@ public interface GridLicenseProcessor extends GridProcessor {
     public void updateLicense(String licTxt) throws 
IgniteProductLicenseException;
 
     /**
-     * Acks the license to the log.
-     */
-    public void ackLicense();
-
-    /**
-     * This method is called periodically by the Ignite to check the license 
conformance.
-     *
-     * @throws 
org.apache.ignite.internal.product.IgniteProductLicenseException Thrown in case 
of any license violation.
-     */
-    public void checkLicense() throws IgniteProductLicenseException;
-
-    /**
-     * Checks if subsystem is enabled.
-     *
-     * @param ed Subsystem to check.
-     * @return {@code True} if enabled.
-     */
-    public boolean enabled(GridLicenseSubsystem ed);
-
-    /**
      * Gets license descriptor.
      *
      * @return License descriptor or {@code null} for open-source edition.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseSubsystem.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseSubsystem.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseSubsystem.java
deleted file mode 100644
index 0251b50..0000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseSubsystem.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.license;
-
-import org.jetbrains.annotations.*;
-
-/**
- * Different Ignite subsystems.
- */
-public enum GridLicenseSubsystem {
-    /** In-Memory HPC. */
-    HPC,
-
-    /** In-Memory Data Grid. */
-    DATA_GRID,
-
-    /** In-Memory Streaming. */
-    STREAMING,
-
-    /** In-Memory Accelerator For Hadoop. */
-    HADOOP,
-
-    /** In-Memory Accelerator For MongoDB. */
-    MONGO;
-
-    /** Enumerated values. */
-    private static final GridLicenseSubsystem[] VALS = values();
-
-    /**
-     * Efficiently gets enumerated value from its ordinal.
-     *
-     * @param ord Ordinal value.
-     * @return Enumerated value or {@code null} if ordinal out of range.
-     */
-    @Nullable public static GridLicenseSubsystem fromOrdinal(int ord) {
-        return ord >= 0 && ord < VALS.length ? VALS[ord] : null;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseUseRegistry.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseUseRegistry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseUseRegistry.java
deleted file mode 100644
index 0401278..0000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/license/GridLicenseUseRegistry.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.license;
-
-import org.apache.ignite.internal.util.*;
-import org.jdk8.backport.*;
-
-import java.util.*;
-import java.util.concurrent.*;
-
-/**
- * Usage registry.
- */
-public class GridLicenseUseRegistry {
-    /** Usage map. */
-    private static final ConcurrentMap<GridLicenseSubsystem, 
Collection<Class<?>>> useMap =
-        new ConcurrentHashMap8<>();
-
-    /**
-     * Ensure singleton.
-     */
-    private GridLicenseUseRegistry() {
-        // No-op.
-    }
-
-    /**
-     * Callback for whenever component gets used.
-     *
-     * @param ed Subsystem.
-     * @param cls Component.
-     */
-    public static void onUsage(GridLicenseSubsystem ed, Class<?> cls) {
-        Collection<Class<?>> c = useMap.get(ed);
-
-        if (c == null) {
-            Collection<Class<?>> old = useMap.putIfAbsent(ed, c = new 
GridConcurrentHashSet<>());
-
-            if (old != null)
-                c = old;
-        }
-
-        c.add(cls);
-    }
-
-    /**
-     * Gets used subsystems for given subsystem.
-     *
-     * @param ed Subsystem.
-     * @return Component.
-     */
-    public static Collection<Class<?>> usedClasses(GridLicenseSubsystem ed) {
-        Collection<Class<?>> c = useMap.get(ed);
-
-        return c == null ? Collections.<Class<?>>emptySet() : c;
-    }
-
-    /**
-     * Checks if subsystem is used.
-     *
-     * @param ed Subsystem to check.
-     * @return {@code True} if used.
-     */
-    public static boolean used(GridLicenseSubsystem ed) {
-        return !usedClasses(ed).isEmpty();
-    }
-
-    /**
-     * Clears usages.
-     *
-     * FOR TESTING PURPOSES ONLY!
-     */
-    public static void clear() {
-        useMap.clear();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/license/os/GridOsLicenseProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/license/os/GridOsLicenseProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/license/os/GridOsLicenseProcessor.java
index fade64c..9d58e8a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/license/os/GridOsLicenseProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/license/os/GridOsLicenseProcessor.java
@@ -40,21 +40,6 @@ public class GridOsLicenseProcessor extends 
GridProcessorAdapter implements Grid
     }
 
     /** {@inheritDoc} */
-    @Override public void ackLicense() {
-        // No-op.
-    }
-
-    /** {@inheritDoc} */
-    @Override public void checkLicense() throws IgniteProductLicenseException {
-        // No-op.
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean enabled(GridLicenseSubsystem ed) {
-        return true;
-    }
-
-    /** {@inheritDoc} */
     @Nullable @Override public IgniteProductLicense license() {
         return null;
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
index 34034cf..816d3b6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
@@ -23,7 +23,6 @@ import org.apache.ignite.cluster.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.processors.cache.*;
 import org.apache.ignite.internal.processors.cache.transactions.*;
-import org.apache.ignite.internal.processors.license.*;
 import org.apache.ignite.internal.processors.rest.*;
 import org.apache.ignite.internal.processors.rest.handlers.*;
 import org.apache.ignite.internal.processors.rest.request.*;
@@ -43,7 +42,6 @@ import java.util.concurrent.*;
 
 import static java.util.concurrent.TimeUnit.*;
 import static org.apache.ignite.internal.GridClosureCallMode.*;
-import static 
org.apache.ignite.internal.processors.license.GridLicenseSubsystem.*;
 import static org.apache.ignite.internal.processors.rest.GridRestCommand.*;
 import static 
org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.*;
 import static org.apache.ignite.transactions.IgniteTxConcurrency.*;
@@ -131,8 +129,6 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
 
         assert SUPPORTED_COMMANDS.contains(req.command());
 
-        GridLicenseUseRegistry.onUsage(DATA_GRID, getClass());
-
         if (log.isDebugEnabled())
             log.debug("Handling cache REST request: " + req);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/version/GridVersionCommandHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/version/GridVersionCommandHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/version/GridVersionCommandHandler.java
index 77e9288..cbed107 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/version/GridVersionCommandHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/version/GridVersionCommandHandler.java
@@ -26,7 +26,7 @@ import org.apache.ignite.internal.util.typedef.internal.*;
 
 import java.util.*;
 
-import static org.apache.ignite.internal.GridProductImpl.*;
+import static org.apache.ignite.internal.product.IgniteProduct.*;
 import static org.apache.ignite.internal.processors.rest.GridRestCommand.*;
 
 /**
@@ -54,6 +54,6 @@ public class GridVersionCommandHandler extends 
GridRestCommandHandlerAdapter {
 
         assert SUPPORTED_COMMANDS.contains(req.command());
 
-        return new GridFinishedFuture<>(ctx, new 
GridRestResponse(COMPOUND_VER));
+        return new GridFinishedFuture<>(ctx, new GridRestResponse(VER_STR));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/processors/streamer/GridStreamProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/streamer/GridStreamProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/streamer/GridStreamProcessor.java
index 50961da..030a3ea 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/streamer/GridStreamProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/streamer/GridStreamProcessor.java
@@ -21,7 +21,6 @@ import org.apache.ignite.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.processors.*;
-import org.apache.ignite.internal.processors.license.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.streamer.*;
@@ -34,7 +33,6 @@ import java.util.*;
 
 import static org.apache.ignite.IgniteSystemProperties.*;
 import static org.apache.ignite.internal.IgniteNodeAttributes.*;
-import static 
org.apache.ignite.internal.processors.license.GridLicenseSubsystem.*;
 
 /**
  *
@@ -244,9 +242,6 @@ public class GridStreamProcessor extends 
GridProcessorAdapter {
         }
 
         for (StreamerConfiguration c : cfg) {
-            // Register streaming usage with license manager.
-            GridLicenseUseRegistry.onUsage(STREAMING, getClass());
-
             IgniteStreamerImpl s = new IgniteStreamerImpl(ctx, c);
 
             s.start();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/product/IgniteProduct.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/product/IgniteProduct.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/product/IgniteProduct.java
index cb3674f..11a9c6a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/product/IgniteProduct.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/product/IgniteProduct.java
@@ -17,10 +17,13 @@
 
 package org.apache.ignite.internal.product;
 
-import org.apache.ignite.*;
+import org.apache.ignite.internal.*;
 import org.apache.ignite.lang.*;
 import org.jetbrains.annotations.*;
 
+import java.text.*;
+import java.util.*;
+
 /**
  * Provides information about current release. Note that enterprise users are 
also
  * able to renew license. Instance of {@code GridProduct} is obtained from 
grid as follows:
@@ -28,13 +31,56 @@ import org.jetbrains.annotations.*;
  * GridProduct p = Ignition.ignite().product();
  * </pre>
  */
-public interface IgniteProduct {
+public abstract class IgniteProduct {
+    /** Ignite version in String form. */
+    public static final String VER_STR;
+
+    /** Ignite version. */
+    public static final IgniteProductVersion VER;
+
+    /** Formatted build date. */
+    public static final String BUILD_TSTAMP_STR;
+
+    /** Build timestamp in seconds. */
+    public static final long BUILD_TSTAMP;
+
+    /** Revision hash. */
+    public static final String REV_HASH_STR;
+
+    /** Release date. */
+    public static final String RELEASE_DATE_STR;
+
+    /** Compound version. */
+    public static final String ACK_VER_STR;
+
+    /** Copyright blurb. */
+    public static final String COPYRIGHT = "2015 Copyright(C) Apache Software 
Foundation";
+
+    /**
+     *
+     */
+    static {
+        VER_STR = GridProperties.get("ignite.version");
+
+        BUILD_TSTAMP = Long.valueOf(GridProperties.get("ignite.build"));
+        BUILD_TSTAMP_STR = new SimpleDateFormat("yyyyMMdd").format(new 
Date(BUILD_TSTAMP * 1000));
+
+        REV_HASH_STR = GridProperties.get("ignite.revision");
+        RELEASE_DATE_STR = GridProperties.get("ignite.rel.date");
+
+        String rev = REV_HASH_STR.length() > 8 ? REV_HASH_STR.substring(0, 8) 
: REV_HASH_STR;
+
+        ACK_VER_STR = VER_STR + '#' + BUILD_TSTAMP_STR + "-sha1:" + rev;
+
+        VER = IgniteProductVersion.fromString(VER_STR + '-' + BUILD_TSTAMP + 
'-' + REV_HASH_STR);
+    }
+
     /**
      * Gets license descriptor for enterprise edition or {@code null} for open 
source edition.
      *
      * @return License descriptor.
      */
-    @Nullable public IgniteProductLicense license();
+    @Nullable public abstract IgniteProductLicense license();
 
     /**
      * Updates to a new license in enterprise edition. This method is no-op in 
open source edition.
@@ -42,21 +88,12 @@ public interface IgniteProduct {
      * @param lic The content of the license.
      * @throws IgniteProductLicenseException If license could not be updated.
      */
-    public void updateLicense(String lic) throws IgniteProductLicenseException;
+    public abstract void updateLicense(String lic) throws 
IgniteProductLicenseException;
 
     /**
-     * Gets product version for this release.
-     *
-     * @return Product version for this release.
+     * @return Grace period left.
      */
-    public IgniteProductVersion version();
-
-    /**
-     * Copyright statement for Ignite code.
-     *
-     * @return Legal copyright statement for Ignite code.
-     */
-    public String copyright();
+    public abstract long gracePeriodLeft();
 
     /**
      * Gets latest version available for download or
@@ -64,12 +101,5 @@ public interface IgniteProduct {
      *
      * @return Latest version string or {@code null} if information is not 
available.
      */
-    @Nullable public String latestVersion();
-
-    /**
-     * Acks Visor instructions.
-     *
-     * @param log Logger.
-     */
-    public void ackVisor(IgniteLogger log);
+    @Nullable public abstract String latestVersion();
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryNativeLoader.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryNativeLoader.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryNativeLoader.java
index cb52912..3b18125 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryNativeLoader.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryNativeLoader.java
@@ -18,7 +18,7 @@
 package org.apache.ignite.internal.util.ipc.shmem;
 
 import org.apache.ignite.*;
-import org.apache.ignite.internal.*;
+import org.apache.ignite.internal.product.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 
 import java.io.*;
@@ -42,7 +42,7 @@ public class IpcSharedMemoryNativeLoader {
     private static final File LOCK_FILE = new 
File(System.getProperty("java.io.tmpdir"), "igniteshmem.lock");
 
     /** Library name. */
-    static final String LIB_NAME = LIB_NAME_BASE + "-" + GridProductImpl.VER;
+    static final String LIB_NAME = LIB_NAME_BASE + "-" + IgniteProduct.VER_STR;
 
     /**
      * @return Operating system name to resolve path to library.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorLatestVersionTask.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorLatestVersionTask.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorLatestVersionTask.java
index 88fa825..7e835b5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorLatestVersionTask.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorLatestVersionTask.java
@@ -50,8 +50,10 @@ public class VisorLatestVersionTask extends 
VisorOneNodeTask<Void, String> {
         }
 
         /** {@inheritDoc} */
+        // TODO: IGNITE-191: Move to ENT visor.
         @Override protected String run(Void arg) {
-            return g.product().latestVersion();
+            //return g.product().latestVersion();
+            return null;
         }
 
         /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/optimized-classnames.properties
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/optimized-classnames.properties
 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/optimized-classnames.properties
index 90bb56f..b1ee08a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/optimized-classnames.properties
+++ 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/optimized-classnames.properties
@@ -952,7 +952,6 @@ org.apache.ignite.internal.processors.job.GridJobProcessor$6
 org.apache.ignite.internal.processors.job.GridJobProcessor$7
 org.apache.ignite.internal.processors.job.GridJobWorker$3
 
org.apache.ignite.internal.processors.jobmetrics.GridJobMetricsProcessor$SnapshotReducer
-org.apache.ignite.internal.processors.license.GridLicenseSubsystem
 org.apache.ignite.internal.processors.query.GridQueryIndexType
 org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$DBTypeEnum
 org.apache.ignite.internal.processors.query.h2.sql.GridSqlFunctionType

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineStartup.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineStartup.java
 
b/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineStartup.java
index c7b092e..29b162b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineStartup.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineStartup.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.startup.cmdline;
 
 import org.apache.ignite.*;
+import org.apache.ignite.internal.product.*;
 import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.lang.*;
 import org.apache.ignite.internal.util.typedef.*;
@@ -37,7 +38,7 @@ import java.util.concurrent.*;
 
 import static org.apache.ignite.IgniteState.*;
 import static org.apache.ignite.IgniteSystemProperties.*;
-import static org.apache.ignite.internal.GridProductImpl.*;
+import static org.apache.ignite.internal.product.IgniteProduct.*;
 
 /**
  * This class defines command-line Ignite startup. This startup can be used to 
start Ignite
@@ -84,7 +85,7 @@ public final class CommandLineStartup {
 
         // Mac OS specific customizations: app icon and about dialog.
         try {
-            releaseDate = new SimpleDateFormat("ddMMyyyy", 
Locale.US).parse(RELEASE_DATE);
+            releaseDate = new SimpleDateFormat("ddMMyyyy", 
Locale.US).parse(RELEASE_DATE_STR);
 
             Class<?> appCls = Class.forName("com.apple.eawt.Application");
 
@@ -110,8 +111,8 @@ public final class CommandLineStartup {
                 new Class<?>[] {aboutHndCls},
                 new InvocationHandler() {
                     @Override public Object invoke(Object proxy, Method mtd, 
Object[] args) throws Throwable {
-                        AboutDialog.centerShow("Ignite Node", 
bannerUrl.toExternalForm(), VER,
-                            releaseDate, COPYRIGHT);
+                        AboutDialog.centerShow("Ignite Node", 
bannerUrl.toExternalForm(), VER_STR,
+                            releaseDate, IgniteProduct.COPYRIGHT);
 
                         return null;
                     }
@@ -247,8 +248,8 @@ public final class CommandLineStartup {
      */
     public static void main(String[] args) {
         if (!QUITE) {
-            X.println("Ignite Command Line Startup, ver. " + ACK_VER);
-            X.println(COPYRIGHT);
+            X.println("Ignite Command Line Startup, ver. " + ACK_VER_STR);
+            X.println(IgniteProduct.COPYRIGHT);
             X.println();
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/test/java/org/apache/ignite/internal/GridVersionSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/GridVersionSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/GridVersionSelfTest.java
index 3b8f205..25de0cf 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/GridVersionSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/GridVersionSelfTest.java
@@ -31,39 +31,40 @@ public class GridVersionSelfTest extends 
GridCommonAbstractTest {
     /**
      * @throws Exception If failed.
      */
-    public void testVersions() throws Exception {
-        String propVal = System.getProperty(IGNITE_UPDATE_NOTIFIER);
-
-        System.setProperty(IGNITE_UPDATE_NOTIFIER, "true");
-
-        try {
-            Ignite ignite = startGrid();
-
-            IgniteProductVersion currVer = ignite.product().version();
-
-            String newVer = null;
-
-            for (int i = 0; i < 30; i++) {
-                newVer = ignite.product().latestVersion();
-
-                if (newVer != null)
-                    break;
-
-                U.sleep(100);
-            }
-
-            info("Versions [cur=" + currVer + ", latest=" + newVer + ']');
-
-            assertNotNull(newVer);
-            assertNotSame(currVer.toString(), newVer);
-        }
-        finally {
-            stopGrid();
-
-            if (propVal != null)
-                System.setProperty(IGNITE_UPDATE_NOTIFIER, propVal);
-            else
-                System.clearProperty(IGNITE_UPDATE_NOTIFIER);
-        }
+    // TODO: IGNITE-191: Move to ENT.
+    public void _testVersions() throws Exception {
+//        String propVal = System.getProperty(IGNITE_UPDATE_NOTIFIER);
+//
+//        System.setProperty(IGNITE_UPDATE_NOTIFIER, "true");
+//
+//        try {
+//            Ignite ignite = startGrid();
+//
+//            IgniteProductVersion currVer = ignite.product().version();
+//
+//            String newVer = null;
+//
+//            for (int i = 0; i < 30; i++) {
+//                newVer = ignite.product().latestVersion();
+//
+//                if (newVer != null)
+//                    break;
+//
+//                U.sleep(100);
+//            }
+//
+//            info("Versions [cur=" + currVer + ", latest=" + newVer + ']');
+//
+//            assertNotNull(newVer);
+//            assertNotSame(currVer.toString(), newVer);
+//        }
+//        finally {
+//            stopGrid();
+//
+//            if (propVal != null)
+//                System.setProperty(IGNITE_UPDATE_NOTIFIER, propVal);
+//            else
+//                System.clearProperty(IGNITE_UPDATE_NOTIFIER);
+//        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/test/java/org/apache/ignite/internal/product/GridProductVersionSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/product/GridProductVersionSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/product/GridProductVersionSelfTest.java
index 3134175..c1f5109 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/product/GridProductVersionSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/product/GridProductVersionSelfTest.java
@@ -20,7 +20,7 @@ package org.apache.ignite.internal.product;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.testframework.junits.common.*;
 
-import static org.apache.ignite.internal.GridProductImpl.*;
+import static org.apache.ignite.internal.product.IgniteProduct.*;
 import static org.junit.Assert.*;
 
 /**
@@ -104,6 +104,6 @@ public class GridProductVersionSelfTest extends 
GridCommonAbstractTest {
         assertArrayEquals(new byte[]{24, -27, -89, -20, -98, 50, 2, 18, 106, 
105, -68, 35, 26, 107, -106, 91, -63, -41, 61, -18},
             ver.revisionHash());
 
-        IgniteProductVersion.fromString(VER + '-' + BUILD_TSTAMP + '-' + 
REV_HASH);
+        IgniteProductVersion.fromString(VER_STR + '-' + BUILD_TSTAMP + '-' + 
REV_HASH_STR);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerAbstractTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerAbstractTest.java
 
b/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerAbstractTest.java
index 7db64cc..7174fd9 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerAbstractTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerAbstractTest.java
@@ -858,25 +858,26 @@ public abstract class GridMarshallerAbstractTest extends 
GridCommonAbstractTest
     /**
      * @throws Exception If failed.
      */
-    public void testProduct() throws Exception {
-        IgniteProduct product = grid().product();
-
-        GridMarshallerTestBean inBean = newTestBean(product);
-
-        byte[] buf = marshal(inBean);
-
-        GridMarshallerTestBean outBean = unmarshal(buf);
-
-        assert inBean.getObjectField() != null;
-        assert outBean.getObjectField() != null;
-
-        assert 
inBean.getObjectField().getClass().equals(GridProductImpl.class);
-        assert 
outBean.getObjectField().getClass().equals(GridProductImpl.class);
-
-        assert inBean != outBean;
-        assert inBean.equals(outBean);
-
-        outBean.checkNullResources();
+    // TOGO: IGNITE-191: Move to ENT.
+    public void _testProduct() throws Exception {
+//        IgniteProduct product = grid().product();
+//
+//        GridMarshallerTestBean inBean = newTestBean(product);
+//
+//        byte[] buf = marshal(inBean);
+//
+//        GridMarshallerTestBean outBean = unmarshal(buf);
+//
+//        assert inBean.getObjectField() != null;
+//        assert outBean.getObjectField() != null;
+//
+//        assert 
inBean.getObjectField().getClass().equals(GridProductImpl.class);
+//        assert 
outBean.getObjectField().getClass().equals(GridProductImpl.class);
+//
+//        assert inBean != outBean;
+//        assert inBean.equals(outBean);
+//
+//        outBean.checkNullResources();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index 776540c..cce0cdb 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -428,9 +428,6 @@ public abstract class GridAbstractTest extends TestCase {
         // Clear log throttle.
         LT.clear();
 
-        // Clear license registry.
-        GridLicenseUseRegistry.clear();
-
         TestCounters cntrs = getTestCounters();
 
         if (isDebug())

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
index 2192da9..d4b31d4 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
@@ -22,6 +22,7 @@ import org.apache.ignite.cache.*;
 import org.apache.ignite.cache.affinity.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.configuration.*;
+import org.apache.ignite.lang.*;
 import org.apache.ignite.marshaller.Marshaller;
 import org.apache.ignite.internal.product.*;
 import org.apache.ignite.plugin.*;
@@ -157,6 +158,11 @@ public class IgniteMock implements Ignite {
     }
 
     /** {@inheritDoc} */
+    @Override public IgniteProductVersion version() {
+        return null;
+    }
+
+    /** {@inheritDoc} */
     @Override public IgniteScheduler scheduler() {
         return null;
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/GridHadoopSetup.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/GridHadoopSetup.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/GridHadoopSetup.java
index cc018f3..36028bf 100644
--- 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/GridHadoopSetup.java
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/GridHadoopSetup.java
@@ -26,7 +26,7 @@ import java.nio.file.*;
 import java.text.*;
 import java.util.*;
 
-import static org.apache.ignite.internal.GridProductImpl.*;
+import static org.apache.ignite.internal.product.IgniteProduct.*;
 
 /**
  * Setup tool to configure Hadoop client.
@@ -56,7 +56,7 @@ public class GridHadoopSetup {
             "                for Apache Hadoop        ",
             "  ");
 
-        println("Version " + ACK_VER);
+        println("Version " + ACK_VER_STR);
 
         configureHadoop();
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/scalar/src/main/scala/org/apache/ignite/scalar/scalar.scala
----------------------------------------------------------------------
diff --git 
a/modules/scalar/src/main/scala/org/apache/ignite/scalar/scalar.scala 
b/modules/scalar/src/main/scala/org/apache/ignite/scalar/scalar.scala
index 8ab733f..b457484 100644
--- a/modules/scalar/src/main/scala/org/apache/ignite/scalar/scalar.scala
+++ b/modules/scalar/src/main/scala/org/apache/ignite/scalar/scalar.scala
@@ -22,6 +22,7 @@ import org.apache.ignite.cache.query.{CacheQuerySqlField, 
CacheQueryTextField}
 import org.apache.ignite.cluster.ClusterNode
 import org.apache.ignite.configuration.IgniteConfiguration
 import org.apache.ignite.internal.GridProductImpl
+import org.apache.ignite.internal.product.IgniteProduct
 import org.apache.ignite.{Ignite, IgniteDataLoader, IgniteState, Ignition}
 import org.jetbrains.annotations.Nullable
 
@@ -128,7 +129,7 @@ import scala.annotation.meta.field
  */
 object scalar extends ScalarConversions {
     /** Visor copyright blurb. */
-    private val COPYRIGHT = GridProductImpl.COPYRIGHT
+    private val COPYRIGHT = IgniteProduct.COPYRIGHT
 
     /** Type alias for `CacheQuerySqlField`. */
     type ScalarCacheQuerySqlField = CacheQuerySqlField @field

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java
----------------------------------------------------------------------
diff --git 
a/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java 
b/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java
index 031d73e..ebd333e 100644
--- a/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java
+++ b/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java
@@ -21,6 +21,7 @@ import org.apache.ignite.cache.*;
 import org.apache.ignite.cache.affinity.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.configuration.*;
+import org.apache.ignite.lang.*;
 import org.apache.ignite.plugin.*;
 import org.apache.ignite.internal.product.*;
 import org.apache.ignite.plugin.security.*;
@@ -137,6 +138,13 @@ public class IgniteSpringBean implements Ignite, 
DisposableBean, InitializingBea
     }
 
     /** {@inheritDoc} */
+    @Override public IgniteProductVersion version() {
+        assert g != null;
+
+        return g.version();
+    }
+
+    /** {@inheritDoc} */
     @Override public Collection<GridCache<?, ?>> caches() {
         assert g != null;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/VisorConsole.scala
----------------------------------------------------------------------
diff --git 
a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/VisorConsole.scala
 
b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/VisorConsole.scala
index 714b92b..01ab834 100644
--- 
a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/VisorConsole.scala
+++ 
b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/VisorConsole.scala
@@ -18,6 +18,7 @@
 package org.apache.ignite.visor.commands
 
 import org.apache.ignite.internal.GridProductImpl
+import org.apache.ignite.internal.product.IgniteProduct
 import org.apache.ignite.internal.util.IgniteUtils
 import org.apache.ignite.internal.util.typedef.internal.U
 import org.apache.ignite.internal.util.scala.impl
@@ -59,13 +60,13 @@ import org.apache.ignite.visor.commands.vvm.VisorVvmCommand
  */
 object VisorConsole extends App {
     /** Version number. */
-    private final val VISOR_VER = GridProductImpl.VER
+    private final val VISOR_VER = IgniteProduct.VER_STR
 
     /** Release date. */
-    private final val VISOR_RELEASE_DATE = GridProductImpl.RELEASE_DATE
+    private final val VISOR_RELEASE_DATE = IgniteProduct.RELEASE_DATE_STR
 
     /** Copyright. */
-    private final val VISOR_COPYRIGHT = GridProductImpl.COPYRIGHT
+    private final val VISOR_COPYRIGHT = IgniteProduct.COPYRIGHT
 
     /** Release date (another format). */
     private final val releaseDate = new 
SimpleDateFormat("ddMMyyyy").parse(VISOR_RELEASE_DATE)

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommand.scala
----------------------------------------------------------------------
diff --git 
a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommand.scala
 
b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommand.scala
index 769defd..2a5511f 100644
--- 
a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommand.scala
+++ 
b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/alert/VisorAlertCommand.scala
@@ -476,7 +476,7 @@ class VisorAlertCommand {
         assert(n != null)
 
         val subj = "Visor alert triggered: '" + a.spec + '\''
-        val headline = "Ignite ver. " + grid.product().version()
+        val headline = "Ignite ver. " + grid.version()
 
         val stat = stats(a.id)
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0c899a88/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala
----------------------------------------------------------------------
diff --git 
a/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala 
b/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala
index b8c51a1..53fd668 100644
--- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala
+++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala
@@ -32,6 +32,7 @@ import org.apache.ignite.internal.IgniteComponentType._
 import org.apache.ignite.internal.IgniteNodeAttributes._
 import org.apache.ignite.internal.cluster.ClusterGroupEmptyCheckedException
 import org.apache.ignite.internal.processors.spring.IgniteSpringProcessor
+import org.apache.ignite.internal.product.IgniteProduct
 import org.apache.ignite.internal.util.lang.{GridFunc => F}
 import org.apache.ignite.internal.util.typedef._
 import org.apache.ignite.internal.util.{GridConfigurationFinder, IgniteUtils}
@@ -158,7 +159,7 @@ object visor extends VisorTag {
     private var nodeStopLsnr: IgnitionListener = null
 
     /** Visor copyright blurb. */
-    private final val COPYRIGHT = GridProductImpl.COPYRIGHT
+    private final val COPYRIGHT = IgniteProduct.COPYRIGHT
 
     /** */
     @volatile private var isCon: Boolean = false

Reply via email to