use of org.oasis_open.docs.wsn.brw_2.PublisherRegistrationFailedFault in project cxf by apache.
the class AbstractNotificationBroker method handleRegisterPublisher.
public RegisterPublisherResponse handleRegisterPublisher(RegisterPublisher registerPublisherRequest) throws InvalidTopicExpressionFault, PublisherRegistrationFailedFault, PublisherRegistrationRejectedFault, ResourceUnknownFault, TopicNotSupportedFault {
AbstractPublisher publisher = null;
boolean success = false;
try {
publisher = createPublisher(idGenerator.generateSanitizedId());
publisher.register();
publisher.create(registerPublisherRequest);
RegisterPublisherResponse response = new RegisterPublisherResponse();
response.setPublisherRegistrationReference(publisher.getEpr());
if (publisher.getPublisherReference() != null) {
publishers.put(WSNHelper.getInstance().getWSAAddress(publisher.getPublisherReference()), publisher);
} else {
nonContactPublishers.add(publisher);
}
success = true;
return response;
} catch (EndpointRegistrationException e) {
LOGGER.log(Level.WARNING, "Unable to register new endpoint", e);
PublisherRegistrationFailedFaultType fault = new PublisherRegistrationFailedFaultType();
throw new PublisherRegistrationFailedFault("Unable to register new endpoint", fault, e);
} finally {
if (!success && publisher != null) {
try {
publisher.destroy();
} catch (ResourceNotDestroyedFault e) {
LOGGER.log(Level.INFO, "Error destroying publisher", e);
}
}
}
}
use of org.oasis_open.docs.wsn.brw_2.PublisherRegistrationFailedFault in project cxf by apache.
the class JmsPublisher method start.
@Override
protected void start() throws PublisherRegistrationFailedFault {
if (demand) {
try {
producers = new HashMap<>();
advisories = new ArrayList<>();
for (TopicExpressionType topic : this.topic) {
ConsumerEventSource advisory = new ConsumerEventSource(connection, topicConverter.toActiveMQTopic(topic));
advisory.setConsumerListener(this);
advisory.start();
advisories.add(advisory);
}
} catch (Exception e) {
PublisherRegistrationFailedFaultType fault = new PublisherRegistrationFailedFaultType();
throw new PublisherRegistrationFailedFault("Error starting demand-based publisher", fault, e);
}
}
}
use of org.oasis_open.docs.wsn.brw_2.PublisherRegistrationFailedFault in project cxf by apache.
the class AbstractPublisher method validatePublisher.
protected void validatePublisher(RegisterPublisher registerPublisherRequest) throws InvalidTopicExpressionFault, PublisherRegistrationFailedFault, PublisherRegistrationRejectedFault, ResourceUnknownFault, TopicNotSupportedFault {
// Check consumer reference
publisherReference = registerPublisherRequest.getPublisherReference();
// Check topic
topic = registerPublisherRequest.getTopic();
// Check demand based
demand = registerPublisherRequest.isDemand() != null ? registerPublisherRequest.isDemand().booleanValue() : false;
// Check all parameters
if (publisherReference == null && demand) {
PublisherRegistrationFailedFaultType fault = new PublisherRegistrationFailedFaultType();
throw new PublisherRegistrationFailedFault("Invalid PublisherReference: null", fault);
}
if (demand && (topic == null || topic.isEmpty())) {
InvalidTopicExpressionFaultType fault = new InvalidTopicExpressionFaultType();
throw new InvalidTopicExpressionFault("Must specify at least one topic for demand-based publishing", fault);
}
}
Aggregations