/* * Copyright 2006 Sony Computer Entertainment Inc. * * Licensed under the MIT Open Source License, for details please see license.txt or the website * http://www.opensource.org/licenses/mit-license.php * */ #include <sstream> #include <dae.h> #include <dae/daeStandardURIResolver.h> #include <dae/daeDatabase.h> #include <dae/daeURI.h> #include <dae/daeIOPlugin.h> #include <dae/daeErrorHandler.h> using namespace std; daeStandardURIResolver::daeStandardURIResolver(DAE& dae) : daeURIResolver(dae) { } daeStandardURIResolver::~daeStandardURIResolver() { } daeString daeStandardURIResolver::getName() { return "XMLResolver"; } namespace { void printErrorMsg(const daeURI& uri) { ostringstream msg; msg << "daeStandardURIResolver::resolveElement() - Failed to resolve " << uri.str() << endl; daeErrorHandler::get()->handleError(msg.str().c_str()); } } daeElement* daeStandardURIResolver::resolveElement(const daeURI& uri) { daeDocument* doc = uri.getReferencedDocument(); if (!doc) { dae->open(uri.str()); doc = uri.getReferencedDocument(); if (!doc) { printErrorMsg(uri); return NULL; } } daeElement* elt = dae->getDatabase()->idLookup(uri.id(), doc); if (!elt) printErrorMsg(uri); return elt; }