Search in sources :

Example 1 with InternalUriException

use of nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException in project mule-coap-connector by teslanet-nl.

the class Client method startObserver.

/**
 * Start observing a resource on a CoAP server.
 * @param params The observer parameters.
 * @param handlerBuilder The response handler parameters.
 * @throws InternalInvalidObserverException When the observer parameters are invalid.
 * @throws InternalUriException When the uri parameters of the resource to observe are invalid.
 * @throws InternalInvalidHandlerNameException When the handler parameters are invalid.
 */
synchronized void startObserver(ObserverAddParams params, ResponseHandlerParams handlerBuilder) throws InternalInvalidObserverException, InternalUriException, InternalInvalidHandlerNameException {
    SourceCallback<InputStream, CoAPResponseAttributes> handler = getHandler(handlerBuilder.getResponseHandler());
    CoapRequestBuilderImpl requestBuilder = new CoapRequestBuilderImpl(params);
    URI uri = requestBuilder.buildResourceUri();
    ObserveRelation relation = getRelation(uri);
    if (relation != null) {
        // only one observe relation allowed per uri
        // TODO proactive or not, configurable?
        relation.stop();
        removeRelation(uri);
    }
    relation = new ObserveRelation("CoAP Observer { " + getClientName() + "::" + uri + " }", coapClient, requestBuilder, (requestUri, requestCode, response) -> this.processMuleFlow(requestUri, requestCode, response, handler));
    addRelation(uri, relation);
    relation.start();
}
Also used : ResponseCode(org.eclipse.californium.core.coap.CoAP.ResponseCode) Proxy(nl.teslanet.mule.connectors.coap.api.Proxy) DefaultResponseAttributes(nl.teslanet.mule.connectors.coap.internal.attributes.DefaultResponseAttributes) RemoteEndpointConfig(nl.teslanet.mule.connectors.coap.api.RemoteEndpointConfig) AbstractAddressParams(nl.teslanet.mule.connectors.coap.api.AbstractAddressParams) ConnectorException(org.eclipse.californium.elements.exception.ConnectorException) InitialisationException(org.mule.runtime.api.lifecycle.InitialisationException) LoggerFactory(org.slf4j.LoggerFactory) CoAPRequestCode(nl.teslanet.mule.connectors.coap.api.CoAPRequestCode) InternalClientErrorResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalClientErrorResponseException) CoapResponse(org.eclipse.californium.core.CoapResponse) ByteArrayInputStream(java.io.ByteArrayInputStream) LinkFormat(org.eclipse.californium.core.coap.LinkFormat) Map(java.util.Map) InternalInvalidObserverException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidObserverException) URI(java.net.URI) Endpoint(nl.teslanet.mule.connectors.coap.api.config.endpoint.Endpoint) RequestOptions(nl.teslanet.mule.connectors.coap.api.options.RequestOptions) ParameterDsl(org.mule.runtime.extension.api.annotation.dsl.xml.ParameterDsl) Startable(org.mule.runtime.api.lifecycle.Startable) ObserverExistsParams(nl.teslanet.mule.connectors.coap.api.ObserverExistsParams) PingParams(nl.teslanet.mule.connectors.coap.api.PingParams) AbstractEndpoint(nl.teslanet.mule.connectors.coap.api.config.endpoint.AbstractEndpoint) MessageUtils(nl.teslanet.mule.connectors.coap.internal.utils.MessageUtils) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Token(org.eclipse.californium.core.coap.Token) Set(java.util.Set) InternalInvalidByteArrayValueException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidByteArrayValueException) AbstractQueryParams(nl.teslanet.mule.connectors.coap.api.AbstractQueryParams) RequestParams(nl.teslanet.mule.connectors.coap.api.RequestParams) Request(org.eclipse.californium.core.coap.Request) WebLink(org.eclipse.californium.core.WebLink) Sources(org.mule.runtime.extension.api.annotation.Sources) AbstractResourceParams(nl.teslanet.mule.connectors.coap.api.AbstractResourceParams) AbstractResourceRequestParams(nl.teslanet.mule.connectors.coap.api.AbstractResourceRequestParams) InternalRequestException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalRequestException) MediaType(org.mule.runtime.api.metadata.MediaType) Expression(org.mule.runtime.extension.api.annotation.Expression) InternalEndpointException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalEndpointException) Summary(org.mule.runtime.extension.api.annotation.param.display.Summary) CoapClient(org.eclipse.californium.core.CoapClient) Operations(org.mule.runtime.extension.api.annotation.Operations) ObserverRemoveParams(nl.teslanet.mule.connectors.coap.api.ObserverRemoveParams) InternalUriException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException) ProxyConfig(nl.teslanet.mule.connectors.coap.api.ProxyConfig) InternalInvalidRequestCodeException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidRequestCodeException) Configuration(org.mule.runtime.extension.api.annotation.Configuration) InternalInvalidHandlerNameException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidHandlerNameException) Inject(javax.inject.Inject) Placement(org.mule.runtime.extension.api.annotation.param.display.Placement) InternalInvalidOptionValueException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidOptionValueException) MuleException(org.mule.runtime.api.exception.MuleException) CoAPRequestType(nl.teslanet.mule.connectors.coap.api.CoAPRequestType) RemoteEndpoint(nl.teslanet.mule.connectors.coap.api.RemoteEndpoint) InternalInvalidResponseCodeException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidResponseCodeException) DefaultResponseOptionsAttributes(nl.teslanet.mule.connectors.coap.internal.options.DefaultResponseOptionsAttributes) MediaTypeRegistry(org.eclipse.californium.core.coap.MediaTypeRegistry) CoAPResponseAttributes(nl.teslanet.mule.connectors.coap.api.CoAPResponseAttributes) EndpointConstructionException(nl.teslanet.mule.connectors.coap.internal.exceptions.EndpointConstructionException) InternalNoResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalNoResponseException) Optional(org.mule.runtime.extension.api.annotation.param.Optional) Parameter(org.mule.runtime.extension.api.annotation.param.Parameter) ParameterGroup(org.mule.runtime.extension.api.annotation.param.ParameterGroup) Type(org.eclipse.californium.core.coap.CoAP.Type) Disposable(org.mule.runtime.api.lifecycle.Disposable) SchedulerConfig(org.mule.runtime.api.scheduler.SchedulerConfig) OperationalEndpoint(nl.teslanet.mule.connectors.coap.internal.OperationalEndpoint) TransformationService(org.mule.runtime.api.transformation.TransformationService) ObserverAddParams(nl.teslanet.mule.connectors.coap.api.ObserverAddParams) SourceCallback(org.mule.runtime.extension.api.runtime.source.SourceCallback) Logger(org.slf4j.Logger) SourceCallbackContext(org.mule.runtime.extension.api.runtime.source.SourceCallbackContext) ExpressionSupport(org.mule.runtime.api.meta.ExpressionSupport) ResponseHandlerParams(nl.teslanet.mule.connectors.coap.api.ResponseHandlerParams) MediaTypeMediator(nl.teslanet.mule.connectors.coap.internal.options.MediaTypeMediator) IOException(java.io.IOException) SchedulerService(org.mule.runtime.api.scheduler.SchedulerService) Initialisable(org.mule.runtime.api.lifecycle.Initialisable) InternalUnexpectedResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUnexpectedResponseException) Result(org.mule.runtime.extension.api.runtime.operation.Result) InternalResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalResponseException) TypedValue(org.mule.runtime.api.metadata.TypedValue) Code(org.eclipse.californium.core.coap.CoAP.Code) InternalServerErrorResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalServerErrorResponseException) CoapHandler(org.eclipse.californium.core.CoapHandler) Stoppable(org.mule.runtime.api.lifecycle.Stoppable) RefName(org.mule.runtime.extension.api.annotation.param.RefName) CoAPConnector(nl.teslanet.mule.connectors.coap.internal.CoAPConnector) AttributeUtils(nl.teslanet.mule.connectors.coap.internal.attributes.AttributeUtils) DiscoverParams(nl.teslanet.mule.connectors.coap.api.DiscoverParams) InputStream(java.io.InputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) CoAPResponseAttributes(nl.teslanet.mule.connectors.coap.api.CoAPResponseAttributes) URI(java.net.URI)

