BundleDescriptorReader::PointExtensionsPairType BundleDescriptorReader::processPoint(xmlNodePtr node, const ::boost::shared_ptr<Bundle> bundle) throw(RuntimeException)
{
    // Creates the extension instance.
    xmlAttrPtr curAttr;
    std::string schema;
    std::string identifier;
    for(curAttr = node->properties; curAttr != 0; curAttr = curAttr->next)
    {
        if(xmlStrcmp(curAttr->name, (const xmlChar*) ID.c_str()) == 0)
        {
            identifier = (const char*) curAttr->children->content;
            continue;
        }

        if(xmlStrcmp(curAttr->name, (const xmlChar*) SCHEMA.c_str()) == 0)
        {
            schema = (const char*) curAttr->children->content;
            continue;
        }
    }
    ::boost::shared_ptr<ExtensionPoint> extensionPoint(new ExtensionPoint(bundle, identifier, schema));

    // Processes child nodes which declare identifier as extensions.
    std::vector< ::boost::shared_ptr<Extension> > extensionContainer ;
    xmlNodePtr curChild;
    for(curChild = node->children; curChild != 0; curChild = curChild->next)
    {
        if(curChild->type == XML_ELEMENT_NODE)
        {
            if( xmlStrcmp(curChild->name, (const xmlChar*) IMPLEMENTS.c_str()) == 0 )
            {
                std::string extensionId =  (const char*) curChild->children->content ;
                ::boost::shared_ptr<Extension> extension(new Extension(bundle, identifier , extensionId, curChild));
                extensionContainer.push_back( extension ) ;
            }
        }
    }

    return PointExtensionsPairType( extensionPoint, extensionContainer ) ;
}
QList<SmartPointer<IExtensionPoint> > CombinedEventDelta::GetExtensionPoints(const IExtensionPointFilter& filter) const
{
  QList<int> extensionPoints;
  if (!filter.IsNull() && !d->extPointsByID.isEmpty())
  {
    extensionPoints = FilterExtensionPoints(filter);
  }
  else if (filter.IsNull())
  {
    extensionPoints = d->allExtensionPoints;
  }

  if (extensionPoints.isEmpty()) // no changes that fit the filter
    return QList<IExtensionPoint::Pointer>();

  QList<IExtensionPoint::Pointer> result;
  for (int i = 0; i < extensionPoints.size(); ++i)
  {
    int extPt = extensionPoints[i];
    IExtensionPoint::Pointer extensionPoint(new ExtensionPointHandle(d->objectManager, extPt));
    result.push_back(extensionPoint);
  }
  return result;
}