Feature - natMap deprecated in favor of natMapper setting. #2545
parent
ca44e02957
commit
77f680cf16
@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Copyright (c) 2013-2020 Nikita Koksharov
|
||||
*
|
||||
* 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 org.redisson.api;
|
||||
|
||||
import org.redisson.misc.RedisURI;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Maps host of RedisURI object using map defined in <code>hostsMap</code> setting.
|
||||
*
|
||||
* @author Nikita Koksharov
|
||||
*
|
||||
*/
|
||||
public class HostNatMapper implements NatMapper {
|
||||
|
||||
private Map<String, String> hostsMap;
|
||||
|
||||
@Override
|
||||
public RedisURI map(RedisURI uri) {
|
||||
String host = hostsMap.get(uri.getHost());
|
||||
if (host == null) {
|
||||
return uri;
|
||||
}
|
||||
return new RedisURI(uri.getScheme(), host, uri.getPort());
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines hosts mapping. Host as key mapped to host as value.
|
||||
*
|
||||
* @param hostsMap - hosts map
|
||||
*/
|
||||
public void setHostsMap(Map<String, String> hostsMap) {
|
||||
this.hostsMap = hostsMap;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
/**
|
||||
* Copyright (c) 2013-2020 Nikita Koksharov
|
||||
*
|
||||
* 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 org.redisson.api;
|
||||
|
||||
import org.redisson.misc.RedisURI;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Maps host and port of RedisURI object using map defined in <code>hostsMap</code> setting.
|
||||
*
|
||||
* @author Nikita Koksharov
|
||||
*
|
||||
*/
|
||||
public class HostPortNatMapper implements NatMapper {
|
||||
|
||||
private Map<String, String> hostsPortMap;
|
||||
|
||||
@Override
|
||||
public RedisURI map(RedisURI uri) {
|
||||
String hostPort = hostsPortMap.get(uri.getHost() + ":" + uri.getPort());
|
||||
if (hostPort == null) {
|
||||
return uri;
|
||||
}
|
||||
|
||||
int lastColonIdx = hostPort.lastIndexOf(":");
|
||||
String host = hostPort.substring(0, lastColonIdx);
|
||||
String port = hostPort.substring(lastColonIdx + 1);
|
||||
return new RedisURI(uri.getScheme(), host, Integer.valueOf(port));
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines host and port mapping. Host and port as key mapped to host and port as value.
|
||||
* Allowed value format: "127.0.0.1:6379"
|
||||
*
|
||||
* @param hostsPortMap - host and port map
|
||||
*/
|
||||
public void setHostsPortMap(Map<String, String> hostsPortMap) {
|
||||
this.hostsPortMap = hostsPortMap;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Copyright (c) 2013-2020 Nikita Koksharov
|
||||
*
|
||||
* 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 org.redisson.api;
|
||||
|
||||
import org.redisson.misc.RedisURI;
|
||||
|
||||
/**
|
||||
* Maps RedisURI object. Allows to change input RedisURI's port and host values.
|
||||
*
|
||||
* @author Nikita Koksharov
|
||||
*
|
||||
* @see HostNatMapper
|
||||
* @see HostPortNatMapper
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface NatMapper {
|
||||
|
||||
/**
|
||||
* Applies map function to input <code>uri</code> object
|
||||
*
|
||||
* @param uri - RedisURI object
|
||||
* @return mapped RedisURI object
|
||||
*/
|
||||
RedisURI map(RedisURI uri);
|
||||
|
||||
/**
|
||||
* Returns input RedisURI object. Used by default
|
||||
*
|
||||
* @return NatMapper instance what returns input RedisURI object
|
||||
*/
|
||||
static NatMapper direct() {
|
||||
return uri -> uri;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue