public static Topic getChannel(final Subscription subscription) { Assert.notNull(subscription); switch (subscription.getType()) { case DATA: return buildTopic(PubSubChannelPrefix.data, ((DataSubscription) subscription).getProviderId(), ((DataSubscription) subscription).getSensorId()); case ORDER: return buildTopic(PubSubChannelPrefix.order, ((OrderSubscription) subscription).getOwnerEntityId(), ((OrderSubscription) subscription).getSensorId()); case ALARM: return buildTopic(PubSubChannelPrefix.alarm, ((AlarmSubscription) subscription).getAlertId()); default: throw new IllegalArgumentException("Unknown subscription type:" + subscription.getType()); } }
private void checkTargetResourceState(final Subscription subscription) { Assert.notNull(subscription); switch (subscription.getType()) { case DATA: checkSensorState(((DataSubscription) subscription).getProviderId(), ((DataSubscription) subscription).getSensorId()); break; case ORDER: checkSensorState(((OrderSubscription) subscription).getOwnerEntityId(), ((OrderSubscription) subscription).getSensorId()); break; case ALARM: checkAlertState(((AlarmSubscription) subscription).getAlertId()); break; default: throw new IllegalArgumentException("Unknown subscription type:" + subscription.getType()); } }
@Override public void onPut(final SentiloRequest request, final SentiloResponse response) { LOGGER.debug("Executing subscribe PUT request"); debug(request); // The request follows the following pattern: // PUT /subscribe/{eventType}/{resourceId} // where {resourceId} may be composite (e.g. <providerId>/<sensorId>) validateResourceNumberParts(request, 2, 3); final Subscription subscription = parser.parseRequest(request); validator.validateRequestMessageOnPut(new SubscribeInputMessage(subscription)); if (subscription.getType().equals(SubscribeType.ALARM)) { subscription.setOwnerEntityId(alarmService.getAlertOwner(((AlarmSubscription) subscription).getAlertId())); } validateReadAccess(request.getEntitySource(), subscription.getOwnerEntityId()); subscribeService.subscribe(subscription); }
private SubscriptionMessage parseSubscriptionToSubscribeMessage(final Subscription subscription) { final SubscriptionMessage message = new SubscriptionMessage(); message.setType(subscription.getType().toString()); if (subscription.getNotificationParams() != null) { message.setEndpoint(subscription.getNotificationParams().getEndpoint()); message.setMaxRetries(subscription.getNotificationParams().getMaxRetries()); message.setRetryDelay(subscription.getNotificationParams().getRetryDelay()); } switch (subscription.getType()) { case DATA: message.setProvider(((DataSubscription) subscription).getProviderId()); message.setSensor(((DataSubscription) subscription).getSensorId()); break; case ALARM: message.setAlert(((AlarmSubscription) subscription).getAlertId()); break; case ORDER: message.setProvider(((OrderSubscription) subscription).getOwnerEntityId()); message.setSensor(((OrderSubscription) subscription).getSensorId()); break; } return message; }