Search in sources :

Example 1 with PathHttpMethod

use of com.robo4j.socket.http.units.PathHttpMethod in project robo4j by Robo4J.

the class ReadDatagramSelectionKeyHandler method handle.

// TODO: 2/25/18 (miro) -> Datagram type -> not only string is possible
@Override
public SelectionKey handle() {
    final DatagramChannel channel = (DatagramChannel) key.channel();
    try {
        ByteBuffer buffer = serverContext.getPropertySafe(ByteBuffer.class, PROPERTY_BYTE_BUFFER);
        buffer.clear();
        channel.receive(buffer);
        buffer.flip();
        String message = ChannelBufferUtils.byteBufferToString(buffer);
        final String[] headerAndBody = message.split(HTTP_HEADER_BODY_DELIMITER);
        final String firstLine = RoboHttpUtils.correctLine(headerAndBody[0]);
        final String[] tokens = firstLine.split(HttpConstant.HTTP_EMPTY_SEP);
        final String body = headerAndBody[1];
        final ServerPathConfig serverPathConfig = serverContext.getPathConfig(new PathHttpMethod(tokens[1], null));
        final RoboReference<Object> roboReference = serverPathConfig.getRoboUnit();
        final SocketDecoder<Object, Object> decoder = codecRegistry.getDecoder(roboReference.getMessageType());
        final Object decodedMessage = decoder.decode(body);
        serverPathConfig.getRoboUnit().sendMessage(decodedMessage);
        final DatagramResponseProcess responseProcess = new DatagramResponseProcess(tokens[1], roboReference, decodedMessage);
        outBuffers.put(key, responseProcess);
        return key;
    } catch (IOException e) {
        throw new SocketException("hanlde", e);
    }
}
Also used : SocketException(com.robo4j.socket.http.SocketException) ServerPathConfig(com.robo4j.socket.http.units.ServerPathConfig) DatagramChannel(java.nio.channels.DatagramChannel) DatagramResponseProcess(com.robo4j.socket.http.request.DatagramResponseProcess) IOException(java.io.IOException) ByteBuffer(java.nio.ByteBuffer) PathHttpMethod(com.robo4j.socket.http.units.PathHttpMethod)

Example 2 with PathHttpMethod

use of com.robo4j.socket.http.units.PathHttpMethod in project robo4j by Robo4J.

the class WriteSelectionKeyHandler method sendMessageToTargetRoboReference.

private void sendMessageToTargetRoboReference(HttpResponseProcess process) {
    final ServerPathConfig pathConfig = serverContext.getPathConfig(new PathHttpMethod(process.getPath(), process.getMethod()));
    if (pathConfig.getRoboUnit() != null && pathConfig.getRoboUnit().getMessageType().equals(process.getResult().getClass())) {
        RoboReference<Object> reference = pathConfig.getRoboUnit();
        reference.sendMessage(process.getResult());
    } else {
        throw new IllegalStateException(String.format("process %s", process));
    }
}
Also used : ServerPathConfig(com.robo4j.socket.http.units.ServerPathConfig) PathHttpMethod(com.robo4j.socket.http.units.PathHttpMethod)

Example 3 with PathHttpMethod

use of com.robo4j.socket.http.units.PathHttpMethod in project robo4j by Robo4J.

the class DatagramPathUtils method updateDatagramServerContextPaths.

public static void updateDatagramServerContextPaths(final RoboContext context, final ServerContext serverContext, final Collection<HttpPathMethodDTO> paths) {
    final Map<PathHttpMethod, ServerPathConfig> resultPaths = paths.stream().map(e -> {
        RoboReference<Object> reference = context.getReference(e.getRoboUnit());
        return new ServerPathConfig(toPath(SystemPath.UNITS.getPath(), e.getRoboUnit()), reference, e.getMethod(), e.getCallbacks());
    }).collect(Collectors.toMap(e -> new PathHttpMethod(e.getPath(), null), e -> e));
    serverContext.addPaths(resultPaths);
}
Also used : ClientContext(com.robo4j.socket.http.units.ClientContext) Collection(java.util.Collection) ServerPathConfig(com.robo4j.socket.http.units.ServerPathConfig) HttpPathUtils.toPath(com.robo4j.socket.http.util.HttpPathUtils.toPath) PathHttpMethod(com.robo4j.socket.http.units.PathHttpMethod) Collectors(java.util.stream.Collectors) ServerContext(com.robo4j.socket.http.units.ServerContext) HttpPathMethodDTO(com.robo4j.socket.http.dto.HttpPathMethodDTO) Map(java.util.Map) RoboContext(com.robo4j.RoboContext) ClientPathConfig(com.robo4j.socket.http.units.ClientPathConfig) SystemPath(com.robo4j.socket.http.enums.SystemPath) RoboReference(com.robo4j.RoboReference) RoboReference(com.robo4j.RoboReference) ServerPathConfig(com.robo4j.socket.http.units.ServerPathConfig) PathHttpMethod(com.robo4j.socket.http.units.PathHttpMethod)

