Class ClientEventService
- All Implemented Interfaces:
org.apache.camel.builder.ModelRoutesBuilder,org.apache.camel.CamelContextAware,org.apache.camel.Ordered,org.apache.camel.RoutesBuilder,org.apache.camel.spi.HasCamelContext,org.apache.camel.spi.ResourceAware,org.openremote.model.ContainerService
Messages always start with a message discriminator in all uppercase letters, followed by an optional JSON payload.
The following messages can be sent by a client:
SUBSCRIBE:{...}The payload is a serialized representation of
EventSubscriptionwith an optionalEventFilter. Clients can subscribe to receiveSharedEvents when they are published on the server. Subscriptions are handled byEvent.getEventType(java.lang.String).UNSUBSCRIBE:{...}The payload is a serialized representation of
CancelEventSubscription. If a client does not want to wait for expiration of its subscriptions, it can cancel a subscription.EVENT:{...}The payload is a serialized representation of a subtype of
SharedEvent. If the server does not recognize the event, it is silently ignored.
The following messages can be published/returned by the server:
UNAUTHORIZED:{...}The payload is a serialized representation of
UnauthorizedEventSubscription.EVENT:{...}The payload is a serialized representation of a subtype of
SharedEvent.EVENT:[...]The payload is an array of
SharedEvents.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Collection<EventAuthorizer> protected final Collection<EventSubscriptionAuthorizer> protected final Set<org.openremote.model.util.Pair<org.openremote.model.event.shared.EventSubscription<? extends org.openremote.model.event.Event>, Consumer<? extends org.openremote.model.event.Event>>> protected ExecutorServiceprotected Consumer<org.apache.camel.Exchange> protected GatewayServiceprotected ManagerIdentityServiceprotected static final System.Loggerprotected org.openremote.container.message.MessageBrokerServicestatic final intprotected static final Stringprotected booleanprotected org.openremote.container.timer.TimerServicestatic final StringFields inherited from class org.apache.camel.builder.RouteBuilder
logFields inherited from interface org.openremote.model.ContainerService
DEFAULT_PRIORITY, HIGH_PRIORITY, LOW_PRIORITY, MED_PRIORITYFields inherited from interface org.apache.camel.Ordered
HIGHEST, LOWEST -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddEventAuthorizer(EventAuthorizer authorizer) <T extends org.openremote.model.event.Event>
voidaddSubscription(Class<T> eventClass, Consumer<T> consumer) <T extends org.openremote.model.event.Event>
voidaddSubscription(Class<T> eventClass, org.openremote.model.event.shared.EventFilter<T> filter, Consumer<T> consumer) voidaddSubscription(org.openremote.model.event.shared.EventSubscription<? extends org.openremote.model.event.Event> eventSubscription, Consumer<? extends org.openremote.model.event.Event> consumer) Authorisation must be done before adding the subscription and is the responsibility of subscription creators.voidaddSubscriptionAuthorizer(EventSubscriptionAuthorizer authorizer) booleanauthorizeEventSubscription(String realm, org.openremote.container.security.AuthContext authContext, org.openremote.model.event.shared.EventSubscription<?> subscription) This handles basic authorisation checks for clients that want to subscribe to events in the system<T extends org.openremote.model.event.shared.SharedEvent>
booleanauthorizeEventWrite(String realm, org.openremote.container.security.AuthContext authContext, T event) This handles basic authorisation checks for clients that want to write an event to the system; this gets hit a lot so should be as performant as possiblevoidcloseWebsocketSession(String sessionKey) voidstatic StringgetClientId(org.apache.camel.Exchange exchange) intstatic StringgetSessionKey(org.apache.camel.Exchange exchange) voidinit(org.openremote.model.Container container) protected voidonWebsocketSubscriptionTriggered(String sessionKey, org.openremote.model.event.shared.EventSubscription<?> subscription, org.openremote.model.event.shared.SharedEvent event) <T extends org.openremote.model.event.Event>
voidpublishEvent(T event) Publish an event to interested subscribersvoidremoveSubscription(Consumer<? extends org.openremote.model.event.Event> consumer) protected <T extends org.openremote.model.event.Event>
voidsendToSubscribers(T event) voidsendToWebsocketSession(String sessionKey, Object data) voidsetGatewayInterceptor(Consumer<org.apache.camel.Exchange> consumer) This allows gateway connectors to intercept exchanges from gateway clients; it by-passes the standard processing including authorization so the interceptor provides its own authorization checks.voidstart(org.openremote.model.Container container) voidstop(org.openremote.model.Container container) toString()Methods inherited from class org.apache.camel.builder.RouteBuilder
addLifecycleInterceptor, addRoutes, addRoutesToCamelContext, addTemplatedRoutesToCamelContext, bindToRegistry, bindToRegistry, checkInitialized, configuration, configureRest, configureRests, configureRoute, configureRouteConfiguration, configureRoutes, configureRouteTemplate, configureTemplatedRoute, customize, customize, dataFormat, errorHandler, errorHandler, expression, from, from, from, fromF, fromV, fromV, getBeans, getOrder, getResource, getRestCollection, getRestConfiguration, getRests, getRouteCollection, getRoutes, getRouteTemplateCollection, getTemplatedRouteCollection, initializeCamelContext, intercept, interceptFrom, interceptFrom, interceptSendToEndpoint, loadRoutesBuilder, loadRoutesBuilder, onCompletion, onException, onException, populateBeans, populateOrUpdateRoutes, populateRests, populateRoutes, populateRouteTemplates, populateTemplatedRoutes, populateTransformers, populateValidators, prepareModel, property, propertyInject, removeLifecycleInterceptor, rest, rest, restConfiguration, routeTemplate, setErrorHandlerFactory, setResource, setRestCollection, setRouteTemplateCollection, setTemplatedRouteCollection, templatedRoute, tokenizer, transformer, updateRoutesToCamelContext, validatorMethods inherited from class org.apache.camel.builder.BuilderSupport
body, bodyAs, constant, constant, constant, createErrorHandlerBuilder, csimple, csimple, datasonnet, datasonnet, datasonnet, deadLetterChannel, deadLetterChannel, defaultErrorHandler, endpoint, endpoint, exceptionMessage, exchangeProperty, expression, getCamelContext, getContext, getErrorHandlerFactory, hasErrorHandlerFactory, header, java, java, joor, joor, jq, jq, jsonpath, jsonpath, jtaTransactionErrorHandler, jtaTransactionErrorHandler, jtaTransactionErrorHandler, method, method, method, method, noErrorHandler, regexReplaceAll, regexReplaceAll, setCamelContext, simple, simple, simpleF, simpleF, springTransactionErrorHandler, springTransactionErrorHandler, springTransactionErrorHandler, systemProperty, systemProperty, variable, xpath, xpath, xpath, xpath
-
Field Details
-
PRIORITY
public static final int PRIORITY- See Also:
-
WEBSOCKET_URI
- See Also:
-
LOG
-
PUBLISH_QUEUE
- See Also:
-
eventSubscriptionAuthorizers
-
eventAuthorizers
-
eventSubscriptions
-
sessionChannels
-
websocketSessionSubscriptionConsumers
-
timerService
protected org.openremote.container.timer.TimerService timerService -
executorService
-
messageBrokerService
protected org.openremote.container.message.MessageBrokerService messageBrokerService -
identityService
-
gatewayService
-
started
protected boolean started -
gatewayInterceptor
-
-
Constructor Details
-
ClientEventService
public ClientEventService()
-
-
Method Details
-
getSessionKey
-
getClientId
-
getPriority
public int getPriority()- Specified by:
getPriorityin interfaceorg.openremote.model.ContainerService
-
init
- Specified by:
initin interfaceorg.openremote.model.ContainerService- Throws:
Exception
-
configure
- Specified by:
configurein classorg.apache.camel.builder.RouteBuilder- Throws:
Exception
-
sendToSubscribers
protected <T extends org.openremote.model.event.Event> void sendToSubscribers(T event) -
addSubscription
public <T extends org.openremote.model.event.Event> void addSubscription(Class<T> eventClass, Consumer<T> consumer) throws IllegalStateException - Throws:
IllegalStateException
-
removeSubscription
-
start
public void start(org.openremote.model.Container container) - Specified by:
startin interfaceorg.openremote.model.ContainerService
-
stop
public void stop(org.openremote.model.Container container) - Specified by:
stopin interfaceorg.openremote.model.ContainerService
-
addSubscriptionAuthorizer
-
addEventAuthorizer
-
authorizeEventWrite
public <T extends org.openremote.model.event.shared.SharedEvent> boolean authorizeEventWrite(String realm, org.openremote.container.security.AuthContext authContext, T event) This handles basic authorisation checks for clients that want to write an event to the system; this gets hit a lot so should be as performant as possible -
publishEvent
public <T extends org.openremote.model.event.Event> void publishEvent(T event) Publish an event to interested subscribers -
setGatewayInterceptor
This allows gateway connectors to intercept exchanges from gateway clients; it by-passes the standard processing including authorization so the interceptor provides its own authorization checks. -
sendToWebsocketSession
-
closeWebsocketSession
-
toString
- Overrides:
toStringin classorg.apache.camel.builder.RouteBuilder
-