void FillSerializers
     (XmlNode node, SerializationConfig serializationConfig)
 {
     foreach (XmlNode child in node.ChildNodes)
     {
         string name  = CleanNodeName(child);
         string value = GetTextContent(child);
         if ("serializer".Equals(name))
         {
             var serializerConfig = new SerializerConfig();
             serializerConfig.SetClassName(value);
             string typeClassName = GetAttribute(child, "type-class");
             serializerConfig.SetTypeClassName(typeClassName);
             serializationConfig.AddSerializerConfig(serializerConfig);
         }
         else
         {
             if ("global-serializer".Equals(name))
             {
                 var globalSerializerConfig = new GlobalSerializerConfig();
                 globalSerializerConfig.SetClassName(value);
                 serializationConfig.SetGlobalSerializerConfig(globalSerializerConfig);
             }
         }
     }
 }
 public void TestAddDataSerializableFactoryClassWithDuplicateId()
 {
     var config = new SerializationConfig();
     config.AddDataSerializableFactory(1, new MyDataSerializableFactory());
     config.AddDataSerializableFactoryClass(1, typeof(MyDataSerializableFactory));
     var service = new SerializationServiceBuilder().SetConfig(config).Build();
 }
        public void TestAddDataSerializableFactoryClass()
        {
            var service1 = new SerializationServiceBuilder().Build();
            var data = service1.ToData(new DataSerializableBasicType());

            var config = new SerializationConfig();
            config.AddDataSerializableFactoryClass(1, typeof(MyDataSerializableFactory));
            var service = new SerializationServiceBuilder().SetConfig(config).Build();

            var obj = service.ToObject<object>(data);

            Assert.IsInstanceOf<DataSerializableBasicType>(obj);
        }
        protected internal virtual SerializationConfig ParseSerialization(XmlNode node)
        {
            var serializationConfig = new SerializationConfig();

            foreach (XmlNode child in node.ChildNodes)
            {
                string name = CleanNodeName(child);
                switch (name)
                {
                case "portable-version":
                    serializationConfig.SetPortableVersion(GetIntegerValue(name, GetTextContent(child), 0));
                    break;

                case "check-class-def-errors":
                    serializationConfig.SetCheckClassDefErrors(CheckTrue(GetTextContent(child)));
                    break;

                case "use-native-byte-order":
                    serializationConfig.SetUseNativeByteOrder(CheckTrue(GetTextContent(child)));
                    break;

                case "byte-order":
                    string    bigEndian = GetTextContent(child);
                    ByteOrder byteOrder = ByteOrder.GetByteOrder(bigEndian);
                    serializationConfig.SetByteOrder(byteOrder);
                    break;

                case "enable-compression":
                    serializationConfig.SetEnableCompression(CheckTrue(GetTextContent(child)));
                    break;

                case "enable-shared-object":
                    serializationConfig.SetEnableSharedObject(CheckTrue(GetTextContent(child)));
                    break;

                case "data-serializable-factories":
                    FillDataSerializableFactories(child, serializationConfig);
                    break;

                case "portable-factories":
                    FillPortableFactories(child, serializationConfig);
                    break;

                case "serializers":
                    FillSerializers(child, serializationConfig);
                    break;
                }
            }
            return(serializationConfig);
        }
 public ISerializationServiceBuilder SetConfig(SerializationConfig config)
 {
     _config = config;
     if (_portableVersion < 0)
     {
         _portableVersion = config.GetPortableVersion();
     }
     _checkClassDefErrors = config.IsCheckClassDefErrors();
     _useNativeByteOrder = config.IsUseNativeByteOrder();
     _byteOrder = config.GetByteOrder();
     _enableCompression = config.IsEnableCompression();
     _enableSharedObject = config.IsEnableSharedObject();
     return this;
 }
Example #6
0
 private static void FillPortableFactories(this SerializationConfig serializationConfig, XmlNode node)
 {
     foreach (XmlNode child in node.ChildNodes)
     {
         var name = CleanNodeName(child);
         if ("portable-factory".Equals(name))
         {
             var value         = GetTextContent(child);
             var factoryIdNode = child?.Attributes?.GetNamedItem("factory-id");
             if (factoryIdNode == null)
             {
                 throw new ArgumentException("'factory-id' attribute of 'portable-factory' is required!");
             }
             var factoryId = Convert.ToInt32(GetTextContent(factoryIdNode));
             serializationConfig.PortableFactoryClasses.Add(factoryId, value);
         }
     }
 }
 protected internal virtual void FillPortableFactories(XmlNode node, SerializationConfig serializationConfig)
 {
     foreach (XmlNode child in node.ChildNodes)
     {
         string name = CleanNodeName(child);
         if ("portable-factory".Equals(name))
         {
             string value = GetTextContent(child);
             XmlNode factoryIdNode = child.Attributes.GetNamedItem("factory-id");
             if (factoryIdNode == null)
             {
                 throw new ArgumentException("'factory-id' attribute of 'portable-factory' is required!");
             }
             int factoryId = Convert.ToInt32(GetTextContent(factoryIdNode));
             serializationConfig.AddPortableFactoryClass(factoryId, value);
         }
     }
 }
