Response response = scribe.execute(request);
int code = response.getCode();
switch (code) {
- case HttpURLConnection.HTTP_MOVED_TEMP:
- case HttpURLConnection.HTTP_NOT_FOUND:
- case HttpURLConnection.HTTP_NO_CONTENT:
+ case HttpURLConnection.HTTP_MOVED_TEMP, HttpURLConnection.HTTP_NOT_FOUND, HttpURLConnection.HTTP_NO_CONTENT:
LOGGER.trace("Orgs response received : {}", code);
return code == HttpURLConnection.HTTP_NO_CONTENT;
default:
private static String data(Measure in) {
switch (in.getValueType()) {
- case NO_VALUE:
- case BOOLEAN:
- case INT:
- case LONG:
- case DOUBLE:
+ case NO_VALUE, BOOLEAN, INT, LONG, DOUBLE:
return in.getData();
case STRING:
return in.getStringValue();
*/
@CheckForNull
private static Double valueAsDouble(Measure measure) {
- switch (measure.getValueType()) {
- case BOOLEAN:
- return measure.getBooleanValue() ? 1.0D : 0.0D;
- case INT:
- return (double) measure.getIntValue();
- case LONG:
- return (double) measure.getLongValue();
- case DOUBLE:
- return measure.getDoubleValue();
- case NO_VALUE:
- case STRING:
- case LEVEL:
- default:
- return null;
- }
+ return switch (measure.getValueType()) {
+ case BOOLEAN -> measure.getBooleanValue() ? 1.0D : 0.0D;
+ case INT -> (double) measure.getIntValue();
+ case LONG -> (double) measure.getLongValue();
+ case DOUBLE -> measure.getDoubleValue();
+ default -> null;
+ };
}
}
@Override
public String generateSqlType(Dialect dialect) {
- switch (dialect.getId()) {
- case MsSql.ID:
- return "VARBINARY(MAX)";
- case Oracle.ID:
- case H2.ID:
- return "BLOB";
- case PostgreSql.ID:
- return "BYTEA";
- default:
- throw new IllegalArgumentException("Unsupported dialect id " + dialect.getId());
- }
+ return switch (dialect.getId()) {
+ case MsSql.ID -> "VARBINARY(MAX)";
+ case Oracle.ID, H2.ID -> "BLOB";
+ case PostgreSql.ID -> "BYTEA";
+ default -> throw new IllegalArgumentException("Unsupported dialect id " + dialect.getId());
+ };
}
public static Builder newBlobColumnDefBuilder() {
@Override
public String generateSqlType(Dialect dialect) {
switch (dialect.getId()) {
- case PostgreSql.ID:
- case H2.ID:
+ case PostgreSql.ID, H2.ID:
return "BOOLEAN";
case Oracle.ID:
return "NUMBER(1)";
switch (dialect.getId()) {
case MsSql.ID:
return "NVARCHAR (MAX)";
- case Oracle.ID:
- case H2.ID:
+ case Oracle.ID, H2.ID:
return "CLOB";
case PostgreSql.ID:
return "TEXT";
@Override
public String generateSqlType(Dialect dialect) {
- switch (dialect.getId()) {
- case PostgreSql.ID:
- case Oracle.ID:
- return String.format("NUMERIC (%s,%s)", precision, scale);
- case MsSql.ID:
- return String.format("DECIMAL (%s,%s)", precision, scale);
- case H2.ID:
- return "DOUBLE";
- default:
- throw new UnsupportedOperationException(String.format("Unknown dialect '%s'", dialect.getId()));
- }
+ return switch (dialect.getId()) {
+ case PostgreSql.ID, Oracle.ID -> String.format("NUMERIC (%s,%s)", precision, scale);
+ case MsSql.ID -> String.format("DECIMAL (%s,%s)", precision, scale);
+ case H2.ID -> "DOUBLE";
+ default -> throw new UnsupportedOperationException(String.format("Unknown dialect '%s'", dialect.getId()));
+ };
}
public static class Builder {
@Override
public String generateSqlType(Dialect dialect) {
- switch (dialect.getId()) {
- case PostgreSql.ID:
- case H2.ID:
- return "INTEGER";
- case MsSql.ID:
- return "INT";
- case Oracle.ID:
- return "NUMBER(38,0)";
- default:
- throw new IllegalArgumentException("Unsupported dialect id " + dialect.getId());
- }
+ return switch (dialect.getId()) {
+ case PostgreSql.ID, H2.ID -> "INTEGER";
+ case MsSql.ID -> "INT";
+ case Oracle.ID -> "NUMBER(38,0)";
+ default -> throw new IllegalArgumentException("Unsupported dialect id " + dialect.getId());
+ };
}
public static class Builder {
@Override
public String generateSqlType(Dialect dialect) {
- switch (dialect.getId()) {
- case MsSql.ID:
- return "DATETIME";
- case Oracle.ID:
- return "TIMESTAMP (6)";
- case H2.ID:
- case PostgreSql.ID:
- return "TIMESTAMP";
- default:
- throw new IllegalArgumentException("Unsupported dialect id " + dialect.getId());
- }
+ return switch (dialect.getId()) {
+ case MsSql.ID -> "DATETIME";
+ case Oracle.ID -> "TIMESTAMP (6)";
+ case H2.ID, PostgreSql.ID -> "TIMESTAMP";
+ default -> throw new IllegalArgumentException("Unsupported dialect id " + dialect.getId());
+ };
}
public static class Builder {
@Override
public String generateSqlType(Dialect dialect) {
- switch (dialect.getId()) {
- case PostgreSql.ID:
- return "SMALLINT";
- case Oracle.ID:
- return "NUMBER(3)";
- case MsSql.ID:
- case H2.ID:
- return "TINYINT";
- default:
- throw new UnsupportedOperationException(String.format("Unknown dialect '%s'", dialect.getId()));
- }
+ return switch (dialect.getId()) {
+ case PostgreSql.ID -> "SMALLINT";
+ case Oracle.ID -> "NUMBER(3)";
+ case MsSql.ID, H2.ID -> "TINYINT";
+ default -> throw new UnsupportedOperationException(String.format("Unknown dialect '%s'", dialect.getId()));
+ };
}
public static class Builder {
}
private String createSqlStatement() {
- switch (dialect.getId()) {
- case MsSql.ID:
- case Oracle.ID:
- case PostgreSql.ID:
- case H2.ID:
- return "ALTER TABLE " + tableName + " DROP CONSTRAINT " + constraintName;
- default:
- throw new IllegalStateException("Unsupported dialect for drop of constraint: " + dialect);
- }
+ return switch (dialect.getId()) {
+ case MsSql.ID, Oracle.ID, PostgreSql.ID, H2.ID -> "ALTER TABLE " + tableName + " DROP CONSTRAINT " + constraintName;
+ default -> throw new IllegalStateException("Unsupported dialect for drop of constraint: " + dialect);
+ };
}
}
}
public List<String> build() {
- switch (dialect.getId()) {
- case Oracle.ID:
- return forOracle(tableName);
- case H2.ID:
- case PostgreSql.ID:
- return singletonList("drop table if exists " + tableName);
- case MsSql.ID:
+ return switch (dialect.getId()) {
+ case Oracle.ID -> forOracle(tableName);
+ case H2.ID, PostgreSql.ID -> singletonList("drop table if exists " + tableName);
+ case MsSql.ID ->
// "if exists" is supported only since MSSQL 2016.
- return singletonList("drop table " + tableName);
- default:
- throw new IllegalStateException("Unsupported DB: " + dialect.getId());
- }
+ singletonList("drop table " + tableName);
+ default -> throw new IllegalStateException("Unsupported DB: " + dialect.getId());
+ };
}
private static List<String> forOracle(String tableName) {
private List<String> createSqlStatement() {
switch (dialect.getId()) {
- case H2.ID:
- case PostgreSql.ID:
+ case H2.ID, PostgreSql.ID:
return singletonList("ALTER TABLE " + name + " RENAME TO " + newName);
case MsSql.ID:
return singletonList("EXEC sp_rename '" + name + "', '" + newName + "'");
}
private String createSqlStatement() {
- switch (dialect.getId()) {
- case MsSql.ID:
- return "DROP INDEX " + indexName + " ON " + tableName;
- case Oracle.ID:
- return "DROP INDEX " + indexName;
- case H2.ID:
- case PostgreSql.ID:
- return "DROP INDEX IF EXISTS " + indexName;
- default:
- throw new IllegalStateException("Unsupported dialect for drop of index: " + dialect);
- }
+ return switch (dialect.getId()) {
+ case MsSql.ID -> "DROP INDEX " + indexName + " ON " + tableName;
+ case Oracle.ID -> "DROP INDEX " + indexName;
+ case H2.ID, PostgreSql.ID -> "DROP INDEX IF EXISTS " + indexName;
+ default -> throw new IllegalStateException("Unsupported dialect for drop of index: " + dialect);
+ };
}
}
}
private static ManagedProcessHandler.Timeout stopTimeoutFor(ProcessId processId, AppSettings settings) {
- switch (processId) {
- case ELASTICSEARCH:
- return HARD_STOP_TIMEOUT;
- case WEB_SERVER:
- return newTimeout(getStopTimeoutMs(settings, WEB_GRACEFUL_STOP_TIMEOUT), TimeUnit.MILLISECONDS);
- case COMPUTE_ENGINE:
- return newTimeout(getStopTimeoutMs(settings, CE_GRACEFUL_STOP_TIMEOUT), TimeUnit.MILLISECONDS);
- case APP:
- default:
- throw new IllegalArgumentException("Unsupported processId " + processId);
- }
+ return switch (processId) {
+ case ELASTICSEARCH -> HARD_STOP_TIMEOUT;
+ case WEB_SERVER -> newTimeout(getStopTimeoutMs(settings, WEB_GRACEFUL_STOP_TIMEOUT), TimeUnit.MILLISECONDS);
+ case COMPUTE_ENGINE -> newTimeout(getStopTimeoutMs(settings, CE_GRACEFUL_STOP_TIMEOUT), TimeUnit.MILLISECONDS);
+ default -> throw new IllegalArgumentException("Unsupported processId " + processId);
+ };
}
private static long getStopTimeoutMs(AppSettings settings, ProcessProperties.Property property) {
restartAsync();
}
break;
- case HARD_STOPPING:
- case STOPPING:
+ case HARD_STOPPING, STOPPING:
if (lastProcessStopped) {
finalizeStop();
}
@Override
public Collection<EsQueueDto> prepareForRecovery(DbSession dbSession, Collection<String> projectUuids, Cause cause) {
switch (cause) {
- case MEASURE_CHANGE:
- case PROJECT_TAGS_UPDATE:
- case PERMISSION_CHANGE:
+ case MEASURE_CHANGE, PROJECT_TAGS_UPDATE, PERMISSION_CHANGE:
// measures, tags and permissions are not part of type components/component
return emptyList();
-
- case PROJECT_CREATION:
- case PROJECT_DELETION:
- case PROJECT_KEY_UPDATE:
+ case PROJECT_CREATION, PROJECT_DELETION, PROJECT_KEY_UPDATE:
List<EsQueueDto> items = projectUuids.stream()
.map(branchUuid -> EsQueueDto.create(TYPE_COMPONENT.format(), branchUuid, null, branchUuid))
.collect(MoreCollectors.toArrayList(projectUuids.size()));
return dbClient.esQueueDao().insert(dbSession, items);
-
default:
// defensive case
throw new IllegalStateException("Unsupported cause: " + cause);
@Override
public Collection<EsQueueDto> prepareForRecovery(DbSession dbSession, Collection<String> projectUuids, ProjectIndexer.Cause cause) {
switch (cause) {
- case PROJECT_CREATION:
- // nothing to do, issues do not exist at project creation
- case MEASURE_CHANGE:
- case PROJECT_KEY_UPDATE:
- case PROJECT_TAGS_UPDATE:
- case PERMISSION_CHANGE:
- // nothing to do. Measures, permissions, project key and tags are not used in type issues/issue
+ case PROJECT_CREATION, MEASURE_CHANGE, PROJECT_KEY_UPDATE, PROJECT_TAGS_UPDATE, PERMISSION_CHANGE:
+ // Nothing to do, issues do not exist at project creation
+ // Measures, permissions, project key and tags are not used in type issues/issue
return emptyList();
case PROJECT_DELETION:
case PERMISSION_CHANGE:
// nothing to do, permissions are not used in type projectmeasures/projectmeasure
return Collections.emptyList();
- case MEASURE_CHANGE:
- case PROJECT_KEY_UPDATE:
- // project must be re-indexed because key is used in this index
- case PROJECT_CREATION:
- // provisioned projects are supported by WS api/components/search_projects
- case PROJECT_TAGS_UPDATE:
- case PROJECT_DELETION:
+ case MEASURE_CHANGE, PROJECT_KEY_UPDATE, PROJECT_CREATION, PROJECT_TAGS_UPDATE, PROJECT_DELETION:
+ // when MEASURE_CHANGE or PROJECT_KEY_UPDATE project must be re-indexed because key is used in this index
+ // when PROJECT_CREATION provisioned projects are supported by WS api/components/search_projects
List<EsQueueDto> items = projectUuids.stream()
.map(projectUuid -> EsQueueDto.create(TYPE_PROJECT_MEASURES.format(), projectUuid, null, projectUuid))
.collect(MoreCollectors.toArrayList(projectUuids.size()));
}
private static Comparable getNumericValue(ValueType type, double value) {
- switch (type) {
- case INT:
- case RATING:
- return (int) value;
- case FLOAT:
- case PERCENT:
- return value;
- case MILLISEC:
- case WORK_DUR:
- return (long) value;
- default:
- throw new IllegalArgumentException("Condition on numeric value is not allowed for type " + type);
- }
+ return switch (type) {
+ case INT, RATING -> (int) value;
+ case FLOAT, PERCENT -> value;
+ case MILLISEC, WORK_DUR -> (long) value;
+ default -> throw new IllegalArgumentException("Condition on numeric value is not allowed for type " + type);
+ };
}
private static int parseInteger(String value) {
private Response execute(Request request) throws IOException {
Response response = okHttpClient.newCall(request).execute();
- switch (response.code()) {
- case HTTP_MOVED_PERM:
- case HTTP_MOVED_TEMP:
- case HTTP_TEMP_REDIRECT:
- case HTTP_PERM_REDIRECT:
+ return switch (response.code()) {
+ case HTTP_MOVED_PERM, HTTP_MOVED_TEMP, HTTP_TEMP_REDIRECT, HTTP_PERM_REDIRECT ->
// OkHttpClient does not follow the redirect with the same HTTP method. A POST is
// redirected to a GET. Because of that the redirect must be manually
// implemented.
// See:
// https://github.com/square/okhttp/blob/07309c1c7d9e296014268ebd155ebf7ef8679f6c/okhttp/src/main/java/okhttp3/internal/http/RetryAndFollowUpInterceptor.java#L316
// https://github.com/square/okhttp/issues/936#issuecomment-266430151
- return followPostRedirect(response);
- default:
- return response;
- }
+ followPostRedirect(response);
+ default -> response;
+ };
}
/**
setBranch(builder, components.get(0), request.getBranch(), request.getPullRequest(), dbSession);
String qualifier = qualifiers.iterator().next();
switch (qualifier) {
- case Qualifiers.VIEW:
- case Qualifiers.SUBVIEW:
+ case Qualifiers.VIEW, Qualifiers.SUBVIEW:
addViewsOrSubViews(builder, components);
break;
case Qualifiers.APP:
case Qualifiers.DIRECTORY:
addDirectories(builder, components);
break;
- case Qualifiers.FILE:
- case Qualifiers.UNIT_TEST_FILE:
+ case Qualifiers.FILE, Qualifiers.UNIT_TEST_FILE:
builder.componentUuids(components.stream().map(ComponentDto::uuid).collect(toList()));
break;
default:
import org.sonar.server.es.IndexingResult;
import org.sonar.server.es.OneToOneResilientIndexingListener;
import org.sonar.server.es.ProjectIndexer;
+import org.springframework.beans.factory.annotation.Autowired;
import static java.util.Collections.emptyList;
import static org.sonar.core.util.stream.MoreCollectors.toArrayList;
-import org.springframework.beans.factory.annotation.Autowired;
/**
* Populates the types "authorization" of each index requiring project
@Override
public Collection<EsQueueDto> prepareForRecovery(DbSession dbSession, Collection<String> projectUuids, ProjectIndexer.Cause cause) {
- switch (cause) {
- case MEASURE_CHANGE:
- case PROJECT_KEY_UPDATE:
- case PROJECT_TAGS_UPDATE:
+ return switch (cause) {
+ case MEASURE_CHANGE, PROJECT_KEY_UPDATE, PROJECT_TAGS_UPDATE ->
// nothing to change. Measures, project key and tags are not part of this index
- return emptyList();
-
- case PROJECT_CREATION:
- case PROJECT_DELETION:
- case PERMISSION_CHANGE:
- return insertIntoEsQueue(dbSession, projectUuids);
-
- default:
+ emptyList();
+ case PROJECT_CREATION, PROJECT_DELETION, PERMISSION_CHANGE -> insertIntoEsQueue(dbSession, projectUuids);
+ default ->
// defensive case
throw new IllegalStateException("Unsupported cause: " + cause);
- }
+ };
}
private Collection<EsQueueDto> insertIntoEsQueue(DbSession dbSession, Collection<String> projectUuids) {
return Sets.newHashSet(Qualifiers.PROJECT);
}
- switch (edition.get()) {
- case ENTERPRISE:
- case DATACENTER:
- case DEVELOPER:
- return Sets.newHashSet(Qualifiers.PROJECT, Qualifiers.APP);
- default:
- return Sets.newHashSet(Qualifiers.PROJECT);
- }
+ return switch (edition.get()) {
+ case ENTERPRISE, DATACENTER, DEVELOPER -> Sets.newHashSet(Qualifiers.PROJECT, Qualifiers.APP);
+ default -> Sets.newHashSet(Qualifiers.PROJECT);
+ };
}
private static boolean hasFavoriteFilter(List<Criterion> criteria) {
@CheckForNull
static String formatMeasureValue(double doubleValue, @Nullable String stringValue, MetricDto metric) {
Metric.ValueType metricType = Metric.ValueType.valueOf(metric.getValueType());
- switch (metricType) {
- case BOOL:
- return formatBoolean(doubleValue);
- case INT:
- return formatInteger(doubleValue);
- case MILLISEC:
- case WORK_DUR:
- return formatLong(doubleValue);
- case FLOAT:
- case PERCENT:
- case RATING:
- return String.valueOf(doubleValue);
- case LEVEL:
- case STRING:
- case DATA:
- case DISTRIB:
- return stringValue;
- default:
- throw new IllegalArgumentException("Unsupported metric type: " + metricType.name());
- }
+ return switch (metricType) {
+ case BOOL -> formatBoolean(doubleValue);
+ case INT -> formatInteger(doubleValue);
+ case MILLISEC, WORK_DUR -> formatLong(doubleValue);
+ case FLOAT, PERCENT, RATING -> String.valueOf(doubleValue);
+ case LEVEL, STRING, DATA, DISTRIB -> stringValue;
+ default -> throw new IllegalArgumentException("Unsupported metric type: " + metricType.name());
+ };
}
static String formatNumericalValue(double value, MetricDto metric) {
Metric.ValueType metricType = Metric.ValueType.valueOf(metric.getValueType());
- switch (metricType) {
- case BOOL:
- return formatBoolean(value);
- case INT:
- return formatInteger(value);
- case MILLISEC:
- case WORK_DUR:
- return formatLong(value);
- case FLOAT:
- case PERCENT:
- case RATING:
- return String.valueOf(value);
- case LEVEL:
- case STRING:
- case DATA:
- case DISTRIB:
- default:
- throw new IllegalArgumentException(String.format("Unsupported metric type '%s' for numerical value", metricType.name()));
- }
+ return switch (metricType) {
+ case BOOL -> formatBoolean(value);
+ case INT -> formatInteger(value);
+ case MILLISEC, WORK_DUR -> formatLong(value);
+ case FLOAT, PERCENT, RATING -> String.valueOf(value);
+ default -> throw new IllegalArgumentException(String.format("Unsupported metric type '%s' for numerical value", metricType.name()));
+ };
}
private static String formatBoolean(double value) {
if (!edition.isPresent()) {
return false;
}
- switch (edition.get()) {
- case ENTERPRISE:
- case DATACENTER:
- return true;
- default:
- return false;
- }
+ return switch (edition.get()) {
+ case ENTERPRISE, DATACENTER -> true;
+ default -> false;
+ };
}
private void cleanUserHomepageInDb(DbSession dbSession, UserDto user) {
} else {
return projectDto.getUuid();
}
- case PORTFOLIO:
- case APPLICATION:
+ case PORTFOLIO, APPLICATION:
checkArgument(isNotBlank(componentParameter), PARAMETER_REQUIRED, type.name(), PARAM_COMPONENT);
return componentFinder.getByKey(dbSession, componentParameter).uuid();
- case PORTFOLIOS:
- case PROJECTS:
- case ISSUES:
+ case PORTFOLIOS, PROJECTS, ISSUES:
return null;
default:
throw new IllegalArgumentException(format("Unknown type '%s'", type.name()));
if (webappContext == null) {
return Status.DOWN;
}
- switch (webappContext.getState()) {
- case NEW:
- case INITIALIZING:
- case INITIALIZED:
- case STARTING_PREP:
- case STARTING:
- return Status.DOWN;
- case STARTED:
- return Status.UP;
- default:
+ return switch (webappContext.getState()) {
+ case NEW, INITIALIZING, INITIALIZED, STARTING_PREP, STARTING -> Status.DOWN;
+ case STARTED -> Status.UP;
+ default ->
// problem, stopped or failed
- return Status.FAILED;
- }
+ Status.FAILED;
+ };
}
public enum Status {