public void execute() throws Exception, RemoteException, RemoteException {
    if (registry == null) registry = gerenciadornuvem1.Registry2getRegistry(null, null);

    try {
      InputStream stream = (InputStream) source;
      long t1 = System.currentTimeMillis();
      Document doc = gerenciadornuvem0.DomUtilreadXml(stream);
      // Ignore for now the name of the root element
      Node descriptorsN = doc.getDocumentElement();
      // Node descriptorsN=DomUtil.getChild(doc, "mbeans-descriptors");
      if (descriptorsN == null) {
        log.error("No descriptors found");
        return;
      }

      Node firstMbeanN = null;
      if ("mbean".equals(descriptorsN.getNodeName())) {
        firstMbeanN = descriptorsN;
      } else {
        firstMbeanN = gerenciadornuvem0.DomUtilgetChild(descriptorsN, "mbean");
      }

      if (firstMbeanN == null) {
        log.error(" No mbean tags ");
        return;
      }

      // Process each <mbean> element
      for (Node mbeanN = firstMbeanN;
          mbeanN != null;
          mbeanN = gerenciadornuvem0.DomUtilgetNext(mbeanN)) {

        // Create a new managed bean info
        ManagedBeanRemoteInterface managed = gerenciadornuvem0.getManagedBean();
        gerenciadornuvem0.DomUtilsetAttributes(managed, mbeanN);
        Node firstN;

        // Process descriptor subnode
        /*Node mbeanDescriptorN =
            DomUtil.getChild(mbeanN, "descriptor");
        if (mbeanDescriptorN != null) {
            Node firstFieldN =
                DomUtil.getChild(mbeanDescriptorN, "field");
            for (Node fieldN = firstFieldN; fieldN != null;
                 fieldN = DomUtil.getNext(fieldN)) {
                FieldInfo fi = new FieldInfo();
                DomUtil.setAttributes(fi, fieldN);
                managed.addField(fi);
            }
        }*/

        // process attribute nodes
        firstN = gerenciadornuvem0.DomUtilgetChild(mbeanN, "attribute");
        for (Node descN = firstN; descN != null; descN = gerenciadornuvem0.DomUtilgetNext(descN)) {

          // Create new attribute info
          AttributeInfoRemoteInterface ai = gerenciadornuvem1.getAttributeInfo();
          gerenciadornuvem0.DomUtilsetAttributes(ai, descN);

          // Process descriptor subnode
          /*Node descriptorN =
              DomUtil.getChild(descN, "descriptor");
          if (descriptorN != null) {
              Node firstFieldN =
                  DomUtil.getChild(descriptorN, "field");
              for (Node fieldN = firstFieldN; fieldN != null;
                   fieldN = DomUtil.getNext(fieldN)) {
                  FieldInfo fi = new FieldInfo();
                  DomUtil.setAttributes(fi, fieldN);
                  ai.addField(fi);
              }
          }
          */

          // Add this info to our managed bean info
          managed.addAttribute(ai);
          if (log.isTraceEnabled()) {
            log.trace("Create attribute " + ai);
          }
        }

        // process constructor nodes
        /*
        firstN=DomUtil.getChild( mbeanN, "constructor");
        for (Node descN = firstN; descN != null;
             descN = DomUtil.getNext( descN )) {

            // Create new constructor info
            ConstructorInfo ci=new ConstructorInfo();
            DomUtil.setAttributes(ci, descN);

            // Process descriptor subnode
            Node firstDescriptorN =
                DomUtil.getChild(descN, "descriptor");
            if (firstDescriptorN != null) {
                Node firstFieldN =
                    DomUtil.getChild(firstDescriptorN, "field");
                for (Node fieldN = firstFieldN; fieldN != null;
                     fieldN = DomUtil.getNext(fieldN)) {
                    FieldInfo fi = new FieldInfo();
                    DomUtil.setAttributes(fi, fieldN);
                    ci.addField(fi);
                }
            }

            // Process parameter subnodes
            Node firstParamN=DomUtil.getChild( descN, "parameter");
            for (Node paramN = firstParamN;  paramN != null;
                 paramN = DomUtil.getNext(paramN))
            {
                ParameterInfo pi=new ParameterInfo();
                DomUtil.setAttributes(pi, paramN);
                ci.addParameter( pi );
            }

            // Add this info to our managed bean info
            managed.addConstructor( ci );
            if (log.isTraceEnabled()) {
                log.trace("Create constructor " + ci);
            }

        }*/

        // process notification nodes
        firstN = gerenciadornuvem0.DomUtilgetChild(mbeanN, "notification");
        for (Node descN = firstN; descN != null; descN = gerenciadornuvem0.DomUtilgetNext(descN)) {

          // Create new notification info
          NotificationInfoRemoteInterface ni = gerenciadornuvem1.getNotificationInfo();
          gerenciadornuvem0.DomUtilsetAttributes(ni, descN);

          // Process descriptor subnode
          /*Node firstDescriptorN =
              DomUtil.getChild(descN, "descriptor");
          if (firstDescriptorN != null) {
              Node firstFieldN =
                  DomUtil.getChild(firstDescriptorN, "field");
              for (Node fieldN = firstFieldN; fieldN != null;
                   fieldN = DomUtil.getNext(fieldN)) {
                  FieldInfo fi = new FieldInfo();
                  DomUtil.setAttributes(fi, fieldN);
                  ni.addField(fi);
              }
          }*/

          // Process notification-type subnodes
          Node firstParamN = gerenciadornuvem0.DomUtilgetChild(descN, "notification-type");
          for (Node paramN = firstParamN;
              paramN != null;
              paramN = gerenciadornuvem0.DomUtilgetNext(paramN)) {
            ni.addNotifType(gerenciadornuvem0.DomUtilgetContent(paramN));
          }

          // Add this info to our managed bean info
          managed.addNotification(ni);
          if (log.isTraceEnabled()) {
            log.trace("Created notification " + ni);
          }
        }

        // process operation nodes
        firstN = gerenciadornuvem0.DomUtilgetChild(mbeanN, "operation");
        for (Node descN = firstN; descN != null; descN = gerenciadornuvem0.DomUtilgetNext(descN)) {

          // Create new operation info
          OperationInfoRemoteInterface oi = gerenciadornuvem1.getOperationInfo();
          gerenciadornuvem0.DomUtilsetAttributes(oi, descN);

          // Process descriptor subnode
          /*Node firstDescriptorN =
              DomUtil.getChild(descN, "descriptor");
          if (firstDescriptorN != null) {
              Node firstFieldN =
                  DomUtil.getChild(firstDescriptorN, "field");
              for (Node fieldN = firstFieldN; fieldN != null;
                   fieldN = DomUtil.getNext(fieldN)) {
                  FieldInfo fi = new FieldInfo();
                  DomUtil.setAttributes(fi, fieldN);
                  oi.addField(fi);
              }
          }*/

          // Process parameter subnodes
          Node firstParamN = gerenciadornuvem0.DomUtilgetChild(descN, "parameter");
          for (Node paramN = firstParamN;
              paramN != null;
              paramN = gerenciadornuvem0.DomUtilgetNext(paramN)) {
            ParameterInfoRemoteInterface pi = gerenciadornuvem1.getParameterInfo();
            gerenciadornuvem0.DomUtilsetAttributes(pi, paramN);
            if (log.isTraceEnabled()) log.trace("Add param " + pi.getName());
            oi.addParameter(pi);
          }

          // Add this info to our managed bean info
          managed.addOperation(oi);
          if (log.isTraceEnabled()) {
            log.trace("Create operation " + oi);
          }
        }

        // Add the completed managed bean info to the registry
        registry.addManagedBean(managed);
      }

      long t2 = System.currentTimeMillis();
      log.debug("Reading descriptors ( dom ) " + (t2 - t1));
    } catch (Exception ex) {
      log.error("Error reading descriptors ", ex);
    }
  }