Example 4 with PathHttpMethod

use of com.robo4j.socket.http.units.PathHttpMethod in project robo4j by Robo4J.

the class HttpPathUtils method updateHttpServerContextPaths.

public static void updateHttpServerContextPaths(final RoboContext context, final ServerContext serverContext, final Collection<HttpPathMethodDTO> paths) {
    final Map<PathHttpMethod, ServerPathConfig> resultPaths = paths.stream().map(e -> {
        RoboReference<Object> reference = context.getReference(e.getRoboUnit());
        return HttpPathUtils.toHttpPathConfig(e, reference);
    }).collect(Collectors.toMap(e -> new PathHttpMethod(e.getPath(), e.getMethod()), e -> e));
    resultPaths.put(new PathHttpMethod(Utf8Constant.UTF8_SOLIDUS, HttpMethod.GET), new ServerPathConfig(Utf8Constant.UTF8_SOLIDUS, null, HttpMethod.GET));
    serverContext.addPaths(resultPaths);
}
Also used : StringConstants(com.robo4j.util.StringConstants) JsonReader(com.robo4j.socket.http.json.JsonReader) ClientContext(com.robo4j.socket.http.units.ClientContext) Collection(java.util.Collection) ServerPathConfig(com.robo4j.socket.http.units.ServerPathConfig) Set(java.util.Set) PathHttpMethod(com.robo4j.socket.http.units.PathHttpMethod) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) ServerContext(com.robo4j.socket.http.units.ServerContext) List(java.util.List) HttpPathMethodDTO(com.robo4j.socket.http.dto.HttpPathMethodDTO) Stream(java.util.stream.Stream) Map(java.util.Map) HttpMethod(com.robo4j.socket.http.HttpMethod) RoboContext(com.robo4j.RoboContext) ClientPathConfig(com.robo4j.socket.http.units.ClientPathConfig) SystemPath(com.robo4j.socket.http.enums.SystemPath) Utf8Constant(com.robo4j.util.Utf8Constant) JsonDocument(com.robo4j.socket.http.json.JsonDocument) Collections(java.util.Collections) RoboReference(com.robo4j.RoboReference) RoboReference(com.robo4j.RoboReference) ServerPathConfig(com.robo4j.socket.http.units.ServerPathConfig) PathHttpMethod(com.robo4j.socket.http.units.PathHttpMethod)

Aggregations

PathHttpMethod (com.robo4j.socket.http.units.PathHttpMethod)4 ServerPathConfig (com.robo4j.socket.http.units.ServerPathConfig)4 RoboContext (com.robo4j.RoboContext)2 RoboReference (com.robo4j.RoboReference)2 HttpPathMethodDTO (com.robo4j.socket.http.dto.HttpPathMethodDTO)2 SystemPath (com.robo4j.socket.http.enums.SystemPath)2 ClientContext (com.robo4j.socket.http.units.ClientContext)2 ClientPathConfig (com.robo4j.socket.http.units.ClientPathConfig)2 ServerContext (com.robo4j.socket.http.units.ServerContext)2 Collection (java.util.Collection)2 Map (java.util.Map)2 Collectors (java.util.stream.Collectors)2 HttpMethod (com.robo4j.socket.http.HttpMethod)1 SocketException (com.robo4j.socket.http.SocketException)1 JsonDocument (com.robo4j.socket.http.json.JsonDocument)1 JsonReader (com.robo4j.socket.http.json.JsonReader)1 DatagramResponseProcess (com.robo4j.socket.http.request.DatagramResponseProcess)1 HttpPathUtils.toPath (com.robo4j.socket.http.util.HttpPathUtils.toPath)1 StringConstants (com.robo4j.util.StringConstants)1 Utf8Constant (com.robo4j.util.Utf8Constant)1