#include "nspr.h" #include "nsLuceneChannel.h" #include "nsLuceneHandler.h" #include "nsIURL.h" #include "nsCRT.h" #include "nsIComponentManager.h" #include "nsIServiceManager.h" #include "nsIInterfaceRequestor.h" #include "nsIInterfaceRequestorUtils.h" #include "nsIProgressEventSink.h" #include "nsNetCID.h" #include "nsIStandardURL.h" static NS_DEFINE_CID(kStandardURLCID, NS_STANDARDURL_CID); //////////////////////////////////////////////////////////////////////////////// nsLuceneHandler::nsLuceneHandler() { } nsLuceneHandler::~nsLuceneHandler() { } NS_IMPL_ISUPPORTS1(nsLuceneHandler, nsIProtocolHandler) NS_METHOD nsLuceneHandler::Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult) { nsLuceneHandler* ph = new nsLuceneHandler(); if (ph == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(ph); nsresult rv = ph->QueryInterface(aIID, aResult); NS_RELEASE(ph); return rv; } //////////////////////////////////////////////////////////////////////////////// // nsIProtocolHandler methods: NS_IMETHODIMP nsLuceneHandler::GetScheme(nsACString &result) { result.AssignLiteral("lucene"); return NS_OK; } NS_IMETHODIMP nsLuceneHandler::GetDefaultPort(PRInt32 *result) { // no ports for lucene protocol *result = -1; return NS_OK; } NS_IMETHODIMP nsLuceneHandler::GetProtocolFlags(PRUint32 *result) { *result = URI_NORELATIVE | URI_NOAUTH; return NS_OK; } NS_IMETHODIMP nsLuceneHandler::NewURI(const nsACString &aSpec, const char *aCharset, // ignore charset info nsIURI *aBaseURI, nsIURI **result) { nsresult rv; nsCOMPtr url = do_CreateInstance(kStandardURLCID, &rv); if (NS_FAILED(rv)) return rv; rv = url->Init(nsIStandardURL::URLTYPE_AUTHORITY, 0, aSpec, aCharset, aBaseURI); if (NS_FAILED(rv)) return rv; return CallQueryInterface(url, result); } NS_IMETHODIMP nsLuceneHandler::NewChannel(nsIURI* url, nsIChannel* *result) { nsresult rv; nsLuceneChannel* channel; rv = nsLuceneChannel::Create(nsnull, NS_GET_IID(nsILuceneChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; rv = channel->Init(url); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; } *result = channel; return NS_OK; } NS_IMETHODIMP nsLuceneHandler::AllowPort(PRInt32 port, const char *scheme, PRBool *_retval) { // don't override anything. *_retval = PR_FALSE; return NS_OK; } ////////////////////////////////////////////////////////////////////////////////