Example 2 with InternalUriException

use of nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException in project mule-coap-connector by teslanet-nl.

the class Client method ping.

/**
 * See if server is reachable
 * @param pingbuilder The ping request parameters.
 * @return true
 * @throws ConnectorException
 * @throws IOException
 * @throws InternalUriException
 */
Boolean ping(PingParams pingbuilder) throws ConnectorException, IOException, InternalUriException {
    Request request;
    try {
        request = new CoapRequestBuilderImpl(pingbuilder).buildEmpty();
    } catch (Exception e) {
        throw new InternalUriException(e);
    }
    coapClient.advanced(request);
    return request.isRejected();
}
Also used : Request(org.eclipse.californium.core.coap.Request) InternalUriException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException) ConnectorException(org.eclipse.californium.elements.exception.ConnectorException) InitialisationException(org.mule.runtime.api.lifecycle.InitialisationException) InternalClientErrorResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalClientErrorResponseException) InternalInvalidObserverException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidObserverException) InternalInvalidByteArrayValueException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidByteArrayValueException) InternalRequestException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalRequestException) InternalEndpointException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalEndpointException) InternalUriException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException) InternalInvalidRequestCodeException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidRequestCodeException) InternalInvalidHandlerNameException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidHandlerNameException) InternalInvalidOptionValueException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidOptionValueException) MuleException(org.mule.runtime.api.exception.MuleException) InternalInvalidResponseCodeException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidResponseCodeException) EndpointConstructionException(nl.teslanet.mule.connectors.coap.internal.exceptions.EndpointConstructionException) InternalNoResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalNoResponseException) IOException(java.io.IOException) InternalUnexpectedResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUnexpectedResponseException) InternalResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalResponseException) InternalServerErrorResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalServerErrorResponseException)

