Put back in changes to cache rdf service.

This commit is contained in:
putterman%netscape.com 1999-09-21 20:02:50 +00:00
Родитель 842ca6f808
Коммит 938698c4b0
2 изменённых файлов: 19 добавлений и 25 удалений

Просмотреть файл

@ -47,6 +47,10 @@ public:
nsRDFResource(void); nsRDFResource(void);
virtual ~nsRDFResource(void); virtual ~nsRDFResource(void);
protected:
static nsIRDFService* gRDFService;
static nsrefcnt gRDFServiceRefCnt;
protected: protected:
char* mURI; char* mURI;
}; };

Просмотреть файл

@ -27,7 +27,8 @@
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID); static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID);
//////////////////////////////////////////////////////////////////////// nsIRDFService* nsRDFResource::gRDFService = nsnull;
nsrefcnt nsRDFResource::gRDFServiceRefCnt = 0;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -39,21 +40,18 @@ nsRDFResource::nsRDFResource(void)
nsRDFResource::~nsRDFResource(void) nsRDFResource::~nsRDFResource(void)
{ {
nsIRDFService* rdfService = nsnull;
nsresult rv = NS_OK; nsresult rv = NS_OK;
rv = nsServiceManager::GetService(kRDFServiceCID,
nsIRDFService::GetIID(), gRDFService->UnregisterResource(this);
(nsISupports**) &rdfService);
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to get RDF service");
if (NS_SUCCEEDED(rv) && rdfService != nsnull) {
rdfService->UnregisterResource(this);
nsServiceManager::ReleaseService(kRDFServiceCID, rdfService);
}
// N.B. that we need to free the URI *after* we un-cache the resource, // N.B. that we need to free the URI *after* we un-cache the resource,
// due to the way that the resource manager is implemented. // due to the way that the resource manager is implemented.
nsCRT::free(mURI); nsCRT::free(mURI);
if (--gRDFServiceRefCnt == 0) {
nsServiceManager::ReleaseService(kRDFServiceCID, gRDFService);
gRDFService = nsnull;
}
} }
NS_IMPL_ADDREF(nsRDFResource) NS_IMPL_ADDREF(nsRDFResource)
@ -120,24 +118,16 @@ nsRDFResource::Init(const char* aURI)
PL_strcpy(mURI, aURI); PL_strcpy(mURI, aURI);
nsIRDFService* rdfService = nsnull;
nsresult rv = NS_OK; nsresult rv = NS_OK;
rv = nsServiceManager::GetService(kRDFServiceCID, if (gRDFServiceRefCnt++ == 0) {
nsIRDFService::GetIID(), rv = nsServiceManager::GetService(kRDFServiceCID,
(nsISupports**) &rdfService); nsIRDFService::GetIID(),
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to get RDF service"); (nsISupports**)&gRDFService);
if (NS_FAILED(rv)) return rv;
if (!NS_SUCCEEDED(rv)) {
return rv;
}
if (rdfService == nsnull) {
return NS_ERROR_NULL_POINTER;
} }
// don't replace an existing resource with the same URI automatically // don't replace an existing resource with the same URI automatically
rv = rdfService->RegisterResource(this, PR_TRUE); return gRDFService->RegisterResource(this, PR_TRUE);
nsServiceManager::ReleaseService(kRDFServiceCID, rdfService);
return rv;
} }
NS_IMETHODIMP NS_IMETHODIMP