summaryrefslogtreecommitdiff
path: root/js/src/Ice/ObjectFactoryManager.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/Ice/ObjectFactoryManager.js')
-rw-r--r--js/src/Ice/ObjectFactoryManager.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/js/src/Ice/ObjectFactoryManager.js b/js/src/Ice/ObjectFactoryManager.js
new file mode 100644
index 00000000000..bffaeaa3070
--- /dev/null
+++ b/js/src/Ice/ObjectFactoryManager.js
@@ -0,0 +1,76 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 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.
+//
+// **********************************************************************
+
+(function(global){
+ require("Ice/Class");
+ require("Ice/HashMap");
+ require("Ice/LocalException");
+
+ var Ice = global.Ice || {};
+
+ var HashMap = Ice.HashMap;
+ var AlreadyRegisteredException = Ice.AlreadyRegisteredException;
+ var NotRegisteredException = Ice.NotRegisteredException;
+
+ //
+ // Only for use by Instance
+ //
+ var ObjectFactoryManager = Ice.Class({
+ __init__: function()
+ {
+ this._factoryMap = new HashMap(); // Map<String, ObjectFactory>
+ },
+ add: function(factory, id)
+ {
+ var o, ex;
+ o = this._factoryMap.get(id);
+ if(o !== undefined)
+ {
+ ex = new AlreadyRegisteredException();
+ ex.id = id;
+ ex.kindOfObject = "object factory";
+ throw ex;
+ }
+ this._factoryMap.set(id, factory);
+ },
+ remove: function(id)
+ {
+ var factory, ex;
+ factory = this._factoryMap.get(id);
+ if(factory === undefined)
+ {
+ ex = new NotRegisteredException();
+ ex.id = id;
+ ex.kindOfObject = "object factory";
+ throw ex;
+ }
+ this._factoryMap.delete(id);
+ factory.destroy();
+ },
+ find: function(id)
+ {
+ return this._factoryMap.get(id);
+ },
+ destroy: function()
+ {
+ var oldMap = this._factoryMap,
+ e = oldMap.entries;
+ this._factoryMap = new HashMap(); // Map<String, ObjectFactory>
+
+ while(e !== null)
+ {
+ e.value.destroy();
+ e = e.next;
+ }
+ }
+ });
+
+ Ice.ObjectFactoryManager = ObjectFactoryManager;
+ global.Ice = Ice;
+}(typeof (global) === "undefined" ? window : global));