docs: public void execute() throws BuildException
      {
          if (_commands.isEmpty())
          {
              log("No sub tasks specified, so there is nothing to do.", Project.MSG_INFO);
              return;
          }
  
          ClassLoader    sysClassLoader = Thread.currentThread().getContextClassLoader();
          AntClassLoader newClassLoader = new AntClassLoader(getClass().getClassLoader(), true);
  
          // we're changing the thread classloader so that we can access resources
          // from the classpath used to load this task's class
          Thread.currentThread().setContextClassLoader(newClassLoader);
          
          try
          {
              MetadataManager      manager  = initOJB();
              Database             dbModel  = readModel();
              DescriptorRepository objModel = manager.getGlobalRepository();
  
              if (dbModel == null)
              {
                  throw new BuildException("No database model specified");
              }
              for (Iterator it = _commands.iterator(); it.hasNext();)
              {
                  Command cmd = (Command)it.next();
  
                  cmd.setPlatform(getPlatform());
                  cmd.execute(this, dbModel, objModel);
              }
          }
          finally
          {
              // rollback of our classloader change
              Thread.currentThread().setContextClassLoader(sysClassLoader);
          }
      }