Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-471 8bdfdba20 -> 392285406


ignite-471: fixing id mapping


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

Branch: refs/heads/ignite-471
Commit: 392285406aa584f6fc95715497e434595cc447cb
Parents: 8bdfdba
Author: Denis Magda <dma...@gridgain.com>
Authored: Tue May 5 10:57:04 2015 +0300
Committer: Denis Magda <dma...@gridgain.com>
Committed: Tue May 5 10:57:04 2015 +0300

----------------------------------------------------------------------
 .../internal/MarshallerContextAdapter.java      | 31 +++++++++++++++++-
 .../ignite/marshaller/MarshallerContext.java    | 10 ++++++
 .../ignite/marshaller/MarshallerIdMapper.java   | 33 ++++++++++++++++++++
 .../optimized/OptimizedClassDescriptor.java     |  4 +--
 .../optimized/OptimizedMarshaller.java          |  4 +--
 .../optimized/OptimizedMarshallerIdMapper.java  | 33 --------------------
 .../optimized/OptimizedMarshallerUtils.java     |  6 ++--
 .../optimized/OptimizedObjectInputStream.java   |  4 +--
 .../optimized/OptimizedObjectOutputStream.java  |  4 +--
 .../cache/GridCacheEntryMemorySizeSelfTest.java |  4 +++
 10 files changed, 88 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39228540/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java
