blob: dcd43e21ea57815cdf14325a1852976f80d46dc3 [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.dubbo.config;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.support.Parameter;
import java.util.HashMap;
import java.util.Map;
import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;
import static org.apache.dubbo.common.constants.CommonConstants.PROPERTIES_CHAR_SEPARATOR;
import static org.apache.dubbo.common.utils.StringUtils.isEmpty;
/**
* MetadataReportConfig
*
* @export
*/
public class MetadataReportConfig extends AbstractConfig {
private static final long serialVersionUID = 55233L;
/**
* the value is : metadata-report
*/
private static final String PREFIX_TAG = StringUtils.camelToSplitName(
MetadataReportConfig.class.getSimpleName().substring(0, MetadataReportConfig.class.getSimpleName().length() - 6), PROPERTIES_CHAR_SEPARATOR);
// Register center address
private String address;
// Username to login register center
private String username;
// Password to login register center
private String password;
// Request timeout in milliseconds for register center
private Integer timeout;
/**
* The group the metadata in . It is the same as registry
*/
private String group;
// Customized parameters
private Map<String, String> parameters;
private Integer retryTimes;
private Integer retryPeriod;
/**
* By default the metadatastore will store full metadata repeatedly every day .
*/
private Boolean cycleReport;
/**
* Sync report, default async
*/
private Boolean syncReport;
/**
* cluster
*/
private Boolean cluster;
public MetadataReportConfig() {
}
public MetadataReportConfig(String address) {
setAddress(address);
}
public URL toUrl() throws IllegalArgumentException {
String address = this.getAddress();
if (isEmpty(address)) {
throw new IllegalArgumentException("The address of metadata report is invalid.");
}
Map<String, String> map = new HashMap<String, String>();
URL url = URL.valueOf(address);
// Issue : https://github.com/apache/dubbo/issues/6491
// Append the parameters from address
map.putAll(url.getParameters());
// Append or overrides the properties as parameters
appendParameters(map, this);
// Normalize the parameters
map.putAll(convert(map, null));
// put the protocol of URL as the "metadata"
map.put("metadata", url.getProtocol());
return new URL("metadata", url.getUsername(), url.getPassword(), url.getHost(),
url.getPort(), url.getPath(), map);
}
@Parameter(excluded = true)
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getTimeout() {
return timeout;
}
public void setTimeout(Integer timeout) {
this.timeout = timeout;
}
public Map<String, String> getParameters() {
return parameters;
}
public void setParameters(Map<String, String> parameters) {
this.parameters = parameters;
}
@Parameter(key = "retry-times")
public Integer getRetryTimes() {
return retryTimes;
}
public void setRetryTimes(Integer retryTimes) {
this.retryTimes = retryTimes;
}
@Parameter(key = "retry-period")
public Integer getRetryPeriod() {
return retryPeriod;
}
public void setRetryPeriod(Integer retryPeriod) {
this.retryPeriod = retryPeriod;
}
@Parameter(key = "cycle-report")
public Boolean getCycleReport() {
return cycleReport;
}
public void setCycleReport(Boolean cycleReport) {
this.cycleReport = cycleReport;
}
@Parameter(key = "sync-report")
public Boolean getSyncReport() {
return syncReport;
}
public void setSyncReport(Boolean syncReport) {
this.syncReport = syncReport;
}
@Override
@Parameter(excluded = true)
public String getPrefix() {
return StringUtils.isNotEmpty(prefix) ? prefix : (DUBBO + "." + PREFIX_TAG);
}
@Override
@Parameter(excluded = true)
public boolean isValid() {
return StringUtils.isNotEmpty(address);
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public Boolean getCluster() {
return cluster;
}
public void setCluster(Boolean cluster) {
this.cluster = cluster;
}
}