/** * Returns the {@link SubscriptionId subscription identifier} contained into * the specified {@link SubscribeResponse subscribe response}. * * @param subscribeResponse * the subscribe response containing the subscription identifier. * * @return the subscription identifier contained into the specified * subscribe response. */ @SuppressWarnings("unchecked") public static SubscriptionId getSubcriptionId(SubscribeResponse subscribeResponse) { W3CEndpointReference subscriptionReference = subscribeResponse.getSubscriptionReference(); if (subscriptionReference != null) { Object referenceParameters = ReflectionUtils.getFieldValue( subscriptionReference, "referenceParameters"); if (referenceParameters != null) { List<Element> elements = (List<Element>) ReflectionUtils.getFieldValue( referenceParameters, "elements"); if (elements.size() > 0) { return getSubcriptionId(elements.get(0)); } } } return null; }
@Override protected Object startSubscription(TopicExpressionType topic) { try { Subscribe subscribeRequest = new Subscribe(); subscribeRequest.setConsumerReference(notificationBroker.getEpr()); subscribeRequest.setFilter(new FilterType()); subscribeRequest.getFilter().getAny().add( new JAXBElement<TopicExpressionType>(AbstractSubscription.QNAME_TOPIC_EXPRESSION, TopicExpressionType.class, topic)); SubscribeResponse response = notificationProducer.subscribe(subscribeRequest); return WSNHelper.getInstance() .getPort(response.getSubscriptionReference(), SubscriptionManager.class); } catch (Exception e) { LOGGER.log(Level.INFO, "Error while subscribing on-demand publisher", e); return null; } }
return new Subscription(response.getSubscriptionReference());