XcapResourceImpl resource = new XcapResourceImpl();
resource.setXcapUri(xcapUri);
resource.setProcessor(processor);
XmlResource xmlResource = _dao.getDocument(xcapUri, isPut && !xcapUri.hasNodeSeparator());
if (xmlResource == null)
{
if (isPut)
{
locatingParent(xcapUri, requestUrlHead);
resource.setCreation(true);
return resource;
}
else
{
XcapException e = new XcapException("Resource: "
+ xcapUri.getDocumentSelector() + " not found",
HttpServletResponse.SC_NOT_FOUND);
e.setLevel(Level.INFO);
throw e;
}
}
resource.setDocument(xmlResource);
// TODO check rootDirectory is in parent dir.
// TODO authenticate & authorization
if (_validateOnGet)
{
try
{
XcapUtil.validate(document, processor.getXsdSchema());
}
catch (XcapException e)
{
_log.warn("Unable to validated document:" + e.getMessage(), e);
}
}
if (resource.isAllDocument())
return resource;
String nodeSelector = XcapUtil.insertDefaultNamespace(xcapUri
.getNodeSelector(), processor.getDefaultNamespacePrefix());
if (_log.isDebugEnabled())
_log.debug("select node " + nodeSelector + " in "
+ xcapUri.getDocumentSelector());
if (requestNamespaceContext == null)
requestNamespaceContext = new HashMap<String, String>();
requestNamespaceContext.putAll(processor.getNamespaceContext());
resource.setNamespaceContext(requestNamespaceContext);
XmlResource xmlResource2 = _dao.getNode(resource, nodeSelector);
if (xmlResource2 == null)
{
if (isPut)
{