List of usage examples for org.w3c.dom Element getNamespaceURI
public String getNamespaceURI();
null
if it is unspecified (see ). From source file:org.mule.config.spring.MuleHierarchicalBeanDefinitionParserDelegate.java
public BeanDefinition parseCustomElement(Element element, BeanDefinition parent) { if (logger.isDebugEnabled()) { logger.debug("parsing: " + SpringXMLUtils.elementToString(element)); }//w w w . j a v a 2s . c o m if (SpringXMLUtils.isBeansNamespace(element)) { return handleSpringElements(element, parent); } else { String namespaceUri = element.getNamespaceURI(); NamespaceHandler handler = getReaderContext().getNamespaceHandlerResolver().resolve(namespaceUri); if (handler == null) { getReaderContext().error("Unable to locate NamespaceHandler for namespace [" + namespaceUri + "]", element); return null; } boolean noRecurse = false; boolean forceRecurse = false; BeanDefinition finalChild; do { ParserContext parserContext = new ParserContext(getReaderContext(), this, parent); finalChild = handler.parse(element, parserContext); registerBean(element, finalChild); noRecurse = noRecurse || testFlag(finalChild, MULE_NO_RECURSE); forceRecurse = forceRecurse || testFlag(finalChild, MULE_FORCE_RECURSE); } while (null != finalChild && testFlag(finalChild, MULE_REPEAT_PARSE)); // Only iterate and parse child mule name-spaced elements. Spring does not do // hierarchical parsing by default so we need to maintain this behavior // for non-mule elements to ensure that we don't break the parsing of any // other custom name-spaces e.g spring-jee. // We also avoid parsing inside elements that have constructed a factory bean // because that means we're dealing with (something like) ChildMapDefinitionParser, // which handles iteration internally (this is a hack needed because Spring doesn't // expose the DP for "<spring:entry>" elements directly). boolean isRecurse; if (noRecurse) { // no recursion takes precedence, as recursion is set by default isRecurse = false; } else { if (forceRecurse) { isRecurse = true; } else { // default behaviour if no control specified isRecurse = SpringXMLUtils.isMuleNamespace(element); } } if (isRecurse) { NodeList list = element.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { if (list.item(i) instanceof Element) { parseCustomElement((Element) list.item(i), finalChild); } } } // If a parser requests post-processing we call again after children called if (testFlag(finalChild, MULE_POST_CHILDREN)) { ParserContext parserContext = new ParserContext(getReaderContext(), this, parent); finalChild = handler.parse(element, parserContext); } return finalChild; } }
From source file:org.mule.config.spring.util.SpringXMLUtils.java
public static boolean isMuleNamespace(Element element) { String ns = element.getNamespaceURI(); return ns != null && ns.startsWith(MULE_NAMESPACE_PREFIX); }
From source file:org.mule.config.spring.util.SpringXMLUtils.java
public static boolean isBeansNamespace(Element element) { String ns = element.getNamespaceURI(); return ns != null && ns.equals(BeanDefinitionParserDelegate.BEANS_NAMESPACE_URI); }
From source file:org.mule.module.extension.internal.config.ExtensionsNamespaceHandler.java
/** * Registers parsers for the given element, provided that an extension can be found which * responds to that namespace//from w w w.j av a2 s. co m */ @Override public BeanDefinition parse(Element element, ParserContext parserContext) { String namespace = element.getNamespaceURI(); if (!isHandled(namespace)) { registerExtensionParsers(namespace, element, parserContext); } return super.parse(element, parserContext); }
From source file:org.obm.caldav.server.resultBuilder.PropertyListBuilder.java
public Document build(CalDavToken t, DavRequest req, List<DavComponent> comps, Set<PropfindPropertyHandler> toLoad, Set<Element> notUsed, IBackend proxy) { try {//from www . ja v a 2 s. c o m Document ret = createMultiStatusDocument(); Element r = ret.getDocumentElement(); for (DavComponent comp : comps) { Element response = DOMUtils.createElement(r, "D:response"); DOMUtils.createElementAndText(response, "D:href", comp.getURL()); if (toLoad.size() > 0) { Element pStat = DOMUtils.createElement(response, "D:propstat"); Element p = DOMUtils.createElement(pStat, "D:prop"); for (PropfindPropertyHandler dph : toLoad) { dph.appendPropertyValue(p, t, req, proxy, comp); } DOMUtils.createElementAndText(pStat, "D:status", "HTTP/1.1 200 OK"); } if (notUsed.size() > 0) { Element pStatNotUsed = DOMUtils.createElement(response, "D:propstat"); Element pNotUsed = DOMUtils.createElement(pStatNotUsed, "D:prop"); for (Element enu : notUsed) { DOMUtils.createElement(pNotUsed, enu.getNamespaceURI(), enu.getTagName()); } DOMUtils.createElementAndText(pStatNotUsed, "D:status", "HTTP/1.1 404 Not Found"); } } return ret; } catch (Exception e) { logger.error(e.getMessage(), e); return null; } }
From source file:org.ojbc.bundles.adapters.staticmock.StaticMockQuery.java
/** * Perform a query (retrieving instances that match a (usually unique) identifier. * /*from w w w .ja va 2s. com*/ * @param queryRequestMessage * the request message, assumed to be valid against some Query Service IEPD * @param context * an arbitrary object that callers can pass in to provide some context for the query; this will be specific to each type of query * @return the matching document(s) * @throws Exception */ public List<IdentifiableDocumentWrapper> queryDocuments(Document queryRequestMessage, Object context) throws Exception { Element rootElement = queryRequestMessage.getDocumentElement(); String documentId = null; String systemId = null; String rootElementNamespace = rootElement.getNamespaceURI(); String rootElementLocalName = rootElement.getLocalName(); if (OjbcNamespaceContext.NS_INCIDENT_QUERY_REQUEST_DOC.equals(rootElementNamespace) && "IncidentIdentifierIncidentReportRequest".equals(rootElementLocalName)) { Element systemElement = (Element) XmlUtils.xPathNodeSearch(queryRequestMessage, "iqr-doc:IncidentIdentifierIncidentReportRequest/iqr:SourceSystemNameText"); if (systemElement == null) { throw new IllegalArgumentException( "Invalid query request message: must specify the system to query."); } Element systemIdElement = (Element) XmlUtils.xPathNodeSearch(queryRequestMessage, "iqr-doc:IncidentIdentifierIncidentReportRequest/iqr:Incident/nc:ActivityIdentification/nc:IdentificationID"); documentId = systemIdElement.getTextContent(); systemId = systemElement.getTextContent(); } else if (OjbcNamespaceContext.NS_FIREARM_REGISTRATION_QUERY_REQUEST_DOC.equals(rootElementNamespace) && "PersonFirearmRegistrationRequest".equals(rootElementLocalName)) { String xPath = OjbcNamespaceContext.NS_PREFIX_FIREARM_REGISTRATION_QUERY_REQUEST_DOC + ":PersonFirearmRegistrationRequest/" + OjbcNamespaceContext.NS_PREFIX_FIREARM_REGISTRATION_QUERY_REQUEST_EXT + ":PersonFirearmRegistrationIdentification/" + OjbcNamespaceContext.NS_PREFIX_NC + ":IdentificationSourceText"; Element systemElement = (Element) XmlUtils.xPathNodeSearch(queryRequestMessage, xPath); if (systemElement == null) { throw new IllegalArgumentException( "Invalid query request message: must specify the system to query."); } Element systemIdElement = (Element) XmlUtils.xPathNodeSearch(queryRequestMessage, OjbcNamespaceContext.NS_PREFIX_FIREARM_REGISTRATION_QUERY_REQUEST_DOC + ":PersonFirearmRegistrationRequest/" + OjbcNamespaceContext.NS_PREFIX_FIREARM_REGISTRATION_QUERY_REQUEST_EXT + ":PersonFirearmRegistrationIdentification/" + OjbcNamespaceContext.NS_PREFIX_NC + ":IdentificationID"); documentId = systemIdElement.getTextContent(); systemId = systemElement.getTextContent(); } else if (OjbcNamespaceContext.NS_FIREARM_REGISTRATION_QUERY_REQUEST_DOC.equals(rootElementNamespace) && "FirearmRegistrationRequest".equals(rootElementLocalName)) { String xPath = OjbcNamespaceContext.NS_PREFIX_FIREARM_REGISTRATION_QUERY_REQUEST_DOC + ":FirearmRegistrationRequest/" + OjbcNamespaceContext.NS_PREFIX_FIREARM_REGISTRATION_QUERY_REQUEST_EXT + ":FirearmRegistrationIdentification/" + OjbcNamespaceContext.NS_PREFIX_NC + ":IdentificationSourceText"; Element systemElement = (Element) XmlUtils.xPathNodeSearch(queryRequestMessage, xPath); if (systemElement == null) { throw new IllegalArgumentException( "Invalid query request message: must specify the system to query."); } Element systemIdElement = (Element) XmlUtils.xPathNodeSearch(queryRequestMessage, OjbcNamespaceContext.NS_PREFIX_FIREARM_REGISTRATION_QUERY_REQUEST_DOC + ":FirearmRegistrationRequest/" + OjbcNamespaceContext.NS_PREFIX_FIREARM_REGISTRATION_QUERY_REQUEST_EXT + ":FirearmRegistrationIdentification/" + OjbcNamespaceContext.NS_PREFIX_NC + ":IdentificationID"); documentId = systemIdElement.getTextContent(); systemId = systemElement.getTextContent(); } else if (OjbcNamespaceContext.NS_JUVENILE_HISTORY_QUERY_REQUEST_DOC.equals(rootElementNamespace) && "JuvenileHistoryQuery".equals(rootElementLocalName)) { String xPath = OjbcNamespaceContext.NS_PREFIX_JUVENILE_HISTORY_QUERY_REQUEST_DOC + ":JuvenileHistoryQuery/" + OjbcNamespaceContext.NS_PREFIX_JUVENILE_HISTORY_EXT + ":JuvenileHistoryQueryCriteria/" + OjbcNamespaceContext.NS_PREFIX_JUVENILE_HISTORY_EXT + ":JuvenileInformationRecordID/" + OjbcNamespaceContext.NS_PREFIX_NC_30 + ":IdentificationSourceText"; Element systemElement = (Element) XmlUtils.xPathNodeSearch(queryRequestMessage, xPath); if (systemElement == null) { throw new IllegalArgumentException( "Invalid query request message: must specify the system to query."); } Element systemIdElement = (Element) XmlUtils.xPathNodeSearch(queryRequestMessage, OjbcNamespaceContext.NS_PREFIX_JUVENILE_HISTORY_QUERY_REQUEST_DOC + ":JuvenileHistoryQuery/" + OjbcNamespaceContext.NS_PREFIX_JUVENILE_HISTORY_EXT + ":JuvenileHistoryQueryCriteria/" + OjbcNamespaceContext.NS_PREFIX_JUVENILE_HISTORY_EXT + ":JuvenileInformationRecordID/" + OjbcNamespaceContext.NS_PREFIX_NC_30 + ":IdentificationID"); documentId = systemIdElement.getTextContent(); systemId = systemElement.getTextContent(); } else { Element systemElement = (Element) XmlUtils.xPathNodeSearch(rootElement, "pqr:PersonRecordRequestIdentification/nc:IdentificationSourceText"); if (systemElement == null) { throw new IllegalArgumentException( "Invalid query request message: must specify the system to query."); } Element systemIdElement = (Element) XmlUtils.xPathNodeSearch(rootElement, "pqr:PersonRecordRequestIdentification/nc:IdentificationID"); documentId = systemIdElement.getTextContent(); systemId = systemElement.getTextContent(); } if (CRIMINAL_HISTORY_MOCK_ADAPTER_QUERY_SYSTEM_ID.equals(systemId)) { return queryCriminalHistoryDocuments(documentId); } else if (WARRANT_MOCK_ADAPTER_QUERY_SYSTEM_ID.equals(systemId)) { return queryWarrantDocuments(documentId); } else if (INCIDENT_MOCK_ADAPTER_QUERY_SYSTEM_ID.equals(systemId)) { return queryIncidentDocuments(documentId); } else if (FIREARM_MOCK_ADAPTER_QUERY_BY_PERSON_SYSTEM_ID.equals(systemId)) { return queryPersonFirearmRegistrationDocuments(documentId); } else if (FIREARM_MOCK_ADAPTER_QUERY_BY_FIREARM_SYSTEM_ID.equals(systemId)) { return queryPersonFirearmRegistrationDocuments(documentId); } else if (JUVENILE_HISTORY_MOCK_ADAPTER_QUERY_SYSTEM_ID.equals(systemId)) { return queryJuvenileHistoryDocuments(documentId, context); } else if (CUSTODY_QUERY_SYSTEM_ID.equals(systemId)) { return queryCustodyDocuments(documentId); } else if (COURT_CASE_QUERY_SYSTEM_ID.equals(systemId)) { return queryCourtCaseDocuments(documentId); } else if (VEHICLE_CRASH_QUERY_SYSTEM_ID.equals(systemId)) { return queryVehicleCrashDocuments(documentId); } else { throw new IllegalArgumentException("Unknown system name: " + systemId); } }
From source file:org.ojbc.bundles.adapters.staticmock.StaticMockQuery.java
Document searchDocuments(Document searchRequestMessage, DateTime baseDate, Object context) throws Exception { Element rootElement = searchRequestMessage.getDocumentElement(); String rootNamespaceURI = rootElement.getNamespaceURI(); String rootLocalName = rootElement.getLocalName(); if (OjbcNamespaceContext.NS_PERSON_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "PersonSearchRequest".equals(rootLocalName)) { return personSearchDocuments(searchRequestMessage, baseDate); } else if (OjbcNamespaceContext.NS_CUSTODY_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "CustodySearchRequest".equals(rootLocalName)) { return custodySearchDocuments(searchRequestMessage, baseDate); } else if (OjbcNamespaceContext.NS_COURT_CASE_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "CourtCaseSearchRequest".equals(rootLocalName)) { return courtCaseSearchDocuments(searchRequestMessage, baseDate); } else if (OjbcNamespaceContext.NS_INCIDENT_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "IncidentPersonSearchRequest".equals(rootLocalName)) { return incidentPersonSearchDocuments(searchRequestMessage, baseDate); } else if (OjbcNamespaceContext.NS_FIREARM_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "FirearmSearchRequest".equals(rootLocalName)) { return firearmSearchDocuments(searchRequestMessage); } else if (OjbcNamespaceContext.NS_INCIDENT_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "IncidentSearchRequest".equals(rootLocalName)) { return incidentSearchDocuments(searchRequestMessage, baseDate); } else if (OjbcNamespaceContext.NS_INCIDENT_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "IncidentVehicleSearchRequest".equals(rootLocalName)) { return incidentVehicleSearchDocuments(searchRequestMessage, baseDate); } else if (OjbcNamespaceContext.NS_VEHICLE_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "VehicleSearchRequest".equals(rootLocalName)) { return vehicleSearchDocuments(searchRequestMessage, baseDate); }/*w w w . j a v a 2 s . c o m*/ throw new IllegalArgumentException("Invalid message: {" + rootNamespaceURI + "}" + rootLocalName); }
From source file:org.ojbc.bundles.adapters.staticmock.StaticMockQuery.java
List<IdentifiableDocumentWrapper> incidentVehicleSearchDocumentsAsList( Document incidentVehicleSearchRequestMessage, DateTime baseDate) throws Exception { Element rootElement = incidentVehicleSearchRequestMessage.getDocumentElement(); String rootNamespaceURI = rootElement.getNamespaceURI(); String rootLocalName = rootElement.getLocalName(); if (!(OjbcNamespaceContext.NS_INCIDENT_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "IncidentVehicleSearchRequest".equals(rootLocalName))) { throw new IllegalArgumentException( "Invalid message, must have {" + OjbcNamespaceContext.NS_INCIDENT_SEARCH_REQUEST_DOC + "}IncidentVehicleSearchRequest as the root " + "instead of {" + rootNamespaceURI + "}" + rootLocalName); }//ww w . j a v a2 s. c o m NodeList systemElements = XmlUtils.xPathNodeListSearch(rootElement, "isr:SourceSystemNameText"); int systemElementCount; if (systemElements == null || (systemElementCount = systemElements.getLength()) == 0) { throw new IllegalArgumentException( "Invalid query request message: must specify at least one system to query."); } Element vehicleIdElement = (Element) XmlUtils.xPathNodeSearch(incidentVehicleSearchRequestMessage, "/isr-doc:IncidentVehicleSearchRequest/ivsr:Vehicle/ivsr:VehicleSystemIdentification/nc:IdentificationID"); List<IdentifiableDocumentWrapper> ret = new ArrayList<IdentifiableDocumentWrapper>(); if (vehicleIdElement != null) { String id = vehicleIdElement.getTextContent(); for (int i = 0; i < systemElementCount; i++) { for (IdentifiableDocumentWrapper dw : incidentDataSource.getDocuments()) { Document d = dw.getDocument(); Element documentVehicleIdElement = (Element) XmlUtils.xPathNodeSearch(d, "/ir:IncidentReport/lexspd:doPublish/lexs:PublishMessageContainer/lexs:PublishMessage/lexs:DataItemPackage/lexs:Digest/lexsdigest:EntityVehicle/nc:Vehicle/nc:VehicleIdentification/nc:IdentificationID"); String documentPersonId = documentVehicleIdElement.getTextContent(); if (id.equals(documentPersonId)) { ret.add(dw); } } } } return ret; }
From source file:org.ojbc.bundles.adapters.staticmock.StaticMockQuery.java
List<IdentifiableDocumentWrapper> vehicleSearchDocumentsAsList(Document vehicleSearchRequestMessage, DateTime baseDate) throws Exception { Element rootElement = vehicleSearchRequestMessage.getDocumentElement(); String rootNamespaceURI = rootElement.getNamespaceURI(); String rootLocalName = rootElement.getLocalName(); if (!(OjbcNamespaceContext.NS_VEHICLE_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "VehicleSearchRequest".equals(rootLocalName))) { throw new IllegalArgumentException("Invalid message, must have {" + OjbcNamespaceContext.NS_VEHICLE_SEARCH_REQUEST_DOC + "}VehicleSearchRequest as the root " + "instead of {" + rootNamespaceURI + "}" + rootLocalName); }// ww w .j a v a 2 s . c o m NodeList systemElements = XmlUtils.xPathNodeListSearch(rootElement, "vsr:SourceSystemNameText"); if (systemElements == null || systemElements.getLength() != 1) { throw new IllegalArgumentException( "Invalid query request message: must specify exactly one system to query."); } Node systemElementNode = systemElements.item(0); String systemId = systemElementNode.getTextContent(); if (!INCIDENT_MOCK_ADAPTER_VEHICLE_SEARCH_SYSTEM_ID.equals(systemId)) { throw new IllegalArgumentException( "Vehicle searches only allowed against static mock incident store. Illegal system: " + systemId); } List<IdentifiableDocumentWrapper> ret = new ArrayList<IdentifiableDocumentWrapper>(); String searchXPath = buildIncidentSearchXPathFromVehicleSearchMessage(vehicleSearchRequestMessage); String modelYearLowerString = XmlUtils.xPathStringSearch(vehicleSearchRequestMessage, "/vsr-doc:VehicleSearchRequest/vsr:Vehicle/vsr:VehicleYearRange/nc:StartDate/nc:Year"); String modelYearUpperString = XmlUtils.xPathStringSearch(vehicleSearchRequestMessage, "/vsr-doc:VehicleSearchRequest/vsr:Vehicle/vsr:VehicleYearRange/nc:EndDate/nc:Year"); if (searchXPath == null && isMissing(modelYearLowerString) && isMissing(modelYearUpperString)) { return ret; } for (IdentifiableDocumentWrapper dw : incidentDataSource.getDocuments()) { Document d = dw.getDocument(); LOG.debug("Searching document " + dw.getId()); boolean match = (searchXPath == null || XmlUtils.xPathNodeSearch(d, searchXPath) != null); LOG.debug("Match=" + match + " based on xpath eval"); if (match && (!(isMissing(modelYearLowerString) && isMissing(modelYearUpperString)))) { Integer modelYearLower = Integer.parseInt(modelYearLowerString); Integer modelYearUpper = Integer.parseInt(modelYearUpperString); String incidentVehicleModelYearString = XmlUtils.xPathStringSearch(d, "/ir:IncidentReport/lexspd:doPublish/lexs:PublishMessageContainer/lexs:PublishMessage/lexs:DataItemPackage/lexs:Digest/lexsdigest:EntityVehicle/nc:Vehicle/nc:ItemModelYearDate"); Integer incidentVehicleModelYear = null; try { incidentVehicleModelYear = Integer.parseInt(incidentVehicleModelYearString); } catch (NumberFormatException nfe) { nfe.printStackTrace(); LOG.warn("Unparsable vehicle model year: " + incidentVehicleModelYearString); } if (incidentVehicleModelYear == null) { match = false; } else { if (modelYearLower != null) { match = match && incidentVehicleModelYear >= modelYearLower; } if (modelYearUpper != null) { match = match && incidentVehicleModelYear <= modelYearUpper; } } } if (match) { ret.add(dw); } } return ret; }
From source file:org.ojbc.bundles.adapters.staticmock.StaticMockQuery.java
List<IdentifiableDocumentWrapper> incidentSearchDocumentsAsList(Document incidentSearchRequestMessage, DateTime baseDate) throws Exception { Element rootElement = incidentSearchRequestMessage.getDocumentElement(); String rootNamespaceURI = rootElement.getNamespaceURI(); String rootLocalName = rootElement.getLocalName(); if (!(OjbcNamespaceContext.NS_INCIDENT_SEARCH_REQUEST_DOC.equals(rootNamespaceURI) && "IncidentSearchRequest".equals(rootLocalName))) { throw new IllegalArgumentException("Invalid message, must have {" + OjbcNamespaceContext.NS_INCIDENT_SEARCH_REQUEST_DOC + "}IncidentSearchRequest as the root " + "instead of {" + rootNamespaceURI + "}" + rootLocalName); }/*from w w w . j a v a 2 s .c o m*/ NodeList systemElements = XmlUtils.xPathNodeListSearch(rootElement, "isr:SourceSystemNameText"); if (systemElements == null || systemElements.getLength() == 0) { throw new IllegalArgumentException( "Invalid query request message: must specify at least one system to query."); } List<IdentifiableDocumentWrapper> ret = new ArrayList<IdentifiableDocumentWrapper>(); String searchXPath = buildIncidentSearchXPathFromIncidentSearchMessage(incidentSearchRequestMessage); String dateLowerString = XmlUtils.xPathStringSearch(incidentSearchRequestMessage, "/isr-doc:IncidentSearchRequest/isr:Incident/nc:ActivityDateRange/nc:StartDate/nc:DateTime"); String dateUpperString = XmlUtils.xPathStringSearch(incidentSearchRequestMessage, "/isr-doc:IncidentSearchRequest/isr:Incident/nc:ActivityDateRange/nc:EndDate/nc:DateTime"); LOG.debug("dateLowerString=" + dateLowerString); LOG.debug("dateUpperString=" + dateUpperString); if (searchXPath == null && isMissing(dateLowerString) && isMissing(dateUpperString)) { return ret; } DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTimeParser(); for (IdentifiableDocumentWrapper dw : incidentDataSource.getDocuments()) { Document d = dw.getDocument(); LOG.debug("Searching document " + dw.getId()); boolean match = (searchXPath == null || XmlUtils.xPathNodeSearch(d, searchXPath) != null); LOG.debug("Match=" + match + " based on xpath eval"); if (match && (!(isMissing(dateLowerString) && isMissing(dateUpperString)))) { LOG.debug("In date evaluation"); String incidentStartDateString = XmlUtils.xPathStringSearch(d, "/ir:IncidentReport/lexspd:doPublish/lexs:PublishMessageContainer/lexs:PublishMessage/lexs:DataItemPackage/lexs:Digest/lexsdigest:EntityActivity/nc:Activity[nc:ActivityCategoryText='Incident']/nc:ActivityDateRange/nc:StartDate/nc:DateTime"); String incidentEndDateString = XmlUtils.xPathStringSearch(d, "/ir:IncidentReport/lexspd:doPublish/lexs:PublishMessageContainer/lexs:PublishMessage/lexs:DataItemPackage/lexs:Digest/lexsdigest:EntityActivity/nc:Activity[nc:ActivityCategoryText='Incident']/nc:ActivityDateRange/nc:EndDate/nc:DateTime"); if (isMissing(incidentStartDateString) && isMissing(incidentEndDateString)) { match = false; } else { DateTime incidentStartDateTime = null; DateTime incidentEndDateTime = null; try { incidentStartDateTime = dateTimeFormatter.parseDateTime(incidentStartDateString); incidentEndDateTime = dateTimeFormatter.parseDateTime(incidentEndDateString); } catch (Exception e) { e.printStackTrace(); LOG.warn("Unable to parse date (either " + incidentStartDateString + " or " + incidentEndDateString + "). Note that null dates are ok...just means it's not part of the incident"); } LOG.debug("incidentStartDateTime=" + incidentStartDateTime); LOG.debug("incidentEndDateTime=" + incidentEndDateTime); if (incidentStartDateTime == null && incidentEndDateTime == null) { match = false; } else { if (!isMissing(dateLowerString)) { DateTime lowerDateTime = dateTimeFormatter.parseDateTime(dateLowerString); if (incidentEndDateTime != null && incidentEndDateTime.isBefore(lowerDateTime)) { match = false; } else if (incidentEndDateTime == null && incidentStartDateTime.isBefore(lowerDateTime)) { match = false; } } if (!isMissing(dateUpperString)) { DateTime upperDateTime = dateTimeFormatter.parseDateTime(dateUpperString); if (incidentStartDateTime != null && incidentStartDateTime.isAfter(upperDateTime)) { match = false; } else if (incidentStartDateTime == null && incidentEndDateTime.isBefore(upperDateTime)) { match = false; } } } } } if (match) { ret.add(dw); } } return ret; }