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();
}
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();
}
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);
}
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.");
}
Aggregations