org.apache.zookeeper.server.jersey.cfg.RestCfg Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of zookeeper-contrib-rest Show documentation
Show all versions of zookeeper-contrib-rest Show documentation
ZooKeeper REST implementation using Jersey JAX-RS.
--------------------------------------------------
This is an implementation of version 2 of the ZooKeeper REST spec.
Note: This interface is currently experimental, may change at any time,
etc... In general you should be using the Java/C client bindings to access
the ZooKeeper server.
This REST ZooKeeper gateway is useful because most of the languages
have built-in support for working with HTTP based protocols.
See SPEC.txt for details on the REST binding.
/**
* 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.zookeeper.server.jersey.cfg;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
public class RestCfg {
private Properties cfg = new Properties();
private Set endpoints = new HashSet();
private Credentials credentials = new Credentials();
public RestCfg(String resource) throws IOException {
this(RestCfg.class.getClassLoader().getResourceAsStream(resource));
}
public RestCfg(InputStream io) throws IOException {
try {
cfg.load(io);
extractEndpoints();
extractCredentials();
} finally {
io.close();
}
}
private void extractCredentials() {
if (cfg.containsKey("rest.http.auth")) {
credentials = new Credentials(cfg.getProperty("rest.http.auth", ""));
}
}
private void extractEndpoints() {
int count = 1;
while (true) {
String e = cfg.getProperty(
String.format("rest.endpoint.%d", count), null);
if (e == null) {
break;
}
String[] parts = e.split(";");
if (parts.length != 2) {
count++;
continue;
}
Endpoint point = new Endpoint(parts[0], parts[1]);
String c = cfg.getProperty(String.format(
"rest.endpoint.%d.http.auth", count), "");
point.setCredentials(c);
String digest = cfg.getProperty(String.format(
"rest.endpoint.%d.zk.digest", count), "");
point.setZooKeeperAuthInfo(digest);
endpoints.add(point);
count++;
}
}
public int getPort() {
return Integer.parseInt(cfg.getProperty("rest.port", "9998"));
}
public boolean useSSL() {
return Boolean.valueOf(cfg.getProperty("rest.ssl", "false"));
}
public final Set getEndpoints() {
return endpoints;
}
public final Credentials getCredentials() {
return credentials;
}
public String getJKS() {
return cfg.getProperty("rest.ssl.jks");
}
public String getJKS(String def) {
return cfg.getProperty("rest.ssl.jks", def);
}
public String getJKSPassword() {
return cfg.getProperty("rest.ssl.jks.pass");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy