blob: 1038f9aae3e818ad910b28b69007c53ea6a8985d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.quarkus.component.slack.graal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.oracle.svm.core.annotate.Alias;
import com.oracle.svm.core.annotate.RecomputeFieldValue;
import com.oracle.svm.core.annotate.Substitute;
import com.oracle.svm.core.annotate.TargetClass;
import com.oracle.svm.core.annotate.TargetElement;
import com.slack.api.SlackConfig;
import com.slack.api.audit.AuditConfig;
import com.slack.api.methods.MethodsConfig;
import com.slack.api.rate_limits.metrics.MetricsDatastore;
import com.slack.api.scim.SCIMConfig;
import com.slack.api.util.http.listener.DetailedLoggingListener;
import com.slack.api.util.http.listener.HttpResponseListener;
import com.slack.api.util.http.listener.ResponsePrettyPrintingListener;
import static com.oracle.svm.core.annotate.RecomputeFieldValue.Kind.Reset;
/**
* Avoids original impl of eagerly initialized static fields which leads to a
* started thread via com.slack.api.rate_limits.metrics.impl.BaseMemoryMetricsDatastore.MaintenanceJob
*/
final class SlackSubstitutions {
}
@TargetClass(SlackConfig.class)
final class SlackConfigSubstitutions {
@Alias
@RecomputeFieldValue(kind = Reset)
private AuditConfig auditConfig = new AuditConfig() {
void throwException() {
throw new UnsupportedOperationException("This config is immutable");
}
@Override
public void setStatsEnabled(boolean statsEnabled) {
throwException();
}
@Override
public void setExecutorName(String executorName) {
throwException();
}
@Override
public void setMaxIdleMills(int maxIdleMills) {
throwException();
}
@Override
public void setDefaultThreadPoolSize(int defaultThreadPoolSize) {
throwException();
}
@Override
public void setMetricsDatastore(MetricsDatastore metricsDatastore) {
throwException();
}
@Override
public void setCustomThreadPoolSizes(Map<String, Integer> customThreadPoolSizes) {
throwException();
}
};
@Alias
@RecomputeFieldValue(kind = Reset)
private MethodsConfig methodsConfig = new MethodsConfig() {
void throwException() {
throw new UnsupportedOperationException("This config is immutable");
}
@Override
public void setStatsEnabled(boolean statsEnabled) {
throwException();
}
@Override
public void setExecutorName(String executorName) {
throwException();
}
@Override
public void setMaxIdleMills(int maxIdleMills) {
throwException();
}
@Override
public void setDefaultThreadPoolSize(int defaultThreadPoolSize) {
throwException();
}
@Override
public void setMetricsDatastore(MetricsDatastore metricsDatastore) {
throwException();
}
@Override
public void setCustomThreadPoolSizes(Map<String, Integer> customThreadPoolSizes) {
throwException();
}
};
@Alias
@RecomputeFieldValue(kind = Reset)
private SCIMConfig sCIMConfig = new SCIMConfig() {
void throwException() {
throw new UnsupportedOperationException("This config is immutable");
}
@Override
public void setStatsEnabled(boolean statsEnabled) {
throwException();
}
@Override
public void setExecutorName(String executorName) {
throwException();
}
@Override
public void setMaxIdleMills(int maxIdleMills) {
throwException();
}
@Override
public void setDefaultThreadPoolSize(int defaultThreadPoolSize) {
throwException();
}
@Override
public void setMetricsDatastore(MetricsDatastore metricsDatastore) {
throwException();
}
@Override
public void setCustomThreadPoolSizes(Map<String, Integer> customThreadPoolSizes) {
throwException();
}
};
@Alias
private List<HttpResponseListener> httpClientResponseHandlers = new ArrayList();
@Substitute
@TargetElement(name = "SlackConfig")
public SlackConfigSubstitutions() {
httpClientResponseHandlers.add(new DetailedLoggingListener());
httpClientResponseHandlers.add(new ResponsePrettyPrintingListener());
}
}
@TargetClass(AuditConfig.class)
final class AuditConfigSubstitutions {
@Alias
@RecomputeFieldValue(kind = Reset)
public static AuditConfig DEFAULT_SINGLETON = null;
}
@TargetClass(MethodsConfig.class)
final class MethodsConfigSubstitutions {
@Alias
@RecomputeFieldValue(kind = Reset)
public static MethodsConfig DEFAULT_SINGLETON = null;
}
@TargetClass(SCIMConfig.class)
final class SCIMConfigSubstitutions {
@Alias
@RecomputeFieldValue(kind = Reset)
public static SCIMConfig DEFAULT_SINGLETON = null;
}