terminationTime = validateInitialTerminationTime(strTerminationTime.trim());
}
// Check filter
if (subscribeRequest.getFilter() != null) {
for (Object f : subscribeRequest.getFilter().getAny()) {
JAXBElement e = null;
if (f instanceof JAXBElement) {
e = (JAXBElement) f;
f = e.getValue();
}
if (f instanceof TopicExpressionType) {
if (!e.getName().equals(QNAME_TOPIC_EXPRESSION)) {
InvalidTopicExpressionFaultType fault = new InvalidTopicExpressionFaultType();
throw new InvalidTopicExpressionFault("Unrecognized TopicExpression: " + e, fault);
}
topic = (TopicExpressionType) f;
} else if (f instanceof QueryExpressionType) {
if (e != null && e.getName().equals(QNAME_PRODUCER_PROPERTIES)) {
InvalidProducerPropertiesExpressionFaultType fault =
new InvalidProducerPropertiesExpressionFaultType();
throw new InvalidProducerPropertiesExpressionFault("ProducerProperties are not supported",
fault);
} else if (e != null && e.getName().equals(QNAME_MESSAGE_CONTENT)) {
if (contentFilter != null) {
InvalidMessageContentExpressionFaultType fault =
new InvalidMessageContentExpressionFaultType();
throw new InvalidMessageContentExpressionFault(
"Only one MessageContent filter can be specified", fault);
}
contentFilter = (QueryExpressionType) f;
// Defaults to XPath 1.0
if (contentFilter.getDialect() == null) {
contentFilter.setDialect(XPATH1_URI);
}
} else {
InvalidFilterFaultType fault = new InvalidFilterFaultType();
throw new InvalidFilterFault("Unrecognized filter: " + (e != null ? e.getName() : f), fault);
}
} else {
InvalidFilterFaultType fault = new InvalidFilterFaultType();
throw new InvalidFilterFault("Unrecognized filter: " + (e != null ? e.getName() : f), fault);
}
}
}
// Check policy
if (subscribeRequest.getSubscriptionPolicy() != null) {
for (Object p : subscribeRequest.getSubscriptionPolicy().getAny()) {
JAXBElement e = null;
if (p instanceof JAXBElement) {
e = (JAXBElement) p;
p = e.getValue();
}
if (p instanceof UseRaw) {
useRaw = true;
} else {
InvalidFilterFaultType fault = new InvalidFilterFaultType();