| /* |
| * 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.admin.model.domain; |
| |
| import com.alibaba.dubbo.common.Constants; |
| import com.alibaba.dubbo.common.URL; |
| import com.alibaba.dubbo.common.utils.StringUtils; |
| |
| import java.util.Map; |
| |
| public class Override extends Entity { |
| |
| private static final long serialVersionUID = 114828505391757846L; |
| |
| private String service; |
| |
| private String params; |
| |
| private String application; |
| |
| private String address; |
| |
| private String username; |
| |
| private boolean enabled; |
| |
| public Override() { |
| } |
| |
| public Override(long id) { |
| super(id); |
| } |
| |
| public String getService() { |
| return service; |
| } |
| |
| |
| public void setService(String service) { |
| this.service = service; |
| } |
| |
| |
| public String getParams() { |
| return params; |
| } |
| |
| |
| public void setParams(String params) { |
| this.params = params; |
| } |
| |
| |
| public String getApplication() { |
| return application; |
| } |
| |
| |
| public void setApplication(String application) { |
| this.application = application; |
| } |
| |
| |
| 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 boolean isEnabled() { |
| return enabled; |
| } |
| |
| |
| public void setEnabled(boolean enabled) { |
| this.enabled = enabled; |
| } |
| |
| public String toString() { |
| return "Override [service=" + service + ", params=" + params + ", application=" |
| + application + ", address=" + address + ", username=" + username + ", enabled=" + enabled + "]"; |
| } |
| |
| public boolean isDefault() { |
| return (getAddress() == null || getAddress().length() == 0 || Constants.ANY_VALUE.equals(getAddress()) || Constants.ANYHOST_VALUE.equals(getAddress())) |
| && (getApplication() == null || getApplication().length() == 0 || Constants.ANY_VALUE.equals(getApplication())); |
| } |
| |
| public boolean isMatch(String service, String address, String application) { |
| return isEnabled() && getParams() != null && getParams().length() > 0 |
| && service.equals(getService()) |
| && (address == null || getAddress() == null || getAddress().length() == 0 || getAddress().equals(Constants.ANY_VALUE) || getAddress().equals(Constants.ANYHOST_VALUE) || getAddress().equals(address)) |
| && (application == null || getApplication() == null || getApplication().length() == 0 || getApplication().equals(Constants.ANY_VALUE) || getApplication().equals(application)); |
| } |
| |
| public boolean isUniqueMatch(Provider provider) { |
| return isEnabled() && getParams() != null && getParams().length() > 0 |
| && provider.getService().equals(getService()) |
| && provider.getAddress().equals(getAddress()); |
| } |
| |
| public boolean isMatch(Provider provider) { |
| return isEnabled() && getParams() != null && getParams().length() > 0 |
| && provider.getService().equals(getService()) |
| && (getAddress() == null || getAddress().length() == 0 || getAddress().equals(Constants.ANY_VALUE) || getAddress().equals(Constants.ANYHOST_VALUE) || getAddress().equals(provider.getAddress())) |
| && (getApplication() == null || getApplication().length() == 0 || getApplication().equals(Constants.ANY_VALUE) || getApplication().equals(provider.getApplication())); |
| } |
| |
| public boolean isUniqueMatch(Consumer consumer) { |
| return isEnabled() && getParams() != null && getParams().length() > 0 |
| && consumer.getService().equals(getService()) |
| && consumer.getAddress().equals(getAddress()); |
| } |
| |
| public boolean isMatch(Consumer consumer) { |
| return isEnabled() && getParams() != null && getParams().length() > 0 |
| && consumer.getService().equals(getService()) |
| && (getAddress() == null || getAddress().length() == 0 || getAddress().equals(Constants.ANY_VALUE) || getAddress().equals(Constants.ANYHOST_VALUE) || getAddress().equals(consumer.getAddress())) |
| && (getApplication() == null || getApplication().length() == 0 || getApplication().equals(Constants.ANY_VALUE) || getApplication().equals(consumer.getApplication())); |
| } |
| |
| public Map<String, String> toParametersMap() { |
| Map<String, String> map = StringUtils.parseQueryString(getParams()); |
| map.remove(Constants.INTERFACE_KEY); |
| map.remove(Constants.GROUP_KEY); |
| map.remove(Constants.VERSION_KEY); |
| map.remove(Constants.APPLICATION_KEY); |
| map.remove(Constants.CATEGORY_KEY); |
| map.remove(Constants.DYNAMIC_KEY); |
| map.remove(Constants.ENABLED_KEY); |
| return map; |
| } |
| |
| public URL toUrl() { |
| String group = null; |
| String version = null; |
| String path = service; |
| int i = path.indexOf("/"); |
| if (i > 0) { |
| group = path.substring(0, i); |
| path = path.substring(i + 1); |
| } |
| i = path.lastIndexOf(":"); |
| if (i > 0) { |
| version = path.substring(i + 1); |
| path = path.substring(0, i); |
| } |
| StringBuilder sb = new StringBuilder(); |
| sb.append(Constants.OVERRIDE_PROTOCOL); |
| sb.append("://"); |
| if (!StringUtils.isBlank(address) && !Constants.ANY_VALUE.equals(address)) { |
| sb.append(address); |
| } else { |
| sb.append(Constants.ANYHOST_VALUE); |
| } |
| sb.append("/"); |
| sb.append(path); |
| sb.append("?"); |
| Map<String, String> param = StringUtils.parseQueryString(params); |
| param.put(Constants.CATEGORY_KEY, Constants.CONFIGURATORS_CATEGORY); |
| param.put(Constants.ENABLED_KEY, String.valueOf(isEnabled())); |
| param.put(Constants.DYNAMIC_KEY, "false"); |
| if (!StringUtils.isBlank(application) && !Constants.ANY_VALUE.equals(application)) { |
| param.put(Constants.APPLICATION_KEY, application); |
| } |
| if (group != null) { |
| param.put(Constants.GROUP_KEY, group); |
| } |
| if (version != null) { |
| param.put(Constants.VERSION_KEY, version); |
| } |
| sb.append(StringUtils.toQueryString(param)); |
| return URL.valueOf(sb.toString()); |
| } |
| |
| } |