com.sap.cloud.sdk.cloudplatform.connectivity.ScpNeoDestinationParser Maven / Gradle / Ivy
/*
* Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved.
*/
package com.sap.cloud.sdk.cloudplatform.connectivity;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;
import javax.annotation.Nullable;
import org.slf4j.Logger;
import com.sap.cloud.sdk.cloudplatform.connectivity.exception.DestinationAccessException;
import com.sap.cloud.sdk.cloudplatform.logging.CloudLoggerFactory;
import com.sap.core.connectivity.api.configuration.DestinationConfiguration;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor( access = AccessLevel.PACKAGE )
class ScpNeoDestinationParser extends AbstractDestinationParser
{
private static final Logger logger = CloudLoggerFactory.getSanitizedLogger(ScpNeoDestinationParser.class);
private static final String PROPERTY_CLOUD_CONNECTOR_LOCATION_ID = "CloudConnectorLocationId";
private static final int DEFAULT_HTTPS_PORT = 443;
@Getter( AccessLevel.PACKAGE )
private final DestinationConfiguration destinationConfiguration;
@Nullable
@Override
URI getUri()
throws DestinationAccessException
{
@Nullable
final URI uri = super.getUri();
// for on-premise destinations, convert "https" to "http" while keeping port 443, if necessary
if( uri != null && getProxyType() == ProxyType.ON_PREMISE && "https".equals(uri.getScheme()) ) {
if( logger.isWarnEnabled() ) {
logger.warn(
"Rewriting on-premise destination \""
+ getName()
+ "\" with URI scheme \"https\" to use \"http\": "
+ uri
+ ". To resolve this warning, make sure to use \"http\" for on-premise destinations.");
}
// keep the default HTTPS port if no port was specified
final int port = uri.getPort() < 0 ? DEFAULT_HTTPS_PORT : uri.getPort();
try {
return new URI(
"http",
uri.getUserInfo(),
uri.getHost(),
port,
uri.getPath(),
uri.getQuery(),
uri.getFragment());
}
catch( final URISyntaxException e ) {
throw new DestinationAccessException("Invalid destination URI.", e);
}
}
return uri;
}
@Nullable
String getCloudConnectorLocationId()
{
return getPropertyIfExists(PROPERTY_CLOUD_CONNECTOR_LOCATION_ID);
}
@Override
Map getProperties()
throws DestinationAccessException
{
return destinationConfiguration.getAllProperties();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy