/*
 * 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.nacos.api.annotation;

import com.alibaba.nacos.api.PropertyKeyConst;

import java.lang.annotation.*;

/**
 * An annotation for Nacos Properties
 *
 * @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
 * @see PropertyKeyConst
 * @since 0.2.1
 */
@Target(ElementType.ANNOTATION_TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface NacosProperties {

    /**
     * The prefix of property name of Nacos
     */
    String PREFIX = "nacos.";

    /**
     * The property name of "endpoint"
     */
    String ENDPOINT = "endpoint";

    /**
     * The property name of "namespace"
     */
    String NAMESPACE = "namespace";

    /**
     * The property name of "access-key"
     */
    String ACCESS_KEY = "access-key";

    /**
     * The property name of "secret-key"
     */
    String SECRET_KEY = "secret-key";

    /**
     * The property name of "server-addr"
     */
    String SERVER_ADDR = "server-addr";

    /**
     * The property name of "context-path"
     */
    String CONTEXT_PATH = "context-path";

    /**
     * The property name of "cluster-name"
     */
    String CLUSTER_NAME = "cluster-name";

    /**
     * The property name of "encode"
     */
    String ENCODE = "encode";

    /**
     * The property name of "long-poll.timeout"
     */
    String CONFIG_LONG_POLL_TIMEOUT = "configLongPollTimeout";

    /**
     * The property name of "config.retry.time"
     */
    String CONFIG_RETRY_TIME = "configRetryTime";

    /**
     * The property name of "maxRetry"
     */
    String MAX_RETRY = "maxRetry";

    /**
     * The property name of "enableRemoteSyncConfig"
     */
    String ENABLE_REMOTE_SYNC_CONFIG = "enableRemoteSyncConfig";

    /**
     * The placeholder of endpoint, the value is <code>"${nacos.endpoint:}"</code>
     */
    String ENDPOINT_PLACEHOLDER = "${" + PREFIX + ENDPOINT + ":}";

    /**
     * The placeholder of endpoint, the value is <code>"${nacos.namespace:}"</code>
     */
    String NAMESPACE_PLACEHOLDER = "${" + PREFIX + NAMESPACE + ":}";

    /**
     * The placeholder of endpoint, the value is <code>"${nacos.access-key:}"</code>
     */
    String ACCESS_KEY_PLACEHOLDER = "${" + PREFIX + ACCESS_KEY + ":}";

    /**
     * The placeholder of endpoint, the value is <code>"${nacos.secret-key:}"</code>
     */
    String SECRET_KEY_PLACEHOLDER = "${" + PREFIX + SECRET_KEY + ":}";

    /**
     * The placeholder of endpoint, the value is <code>${nacos.server-addr:}"</code>
     */
    String SERVER_ADDR_PLACEHOLDER = "${" + PREFIX + SERVER_ADDR + ":}";

    /**
     * The placeholder of endpoint, the value is ${nacos.context-path:}"
     */
    String CONTEXT_PATH_PLACEHOLDER = "${" + PREFIX + CONTEXT_PATH + ":}";

    /**
     * The placeholder of endpoint, the value is <code>"${nacos.cluster-name:}"</code>
     */
    String CLUSTER_NAME_PLACEHOLDER = "${" + PREFIX + CLUSTER_NAME + ":}";

    /**
     * The placeholder of {@link NacosProperties#ENCODE encode}, the value is <code>"${nacos.encode:UTF-8}"</code>
     */
    String ENCODE_PLACEHOLDER = "${" + PREFIX + ENCODE + ":UTF-8}";

    /**
     * The placeholder of {@link NacosProperties#CONFIG_LONG_POLL_TIMEOUT configLongPollTimeout}, the value is <code>"${nacos.configLongPollTimeout:}"</code>
     */
    String CONFIG_LONG_POLL_TIMEOUT_PLACEHOLDER = "${" + PREFIX + CONFIG_LONG_POLL_TIMEOUT + ":}";

    /**
     * The placeholder of {@link NacosProperties#CONFIG_RETRY_TIME configRetryTime}, the value is <code>"${nacos.configRetryTime:}"</code>
     */
    String CONFIG_RETRY_TIME_PLACEHOLDER = "${" + PREFIX + CONFIG_RETRY_TIME + ":}";

    /**
     * The placeholder of {@link NacosProperties#MAX_RETRY maxRetry}, the value is <code>"${nacos.maxRetry:}"</code>
     */
    String MAX_RETRY_PLACEHOLDER = "${" + PREFIX + MAX_RETRY + ":}";

    /**
     * The placeholder of {@link NacosProperties#ENABLE_REMOTE_SYNC_CONFIG enableRemoteSyncConfig}, the value is <code>"${nacos.enableRemoteSyncConfig:}"</code>
     */
    String ENABLE_REMOTE_SYNC_CONFIG_PLACEHOLDER = "${" + PREFIX + ENABLE_REMOTE_SYNC_CONFIG + "}";

    /**
     * The property of "endpoint"
     *
     * @return empty as default value
     * @see #ENDPOINT_PLACEHOLDER
     */
    String endpoint() default ENDPOINT_PLACEHOLDER;

    /**
     * The property of "namespace"
     *
     * @return empty as default value
     * @see #NAMESPACE_PLACEHOLDER
     */
    String namespace() default NAMESPACE_PLACEHOLDER;

    /**
     * The property of "access-key"
     *
     * @return empty as default value
     * @see #ACCESS_KEY_PLACEHOLDER
     */
    String accessKey() default ACCESS_KEY_PLACEHOLDER;

    /**
     * The property of "secret-key"
     *
     * @return empty as default value
     * @see #SECRET_KEY_PLACEHOLDER
     */
    String secretKey() default SECRET_KEY_PLACEHOLDER;

    /**
     * The property of "server-addr"
     *
     * @return empty as default value
     * @see #SERVER_ADDR_PLACEHOLDER
     */
    String serverAddr() default SERVER_ADDR_PLACEHOLDER;

    /**
     * The property of "context-path"
     *
     * @return empty as default value
     * @see #CONTEXT_PATH_PLACEHOLDER
     */
    String contextPath() default CONTEXT_PATH_PLACEHOLDER;

    /**
     * The property of "cluster-name"
     *
     * @return empty as default value
     * @see #CLUSTER_NAME_PLACEHOLDER
     */
    String clusterName() default CLUSTER_NAME_PLACEHOLDER;

    /**
     * The property of "encode"
     *
     * @return "UTF-8" as default value
     * @see #ENCODE_PLACEHOLDER
     */
    String encode() default ENCODE_PLACEHOLDER;

    /**
     * The property of "configLongPollTimeout"
     *
     * @return empty as default value
     * @see #CONFIG_LONG_POLL_TIMEOUT_PLACEHOLDER
     */
    String configLongPollTimeout() default CONFIG_LONG_POLL_TIMEOUT_PLACEHOLDER;

    /**
     * The property of "configRetryTime"
     *
     * @return empty as default value
     * @see #CONFIG_RETRY_TIME_PLACEHOLDER
     */
    String configRetryTime() default CONFIG_RETRY_TIME_PLACEHOLDER;

    /**
     * The property of "maxRetry"
     *
     * @return empty as default value
     * @see #MAX_RETRY
     */
    String maxRetry() default MAX_RETRY_PLACEHOLDER;

    /**
     * The property of "enableRemoteSyncConfig"
     *
     * @return empty as default value
     * @see #ENABLE_REMOTE_SYNC_CONFIG
     */
    String enableRemoteSyncConfig() default ENABLE_REMOTE_SYNC_CONFIG_PLACEHOLDER;

}

@@ -4718,16 +4718,17 @@
 NFIG + %22
+:
 %7D%22;%0A%0A   

fix issue #1500