rdf/build/nsRDFModule.cpp

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 #include "nsCOMPtr.h"
     6 #include "mozilla/ModuleUtils.h"
     8 #include "nsIFactory.h"
     9 #include "nsRDFService.h"
    10 #include "nsIRDFContainer.h"
    11 #include "nsIRDFContainerUtils.h"
    12 #include "nsIRDFCompositeDataSource.h"
    13 #include "nsIRDFContentSink.h"
    14 #include "nsISupports.h"
    15 #include "nsRDFBaseDataSources.h"
    16 #include "nsRDFBuiltInDataSources.h"
    17 #include "nsFileSystemDataSource.h"
    18 #include "nsRDFCID.h"
    19 #include "nsIComponentManager.h"
    20 #include "rdf.h"
    21 #include "nsIServiceManager.h"
    22 #include "nsILocalStore.h"
    23 #include "nsRDFXMLParser.h"
    24 #include "nsRDFXMLSerializer.h"
    26 #include "rdfISerializer.h"
    28 //----------------------------------------------------------------------
    30 // Functions used to create new instances of a given object by the
    31 // generic factory.
    33 #define MAKE_CTOR(_func,_new,_ifname)                                \
    34 static nsresult                                                      \
    35 CreateNew##_func(nsISupports* aOuter, REFNSIID aIID, void **aResult) \
    36 {                                                                    \
    37     if (!aResult) {                                                  \
    38         return NS_ERROR_INVALID_POINTER;                             \
    39     }                                                                \
    40     if (aOuter) {                                                    \
    41         *aResult = nullptr;                                           \
    42         return NS_ERROR_NO_AGGREGATION;                              \
    43     }                                                                \
    44     nsI##_ifname* inst;                                              \
    45     nsresult rv = NS_New##_new(&inst);                               \
    46     if (NS_FAILED(rv)) {                                             \
    47         *aResult = nullptr;                                           \
    48         return rv;                                                   \
    49     }                                                                \
    50     rv = inst->QueryInterface(aIID, aResult);                        \
    51     if (NS_FAILED(rv)) {                                             \
    52         *aResult = nullptr;                                           \
    53     }                                                                \
    54     NS_RELEASE(inst);             /* get rid of extra refcnt */      \
    55     return rv;                                                       \
    56 }
    58 extern nsresult
    59 NS_NewDefaultResource(nsIRDFResource** aResult);
    61 MAKE_CTOR(RDFXMLDataSource,RDFXMLDataSource,RDFDataSource)
    62 MAKE_CTOR(RDFCompositeDataSource,RDFCompositeDataSource,RDFCompositeDataSource)
    63 MAKE_CTOR(RDFContainer,RDFContainer,RDFContainer)
    65 MAKE_CTOR(RDFContainerUtils,RDFContainerUtils,RDFContainerUtils)
    67 MAKE_CTOR(RDFContentSink,RDFContentSink,RDFContentSink)
    68 MAKE_CTOR(RDFDefaultResource,DefaultResource,RDFResource)
    70 #define MAKE_RDF_CTOR(_func,_new,_ifname)                            \
    71 static nsresult                                                      \
    72 CreateNew##_func(nsISupports* aOuter, REFNSIID aIID, void **aResult) \
    73 {                                                                    \
    74     if (!aResult) {                                                  \
    75         return NS_ERROR_INVALID_POINTER;                             \
    76     }                                                                \
    77     if (aOuter) {                                                    \
    78         *aResult = nullptr;                                           \
    79         return NS_ERROR_NO_AGGREGATION;                              \
    80     }                                                                \
    81     rdfI##_ifname* inst;                                             \
    82     nsresult rv = NS_New##_new(&inst);                               \
    83     if (NS_FAILED(rv)) {                                             \
    84         *aResult = nullptr;                                           \
    85         return rv;                                                   \
    86     }                                                                \
    87     rv = inst->QueryInterface(aIID, aResult);                        \
    88     if (NS_FAILED(rv)) {                                             \
    89         *aResult = nullptr;                                           \
    90     }                                                                \
    91     NS_RELEASE(inst);             /* get rid of extra refcnt */      \
    92     return rv;                                                       \
    93 }
    95 extern nsresult
    96 NS_NewTriplesSerializer(rdfISerializer** aResult);
    98 MAKE_RDF_CTOR(TriplesSerializer, TriplesSerializer, Serializer)
   100 NS_DEFINE_NAMED_CID(NS_RDFCOMPOSITEDATASOURCE_CID);
   101 NS_DEFINE_NAMED_CID(NS_RDFFILESYSTEMDATASOURCE_CID);
   102 NS_DEFINE_NAMED_CID(NS_RDFINMEMORYDATASOURCE_CID);
   103 NS_DEFINE_NAMED_CID(NS_RDFXMLDATASOURCE_CID);
   104 NS_DEFINE_NAMED_CID(NS_RDFDEFAULTRESOURCE_CID);
   105 NS_DEFINE_NAMED_CID(NS_RDFCONTENTSINK_CID);
   106 NS_DEFINE_NAMED_CID(NS_RDFCONTAINER_CID);
   107 NS_DEFINE_NAMED_CID(NS_RDFCONTAINERUTILS_CID);
   108 NS_DEFINE_NAMED_CID(NS_RDFSERVICE_CID);
   109 NS_DEFINE_NAMED_CID(NS_RDFXMLPARSER_CID);
   110 NS_DEFINE_NAMED_CID(NS_RDFXMLSERIALIZER_CID);
   111 NS_DEFINE_NAMED_CID(NS_RDFNTRIPLES_SERIALIZER_CID);
   112 NS_DEFINE_NAMED_CID(NS_LOCALSTORE_CID);
   115 static const mozilla::Module::CIDEntry kRDFCIDs[] = {
   116     { &kNS_RDFCOMPOSITEDATASOURCE_CID, false, nullptr, CreateNewRDFCompositeDataSource },
   117     { &kNS_RDFFILESYSTEMDATASOURCE_CID, false, nullptr, FileSystemDataSource::Create },
   118     { &kNS_RDFINMEMORYDATASOURCE_CID, false, nullptr, NS_NewRDFInMemoryDataSource },
   119     { &kNS_RDFXMLDATASOURCE_CID, false, nullptr, CreateNewRDFXMLDataSource },
   120     { &kNS_RDFDEFAULTRESOURCE_CID, false, nullptr, CreateNewRDFDefaultResource },
   121     { &kNS_RDFCONTENTSINK_CID, false, nullptr, CreateNewRDFContentSink },
   122     { &kNS_RDFCONTAINER_CID, false, nullptr, CreateNewRDFContainer },
   123     { &kNS_RDFCONTAINERUTILS_CID, false, nullptr, CreateNewRDFContainerUtils },
   124     { &kNS_RDFSERVICE_CID, false, nullptr, RDFServiceImpl::CreateSingleton },
   125     { &kNS_RDFXMLPARSER_CID, false, nullptr, nsRDFXMLParser::Create },
   126     { &kNS_RDFXMLSERIALIZER_CID, false, nullptr, nsRDFXMLSerializer::Create },
   127     { &kNS_RDFNTRIPLES_SERIALIZER_CID, false, nullptr, CreateNewTriplesSerializer },
   128     { &kNS_LOCALSTORE_CID, false, nullptr, NS_NewLocalStore },
   129     { nullptr }
   130 };
   132 static const mozilla::Module::ContractIDEntry kRDFContracts[] = {
   133     { NS_RDF_DATASOURCE_CONTRACTID_PREFIX "composite-datasource", &kNS_RDFCOMPOSITEDATASOURCE_CID },
   134     { NS_RDF_DATASOURCE_CONTRACTID_PREFIX "files", &kNS_RDFFILESYSTEMDATASOURCE_CID },
   135     { NS_RDF_DATASOURCE_CONTRACTID_PREFIX "in-memory-datasource", &kNS_RDFINMEMORYDATASOURCE_CID },
   136     { NS_RDF_DATASOURCE_CONTRACTID_PREFIX "xml-datasource", &kNS_RDFXMLDATASOURCE_CID },
   137     { NS_RDF_RESOURCE_FACTORY_CONTRACTID, &kNS_RDFDEFAULTRESOURCE_CID },
   138     { NS_RDF_CONTRACTID "/content-sink;1", &kNS_RDFCONTENTSINK_CID },
   139     { NS_RDF_CONTRACTID "/container;1", &kNS_RDFCONTAINER_CID },
   140     { NS_RDF_CONTRACTID "/container-utils;1", &kNS_RDFCONTAINERUTILS_CID },
   141     { NS_RDF_CONTRACTID "/rdf-service;1", &kNS_RDFSERVICE_CID },
   142     { NS_RDF_CONTRACTID "/xml-parser;1", &kNS_RDFXMLPARSER_CID },
   143     { NS_RDF_CONTRACTID "/xml-serializer;1", &kNS_RDFXMLSERIALIZER_CID },
   144     { NS_RDF_SERIALIZER "ntriples", &kNS_RDFNTRIPLES_SERIALIZER_CID },
   145     { NS_LOCALSTORE_CONTRACTID, &kNS_LOCALSTORE_CID },
   146     { nullptr }
   147 };
   149 static nsresult
   150 StartupRDFModule()
   151 {
   152     if (RDFServiceImpl::gRDFService) {
   153         NS_ERROR("Leaked the RDF service from a previous startup.");
   154         RDFServiceImpl::gRDFService = nullptr;
   155     }
   157     return NS_OK;
   158 }
   160 static void
   161 ShutdownRDFModule()
   162 {
   163     if (RDFServiceImpl::gRDFService) {
   164         // XXX make this an assertion!
   165         NS_WARNING("Leaking the RDF Service.");
   166     }
   167 }
   169 static const mozilla::Module kRDFModule = {
   170     mozilla::Module::kVersion,
   171     kRDFCIDs,
   172     kRDFContracts,
   173     nullptr,
   174     nullptr,
   175     StartupRDFModule,
   176     ShutdownRDFModule
   177 };
   179 NSMODULE_DEFN(nsRDFModule) = &kRDFModule;

mercurial