Example #8
0
 protected internal void FillDataSerializableFactories(XmlNode node, SerializationConfig serializationConfig)
 {
     foreach (XmlNode child in node.ChildNodes)
     {
         var name = CleanNodeName(child);
         if ("data-serializable-factory".Equals(name))
         {
             var value         = GetTextContent(child);
             var factoryIdNode = child.Attributes.GetNamedItem("factory-id");
             if (factoryIdNode == null)
             {
                 throw new ArgumentException(
                           "'factory-id' attribute of 'data-serializable-factory' is required!");
             }
             var factoryId = Convert.ToInt32(GetTextContent(factoryIdNode));
             serializationConfig.AddDataSerializableFactoryClass(factoryId, value);
         }
     }
 }
 void FillPortableFactories
     (XmlNode node, SerializationConfig serializationConfig)
 {
     foreach (XmlNode child in node.ChildNodes)
     {
         string name = CleanNodeName(child);
         if ("portable-factory".Equals(name))
         {
             string  value         = GetTextContent(child);
             XmlNode factoryIdNode = child.Attributes.GetNamedItem("factory-id");
             if (factoryIdNode == null)
             {
                 throw new ArgumentException("'factory-id' attribute of 'portable-factory' is required!");
             }
             int factoryId = Convert.ToInt32(GetTextContent(factoryIdNode));
             serializationConfig.AddPortableFactoryClass(factoryId, value);
         }
     }
 }
Example #10
0
        private static void HandleSerialization(this SerializationConfig serializationConfig, XmlNode node)
        {
            foreach (XmlNode child in node.ChildNodes)
            {
                var name = CleanNodeName(child);
                switch (name)
                {
                case "portable-version":
                    serializationConfig.PortableVersion = GetIntegerValue(name, GetTextContent(child), 0);
                    break;

                case "check-class-def-errors":
                    serializationConfig.CheckClassDefErrors = CheckTrue(GetTextContent(child));
                    break;

                case "use-native-byte-order":
                    serializationConfig.UseNativeByteOrder = CheckTrue(GetTextContent(child));
                    break;

                case "byte-order":
                    var bigEndian = GetTextContent(child);
                    var byteOrder = ByteOrder.GetByteOrder(bigEndian);
                    serializationConfig.ByteOrder = byteOrder;
                    break;

                case "data-serializable-factories":
                    serializationConfig.FillDataSerializableFactories(child);
                    break;

                case "portable-factories":
                    serializationConfig.FillPortableFactories(child);
                    break;

                case "serializers":
                    serializationConfig.FillSerializers(child);
                    break;

                default:
                    throw new InvalidConfigurationException($"Not supported xml tag {name}");
                }
            }
        }
        public virtual void TestInputOutputWithPortableReader(ByteOrder byteOrder)
        {
            var portable = KitchenSinkPortable.Generate();

            var config = new SerializationConfig();
            config.AddPortableFactoryClass(KitchenSinkPortableFactory.FactoryId, typeof (KitchenSinkPortableFactory));

            var ss = new SerializationServiceBuilder().SetConfig(config).
                SetUseNativeByteOrder(false).SetByteOrder(byteOrder).Build();

            var data = ss.ToData(portable);
            var reader = ss.CreatePortableReader(data);

            var actual = new KitchenSinkPortable();
            actual.ReadPortable(reader);

            Assert.AreEqual(portable, actual);

            ss.Destroy();
        }
        public virtual void TestDataInputOutputWithPortable(ByteOrder byteOrder)
        {
            var portable = KitchenSinkPortable.Generate();

            var config = new SerializationConfig();
            config.AddPortableFactoryClass(KitchenSinkPortableFactory.FactoryId, typeof (KitchenSinkPortableFactory));

            var ss = new SerializationServiceBuilder().SetConfig(config).
                SetUseNativeByteOrder(false).SetByteOrder(byteOrder).Build();

            IObjectDataOutput output = ss.CreateObjectDataOutput(1024);
            output.WriteObject(portable);
            var data = output.ToByteArray();

            IObjectDataInput input = ss.CreateObjectDataInput(data);
            var readObject = input.ReadObject<IPortable>();

            Assert.AreEqual(portable, readObject);

            ss.Destroy();
        }