Example 3 with InternalUriException

use of nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException in project mule-coap-connector by teslanet-nl.

the class ClientOperations method discover.

/**
 * The Discover processor retrieves information about CoAP resources of a
 * server.
 *
 * @param client         The client to use to issue the request.
 * @param discoverParams The attributes of the discover request
 * @return The description of resources on the server that have been discovered.
 */
@Throws({ DiscoverErrorProvider.class })
public Set<DiscoveredResource> discover(@Config Client client, @ParameterGroup(name = "Discover address") DiscoverParams discoverParams) {
    Set<WebLink> links = null;
    try {
        links = client.discover(discoverParams);
    } catch (IOException | ConnectorException e) {
        throw new EndpointException(client + discoverErrorMsg, e);
    } catch (InternalUriException e) {
        throw new UriException(client + discoverErrorMsg, e);
    } catch (InternalUnexpectedResponseException | InternalInvalidResponseCodeException | InternalResponseException e) {
        throw new ResponseException(client + discoverErrorMsg, e);
    } catch (InternalNoResponseException e) {
        throw new NoResponseException(client + discoverErrorMsg, e);
    } catch (InternalClientErrorResponseException e) {
        throw new ResponseException(client + discoverErrorMsg, e);
    } catch (InternalServerErrorResponseException e) {
        throw new ServerErrorResponseException(client + discoverErrorMsg, e);
    } catch (InternalInvalidRequestCodeException e) {
        throw new InvalidRequestCodeException(client + discoverErrorMsg, e);
    } catch (InternalRequestException e) {
        throw new RequestException(client + discoverErrorMsg, e);
    }
    TreeSet<DiscoveredResource> resultSet = new TreeSet<DiscoveredResource>();
    for (WebLink link : links) {
        resultSet.add(new DiscoveredResource(link.getURI(), link.getAttributes().hasObservable(), link.getAttributes().getTitle(), link.getAttributes().getInterfaceDescriptions(), link.getAttributes().getResourceTypes(), link.getAttributes().getMaximumSizeEstimate(), link.getAttributes().getContentTypes()));
    }
    return Collections.unmodifiableSortedSet(resultSet);
}
Also used : InternalClientErrorResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalClientErrorResponseException) InternalClientErrorResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalClientErrorResponseException) ClientErrorResponseException(nl.teslanet.mule.connectors.coap.api.error.ClientErrorResponseException) NoResponseException(nl.teslanet.mule.connectors.coap.api.error.NoResponseException) ResponseException(nl.teslanet.mule.connectors.coap.api.error.ResponseException) ServerErrorResponseException(nl.teslanet.mule.connectors.coap.api.error.ServerErrorResponseException) InternalNoResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalNoResponseException) InternalUnexpectedResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUnexpectedResponseException) InternalResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalResponseException) InternalServerErrorResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalServerErrorResponseException) InternalInvalidRequestCodeException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidRequestCodeException) InternalServerErrorResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalServerErrorResponseException) RequestException(nl.teslanet.mule.connectors.coap.api.error.RequestException) InternalRequestException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalRequestException) ServerErrorResponseException(nl.teslanet.mule.connectors.coap.api.error.ServerErrorResponseException) InternalServerErrorResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalServerErrorResponseException) DiscoveredResource(nl.teslanet.mule.connectors.coap.api.DiscoveredResource) InternalInvalidResponseCodeException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidResponseCodeException) InternalUnexpectedResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUnexpectedResponseException) TreeSet(java.util.TreeSet) UriException(nl.teslanet.mule.connectors.coap.api.error.UriException) InternalUriException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException) InternalRequestException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalRequestException) IOException(java.io.IOException) InternalResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalResponseException) InternalNoResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalNoResponseException) WebLink(org.eclipse.californium.core.WebLink) InternalEndpointException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalEndpointException) EndpointException(nl.teslanet.mule.connectors.coap.api.error.EndpointException) ConnectorException(org.eclipse.californium.elements.exception.ConnectorException) NoResponseException(nl.teslanet.mule.connectors.coap.api.error.NoResponseException) InternalNoResponseException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalNoResponseException) InternalUriException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException) InternalInvalidRequestCodeException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidRequestCodeException) InvalidRequestCodeException(nl.teslanet.mule.connectors.coap.api.error.InvalidRequestCodeException) Throws(org.mule.runtime.extension.api.annotation.error.Throws)

