Author: reebalazs
Date: Tue Dec 25 12:59:00 2007
New Revision: 50082

Modified:
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/   (props changed)
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/errors.js
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/eventreg.js
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/interfaces.js
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/kukit.js
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/oper.js
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/resourcedata.js
Log:
Make kukit run with the full binding cycle.

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/errors.js
==============================================================================
--- kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/errors.js     
(original)
+++ kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/errors.js     
Tue Dec 25 12:59:00 2007
@@ -183,12 +183,11 @@
 ;;; };
 
 
-;;; err.eventBindError = function(e, eventNames, eventNamespaces){
+;;; err.eventBindError = function(e, eventNames){
 ;;;    var kw = {};
 ;;;    kw.eventNames = eventNames;
-;;;    kw.eventNamespaces = eventNamespaces;
 ;;;    var message = 'When binding event name(s) [' + eventNames;
-;;;    message += '] in namespace [' + eventNamespaces + '].';
+;;;    message += '].';
 ;;;    return setErrorInfo(e, 'EventBindError', message, kw);
 ;;; };
 

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/eventreg.js
==============================================================================
--- kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/eventreg.js   
(original)
+++ kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/eventreg.js   
Tue Dec 25 12:59:00 2007
@@ -50,7 +50,7 @@
 
 _EventRegistry.prototype.register =
     function(namespace, eventName, binderClass, bindMethodName,
-            bindMethodName, defaultActionMethodName) {
+            defaultActionMethodName) {
         this.registerForAllEvents(namespace, eventName, binderClass, 
bindMethodName,
                 defaultActionMethodName, 'EachLegacy');
 };
@@ -86,7 +86,6 @@
     // with the specified iterator
     var binditerations = kukit.interfaces.global.get('binditerations', 
kukit.interfaces.BindIterationDescriptor);
     binditerations.getMethodDescriptor('').register({
-            namespace: namespace,
             eventNames: namespacedEventNames,
             iterName: iterName,
             binderClass: binderClass,
@@ -344,13 +343,12 @@
 
 /* (default) method call handling */
 
-var _EventBinder_callMethod = function(namespace, name, oper, methodName) {
+var _EventBinder_callMethod = function(name, oper, methodName) {
     // hidden method for calling just a method and checking that is exists.
     // (called from oper)
     var method = this[methodName];
     if (! method) {
 ;;;     kukit.E = 'Could not trigger event name [' + name;
-;;;     kukit.E += '] on namespace [' + namespace;
 ;;;     kukit.E += '], because the method [' + methodName + '] does not 
exist.';
         throw new Error(kukit.E);
     }
@@ -393,36 +391,31 @@
     this.info = {};
 };
 
+/* This is used to force creation of binder info and instance for
+ * a given kss selector on a node.
+ * The binder info is returned, it contains binding information
+ * and a reference link to the actual binder instance.
+ */
 er.BinderInfoRegistry.prototype.getOrCreateBinderInfo =
     function (kssSelector, node) {
     // We use the key as the selector's merge id.
     var key = kssSelector.getMergeId();
-    // Get or create the event.
+    // Get or create the binder and the binder info.
     var binderInfo = this.info[key];
     if (typeof(binderInfo) == 'undefined') {
-        // Create a new event.
-;;;     var msg = 'Instantiating event id [' + id + '], className [';
-;;;     msg += className + '], namespace [' + namespace + '].';
-;;;     kukit.logDebug(msg);
-
         //
         // The creation of binder instances happens from here.
         //
+        //kukit.logWarning(kssSelector.getBindIteration());
         var binderClass = kssSelector.getBindIteration().binderClass;
 
+;;;     var msg = 'Instantiating event binder with id [' + kssSelector.getId() 
+ '], className [';
+;;;     msg += binderClass.prototype.__className__ + '].';
+;;;     kukit.logDebug(msg);
+
         // Create the binder instance and the binder info
         var binder = new binderClass();
         binderInfo = this.info[key] = new _BinderInfo(binder);
-
-        // store the bound rules
-        //binder.__bound_rules__ = [];
-    } else if (binderInfo.getBinder().__binderClassName__ != 
-        className) {
-        // just paranoia
-;;;     kukit.E = 'Conflicting class for event id [' + id + '], [';
-;;;     kukit.E += binderInfo.getBinder().__binderClassName__;
-;;;     kukit.E += '] != [' + className + '].';
-        throw new Error(kukit.E);
     }
     return binderInfo;
 };
@@ -437,11 +430,15 @@
     return binderInfo;
 };
 
+/* Not used from kukit actually */
+/*
 er.BinderInfoRegistry.prototype.getSingletonBinderInfoByName =
     function (namespace, name) {
     //Get className
-    // XXX XXX XXX
-    var className = kukit.eventsGlobalRegistry.get(namespace, name).className;
+    if (namespace) {
+        name = namespace + '-' + name;
+    }
+    kukit.eventsGlobalRegistry.get(namespace, name).className;
     // Get an event.
     var id = er.makeId(namespace, className);
     var binderInfo = this.info[id];
@@ -452,6 +449,7 @@
     }
     return binderInfo;
 };
+*/
 
 er.BinderInfoRegistry.prototype.startBindingPhase = function () {
     // At the end of the binding phase, we want to process our events. This
@@ -590,24 +588,33 @@
 // XXX This will need refactoring.
 /// We would only want to lookup from our registry and not the other way 
around.
 //
-// own registry means eventsets need to be registered in the instance. (klass)
-//
-//
 _OperRegistry.prototype.processBindingEvents = 
     function (binder) {
-    var eventRegistry = kukit.eventsGlobalRegistry;
-    for (var i=0; i < eventRegistry.eventSets.length; i++) {
-        var eventSet = eventRegistry.eventSets[i];
-        // Only process binding events (and ignore non-binding ones)
-        if (eventSet.bindMethodName) {
-            if (binder.__eventNamespace__ == eventSet.namespace) {
-                // Process the binding event set.
-                // This will call the actual bindmethods
-                // according to the specified iterator.
-                var iterator = er.getBindIterator(eventSet.iterName);
-                iterator.call(this, eventSet, binder);
-            }
-        }
+    var interfaces = kukit.interfaces.global;
+    // Let's see all our events in a cycle.
+    processed = {};
+    for (var eventName in interfaces.binditerations) {
+        // We only iterate an event once and we greedily iterate
+        // all events which are in the same eventset - so we may
+        // get here by this event name already processed.
+        if (processed[eventName]) {
+            continue;
+        }
+        // One iteration consists of more events. Process all these.
+        var iteration = interfaces.binditerations[eventName];
+        // Let's exit if this element does not exist
+        // (the interface registry finalizes invalid methods to undefined)
+        if (! iteration) {
+            continue;
+        }
+        var eventSet = iteration.eventNames;
+        // Make sure we exclude this element,
+        for (var i=0; i<eventSet.length; i++) {
+            processed[eventSet[i]] = true;
+        }
+        // Finally we call the iterator which will do the binding
+        var iterator = er.getBindIterator(iteration.iterName);
+        iterator.call(this, iteration, binder);
     }
 };
 
@@ -680,15 +687,13 @@
 };
 
 _OperRegistry.prototype.callBindMethod = 
-    function (eventSet, binder, p1, p2, p3, p4, p5, p6) {
-    var method = binder[eventSet.bindMethodName];
+    function (iteration, binder, p1, p2, p3, p4, p5, p6) {
+    var method = binder[iteration.bindMethodName];
     // Protect the binding for better logging
 ;;; try {
         method.call(binder, p1, p2, p3, p4, p5, p6);
 ;;; } catch(e) {
-;;;     var names = eventSet.names;
-;;;     var namespace = eventSet.namespace;
-;;;     kukit.E = kukit.err.eventBindError(e, names, namespace);
+;;;     kukit.E = kukit.err.eventBindError(e, iteration.eventNames);
 ;;;     throw new Error(kukit.E);
 ;;; }
 };
@@ -697,15 +702,15 @@
 // Eventname and funcToBind are passed too.
 // this is the legacy ([EachLegacy]) way
 _OperRegistry.prototype._iterateEachLegacy =
-    function (eventSet, binder) {
-    for (var i=0; i<eventSet.names.length; i++) {
-        var rulesPerName = this.infoPerName[eventSet.names[i]];
+    function (iteration, binder) {
+    for (var i=0; i<iteration.eventNames.length; i++) {
+        var rulesPerName = this.infoPerName[iteration.eventNames[i]];
         if (typeof(rulesPerName) != 'undefined') {
             for (var nodeHash in rulesPerName) {
                 var oper = rulesPerName[nodeHash];
                 var eventName = oper.getEventName();
                 var funcToBind = oper.makeExecuteActionsHook();
-                this.callBindMethod(eventSet, binder, eventName,
+                this.callBindMethod(iteration, binder, eventName,
                     funcToBind, oper);
             }
         }
@@ -717,13 +722,13 @@
 // Eventname and funcToBind are passed too.
 // this is the preferred ([Each]) way. Parameters are different from 
EachLegacy.
 _OperRegistry.prototype._iterateEach =
-    function (eventSet, binder) {
-    for (var i=0; i<eventSet.names.length; i++) {
-        var rulesPerName = this.infoPerName[eventSet.names[i]];
+    function (iteration, binder) {
+    for (var i=0; i<iteration.eventNames.length; i++) {
+        var rulesPerName = this.infoPerName[iteration.eventNames[i]];
         if (typeof(rulesPerName) != 'undefined') {
             for (var nodeHash in rulesPerName) {
                 var oper = rulesPerName[nodeHash];
-                this.callBindMethod(eventSet, binder, oper);
+                this.callBindMethod(iteration, binder, oper);
             }
         }
     }
@@ -731,30 +736,30 @@
 
 // This calls the bind method by the list of bound opers
 _OperRegistry.prototype._iterateOpers =
-    function (eventSet, binder) {
+    function (iteration, binder) {
     var opers = [];
-    for (var i=0; i<eventSet.names.length; i++) {
-        var rulesPerName = this.infoPerName[eventSet.names[i]];
+    for (var i=0; i<iteration.eventNames.length; i++) {
+        var rulesPerName = this.infoPerName[iteration.eventNames[i]];
         if (typeof(rulesPerName) != 'undefined') {
             for (var nodeHash in rulesPerName) {
                 opers.push(rulesPerName[nodeHash]);
             }
         }
     }
-    this.callBindMethod(eventSet, binder, opers);
+    this.callBindMethod(iteration, binder, opers);
 };
 
 // This calls the bind method by a mapping eventName:oper
 // per each bound node individually
 _OperRegistry.prototype._iterateNode =
-    function (eventSet, binder) {
+    function (iteration, binder) {
     for (var nodeHash in this.infoPerNode) {
         var rulesPerNode = this.infoPerNode[nodeHash];
         // filter only the events we are interested in
         var filteredRules = {};
         var operFound = false;
-        for (var i=0; i<eventSet.names.length; i++) {
-            var name = eventSet.names[i];
+        for (var i=0; i<iteration.eventNames.length; i++) {
+            var name = iteration.eventNames[i];
             var oper = rulesPerNode[name];
             if (typeof(oper) != 'undefined') {
                 filteredRules[name] = oper;
@@ -766,7 +771,7 @@
         // we use it as a second parameter to the call.
         // The method may or may not want to use this.
         if (operFound) {
-            this.callBindMethod(eventSet, binder, filteredRules,
+            this.callBindMethod(iteration, binder, filteredRules,
                 operFound.node);
         }
     }
@@ -776,7 +781,7 @@
 // items, where item.node is the node and item.opersByEventName nodeHash:item
 // in item there is item.node and item.opersByEventName
 _OperRegistry.prototype._iterateAllNodes = 
-    function (eventSet, binder) {
+    function (iteration, binder) {
     var items = [];
     var hasResult = false;
     for (var nodeHash in this.infoPerNode) {
@@ -784,8 +789,8 @@
         // filter only the events we are interested in
         var filteredRules = {};
         var operFound = false;
-        for (var i=0; i<eventSet.names.length; i++) {
-            var name = eventSet.names[i];
+        for (var i=0; i<iteration.eventNames.length; i++) {
+            var name = iteration.eventNames[i];
             var oper = rulesPerNode[name];
             if (typeof(oper) != 'undefined') {
                 filteredRules[name] = oper;
@@ -801,7 +806,7 @@
     }
     // call the binder method
     if (hasResult) {
-        this.callBindMethod(eventSet, binder, items);
+        this.callBindMethod(iteration, binder, items);
     }
 };
 

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/interfaces.js
==============================================================================
--- kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/interfaces.js 
(original)
+++ kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/interfaces.js 
Tue Dec 25 12:59:00 2007
@@ -24,8 +24,8 @@
  * and "provide service" sections can be in different javascript files 
(plugins),
  * and the final outcome is independent of the order of their execution.
  *
- * The order in which this is made is irrelevant, after kukit.interfaces is
- * included.
+ * The order in which they are loaded is irrelevant, provided they load
+ * after interfaces.js.
  *
  * An interface needs to be finalized before being used, and all
  * methods will be finalized this time as well.
@@ -242,6 +242,7 @@
                 // We have a loading method. Let's add our needs.
                 loader.add(this.fallbackProvider);
                 // ... and simply go on.
+                return;
             } else {
                 // We raise an error.
 ;;;             kukit.E = 'Could not finalize method [';
@@ -251,17 +252,18 @@
 ;;;             kukit.E += this.preferredProviders + ']';
                 throw new Error(kukit.E);
             }
-        }
-        if (this.checker) {
-            // if there is a checker, merge them together
-            var self = this;
-            return function() {
-                self.checker(null, arguments);
-                return func(null, arguments);
-            };
         } else {
-            // else, just store the function
-            return func;
+            if (this.checker) {
+                // if there is a checker, merge them together
+                var self = this;
+                return function() {
+                    self.checker.apply(null, arguments);
+                    return func.apply(null, arguments);
+                };
+            } else {
+                // else, just store the function
+                return func;
+            }
         }
     };
 
@@ -320,7 +322,7 @@
         // Register config to all event names individually.
         // Take names from the config.
         for (var i = 0; i < config.eventNames.length; i++) {
-            name = config.eventNames[i];
+            var name = config.eventNames[i];
             this.iface.getMethodDescriptor(name)._register(config);
         }
     };

Modified: kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/kukit.js
==============================================================================
--- kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/kukit.js      
(original)
+++ kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/kukit.js      
Tue Dec 25 12:59:00 2007
@@ -240,7 +240,7 @@
 ;;;     kukit.log('[initializeRules] is called twice.');
         return;
     }
-;;; kukit.log('Initializing interfaces.');
+;;; kukit.log('Finalizing interfaces.');
     // We finalize the core interface.
     var interfaces = kukit.interfaces.global;
     interfaces.get('core', 
kukit.interfaces.ServiceMethodDescriptor).finalize({});

Modified: kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/oper.js
==============================================================================
--- kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/oper.js       
(original)
+++ kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/oper.js       
Tue Dec 25 12:59:00 2007
@@ -175,14 +175,14 @@
 ;;;     throw new Error(kukit.E);
 ;;; }
     //
-    var namespace = this.binder.__eventNamespace__;
-    var kssevent = kukit.eventsGlobalRegistry.get(namespace, name);
-    var methodName = kssevent.defaultActionMethodName;
+    var interface = kukit.interfaces.global;
+    var methodName = interface.events[name].defaultActionMethodName;
+
     var success = false;
     if (! methodName) {
 ;;;     if (! optional) {
 ;;;         kukit.E = 'Could not trigger event [' + name;
-;;;         kukit.E += '] from namespace [' + namespace + '], because this';
+;;;         kukit.E += '], because this';
 ;;;         kukit.E += ' event has no default method registered.';
 ;;;         throw new Error(kukit.E);
 ;;;     }
@@ -197,7 +197,7 @@
             this.parms = {};
         }
         this.binder._EventBinder_callMethod(
-            namespace, name, this, methodName);
+            name, this, methodName);
         success = true;
     }
     return success;
@@ -227,11 +227,6 @@
     return this.eventRule.kssSelector.name;
 };
 
-kukit.op.Oper.prototype.getEventNamespace = function () {
-    // Gets event name
-    return this.eventRule.kssSelector.namespace;
-};
-
 kukit.op.Oper.prototype.hasExecuteActions = function () {
     // Decide if there are any actions (or a default action)
     // to execute. This can speed up execution if in case
@@ -246,6 +241,9 @@
         // The reason for this check is, that a default action is also
         // valid, even if it received no parms in the eventRule,
         // in which case it is not present as an action.
+        //
+        // XXX XXX XXX XXX XXX
+        return false;
         var kssevent = kukit.eventsGlobalRegistry.get(
             this.getEventNamespace(), this.getEventName())
         var methodName = kssevent.defaultActionMethodName;

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/resourcedata.js
==============================================================================
--- 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/resourcedata.js   
    (original)
+++ 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/resourcedata.js   
    Tue Dec 25 12:59:00 2007
@@ -166,7 +166,7 @@
         // name cannot contain a @
         // id can be any string
         // so the merge id will be unique
-        return className + '@' + name + '@' + id;
+        return className + '@' + this.name + '@' + id;
     }
 };
 
_______________________________________________
Kukit-checkins mailing list
[email protected]
http://codespeak.net/mailman/listinfo/kukit-checkins

Reply via email to