index eac9d9b..3d532e2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java
@@ -40,10 +40,20 @@ public abstract class MarshallerContextAdapter implements 
MarshallerContext {
     /** */
     private final ConcurrentMap<Integer, String> map = new 
ConcurrentHashMap8<>();
 
+    /** */
+    private volatile MarshallerIdMapper idMapper = new 
ClassNamesDefaultIdMapper();
+
     /**
      * Initializes context.
      */
     public MarshallerContextAdapter() {
+        initMapping();
+    }
+
+    /**
+     * Initializes mapping
+     */
+    private void initMapping() {
         try {
             ClassLoader ldr = U.gridClassLoader();
 
@@ -66,6 +76,7 @@ public abstract class MarshallerContextAdapter implements 
MarshallerContext {
     private void processResource(URL url) throws IOException {
         try (InputStream in = url.openStream()) {
             BufferedReader rdr = new BufferedReader(new InputStreamReader(in));
+            MarshallerIdMapper idMapper0 = idMapper;
 
             String line;
 
@@ -75,7 +86,7 @@ public abstract class MarshallerContextAdapter implements 
MarshallerContext {
 
                 String clsName = line.trim();
 
-                map.put(clsName.hashCode(), clsName);
+                map.put(idMapper0.typeId(clsName), clsName);
             }
         }
     }
@@ -113,6 +124,14 @@ public abstract class MarshallerContextAdapter implements 
MarshallerContext {
         return U.forName(clsName, ldr);
     }
 
+    /** {@inheritDoc} */
+    @Override public void setIdMapper(MarshallerIdMapper idMapper) {
+        this.idMapper = idMapper;
+
+        map.clear();
+        initMapping();
+    }
+
     /**
      * Registers class name.
      *
@@ -131,4 +150,14 @@ public abstract class MarshallerContextAdapter implements 
MarshallerContext {
      * @throws IgniteCheckedException In case of error.
      */
     protected abstract String className(int id) throws IgniteCheckedException;
+
+    /**
+     * Default ID mapper.
+     */
+    private class ClassNamesDefaultIdMapper implements MarshallerIdMapper {
+
+        @Override public int typeId(String clsName) {
+            return clsName.hashCode();
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39228540/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerContext.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerContext.java
 
b/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerContext.java
index f0e248a..6a35f50 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerContext.java
@@ -43,4 +43,14 @@ public interface MarshallerContext {
      * @throws IgniteCheckedException In case of any other error.
      */
     public Class getClass(int id, ClassLoader ldr) throws 
ClassNotFoundException, IgniteCheckedException;
+
+    /**
+     * Sets class names ID mapper.
+     *
+     * If the method is called after {@link #registerClass(int, Class)} or 
{@link #getClass(int, ClassLoader)} it will
+     * lead to unpredictable behavior.
+     *
+     * @param idMapper ID mapper.
+     */
+    public void setIdMapper(MarshallerIdMapper idMapper);
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39228540/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerIdMapper.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerIdMapper.java
 
b/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerIdMapper.java
new file mode 100644
index 0000000..f8d2acb
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerIdMapper.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.marshaller;
+
+/**
+ * ID mapper.
+ */
+public interface MarshallerIdMapper {
+    /**
+     * Gets type ID for provided class name.
+     * <p>
+     * If {@code 0} is returned, hash code of class name will be used.
+     *
+     * @param clsName Class name.
+     * @return Type ID.
+     */
+    public int typeId(String clsName);
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39228540/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
index 05ef534..59ebb44 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
@@ -48,7 +48,7 @@ class OptimizedClassDescriptor {
     private ConcurrentMap<Class, OptimizedClassDescriptor> clsMap;
 
     /** ID mapper. */
-    private final OptimizedMarshallerIdMapper mapper;
+    private final MarshallerIdMapper mapper;
 
     /** Class name. */
     private final String name;
@@ -122,7 +122,7 @@ class OptimizedClassDescriptor {
         int typeId,
         ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
         MarshallerContext ctx,
-        OptimizedMarshallerIdMapper mapper)
+        MarshallerIdMapper mapper)
         throws IOException {
         this.cls = cls;
         this.typeId = typeId;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39228540/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
index 914d78d..0b0baea 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
@@ -91,7 +91,7 @@ public class OptimizedMarshaller extends AbstractMarshaller {
     private int initBufSize = DFLT_INIT_BUF_SIZE;
 
     /** ID mapper. */
-    private OptimizedMarshallerIdMapper mapper;
+    private MarshallerIdMapper mapper;
 
     /** Class descriptors by class. */
     private final ConcurrentMap<Class, OptimizedClassDescriptor> clsMap = new 
ConcurrentHashMap8<>();
@@ -142,7 +142,7 @@ public class OptimizedMarshaller extends AbstractMarshaller 
{
      *
      * @param mapper ID mapper.
      */
-    public void setIdMapper(OptimizedMarshallerIdMapper mapper) {
+    public void setIdMapper(MarshallerIdMapper mapper) {
         this.mapper = mapper;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39228540/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerIdMapper.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerIdMapper.java
 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerIdMapper.java
deleted file mode 100644
index e4e2627..0000000
--- 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerIdMapper.java
+++ /dev/null
@@ -1,33 +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.marshaller.optimized;
-
-/**
- * ID mapper.
- */
-public interface OptimizedMarshallerIdMapper {
-    /**
-     * Gets type ID for provided class name.
-     * <p>
-     * If {@code 0} is returned, hash code of class name will be used.
-     *
-     * @param clsName Class name.
-     * @return Type ID.
-     */
-    public int typeId(String clsName);
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39228540/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
index fafdea1..5fb7269 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
@@ -178,7 +178,7 @@ class OptimizedMarshallerUtils {
         ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
         Class cls,
         MarshallerContext ctx,
-        OptimizedMarshallerIdMapper mapper)
+        MarshallerIdMapper mapper)
         throws IOException
     {
         OptimizedClassDescriptor desc = clsMap.get(cls);
@@ -213,7 +213,7 @@ class OptimizedMarshallerUtils {
      * @param mapper Mapper.
      * @return Type ID.
      */
-    private static int resolveTypeId(String clsName, 
OptimizedMarshallerIdMapper mapper) {
+    private static int resolveTypeId(String clsName, MarshallerIdMapper 
mapper) {
         int typeId;
 
         if (mapper != null) {
@@ -245,7 +245,7 @@ class OptimizedMarshallerUtils {
         int id,
         ClassLoader ldr,
         MarshallerContext ctx,
-        OptimizedMarshallerIdMapper mapper) throws IOException, 
ClassNotFoundException {
+        MarshallerIdMapper mapper) throws IOException, ClassNotFoundException {
         Class cls;
 
         try {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39228540/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
index 17082ae..ec84f44 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
@@ -55,7 +55,7 @@ class OptimizedObjectInputStream extends ObjectInputStream {
     private MarshallerContext ctx;
 
     /** */
-    private OptimizedMarshallerIdMapper mapper;
+    private MarshallerIdMapper mapper;
 
     /** */
     private ClassLoader clsLdr;
@@ -92,7 +92,7 @@ class OptimizedObjectInputStream extends ObjectInputStream {
     void context(
         ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
         MarshallerContext ctx,
-        OptimizedMarshallerIdMapper mapper,
+        MarshallerIdMapper mapper,
         ClassLoader clsLdr)
     {
         this.clsMap = clsMap;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39228540/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
index a74db43..cc02c62 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
@@ -59,7 +59,7 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
     private MarshallerContext ctx;
 
     /** */
-    private OptimizedMarshallerIdMapper mapper;
+    private MarshallerIdMapper mapper;
 
     /** */
     private boolean requireSer;
@@ -92,7 +92,7 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
      */
     void context(ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
         MarshallerContext ctx,
-        OptimizedMarshallerIdMapper mapper,
+        MarshallerIdMapper mapper,
         boolean requireSer) {
         this.clsMap = clsMap;
         this.ctx = ctx;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39228540/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
index bb4fc9e..3ab9d26 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
@@ -91,6 +91,10 @@ public class GridCacheEntryMemorySizeSelfTest extends 
GridCommonAbstractTest {
                 @Override public Class getClass(int id, ClassLoader ldr) {
                     throw new UnsupportedOperationException();
                 }
+
+                @Override public void setIdMapper(MarshallerIdMapper idMapper) 
{
+                    throw new UnsupportedOperationException();
+                }
             });
 
             KEY_SIZE = U.toArray(marsh.marshal(1)).length;

Reply via email to