diff --git a/sentinel-cluster/sentinel-cluster-common-default/pom.xml b/sentinel-cluster/sentinel-cluster-common-default/pom.xml index d3f14e08..970432e6 100644 --- a/sentinel-cluster/sentinel-cluster-common-default/pom.xml +++ b/sentinel-cluster/sentinel-cluster-common-default/pom.xml @@ -13,7 +13,10 @@ jar - + + com.alibaba.csp + sentinel-core + \ No newline at end of file diff --git a/sentinel-cluster/sentinel-cluster-common-default/src/main/java/com/alibaba/csp/sentinel/cluster/annotation/RequestType.java b/sentinel-cluster/sentinel-cluster-common-default/src/main/java/com/alibaba/csp/sentinel/cluster/annotation/RequestType.java new file mode 100644 index 00000000..74224b84 --- /dev/null +++ b/sentinel-cluster/sentinel-cluster-common-default/src/main/java/com/alibaba/csp/sentinel/cluster/annotation/RequestType.java @@ -0,0 +1,41 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed 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 com.alibaba.csp.sentinel.cluster.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Request type annotation for handlers, codes, etc. + * + * @author Eric Zhao + * @since 1.4.0 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE}) +@Documented +public @interface RequestType { + + /** + * Type of the request to handle. + * + * @return type of the request + */ + int value(); +} diff --git a/sentinel-cluster/sentinel-cluster-common-default/src/main/java/com/alibaba/csp/sentinel/cluster/registry/ConfigSupplierRegistry.java b/sentinel-cluster/sentinel-cluster-common-default/src/main/java/com/alibaba/csp/sentinel/cluster/registry/ConfigSupplierRegistry.java new file mode 100644 index 00000000..63107d52 --- /dev/null +++ b/sentinel-cluster/sentinel-cluster-common-default/src/main/java/com/alibaba/csp/sentinel/cluster/registry/ConfigSupplierRegistry.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed 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 com.alibaba.csp.sentinel.cluster.registry; + +import com.alibaba.csp.sentinel.log.RecordLog; +import com.alibaba.csp.sentinel.util.AppNameUtil; +import com.alibaba.csp.sentinel.util.AssertUtil; +import com.alibaba.csp.sentinel.util.function.Supplier; + +/** + * @author Eric Zhao + * @since 1.4.0 + */ +public final class ConfigSupplierRegistry { + + /** + * The default namespace supplier provides appName as namespace. + */ + private static final Supplier DEFAULT_APP_NAME_SUPPLIER = new Supplier() { + @Override + public String get() { + return AppNameUtil.getAppName(); + } + }; + /** + * Registered namespace supplier. + */ + private static Supplier namespaceSupplier = DEFAULT_APP_NAME_SUPPLIER; + + /** + * Get the registered namespace supplier. + * + * @return the registered namespace supplier + */ + public static Supplier getNamespaceSupplier() { + return namespaceSupplier; + } + + public static void setNamespaceSupplier(Supplier namespaceSupplier) { + AssertUtil.notNull(namespaceSupplier, "namespaceSupplier cannot be null"); + ConfigSupplierRegistry.namespaceSupplier = namespaceSupplier; + RecordLog.info("[ConfigSupplierRegistry] New namespace supplier provided, current supplied: " + + namespaceSupplier.get()); + } + + private ConfigSupplierRegistry() {} +}