Example #13
0
 private static void FillSerializers(this SerializationConfig serializationConfig, XmlNode node)
 {
     foreach (XmlNode child in node.ChildNodes)
     {
         var name  = CleanNodeName(child);
         var value = GetTextContent(child);
         if ("serializer".Equals(name))
         {
             var serializerConfig = new SerializerConfig();
             serializerConfig.SetClassName(value);
             var typeClassName = GetAttribute(child, "type-class");
             serializerConfig.SetTypeClassName(typeClassName);
             serializationConfig.SerializerConfigs.Add(serializerConfig);
         }
         else
         {
             if ("global-serializer".Equals(name))
             {
                 serializationConfig.ConfigureGlobalSerializer(gs => { gs.TypeName = value; });
             }
         }
     }
 }
 protected internal virtual void FillSerializers(XmlNode node, SerializationConfig serializationConfig)
 {
     foreach (XmlNode child in node.ChildNodes)
     {
         string name = CleanNodeName(child);
         string value = GetTextContent(child);
         if ("serializer".Equals(name))
         {
             var serializerConfig = new SerializerConfig();
             serializerConfig.SetClassName(value);
             string typeClassName = GetAttribute(child, "type-class");
             serializerConfig.SetTypeClassName(typeClassName);
             serializationConfig.AddSerializerConfig(serializerConfig);
         }
         else
         {
             if ("global-serializer".Equals(name))
             {
                 var globalSerializerConfig = new GlobalSerializerConfig();
                 globalSerializerConfig.SetClassName(value);
                 serializationConfig.SetGlobalSerializerConfig(globalSerializerConfig);
             }
         }
     }
 }
        public void TestWriteObjectWithCustomSerializable()
        {
            var config = new SerializationConfig();
            var sc = new SerializerConfig()
                .SetImplementation(new CustomSerializer())
                .SetTypeClass(typeof (CustomSerializableType));
            config.AddSerializerConfig(sc);
            var serializationService =
                new SerializationServiceBuilder().SetPortableVersion(1)
                    .AddPortableFactory(TestSerializationConstants.PORTABLE_FACTORY_ID, new TestPortableFactory())
                    .SetConfig(config).Build();

            var foo = new CustomSerializableType {Value = "foo"};

            var objectCarryingPortable1 = new ObjectCarryingPortable(foo);
            var data = serializationService.ToData(objectCarryingPortable1);
            var objectCarryingPortable2 = serializationService.ToObject<ObjectCarryingPortable>(data);
            Assert.AreEqual(objectCarryingPortable1, objectCarryingPortable2);
        }
        public void TestClassDefinitionConfigWithErrors()
        {
            var serializationConfig = new SerializationConfig();
            serializationConfig.AddPortableFactory(TestSerializationConstants.PORTABLE_FACTORY_ID,
                new TestPortableFactory());
            serializationConfig.SetPortableVersion(1);
            serializationConfig.AddClassDefinition(
                new ClassDefinitionBuilder(TestSerializationConstants.PORTABLE_FACTORY_ID,
                    TestSerializationConstants.RAW_DATA_PORTABLE)
                    .AddLongField("l")
                    .AddCharArrayField("c")
                    .AddPortableField("p", CreateNamedPortableClassDefinition())
                    .Build());

            try
            {
                new SerializationServiceBuilder().SetConfig(serializationConfig).Build();
                Assert.Fail("Should throw HazelcastSerializationException!");
            }
            catch (HazelcastSerializationException)
            {
            }

            new SerializationServiceBuilder().SetConfig(serializationConfig).SetCheckClassDefErrors(false).Build();

            // -- OR --

            serializationConfig.SetCheckClassDefErrors(false);
            new SerializationServiceBuilder().SetConfig(serializationConfig).Build();
        }
        public void TestClassDefinitionConfig()
        {
            var serializationConfig = new SerializationConfig();
            serializationConfig.AddPortableFactory(TestSerializationConstants.PORTABLE_FACTORY_ID,
                new TestPortableFactory());
            serializationConfig.SetPortableVersion(1);
            serializationConfig
                .AddClassDefinition(
                    new ClassDefinitionBuilder(TestSerializationConstants.PORTABLE_FACTORY_ID,
                        TestSerializationConstants.RAW_DATA_PORTABLE)
                        .AddLongField("l")
                        .AddCharArrayField("c")
                        .AddPortableField("p", CreateNamedPortableClassDefinition())
                        .Build())
                .AddClassDefinition(
                    new ClassDefinitionBuilder(TestSerializationConstants.PORTABLE_FACTORY_ID,
                        TestSerializationConstants.NAMED_PORTABLE)
                        .AddUTFField("name").AddIntField("myint").Build());

            var serializationService = new SerializationServiceBuilder()
                .SetConfig(serializationConfig)
                .AddDataSerializableFactory(TestSerializationConstants.DATA_SERIALIZABLE_FACTORY_ID,
                    GetDataSerializableFactory())
                .Build();
            var p = new RawDataPortable(DateTime.Now.ToFileTime(), "test chars".ToCharArray(),
                new NamedPortable("named portable", 34567),
                9876, "Testing raw portable", new ByteArrayDataSerializable(Encoding.UTF8.GetBytes("test bytes")));

            var data = serializationService.ToData(p);
            Assert.AreEqual(p, serializationService.ToObject<RawDataPortable>(data));
        }