Example 4 with InternalUriException

use of nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException in project mule-coap-connector by teslanet-nl.

the class Observer method onStart.

/* (non-Javadoc)
     * @see org.mule.runtime.extension.api.runtime.source.Source#onStart(org.mule.runtime.extension.api.runtime.source.SourceCallback)
     */
@Override
public void onStart(SourceCallback<InputStream, CoAPResponseAttributes> sourceCallback) throws MuleException {
    CoapRequestBuilder requestBuilder = client.new CoapRequestBuilderImpl(observerConfig);
    ;
    try {
        uri = requestBuilder.buildResourceUri();
    } catch (InternalUriException e) {
        throw new StartException(this + " failed to start, invalid uri. ", e);
    }
    relation = new ObserveRelation(this.toString(), client.getCoapClient(), requestBuilder, (requestUri, requestCode, response) -> {
        client.processMuleFlow(requestUri, requestCode, response, sourceCallback);
    });
    relation.start();
    logger.info(this + " started.");
}
Also used : Alias(org.mule.runtime.extension.api.annotation.Alias) SourceCallback(org.mule.runtime.extension.api.runtime.source.SourceCallback) Logger(org.slf4j.Logger) Source(org.mule.runtime.extension.api.runtime.source.Source) InternalUriException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException) LoggerFactory(org.slf4j.LoggerFactory) StartException(nl.teslanet.mule.connectors.coap.internal.exceptions.StartException) Config(org.mule.runtime.extension.api.annotation.param.Config) MediaType(org.mule.runtime.extension.api.annotation.param.MediaType) MuleException(org.mule.runtime.api.exception.MuleException) CoAPResponseAttributes(nl.teslanet.mule.connectors.coap.api.CoAPResponseAttributes) URI(java.net.URI) ParameterGroup(org.mule.runtime.extension.api.annotation.param.ParameterGroup) InputStream(java.io.InputStream) StartException(nl.teslanet.mule.connectors.coap.internal.exceptions.StartException) InternalUriException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException)

Aggregations

IOException (java.io.IOException)3 InternalClientErrorResponseException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalClientErrorResponseException)3 InternalEndpointException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalEndpointException)3 InternalUriException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriException)3 InputStream (java.io.InputStream)2 URI (java.net.URI)2 CoAPResponseAttributes (nl.teslanet.mule.connectors.coap.api.CoAPResponseAttributes)2 EndpointConstructionException (nl.teslanet.mule.connectors.coap.internal.exceptions.EndpointConstructionException)2 InternalInvalidByteArrayValueException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidByteArrayValueException)2 InternalInvalidHandlerNameException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidHandlerNameException)2 InternalInvalidObserverException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidObserverException)2 InternalInvalidOptionValueException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidOptionValueException)2 InternalInvalidRequestCodeException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidRequestCodeException)2 InternalInvalidResponseCodeException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidResponseCodeException)2 InternalNoResponseException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalNoResponseException)2 InternalRequestException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalRequestException)2 InternalResponseException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalResponseException)2 InternalServerErrorResponseException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalServerErrorResponseException)2 InternalUnexpectedResponseException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUnexpectedResponseException)2 ConnectorException (org.eclipse.californium.elements.exception.ConnectorException)2