HTML Data Port

© 2005 Goetz Heller

Table of Contents Description Source Code Copyright Note back

The core Class - Examples

In the first example we define a simple helloWorld class in the namespace universe and create an instance of it. All available methods of the class, the instance, and the namespace are called. In the second example, we demonstrate error handling when a class with an invalid classID is to be installed.

      // ex 1: install a simple class
      document.write('<'+'h4><'+'em>Install a Class<'+'/em><'+'/h4>');
      // constructor
      var fullClassName = 'universe.helloWorld';
      var hello = function() {};
      hello.prototype.print = function() { return 'Hello, World!';};
      // provide for class information
      hello.classID = new Function('return \''+fullClassName+'\';');
      core.installClass(hello);
      // test class
      try {
        var cls =eval(fullClassName);
        document.write('Class \''+fullClassName+'\' successfully installed.\n');
        document.write(cls.classID()+'.classID(): '+cls.classID()+'\n');
        document.write(cls.classID()+'.toString(): '+cls.toString()+'\n');
        document.write(cls.classID()+'.isClass(): '+cls.isClass()+'\n');
        document.write(cls.classID()+'.isNameSpace(): '+cls.isNameSpace()+'\n');
        document.write(cls.classID()+'.isInstance(): '+cls.isInstance()+'\n');
      } catch(e) {
        document.write('Failed to install class \''+fullClassName+'\'.\n');
      }
      try {
        eval(fullClassName);
        document.write('\n<'+'h5><'+'em>Instantiate Class and Call Methods<'+'/em><'+'/h5>');
        var hw = core.createInstance(fullClassName);
        document.write('hw.classID(): '+hw.classID()+'\n');
        document.write('hw.toString(): '+hw.toString()+'\n');
        document.write('hw.isClass(): '+hw.isClass()+'\n');
        document.write('hw.isNameSpace(): '+hw.isNameSpace()+'\n');
        document.write('hw.isInstance(): '+hw.isInstance()+'\n');
        document.write('hw.getClass(): '+hw.getClass()+'\n');
        document.write('hw.print(): '+hw.print()+'\n');
        document.write('\n<'+'h5><'+'em>Looking at the Namespace<'+'/em><'+'/h5>');
        var ns = (new core.classPath(fullClassName)).nameSpaceString();
        document.write('core._isNameSpace(\''+ns+'\'): '+core._isNameSpace(ns)+'\n');
        ns = eval(ns);
        document.write(ns+'.toString(): '+ns.toString()+'\n');
        document.write(ns+'.isClass(): '+ns.isClass()+'\n');
        document.write(ns+'.isNameSpace(): '+ns.isNameSpace()+'\n');
        document.write(ns+'.isInstance(): '+ns.isInstance()+'\n');
      } catch(e) {}
      // ex.2: try to install class with invalid classID
      document.write('\n<'+'h4><'+'em>Install a Class With Invalid classID<'+'/em><'+'/h4>');
      // constructor
      fullClassName = 'my InvalidClass';
      var mic = function() {};
      mic.prototype.print = function() { return 'Hello, World!';};
      // provide for class information
      mic.classID = new Function('return \''+fullClassName+'\';');
      try {
        core.installClass(mic);
        // test class
        eval(fullClassName);
        document.write('Class \''+fullClassName+'\' successfully installed.\n');
      } catch(e) {
        document.write('Failed to install class \''+fullClassName+'\'.\n');
      }
      // ex.3: try to install another class with invalid classID
      document.write('\n<'+'h4><'+'em>Install Another Class With Invalid classID<'+'/em><'+'/h4>');
      // constructor
      fullClassName = 'my..2ndInvalidClass';
      var mic2 = function() {};
      mic.prototype.print = function() { return 'Hello, World!';};
      // provide for class information
      mic2.classID = new Function('return \''+fullClassName+'\';');
      try {
        core.installClass(mic2);
        // test class
        eval(fullClassName);
        document.write('Class \''+fullClassName+'\' successfully installed.\n');
      } catch(e) {
        document.write('Failed to install class \''+fullClassName+'\'.\n');
      }