Example #18
0
        private void HandleSerialization(XmlNode node)
        {
            SerializationConfig serializationConfig = ParseSerialization(node);

            clientConfig.SetSerializationConfig(serializationConfig);
        }
        public void TestAddPortableFactoryWithDuplicateId()
        {
            var config = new SerializationConfig();
            config.AddPortableFactory(1, new KitchenSinkPortableFactory());

            var service = new SerializationServiceBuilder().AddPortableFactory(1,
            new KitchenSinkPortableFactory()).SetConfig(config).Build();
        }
Example #20
0
 public virtual ClientConfig SetSerializationConfig(SerializationConfig serializationConfig)
 {
     _serializationConfig = serializationConfig;
     return(this);
 }
 public void TestAddDataSerializableFactoryWithBadId()
 {
     var config = new SerializationConfig();
     config.AddDataSerializableFactory(-1, new MyDataSerializableFactory());
     var service = new SerializationServiceBuilder().SetConfig(config).Build();
 }
        private void AddConfigPortableFactories(IDictionary<int, IPortableFactory> portableFactories,
            SerializationConfig config)
        {
            foreach (var entry in config.GetPortableFactories())
            {
                int factoryId = entry.Key;
                IPortableFactory factory = entry.Value;
                if (factoryId <= 0)
                {
                    throw new ArgumentException("IPortableFactory factoryId must be positive! -> " + factory);
                }
                if (portableFactories.ContainsKey(factoryId))
                {
                    throw new ArgumentException("IPortableFactory with factoryId '" + factoryId +
                                                "' is already registered!");
                }
                portableFactories.Add(factoryId, factory);
            }
            foreach (var entry in config.GetPortableFactoryClasses())
            {
                int factoryId = entry.Key;
                string factoryClassName = entry.Value;
                if (factoryId <= 0)
                {
                    throw new ArgumentException("IPortableFactory factoryId must be positive! -> " + factoryClassName);
                }
                if (portableFactories.ContainsKey(factoryId))
                {
                    throw new ArgumentException("IPortableFactory with factoryId '" + factoryId +
                                                "' is already registered!");
                }

                var type = Type.GetType(factoryClassName);
                if (type == null)
                {
                    throw new HazelcastSerializationException("Unable to find type " + factoryClassName);
                }
                if (!typeof (IPortableFactory).IsAssignableFrom(type))
                {
                    throw new HazelcastSerializationException("Type " + type + " does not implement IPortableFactory");
                }
                var factory = Activator.CreateInstance(type) as IPortableFactory;
                portableFactories.Add(factoryId, factory);
            }

            foreach (IPortableFactory f in portableFactories.Values)
            {
                if (f is IHazelcastInstanceAware)
                {
                    ((IHazelcastInstanceAware)f).SetHazelcastInstance(_hazelcastInstance);
                }
            }
        }
        public void TestAddPortableFactoryClass()
        {
            var service1 = new SerializationServiceBuilder().Build();
            var data = service1.ToData(new KitchenSinkPortable());

            var config = new SerializationConfig();
            config.AddPortableFactoryClass(1, typeof(KitchenSinkPortableFactory));

            var service = new SerializationServiceBuilder().SetConfig(config).Build();

            var obj = service.ToObject<object>(data);
            Assert.IsInstanceOf<KitchenSinkPortable>(obj);
        }
        public void TestAddPortableFactoryClassWhichDoesNotImplementPortableFactory()
        {
            var config = new SerializationConfig();
            config.AddPortableFactoryClass(1, typeof(SerializableFactory));

            var service = new SerializationServiceBuilder().SetConfig(config).Build();
        }
 protected internal virtual SerializationConfig ParseSerialization(XmlNode node)
 {
     var serializationConfig = new SerializationConfig();
     foreach (XmlNode child in node.ChildNodes)
     {
         string name = CleanNodeName(child);
         switch (name)
         {
             case "portable-version":
                 serializationConfig.SetPortableVersion(GetIntegerValue(name, GetTextContent(child), 0));
                 break;
             case "check-class-def-errors":
                 serializationConfig.SetCheckClassDefErrors(CheckTrue(GetTextContent(child)));
                 break;
             case "use-native-byte-order":
                 serializationConfig.SetUseNativeByteOrder(CheckTrue(GetTextContent(child)));
                 break;
             case "byte-order":
                 string bigEndian = GetTextContent(child);
                 ByteOrder byteOrder = ByteOrder.GetByteOrder(bigEndian);
                 serializationConfig.SetByteOrder(byteOrder);
                 break;
             case "enable-compression":
                 serializationConfig.SetEnableCompression(CheckTrue(GetTextContent(child)));
                 break;
             case "enable-shared-object":
                 serializationConfig.SetEnableSharedObject(CheckTrue(GetTextContent(child)));
                 break;
             case "data-serializable-factories":
                 FillDataSerializableFactories(child, serializationConfig);
                 break;
             case "portable-factories":
                 FillPortableFactories(child, serializationConfig);
                 break;
             case "serializers":
                 FillSerializers(child, serializationConfig);
                 break;
         }
     }
     return serializationConfig;
 }
 private void AddConfigDataSerializableFactories(
     IDictionary<int, IDataSerializableFactory> dataSerializableFactories, SerializationConfig config)
 {
     foreach (var entry in config.GetDataSerializableFactories())
     {
         int factoryId = entry.Key;
         IDataSerializableFactory factory = entry.Value;
         if (factoryId <= 0)
         {
             throw new ArgumentException("IDataSerializableFactory factoryId must be positive! -> " + factory);
         }
         if (dataSerializableFactories.ContainsKey(factoryId))
         {
             throw new ArgumentException("IDataSerializableFactory with factoryId '" + factoryId +
                                         "' is already registered!");
         }
         dataSerializableFactories.Add(factoryId, factory);
     }
     foreach (var entry in config.GetDataSerializableFactoryClasses())
     {
         int factoryId = entry.Key;
         string factoryClassName = entry.Value;
         if (factoryId <= 0)
         {
             throw new ArgumentException("IDataSerializableFactory factoryId must be positive! -> " +
                                         factoryClassName);
         }
         if (dataSerializableFactories.ContainsKey(factoryId))
         {
             throw new ArgumentException("IDataSerializableFactory with factoryId '" + factoryId +
                                         "' is already registered!");
         }
         IDataSerializableFactory factory = null;
         try
         {
             Type type = Type.GetType(factoryClassName);
             if (type != null)
             {
                 factory = Activator.CreateInstance(type) as IDataSerializableFactory;
             }
         }
         catch (Exception e)
         {
             //ClassLoaderUtil.newInstance(cl, factoryClassName);
             throw new HazelcastSerializationException(e);
         }
         dataSerializableFactories.Add(factoryId, factory);
     }
     foreach (IDataSerializableFactory f in dataSerializableFactories.Values)
     {
         var aware = f as IHazelcastInstanceAware;
         if (aware != null)
         {
             aware.SetHazelcastInstance(_hazelcastInstance);
         }
     }
 }
 public void TestAddDataSerializableFactoryClassWithNoEmptyConstructor()
 {
     var config = new SerializationConfig();
     config.AddDataSerializableFactoryClass(1, typeof(SerializableFactory));
     var service = new SerializationServiceBuilder().SetConfig(config).Build();
 }
        public void TestAddPortableFactoryClassWithBadId()
        {
            var config = new SerializationConfig();
            config.AddPortableFactoryClass(-1, typeof(KitchenSinkPortableFactory));

            var service = new SerializationServiceBuilder().SetConfig(config).Build();
        }