diff options
author | Joe George <joe@zeroc.com> | 2015-12-08 11:33:42 -0500 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2015-12-08 16:09:24 -0500 |
commit | 6a43686ce26de5d2d5edf4a485ecff3a242c26b6 (patch) | |
tree | d31e4f16dc9ed6e28056a7224e045a4638955f5e /js/src | |
parent | C++11 mapping IceDiscovery plug-in (diff) | |
download | ice-6a43686ce26de5d2d5edf4a485ecff3a242c26b6.tar.bz2 ice-6a43686ce26de5d2d5edf4a485ecff3a242c26b6.tar.xz ice-6a43686ce26de5d2d5edf4a485ecff3a242c26b6.zip |
ICE-6908 - Add ValueFactory
ValueFactory is a replacement for ObjectFactory (which is still
available if needed). It is an interface with only one operation
and can has the "delegate" metadata.
Diffstat (limited to 'js/src')
-rw-r--r-- | js/src/Ice/BasicStream.js | 18 | ||||
-rw-r--r-- | js/src/Ice/Communicator.js | 10 | ||||
-rw-r--r-- | js/src/Ice/Ice.js | 1 | ||||
-rw-r--r-- | js/src/Ice/Instance.js | 6 | ||||
-rw-r--r-- | js/src/Ice/ValueFactory.js | 17 | ||||
-rw-r--r-- | js/src/Ice/ValueFactoryManager.js (renamed from js/src/Ice/ObjectFactoryManager.js) | 36 | ||||
-rw-r--r-- | js/src/Ice/sources.json | 3 |
7 files changed, 62 insertions, 29 deletions
diff --git a/js/src/Ice/BasicStream.js b/js/src/Ice/BasicStream.js index 548956fc158..43dbc355fd7 100644 --- a/js/src/Ice/BasicStream.js +++ b/js/src/Ice/BasicStream.js @@ -490,7 +490,7 @@ var EncapsDecoder10 = Class(EncapsDecoder, { // if(this._typeId == IceObject.ice_staticId()) { - throw new Ice.NoObjectFactoryException("", mostDerivedId); + throw new Ice.NoValueFactoryException("", mostDerivedId); } v = this.newInstance(this._typeId); @@ -508,7 +508,7 @@ var EncapsDecoder10 = Class(EncapsDecoder, { // if(!this._sliceObjects) { - throw new Ice.NoObjectFactoryException("no object factory found and object slicing is disabled", + throw new Ice.NoValueFactoryException("no value factory found and object slicing is disabled", this._typeId); } @@ -793,7 +793,7 @@ var EncapsDecoder11 = Class(EncapsDecoder, { { if(this._current.sliceType === SliceType.ObjectSlice) { - throw new Ice.NoObjectFactoryException("no object factory found and compact format prevents slicing " + + throw new Ice.NoValueFactoryException("no value factory found and compact format prevents slicing " + "(the sender should use the sliced format instead)", this._current.typeId); } @@ -936,7 +936,7 @@ var EncapsDecoder11 = Class(EncapsDecoder, { // if(!this._sliceObjects) { - throw new Ice.NoObjectFactoryException("no object factory found and object slicing is disabled", + throw new Ice.NoValueFactoryException("no value factory found and object slicing is disabled", this._current.typeId); } @@ -2761,7 +2761,7 @@ var BasicStream = Class({ } catch(ex) { - throw new Ice.NoObjectFactoryException("no object factory", id, ex); + throw new Ice.NoValueFactoryException("no value factory", id, ex); } return obj; @@ -2898,7 +2898,7 @@ var defineBuiltinHelper = function(write, read, sz, format, min, max) writeOpt: function(os, tag, v) { os.writeOptValue(tag, format, write, v); }, readOpt: function(is, tag) { return is.readOptValue(tag, format, read); }, }; - + if(min !== undefined && max !== undefined) { helper.validate = function(v) { @@ -2932,13 +2932,13 @@ var MAX_INT32_VALUE = 0x7FFFFFFF; var MIN_FLOAT32_VALUE = -3.4028234664e+38; var MAX_FLOAT32_VALUE = 3.4028234664e+38; -Ice.ByteHelper = defineBuiltinHelper(stream.writeByte, stream.readByte, 1, Ice.OptionalFormat.F1, +Ice.ByteHelper = defineBuiltinHelper(stream.writeByte, stream.readByte, 1, Ice.OptionalFormat.F1, MIN_UINT8_VALUE, MAX_UINT8_VALUE); Ice.ShortHelper = defineBuiltinHelper(stream.writeShort, stream.readShort, 2, Ice.OptionalFormat.F2, MIN_INT16_VALUE, MAX_INT16_VALUE); -Ice.IntHelper = defineBuiltinHelper(stream.writeInt, stream.readInt, 4, Ice.OptionalFormat.F4, +Ice.IntHelper = defineBuiltinHelper(stream.writeInt, stream.readInt, 4, Ice.OptionalFormat.F4, MIN_INT32_VALUE, MAX_INT32_VALUE); Ice.FloatHelper = defineBuiltinHelper(stream.writeFloat, stream.readFloat, 4, Ice.OptionalFormat.F4, @@ -2964,7 +2964,7 @@ Ice.LongHelper.validate = function(v) // // For a long to be valid both words must be within the range of UINT32 // - return v.low >= MIN_UINT32_VALUE && v.low <= MAX_UINT32_VALUE && + return v.low >= MIN_UINT32_VALUE && v.low <= MAX_UINT32_VALUE && v.high >= MIN_UINT32_VALUE && v.high <= MAX_UINT32_VALUE; }; diff --git a/js/src/Ice/Communicator.js b/js/src/Ice/Communicator.js index 7e2d1eee99c..b522a4c9f09 100644 --- a/js/src/Ice/Communicator.js +++ b/js/src/Ice/Communicator.js @@ -117,10 +117,18 @@ var Communicator = Ice.Class({ }, addObjectFactory: function(factory, id) { - this._instance.servantFactoryManager().add(factory, id); + this._instance.servantFactoryManager().addObjectFactory(factory, id); }, findObjectFactory: function(id) { + return this._instance.servantFactoryManager().findObjectFactory(id); + }, + addValueFactory: function(factory, id) + { + this._instance.servantFactoryManager().add(factory, id); + }, + findValueFactory: function(id) + { return this._instance.servantFactoryManager().find(id); }, getImplicitContext: function() diff --git a/js/src/Ice/Ice.js b/js/src/Ice/Ice.js index 31248e043eb..1ef8c2bd5cc 100644 --- a/js/src/Ice/Ice.js +++ b/js/src/Ice/Ice.js @@ -35,6 +35,7 @@ module.exports.Ice = __M.require(module, "../Ice/Router", "../Ice/Version", "../Ice/ObjectFactory", + "../Ice/ValueFactory", "../Ice/Buffer", "../Ice/ArrayUtil", "../Ice/UnknownSlicedObject", diff --git a/js/src/Ice/Instance.js b/js/src/Ice/Instance.js index 7a87146a74e..c8cd21abc2d 100644 --- a/js/src/Ice/Instance.js +++ b/js/src/Ice/Instance.js @@ -21,7 +21,7 @@ Ice.__M.require(module, "../Ice/LocatorManager", "../Ice/Logger", "../Ice/ObjectAdapterFactory", - "../Ice/ObjectFactoryManager", + "../Ice/ValueFactoryManager", "../Ice/OutgoingConnectionFactory", "../Ice/Promise", "../Ice/Properties", @@ -52,7 +52,7 @@ var ImplicitContextI = Ice.ImplicitContextI; var LocatorManager = Ice.LocatorManager; var Logger = Ice.Logger; var ObjectAdapterFactory = Ice.ObjectAdapterFactory; -var ObjectFactoryManager = Ice.ObjectFactoryManager; +var ValueFactoryManager = Ice.ValueFactoryManager; var OutgoingConnectionFactory = Ice.OutgoingConnectionFactory; var Promise = Ice.Promise; var Properties = Ice.Properties; @@ -381,7 +381,7 @@ var Instance = Ice.Class({ this._endpointFactoryManager.add(wssEndpointFactory); this._outgoingConnectionFactory = new OutgoingConnectionFactory(communicator, this); - this._servantFactoryManager = new ObjectFactoryManager(); + this._servantFactoryManager = new ValueFactoryManager(); this._objectAdapterFactory = new ObjectAdapterFactory(this, communicator); diff --git a/js/src/Ice/ValueFactory.js b/js/src/Ice/ValueFactory.js new file mode 100644 index 00000000000..ebea4cbfd40 --- /dev/null +++ b/js/src/Ice/ValueFactory.js @@ -0,0 +1,17 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +var Ice = require("../Ice/Class").Ice; +Ice.ValueFactory = Ice.Class({ + create: function(type) + { + throw new Error("not implemented"); + } +}); +module.exports.Ice = Ice; diff --git a/js/src/Ice/ObjectFactoryManager.js b/js/src/Ice/ValueFactoryManager.js index 0036e6b09ec..55efddf9fea 100644 --- a/js/src/Ice/ObjectFactoryManager.js +++ b/js/src/Ice/ValueFactoryManager.js @@ -9,7 +9,7 @@ var Ice = require("../Ice/ModuleRegistry").Ice; Ice.__M.require(module, ["../Ice/Class", "../Ice/HashMap", "../Ice/LocalException"]); - + var HashMap = Ice.HashMap; var AlreadyRegisteredException = Ice.AlreadyRegisteredException; var NotRegisteredException = Ice.NotRegisteredException; @@ -17,10 +17,11 @@ var NotRegisteredException = Ice.NotRegisteredException; // // Only for use by Instance // -var ObjectFactoryManager = Ice.Class({ +var ValueFactoryManager = Ice.Class({ __init__: function() { - this._factoryMap = new HashMap(); // Map<String, ObjectFactory> + this._factoryMap = new HashMap(); // Map<String, ValueFactory> + this._objectFactoryMap = new HashMap(); // Map<String, ObjectFactory> }, add: function(factory, id) { @@ -30,34 +31,39 @@ var ObjectFactoryManager = Ice.Class({ { ex = new AlreadyRegisteredException(); ex.id = id; - ex.kindOfObject = "object factory"; + ex.kindOfObject = "value factory"; throw ex; } this._factoryMap.set(id, factory); }, - remove: function(id) + addObjectFactory: function(factory, id) { - var factory, ex; - factory = this._factoryMap.get(id); - if(factory === undefined) + var o, ex; + o = this._factoryMap.get(id); + if(o !== undefined) { - ex = new NotRegisteredException(); + ex = new AlreadyRegisteredException(); ex.id = id; - ex.kindOfObject = "object factory"; + ex.kindOfObject = "value factory"; throw ex; } - this._factoryMap.delete(id); - factory.destroy(); + this._factoryMap.set(id, factory); + this._objectFactoryMap.set(id, factory); }, find: function(id) { return this._factoryMap.get(id); }, + findObjectFactory: function(id) + { + return this._objectFactoryMap.get(id); + }, destroy: function() { - var oldMap = this._factoryMap, + var oldMap = this._objectFactoryMap, e = oldMap.entries; - this._factoryMap = new HashMap(); // Map<String, ObjectFactory> + this._factoryMap = new HashMap(); // Map<String, ValueFactory> + this._objectFactoryMap = new HashMap(); // Map<String, ObjectFactory> while(e !== null) { @@ -67,5 +73,5 @@ var ObjectFactoryManager = Ice.Class({ } }); -Ice.ObjectFactoryManager = ObjectFactoryManager; +Ice.ValueFactoryManager = ValueFactoryManager; module.exports.Ice = Ice; diff --git a/js/src/Ice/sources.json b/js/src/Ice/sources.json index 99cf32a9021..cb3387ea16d 100644 --- a/js/src/Ice/sources.json +++ b/js/src/Ice/sources.json @@ -65,7 +65,6 @@ "ObjectAdapterFactory.js", "ObjectAdapterI.js", "ObjectFactory.js", - "ObjectFactoryManager.js", "ObjectPrx.js", "OpaqueEndpointI.js", "Operation.js", @@ -99,6 +98,8 @@ "TraceUtil.js", "UnknownSlicedObject.js", "UUID.js", + "ValueFactory.js", + "ValueFactoryManager.js", "WSEndpoint.js", "WSEndpointFactory.js"], |