Search in sources :

Example 6 with Value

use of org.ballerinalang.connector.api.Value in project ballerina by ballerina-lang.

the class InitEndpoint method execute.

@Override
public void execute(Context context) {
    Struct clientEndpoint = BLangConnectorSPIUtil.getConnectorEndpointStruct(context);
    Struct clientEndpointConfig = clientEndpoint.getStructField(HttpConstants.CLIENT_ENDPOINT_CONFIG);
    String remoteUrl = clientEndpointConfig.getStringField(WebSocketConstants.CLIENT_URL_CONFIG);
    Value clientServiceType = clientEndpointConfig.getTypeField(WebSocketConstants.CLIENT_SERVICE_CONFIG);
    Service service = BLangConnectorSPIUtil.getServiceFromType(context.getProgramFile(), clientServiceType);
    if (service == null) {
        throw new BallerinaConnectorException("Cannot find client service: " + clientServiceType);
    }
    if (WebSocketConstants.WEBSOCKET_CLIENT_ENDPOINT_NAME.equals(service.getEndpointName())) {
        WebSocketService wsService = new WebSocketService(service);
        // TODO: Fix this validation
        // WebSocketServiceValidator.validateServiceEndpoint(wsService);
        WsClientConnectorConfig clientConnectorConfig = new WsClientConnectorConfig(remoteUrl);
        Value[] subProtocolValues = clientEndpointConfig.getArrayField(WebSocketConstants.CLIENT_SUBPROTOCOLS_CONFIG);
        if (subProtocolValues != null) {
            clientConnectorConfig.setSubProtocols(Arrays.stream(subProtocolValues).map(Value::getStringValue).toArray(String[]::new));
        }
        Map<String, Value> headerValues = clientEndpointConfig.getMapField(WebSocketConstants.CLIENT_CUSTOMHEADERS_CONFIG);
        if (headerValues != null) {
            clientConnectorConfig.addHeaders(getCustomHeaders(headerValues));
        }
        long idleTimeoutInSeconds = clientEndpointConfig.getIntField(WebSocketConstants.CLIENT_IDLETIMOUT_CONFIG);
        if (idleTimeoutInSeconds > 0) {
            clientConnectorConfig.setIdleTimeoutInMillis((int) (idleTimeoutInSeconds * 1000));
        }
        clientEndpointConfig.addNativeData(WebSocketConstants.CLIENT_SERVICE_CONFIG, wsService);
        clientEndpointConfig.addNativeData(WebSocketConstants.CLIENT_CONNECTOR_CONFIGS, clientConnectorConfig);
    } else {
        throw new BallerinaConnectorException("Incorrect endpoint: " + service.getEndpointName());
    }
    context.setReturnValues();
}
Also used : BallerinaConnectorException(org.ballerinalang.connector.api.BallerinaConnectorException) WsClientConnectorConfig(org.wso2.transport.http.netty.contract.websocket.WsClientConnectorConfig) Value(org.ballerinalang.connector.api.Value) Service(org.ballerinalang.connector.api.Service) WebSocketService(org.ballerinalang.net.http.WebSocketService) WebSocketService(org.ballerinalang.net.http.WebSocketService) Struct(org.ballerinalang.connector.api.Struct)

Example 7 with Value

use of org.ballerinalang.connector.api.Value in project ballerina by ballerina-lang.

the class InitEndpoint method setFilters.

/**
 * Extract and attach the ordered set of filters to the service endpoint.
 * @param endpointConfig endpoint configuration
 * @param serviceEndpoint service endpoint object
 */
private void setFilters(Struct endpointConfig, Struct serviceEndpoint) {
    Value[] filterValues = endpointConfig.getArrayField(HttpConstants.ENDPOINT_CONFIG_FILTERS);
    if (filterValues == null) {
        // no filters
        return;
    }
    HashSet<FilterHolder> filterFunctionSet = new LinkedHashSet<>();
    for (Value filterValue : filterValues) {
        filterFunctionSet.add(new FilterHolder(extractFilterFunction(filterValue.getVMValue(), 0), extractFilterFunction(filterValue.getVMValue(), 1)));
    }
    serviceEndpoint.addNativeData(HttpConstants.FILTERS, filterFunctionSet);
}
Also used : LinkedHashSet(java.util.LinkedHashSet) Value(org.ballerinalang.connector.api.Value) BValue(org.ballerinalang.model.values.BValue)

Aggregations

Value (org.ballerinalang.connector.api.Value)7 BValue (org.ballerinalang.model.values.BValue)4 ArrayList (java.util.ArrayList)2 BallerinaConnectorException (org.ballerinalang.connector.api.BallerinaConnectorException)2 Struct (org.ballerinalang.connector.api.Struct)2 BIterator (org.ballerinalang.model.values.BIterator)2 BMap (org.ballerinalang.model.values.BMap)2 BTypeDescValue (org.ballerinalang.model.values.BTypeDescValue)2 UnknownHostException (java.net.UnknownHostException)1 LinkedHashMap (java.util.LinkedHashMap)1 LinkedHashSet (java.util.LinkedHashSet)1 Map (java.util.Map)1 Service (org.ballerinalang.connector.api.Service)1 BBoolean (org.ballerinalang.model.values.BBoolean)1 BFloat (org.ballerinalang.model.values.BFloat)1 BInteger (org.ballerinalang.model.values.BInteger)1 BNewArray (org.ballerinalang.model.values.BNewArray)1 BRefType (org.ballerinalang.model.values.BRefType)1 BString (org.ballerinalang.model.values.BString)1 BStruct (org.ballerinalang.model.values.BStruct)1