You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by go...@apache.org on 2016/08/25 20:19:59 UTC
[30/46] incubator-slider git commit: SLIDER-1165 Create
yarn-native-services branch on Slider corresponding to the
yarn-native-services branch on Hadoop
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/persist/JsonSerDeser.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/persist/JsonSerDeser.java b/slider-core/src/main/java/org/apache/slider/core/persist/JsonSerDeser.java
deleted file mode 100644
index 4f60c06..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/persist/JsonSerDeser.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * 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.slider.core.persist;
-
-import org.apache.hadoop.fs.FSDataInputStream;
-import org.apache.hadoop.fs.FSDataOutputStream;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.IOUtils;
-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.JsonParseException;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.JsonMappingException;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Support for marshalling objects to and from JSON.
- * This class is NOT thread safe; it constructs an object mapper
- * as an instance field.
- * @param <T>
- */
-public class JsonSerDeser<T> {
-
- private static final Logger log = LoggerFactory.getLogger(JsonSerDeser.class);
- private static final String UTF_8 = "UTF-8";
-
- private final Class<T> classType;
- private final ObjectMapper mapper;
-
- /**
- * Create an instance bound to a specific type
- * @param classType class type
- */
- public JsonSerDeser(Class<T> classType) {
- this.classType = classType;
- this.mapper = new ObjectMapper();
- mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- }
-
- /**
- * Convert from JSON
- * @param json input
- * @return the parsed JSON
- * @throws IOException IO
- * @throws JsonMappingException failure to map from the JSON to this class
- */
- public T fromJson(String json)
- throws IOException, JsonParseException, JsonMappingException {
- try {
- return mapper.readValue(json, classType);
- } catch (IOException e) {
- log.error("Exception while parsing json : " + e + "\n" + json, e);
- throw e;
- }
- }
-
- /**
- * Convert from a JSON file
- * @param jsonFile input file
- * @return the parsed JSON
- * @throws IOException IO problems
- * @throws JsonMappingException failure to map from the JSON to this class
- */
- public T fromFile(File jsonFile)
- throws IOException, JsonParseException, JsonMappingException {
- File absoluteFile = jsonFile.getAbsoluteFile();
- try {
- return mapper.readValue(absoluteFile, classType);
- } catch (IOException e) {
- log.error("Exception while parsing json file {}", absoluteFile, e);
- throw e;
- }
- }
-
- /**
- * Convert from a JSON file
- * @param resource input file
- * @return the parsed JSON
- * @throws IOException IO problems
- * @throws JsonMappingException failure to map from the JSON to this class
- */
- public T fromResource(String resource)
- throws IOException, JsonParseException, JsonMappingException {
- try(InputStream resStream = this.getClass().getResourceAsStream(resource)) {
- if (resStream == null) {
- throw new FileNotFoundException(resource);
- }
- return (T) (mapper.readValue(resStream, classType));
- } catch (IOException e) {
- log.error("Exception while parsing json resource {}", resource, e);
- throw e;
- }
- }
-
- /**
- * Convert from an input stream, closing the stream afterwards.
- * @param stream
- * @return the parsed JSON
- * @throws IOException IO problems
- */
- public T fromStream(InputStream stream) throws IOException {
- try {
- return (T) (mapper.readValue(stream, classType));
- } catch (IOException e) {
- log.error("Exception while parsing json input stream", e);
- throw e;
- } finally {
- IOUtils.closeStream(stream);
- }
- }
-
- /**
- * clone by converting to JSON and back again.
- * This is much less efficient than any Java clone process.
- * @param instance instance to duplicate
- * @return a new instance
- * @throws IOException problems.
- */
- public T fromInstance(T instance) throws IOException {
- return fromJson(toJson(instance));
- }
-
- /**
- * Deserialize from a byte array
- * @param b
- * @return the deserialized value
- * @throws IOException parse problems
- */
- public T fromBytes(byte[] b) throws IOException {
- String json = new String(b, 0, b.length, UTF_8);
- return fromJson(json);
- }
-
- /**
- * Load from a Hadoop filesystem
- * @param fs filesystem
- * @param path path
- * @return a loaded CD
- * @throws IOException IO problems
- * @throws JsonParseException parse problems
- * @throws JsonMappingException O/J mapping problems
- */
- public T load(FileSystem fs, Path path)
- throws IOException, JsonParseException, JsonMappingException {
- FileStatus status = fs.getFileStatus(path);
- long len = status.getLen();
- byte[] b = new byte[(int) len];
- FSDataInputStream dataInputStream = fs.open(path);
- int count = dataInputStream.read(b);
- if (count != len) {
- throw new EOFException("Read of " + path +" finished prematurely");
- }
- return fromBytes(b);
- }
-
-
- /**
- * Save to a hadoop filesystem
- * @param fs filesystem
- * @param path path
- * @param instance instance to save
- * @param overwrite should any existing file be overwritten
- * @throws IOException IO exception
- */
- public void save(FileSystem fs, Path path, T instance,
- boolean overwrite) throws
- IOException {
- FSDataOutputStream dataOutputStream = fs.create(path, overwrite);
- writeJsonAsBytes(instance, dataOutputStream);
- }
-
- /**
- * Save an instance to a file
- * @param instance instance to save
- * @param file file
- * @throws IOException
- */
- public void save(T instance, File file) throws
- IOException {
- writeJsonAsBytes(instance, new FileOutputStream(file.getAbsoluteFile()));
- }
-
- /**
- * Write the json as bytes -then close the file
- * @param dataOutputStream an outout stream that will always be closed
- * @throws IOException on any failure
- */
- private void writeJsonAsBytes(T instance,
- OutputStream dataOutputStream) throws IOException {
- try {
- String json = toJson(instance);
- byte[] b = json.getBytes(UTF_8);
- dataOutputStream.write(b);
- dataOutputStream.flush();
- dataOutputStream.close();
- } finally {
- IOUtils.closeStream(dataOutputStream);
- }
- }
-
- /**
- * Convert an object to a JSON string
- * @param instance instance to convert
- * @return a JSON string description
- * @throws JsonParseException parse problems
- * @throws JsonMappingException O/J mapping problems
- */
- public String toJson(T instance) throws IOException,
- JsonGenerationException,
- JsonMappingException {
- mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
- return mapper.writeValueAsString(instance);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/persist/LockAcquireFailedException.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/persist/LockAcquireFailedException.java b/slider-core/src/main/java/org/apache/slider/core/persist/LockAcquireFailedException.java
deleted file mode 100644
index da58520..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/persist/LockAcquireFailedException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.slider.core.persist;
-
-import org.apache.hadoop.fs.Path;
-
-public class LockAcquireFailedException extends Exception {
-
- private final Path path;
-
- public LockAcquireFailedException(Path path) {
- super("Failed to acquire lock " +path);
- this.path = path;
- }
-
- public LockAcquireFailedException(Path path, Throwable cause) {
- super("Failed to acquire lock " + path, cause);
- this.path = path;
- }
-
- public Path getPath() {
- return path;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/persist/LockHeldAction.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/persist/LockHeldAction.java b/slider-core/src/main/java/org/apache/slider/core/persist/LockHeldAction.java
deleted file mode 100644
index 6659687..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/persist/LockHeldAction.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.slider.core.persist;
-
-import org.apache.slider.core.exceptions.SliderException;
-
-import java.io.IOException;
-
-/**
- * Optional action to add while the lock is held; this is needed to execute
- * some other persistent operations within the scope at the same lock
- * without inserting too much code into the persister
- */
-public interface LockHeldAction {
-
- /**
- * Execute the action
- * @throws IOException on any failure
- */
- public void execute() throws IOException, SliderException;
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/persist/PersistKeys.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/persist/PersistKeys.java b/slider-core/src/main/java/org/apache/slider/core/persist/PersistKeys.java
deleted file mode 100644
index 1964459..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/persist/PersistKeys.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.slider.core.persist;
-
-public class PersistKeys {
-
- public static final String SCHEMA =
- "http://example.org/specification/v2.0.0";
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/SliderRegistryUtils.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/SliderRegistryUtils.java b/slider-core/src/main/java/org/apache/slider/core/registry/SliderRegistryUtils.java
deleted file mode 100644
index 37b36ea..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/SliderRegistryUtils.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.slider.core.registry;
-
-import com.google.common.base.Preconditions;
-import org.apache.hadoop.registry.client.binding.RegistryUtils;
-import org.apache.slider.common.SliderKeys;
-
-/**
- * Miscellaneous methods to assist slider registry work
- *
- */
-public class SliderRegistryUtils {
-
-
- /**
- * Get the registry path for an instance under the user's home node
- * @param instanceName application instance
- * @return a path to the registry location for this application instance.
- */
- public static String registryPathForInstance(String instanceName) {
- return RegistryUtils.servicePath(
- RegistryUtils.currentUser(), SliderKeys.APP_TYPE, instanceName
- );
- }
-
- /**
- * Process a path expanding it if needed.
- * Validation is delegated to later as the core registry will need
- * to do that anyway
- * @param path path
- * @return a path maybe with some expansion
- */
- public static String resolvePath(String path) {
- Preconditions.checkArgument(path!=null, "null path");
- Preconditions.checkArgument(!path.isEmpty(), "empty path");
- String newpath = path;
- if (path.startsWith("~/")) {
- // add user expansion
- newpath = RegistryUtils.homePathForCurrentUser() + path.substring(1);
- } else if (path.equals("~")) {
- newpath = RegistryUtils.homePathForCurrentUser();
- }
- return newpath;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/YarnAppListClient.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/YarnAppListClient.java b/slider-core/src/main/java/org/apache/slider/core/registry/YarnAppListClient.java
deleted file mode 100644
index 1bdfb9c..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/YarnAppListClient.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * 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.slider.core.registry;
-
-import com.google.common.base.Preconditions;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.yarn.api.records.ApplicationReport;
-import org.apache.hadoop.yarn.api.records.YarnApplicationState;
-import org.apache.hadoop.yarn.exceptions.YarnException;
-import org.apache.slider.client.SliderYarnClientImpl;
-import org.apache.slider.api.types.SliderInstanceDescription;
-import org.apache.slider.common.tools.CoreFileSystem;
-import org.apache.slider.common.tools.SliderUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Client code for interacting with a list of service instances.
- * The initial logic just enumerates service instances in the YARN RM
- */
-public class YarnAppListClient {
-
- private final SliderYarnClientImpl yarnClient;
- private final String username;
- private final Configuration conf;
- private static final Logger log =
- LoggerFactory.getLogger(YarnAppListClient.class);
-
- public YarnAppListClient(SliderYarnClientImpl yarnClient,
- String username,
- Configuration conf) {
-
- Preconditions.checkArgument(yarnClient != null,
- "yarn client is null: is app inited?");
- Preconditions.checkArgument(username != null,
- "username is null");
- Preconditions.checkArgument(conf != null,
- "conf parameter is null");
- this.yarnClient = yarnClient;
- this.username = username;
- this.conf = conf;
- }
-
- /**
- * find all live instances of a specific app -if there is more than one
- * in the cluster, this returns them all. State should be running or earlier
- * in the lifecycle
- * @param appname application name
- * @return the list of all matching application instances
- */
- public List<ApplicationReport> findAllLiveInstances(String appname)
- throws YarnException, IOException {
- return yarnClient.findAllLiveInstances(username, appname);
- }
-
-
- /**
- * Find an instance of a application belong to the current user
- * @param appname application name
- * @return the app report or null if none is found
- * @throws YarnException YARN issues
- * @throws IOException IO problems
- */
- public ApplicationReport findInstance(String appname) throws
- YarnException,
- IOException {
- List<ApplicationReport> instances = listInstances(null);
- return yarnClient.findClusterInInstanceList(instances, appname);
- }
-
- /**
- * List instances belonging to the specific user
- * @return a possibly empty list of AMs
- */
- public List<ApplicationReport> listInstances()
- throws YarnException, IOException {
- return listInstances(null);
- }
-
- /**
- * List instances belonging to a specific user
- * @return a possibly empty list of AMs
- * @param user user if not the default. null means default, "" means all users,
- * otherwise it is the name of a user
- */
- public List<ApplicationReport> listInstances(String user)
- throws YarnException, IOException {
- String listUser = user == null ? username : user;
- return yarnClient.listDeployedInstances(listUser);
- }
-
- /**
- * Enumerate slider instances for the current user, and the
- * most recent app report, where available.
- * @param listOnlyInState boolean to indicate that the instances should
- * only include those in a YARN state
- * <code> minAppState <= currentState <= maxAppState </code>
- *
- * @param minAppState minimum application state to include in enumeration.
- * @param maxAppState maximum application state to include
- * @return a map of application instance name to description
- * @throws IOException Any IO problem
- * @throws YarnException YARN problems
- */
- public Map<String, SliderInstanceDescription> enumSliderInstances(
- boolean listOnlyInState,
- YarnApplicationState minAppState,
- YarnApplicationState maxAppState)
- throws IOException, YarnException {
-
- CoreFileSystem sliderFileSystem = new CoreFileSystem(conf);
- Preconditions.checkArgument(!listOnlyInState || minAppState != null,
- "null minAppState when listOnlyInState set");
- Preconditions.checkArgument(!listOnlyInState || maxAppState != null,
- "null maxAppState when listOnlyInState set");
- if (!listOnlyInState) {
- // if there's not filtering, ask for the entire range of states
- minAppState = YarnApplicationState.NEW;
- maxAppState = YarnApplicationState.KILLED;
- }
- // get the complete list of persistent instances
- Map<String, Path> persistentInstances =
- sliderFileSystem.listPersistentInstances();
- Map<String, SliderInstanceDescription> descriptions =
- new HashMap<String, SliderInstanceDescription>(persistentInstances.size());
-
- if (persistentInstances.isEmpty()) {
- // an empty listing is a success if no cluster was named
- log.debug("No application instances found");
- return descriptions;
- }
-
- // enum those the RM knows about
- List<ApplicationReport> rmInstances = listInstances();
- SliderUtils.sortApplicationsByMostRecent(rmInstances);
- Map<String, ApplicationReport> reportMap =
- SliderUtils.buildApplicationReportMap(rmInstances, minAppState,
- maxAppState);
- log.debug("Persisted {} deployed {} filtered[{}-{}] & de-duped to {}",
- persistentInstances.size(),
- rmInstances.size(),
- minAppState, maxAppState,
- reportMap.size());
-
- // at this point there is a list of all persistent instances, and
- // a (possibly filtered) list of application reports
-
- for (Map.Entry<String, Path> entry : persistentInstances.entrySet()) {
- // loop through the persistent values
- String name = entry.getKey();
-
- // look up any report from the (possibly filtered) report set
- ApplicationReport report = reportMap.get(name);
- if (!listOnlyInState || report != null) {
- // if the enum wants to filter in state, only add it if there is
- // a report in that range. Otherwise: include all values
- SliderInstanceDescription sid = new SliderInstanceDescription(
- name, entry.getValue(), report);
- descriptions.put(name, sid);
- }
- }
-
- return descriptions;
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java
deleted file mode 100644
index ddab606..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-public enum ConfigFormat {
-
- JSON("json"),
- PROPERTIES("properties"),
- XML("xml"),
- HADOOP_XML("hadoop-xml"),
- ENV("env"),
- TEMPLATE("template"),
- YAML("yaml"),
- ;
- ConfigFormat(String suffix) {
- this.suffix = suffix;
- }
-
- private final String suffix;
-
- public String getSuffix() {
- return suffix;
- }
-
-
- @Override
- public String toString() {
- return suffix;
- }
-
- /**
- * Get a matching format or null
- * @param type
- * @return the format
- */
- public static ConfigFormat resolve(String type) {
- for (ConfigFormat format: values()) {
- if (format.getSuffix().equals(type)) {
- return format;
- }
- }
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigUtils.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigUtils.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigUtils.java
deleted file mode 100644
index 2e1615b..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigUtils.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.slider.common.tools.SliderFileSystem;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class ConfigUtils {
- public static final String TEMPLATE_FILE = "template.file";
-
- public static String replaceProps(Map<String, String> config, String content) {
- Map<String, String> tokens = new HashMap<>();
- for (Entry<String, String> entry : config.entrySet()) {
- tokens.put("${" + entry.getKey() + "}", entry.getValue());
- tokens.put("{{" + entry.getKey() + "}}", entry.getValue());
- }
- String value = content;
- for (Map.Entry<String,String> token : tokens.entrySet()) {
- value = value.replaceAll(Pattern.quote(token.getKey()),
- Matcher.quoteReplacement(token.getValue()));
- }
- return value;
- }
-
- public static Map<String, String> replacePropsInConfig(
- Map<String, String> config, Map<String, String> env) {
- Map<String, String> tokens = new HashMap<>();
- for (Entry<String, String> entry : env.entrySet()) {
- tokens.put("${" + entry.getKey() + "}", entry.getValue());
- }
- Map<String, String> newConfig = new HashMap<>();
- for (Entry<String, String> entry : config.entrySet()) {
- String value = entry.getValue();
- for (Map.Entry<String,String> token : tokens.entrySet()) {
- value = value.replaceAll(Pattern.quote(token.getKey()),
- Matcher.quoteReplacement(token.getValue()));
- }
- newConfig.put(entry.getKey(), entry.getValue());
- }
- return newConfig;
- }
-
- public static void prepConfigForTemplateOutputter(ConfigFormat configFormat,
- Map<String, String> config, SliderFileSystem fileSystem,
- String clusterName, String fileName) throws IOException {
- if (!configFormat.equals(ConfigFormat.TEMPLATE)) {
- return;
- }
- Path templateFile = null;
- if (config.containsKey(TEMPLATE_FILE)) {
- templateFile = fileSystem.buildResourcePath(config.get(TEMPLATE_FILE));
- if (!fileSystem.isFile(templateFile)) {
- templateFile = fileSystem.buildResourcePath(clusterName,
- config.get(TEMPLATE_FILE));
- }
- if (!fileSystem.isFile(templateFile)) {
- throw new IOException("config specified template file " + config
- .get(TEMPLATE_FILE) + " but " + templateFile + " doesn't exist");
- }
- }
- if (templateFile == null && fileName != null) {
- templateFile = fileSystem.buildResourcePath(fileName);
- if (!fileSystem.isFile(templateFile)) {
- templateFile = fileSystem.buildResourcePath(clusterName,
- fileName);
- }
- }
- if (fileSystem.isFile(templateFile)) {
- config.put("content", fileSystem.cat(templateFile));
- } else {
- config.put("content", "");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigurationResolver.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigurationResolver.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigurationResolver.java
deleted file mode 100644
index 88bac77..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigurationResolver.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-public class ConfigurationResolver {
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ExportEntry.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ExportEntry.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ExportEntry.java
deleted file mode 100644
index 4bcf6c1..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ExportEntry.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-import org.codehaus.jackson.annotate.JsonIgnoreProperties;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-/**
- * JSON-serializable description of a published key-val configuration.
- *
- * The values themselves are not serialized in the external view; they have to be served up by the far end
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
-public class ExportEntry {
-
- /**
- * The value of the export
- */
- private String value;
- /**
- * The container id of the container that is responsible for the export
- */
- private String containerId;
- /**
- * Tag associated with the container - its usually an identifier different than container id
- * that allows a soft serial id to all containers of a component - e.g. 1, 2, 3, ...
- */
- private String tag;
- /**
- * An export can be at the level of a component or an application
- */
- private String level;
- /**
- * The time when the export was updated
- */
- private String updatedTime;
- /**
- * The time when the export expires
- */
- private String validUntil;
-
- public ExportEntry() {
- }
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- public String getContainerId() {
- return containerId;
- }
-
- public void setContainerId(String containerId) {
- this.containerId = containerId;
- }
-
- public String getTag() {
- return tag;
- }
-
- public void setTag(String tag) {
- this.tag = tag;
- }
-
- public String getLevel() {
- return level;
- }
-
- public void setLevel(String level) {
- this.level = level;
- }
- public String getUpdatedTime() {
- return updatedTime;
- }
-
- public void setUpdatedTime(String updatedTime) {
- this.updatedTime = updatedTime;
- }
-
- public String getValidUntil() {
- return validUntil;
- }
-
- public void setValidUntil(String validUntil) {
- this.validUntil = validUntil;
- }
-
- @Override
- public String toString() {
- return new StringBuilder("ExportEntry{").
- append("value='").append(value).append("',").
- append("containerId='").append(containerId).append("',").
- append("tag='").append(tag).append("',").
- append("level='").append(level).append("'").
- append("updatedTime='").append(updatedTime).append("'").
- append("validUntil='").append(validUntil).append("'").
- append(" }").toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java
deleted file mode 100644
index edc129e..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-import org.apache.slider.server.appmaster.web.rest.RestPaths;
-import org.apache.slider.server.services.utility.PatternValidator;
-import org.codehaus.jackson.annotate.JsonIgnoreProperties;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-/**
- * Represents a set of configurations for an application, component, etc.
- * Json serialisable; accessors are synchronized
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
-public class PublishedConfigSet {
-
- private static final PatternValidator validator = new PatternValidator(
- RestPaths.PUBLISHED_CONFIGURATION_REGEXP);
-
- public Map<String, PublishedConfiguration> configurations =
- new HashMap<>();
-
- public PublishedConfigSet() {
- }
-
- /**
- * Put a name -it will be converted to lower case before insertion.
- * Any existing entry will be overwritten (that includes an entry
- * with a different case in the original name)
- * @param name name of entry
- * @param conf configuration
- * @throws IllegalArgumentException if not a valid name
- */
- public void put(String name, PublishedConfiguration conf) {
- String name1 = name.toLowerCase(Locale.ENGLISH);
- validateName(name1);
- configurations.put(name1, conf);
- }
-
- /**
- * Validate the name -restricting it to the set defined in
- * {@link RestPaths#PUBLISHED_CONFIGURATION_REGEXP}
- * @param name name to validate
- * @throws IllegalArgumentException if not a valid name
- */
- public static void validateName(String name) {
- validator.validate(name);
-
- }
-
- public PublishedConfiguration get(String name) {
- return configurations.get(name);
- }
-
- public boolean contains(String name) {
- return configurations.containsKey(name);
- }
-
- public int size() {
- return configurations.size();
- }
-
- public Set<String> keys() {
- TreeSet<String> keys = new TreeSet<>();
- keys.addAll(configurations.keySet());
- return keys;
- }
-
- public PublishedConfigSet shallowCopy() {
- PublishedConfigSet that = new PublishedConfigSet();
- for (Map.Entry<String, PublishedConfiguration> entry :
- configurations.entrySet()) {
- that.put(entry.getKey(), entry.getValue().shallowCopy());
- }
- return that;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java
deleted file mode 100644
index 50b522f..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.slider.common.tools.ConfigHelper;
-import org.apache.slider.core.exceptions.BadConfigException;
-import org.codehaus.jackson.annotate.JsonIgnoreProperties;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * JSON-serializable description of a published key-val configuration.
- *
- * The values themselves are not serialized in the external view; they have
- * to be served up by the far end
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
-public class PublishedConfiguration {
-
- public String description;
- public long updated;
-
- public String updatedTime;
-
- public Map<String, String> entries = new HashMap<>();
-
- public PublishedConfiguration() {
- }
-
- /**
- * build an empty published configuration
- * @param description configuration description
- */
- public PublishedConfiguration(String description) {
- this.description = description;
- }
-
- /**
- * Build a configuration from the entries
- * @param description configuration description
- * @param entries entries to put
- */
- public PublishedConfiguration(String description,
- Iterable<Map.Entry<String, String>> entries) {
- this.description = description;
- putValues(entries);
- }
-
- /**
- * Build a published configuration, using the keys from keysource,
- * but resolving the values from the value source, via Configuration.get()
- * @param description configuration description
- * @param keysource source of keys
- * @param valuesource source of values
- */
- public PublishedConfiguration(String description,
- Iterable<Map.Entry<String, String>> keysource,
- Configuration valuesource) {
- this.description = description;
- putValues(ConfigHelper.resolveConfiguration(keysource, valuesource));
- }
-
-
- /**
- * Is the configuration empty. This means either that it has not
- * been given any values, or it is stripped down copy set down over the
- * wire.
- * @return true if it is empty
- */
- public boolean isEmpty() {
- return entries.isEmpty();
- }
-
-
- public void setUpdated(long updated) {
- this.updated = updated;
- this.updatedTime = new Date(updated).toString();
- }
-
- public long getUpdated() {
- return updated;
- }
-
- /**
- * Set the values from an iterable (this includes a Hadoop Configuration
- * and Java properties object).
- * Any existing value set is discarded
- * @param entries entries to put
- */
- public void putValues(Iterable<Map.Entry<String, String>> entries) {
- this.entries = new HashMap<String, String>();
- for (Map.Entry<String, String> entry : entries) {
- this.entries.put(entry.getKey(), entry.getValue());
- }
-
- }
-
- /**
- * Convert to Hadoop XML
- * @return the configuration as a Hadoop Configuratin
- */
- public Configuration asConfiguration() {
- Configuration conf = new Configuration(false);
- try {
- ConfigHelper.addConfigMap(conf, entries, "");
- } catch (BadConfigException e) {
- // triggered on a null value; switch to a runtime (and discard the stack)
- throw new RuntimeException(e.toString());
- }
- return conf;
- }
-
- public String asConfigurationXML() throws IOException {
- return ConfigHelper.toXml(asConfiguration());
- }
-
- /**
- * Convert values to properties
- * @return a property file
- */
- public Properties asProperties() {
- Properties props = new Properties();
- props.putAll(entries);
- return props;
- }
-
- /**
- * Return the values as json string
- * @return the JSON representation
- * @throws IOException marshalling failure
- */
- public String asJson() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
- String json = mapper.writeValueAsString(entries);
- return json;
- }
-
-
- /**
- * This makes a copy without the nested content -so is suitable
- * for returning as part of the list of a parent's values
- * @return the copy
- */
- public PublishedConfiguration shallowCopy() {
- PublishedConfiguration that = new PublishedConfiguration();
- that.description = this.description;
- that.updated = this.updated;
- that.updatedTime = this.updatedTime;
- return that;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb =
- new StringBuilder("PublishedConfiguration{");
- sb.append("description='").append(description).append('\'');
- sb.append(" entries = ").append(entries.size());
- sb.append('}');
- return sb.toString();
- }
-
- /**
- * Create an outputter for a given format
- * @param format format to use
- * @return an instance of output
- */
- public PublishedConfigurationOutputter createOutputter(ConfigFormat format) {
- return PublishedConfigurationOutputter.createOutputter(format, this);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigurationOutputter.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigurationOutputter.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigurationOutputter.java
deleted file mode 100644
index 9bdcfcb..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigurationOutputter.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Preconditions;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.slider.common.tools.ConfigHelper;
-import org.yaml.snakeyaml.DumperOptions;
-import org.yaml.snakeyaml.DumperOptions.FlowStyle;
-import org.yaml.snakeyaml.Yaml;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.StringWriter;
-import java.util.Properties;
-
-/**
- * Output a published configuration
- */
-public abstract class PublishedConfigurationOutputter {
-
- protected final PublishedConfiguration owner;
-
- protected PublishedConfigurationOutputter(PublishedConfiguration owner) {
- this.owner = owner;
- }
-
- /**
- * Save the config to a destination file, in the format of this outputter
- * @param dest destination file
- * @throws IOException
- */
-/* JDK7
- public void save(File dest) throws IOException {
- try(FileOutputStream out = new FileOutputStream(dest)) {
- save(out);
- out.close();
- }
- }
-*/
- public void save(File dest) throws IOException {
- FileUtils.writeStringToFile(dest, asString(), Charsets.UTF_8);
- }
-
- /**
- * Save the content. The default saves the asString() value
- * to the output stream
- * @param out output stream
- * @throws IOException
- */
- public void save(OutputStream out) throws IOException {
- IOUtils.write(asString(), out, Charsets.UTF_8);
- }
- /**
- * Convert to a string
- * @return the string form
- * @throws IOException
- */
- public abstract String asString() throws IOException;
-
- /**
- * Create an outputter for the chosen format
- * @param format format enumeration
- * @param owner owning config
- * @return the outputter
- */
-
- public static PublishedConfigurationOutputter createOutputter(ConfigFormat format,
- PublishedConfiguration owner) {
- Preconditions.checkNotNull(owner);
- switch (format) {
- case XML:
- case HADOOP_XML:
- return new XmlOutputter(owner);
- case PROPERTIES:
- return new PropertiesOutputter(owner);
- case JSON:
- return new JsonOutputter(owner);
- case ENV:
- return new EnvOutputter(owner);
- case TEMPLATE:
- return new TemplateOutputter(owner);
- case YAML:
- return new YamlOutputter(owner);
- default:
- throw new RuntimeException("Unsupported format :" + format);
- }
- }
-
- public static class XmlOutputter extends PublishedConfigurationOutputter {
-
-
- private final Configuration configuration;
-
- public XmlOutputter(PublishedConfiguration owner) {
- super(owner);
- configuration = owner.asConfiguration();
- }
-
- @Override
- public void save(OutputStream out) throws IOException {
- configuration.writeXml(out);
- }
-
- @Override
- public String asString() throws IOException {
- return ConfigHelper.toXml(configuration);
- }
-
- public Configuration getConfiguration() {
- return configuration;
- }
- }
-
- public static class PropertiesOutputter extends PublishedConfigurationOutputter {
-
- private final Properties properties;
-
- public PropertiesOutputter(PublishedConfiguration owner) {
- super(owner);
- properties = owner.asProperties();
- }
-
- @Override
- public void save(OutputStream out) throws IOException {
- properties.store(out, "");
- }
-
-
- public String asString() throws IOException {
- StringWriter sw = new StringWriter();
- properties.store(sw, "");
- return sw.toString();
- }
- }
-
-
- public static class JsonOutputter extends PublishedConfigurationOutputter {
-
- public JsonOutputter(PublishedConfiguration owner) {
- super(owner);
- }
-
- @Override
- public String asString() throws IOException {
- return owner.asJson();
- }
- }
-
-
- public static class EnvOutputter extends PublishedConfigurationOutputter {
-
- public EnvOutputter(PublishedConfiguration owner) {
- super(owner);
- }
-
- @Override
- public String asString() throws IOException {
- if (!owner.entries.containsKey("content")) {
- throw new IOException("Configuration has no content field and cannot " +
- "be retrieved as type 'env'");
- }
- String content = owner.entries.get("content");
- return ConfigUtils.replaceProps(owner.entries, content);
- }
- }
-
- public static class TemplateOutputter extends EnvOutputter {
- public TemplateOutputter(PublishedConfiguration owner) {
- super(owner);
- }
- }
-
- public static class YamlOutputter extends PublishedConfigurationOutputter {
-
- private final Yaml yaml;
-
- public YamlOutputter(PublishedConfiguration owner) {
- super(owner);
- DumperOptions options = new DumperOptions();
- options.setDefaultFlowStyle(FlowStyle.BLOCK);
- yaml = new Yaml(options);
- }
-
- public String asString() throws IOException {
- return yaml.dump(owner.entries);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java
deleted file mode 100644
index 0759b4e..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-import org.codehaus.jackson.annotate.JsonIgnoreProperties;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * JSON-serializable description of a published key-val configuration.
- *
- * The values themselves are not serialized in the external view; they have to be served up by the far end
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
-public class PublishedExports {
-
- public String description;
- public long updated;
- public String updatedTime;
- public Map<String, List<ExportEntry>> entries = new HashMap<>();
-
- public PublishedExports() {
- }
-
- /**
- * build an empty published configuration
- *
- * @param description configuration description
- */
- public PublishedExports(String description) {
- this.description = description;
- }
-
- /**
- * Build a configuration from the entries
- *
- * @param description configuration description
- * @param entries entries to put
- */
- public PublishedExports(String description,
- Iterable<Map.Entry<String, List<ExportEntry>>> entries) {
- this.description = description;
- putValues(entries);
- }
-
- /**
- * Is the configuration empty. This means either that it has not been given any values,
- * or it is stripped down copy
- * set down over the wire.
- *
- * @return true if it is empty
- */
- public boolean isEmpty() {
- return entries.isEmpty();
- }
-
- public long getUpdated() {
- return updated;
- }
-
- public void setUpdated(long updated) {
- this.updated = updated;
- this.updatedTime = new Date(updated).toString();
- }
-
- /**
- * Set the values from an iterable (this includes a Hadoop Configuration and Java properties
- * object). Any existing value set is discarded
- *
- * @param entries entries to put
- */
- public void putValues(Iterable<Map.Entry<String, List<ExportEntry>>> entries) {
- this.entries = new HashMap<String, List<ExportEntry>>();
- for (Map.Entry<String, List<ExportEntry>> entry : entries) {
- this.entries.put(entry.getKey(), entry.getValue());
- }
- }
-
- /**
- * Return the values as json string
- *
- * @return the JSON form
- *
- * @throws IOException mapping problems
- */
- public String asJson() throws IOException {
- ObjectMapper mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
- String json = mapper.writeValueAsString(entries);
- return json;
- }
-
- /**
- * This makes a copy without the nested content -so is suitable for returning as part of the list of a parent's
- * values
- *
- * @return the copy
- */
- public PublishedExports shallowCopy() {
- PublishedExports that = new PublishedExports();
- that.description = this.description;
- that.updated = this.updated;
- that.updatedTime = this.updatedTime;
- return that;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb =
- new StringBuilder("PublishedConfiguration{");
- sb.append("description='").append(description).append('\'');
- sb.append(" entries = ").append(entries.size());
- sb.append('}');
- return sb.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsOutputter.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsOutputter.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsOutputter.java
deleted file mode 100644
index 67cb094..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsOutputter.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Preconditions;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-/** Output a published configuration */
-public abstract class PublishedExportsOutputter {
-
- protected final PublishedExports exports;
-
- protected PublishedExportsOutputter(PublishedExports exports) {
- this.exports = exports;
- }
-
- /**
- * Create an outputter for the chosen format
- *
- * @param format format enumeration
- * @param exports owning config
- * @return the outputter
- */
-
- public static PublishedExportsOutputter createOutputter(ConfigFormat format,
- PublishedExports exports) {
- Preconditions.checkNotNull(exports);
- switch (format) {
- case JSON:
- return new JsonOutputter(exports);
- default:
- throw new RuntimeException("Unsupported format :" + format);
- }
- }
-
- public void save(File dest) throws IOException {
- FileOutputStream out = null;
- try {
- out = new FileOutputStream(dest);
- save(out);
- out.close();
- } finally {
- org.apache.hadoop.io.IOUtils.closeStream(out);
- }
- }
-
- /**
- * Save the content. The default saves the asString() value to the output stream
- *
- * @param out output stream
- * @throws IOException
- */
- public void save(OutputStream out) throws IOException {
- IOUtils.write(asString(), out, Charsets.UTF_8);
- }
-
- /**
- * Convert to a string
- *
- * @return the string form
- * @throws IOException
- */
- public abstract String asString() throws IOException;
-
- public static class JsonOutputter extends PublishedExportsOutputter {
-
- public JsonOutputter(PublishedExports exports) {
- super(exports);
- }
-
- @Override
- public void save(File dest) throws IOException {
- FileUtils.writeStringToFile(dest, asString(), Charsets.UTF_8);
- }
-
- @Override
- public String asString() throws IOException {
- return exports.asJson();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java
deleted file mode 100644
index 339d3d6..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-import org.apache.slider.server.appmaster.web.rest.RestPaths;
-import org.apache.slider.server.services.utility.PatternValidator;
-import org.codehaus.jackson.annotate.JsonIgnoreProperties;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-/**
- * Represents a set of configurations for an application, component, etc.
- * Json serialisable; accessors are synchronized
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
-public class PublishedExportsSet {
-
- private static final PatternValidator validator = new PatternValidator(
- RestPaths.PUBLISHED_CONFIGURATION_REGEXP);
-
- public Map<String, PublishedExports> exports = new HashMap<>();
-
- public PublishedExportsSet() {
- }
-
- /**
- * Put a name -it will be converted to lower case before insertion.
- * Any existing entry will be overwritten (that includes an entry
- * with a different case in the original name)
- * @param name name of entry
- * @param export published export
- * @throws IllegalArgumentException if not a valid name
- */
- public void put(String name, PublishedExports export) {
- String name1 = name.toLowerCase(Locale.ENGLISH);
- validateName(name1);
- exports.put(name1, export);
- }
-
- /**
- * Validate the name -restricting it to the set defined in
- * {@link RestPaths#PUBLISHED_CONFIGURATION_REGEXP}
- * @param name name to validate
- * @throws IllegalArgumentException if not a valid name
- */
- public static void validateName(String name) {
- validator.validate(name);
-
- }
-
- public PublishedExports get(String name) {
- return exports.get(name);
- }
-
- public boolean contains(String name) {
- return exports.containsKey(name);
- }
-
- public int size() {
- return exports.size();
- }
-
- public Set<String> keys() {
- TreeSet<String> keys = new TreeSet<>();
- keys.addAll(exports.keySet());
- return keys;
- }
-
- public PublishedExportsSet shallowCopy() {
- PublishedExportsSet that = new PublishedExportsSet();
- for (Map.Entry<String, PublishedExports> entry : exports.entrySet()) {
- that.put(entry.getKey(), entry.getValue().shallowCopy());
- }
- return that;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java
deleted file mode 100644
index 120966f..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.slider.core.registry.docstore;
-
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonIgnoreProperties;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@JsonIgnoreProperties(ignoreUnknown = true)
-@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
-public class UriMap {
-
- public Map<String, String> uris = new HashMap<>();
-
- @JsonIgnore
- public void put(String key, String value) {
- uris.put(key, value);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/info/CustomRegistryConstants.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/info/CustomRegistryConstants.java b/slider-core/src/main/java/org/apache/slider/core/registry/info/CustomRegistryConstants.java
deleted file mode 100644
index 13ad5c5..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/info/CustomRegistryConstants.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.slider.core.registry.info;
-
-/**
- * These are constants unique to the Slider AM
- */
-public class CustomRegistryConstants {
-
- public static final String MANAGEMENT_REST_API =
- "classpath:org.apache.slider.management";
-
- public static final String REGISTRY_REST_API =
- "classpath:org.apache.slider.registry";
-
- public static final String PUBLISHER_REST_API =
- "classpath:org.apache.slider.publisher";
-
- public static final String PUBLISHER_CONFIGURATIONS_API =
- "classpath:org.apache.slider.publisher.configurations";
-
- public static final String PUBLISHER_EXPORTS_API =
- "classpath:org.apache.slider.publisher.exports";
-
- public static final String PUBLISHER_DOCUMENTS_API =
- "classpath:org.apache.slider.publisher.documents";
-
- public static final String AGENT_SECURE_REST_API =
- "classpath:org.apache.slider.agents.secure";
-
- public static final String AGENT_ONEWAY_REST_API =
- "classpath:org.apache.slider.agents.oneway";
-
- public static final String AM_IPC_PROTOCOL =
- "classpath:org.apache.slider.appmaster.ipc";
-
- public static final String AM_REST_BASE =
- "classpath:org.apache.slider.client.rest";
-
- public static final String WEB_UI = "http://";
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java b/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java
deleted file mode 100644
index 40fa217..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * 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.slider.core.registry.retrieve;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.GenericType;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.json.JSONConfiguration;
-import com.sun.jersey.client.urlconnection.HttpURLConnectionFactory;
-import com.sun.jersey.client.urlconnection.URLConnectionClientHandler;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.security.ssl.SSLFactory;
-import org.apache.slider.client.rest.BaseRestClient;
-import org.apache.slider.core.restclient.HttpVerb;
-import org.apache.slider.core.restclient.UgiJerseyBinding;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLSocketFactory;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URI;
-import java.net.URL;
-
-/**
- * Class to retrieve artifacts from the AM's web site. This sets up
- * the redirection and security logic properly
- */
-public class AMWebClient {
-
-
- private final BaseRestClient restClient;
- private static final Logger
- log = LoggerFactory.getLogger(AMWebClient.class);
-
-
- public AMWebClient(Configuration conf) {
- UgiJerseyBinding binding = new UgiJerseyBinding(conf);
-
- restClient = new BaseRestClient(binding.createJerseyClient());
-
- }
-
-
- private static URLConnectionClientHandler getUrlConnectionClientHandler() {
- return new URLConnectionClientHandler(new HttpURLConnectionFactory() {
- @Override
- public HttpURLConnection getHttpURLConnection(URL url)
- throws IOException {
- HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- if (connection.getResponseCode() == HttpURLConnection.HTTP_MOVED_TEMP) {
- // is a redirect - are we changing schemes?
- String redirectLocation = connection.getHeaderField(HttpHeaders.LOCATION);
- String originalScheme = url.getProtocol();
- String redirectScheme = URI.create(redirectLocation).getScheme();
- if (!originalScheme.equals(redirectScheme)) {
- // need to fake it out by doing redirect ourselves
- log.info("Protocol change during redirect. Redirecting {} to URL {}",
- url, redirectLocation);
- URL redirectURL = new URL(redirectLocation);
- connection = (HttpURLConnection) redirectURL.openConnection();
- }
- }
- if (connection instanceof HttpsURLConnection) {
- log.debug("Attempting to configure HTTPS connection using client "
- + "configuration");
- final SSLFactory factory;
- final SSLSocketFactory sf;
- final HostnameVerifier hv;
-
- try {
- HttpsURLConnection c = (HttpsURLConnection) connection;
- factory = new SSLFactory(SSLFactory.Mode.CLIENT, new Configuration());
- factory.init();
- sf = factory.createSSLSocketFactory();
- hv = factory.getHostnameVerifier();
- c.setSSLSocketFactory(sf);
- c.setHostnameVerifier(hv);
- } catch (Exception e) {
- log.info("Unable to configure HTTPS connection from "
- + "configuration. Using JDK properties.");
- }
-
- }
- return connection;
- }
- });
- }
-
- public WebResource resource(String url) {
- return restClient.resource(url);
- }
-
- public BaseRestClient getRestClient() {
- return restClient;
- }
-
- /**
- * Execute the operation. Failures are raised as IOException subclasses
- * @param method method to execute
- * @param resource resource to work against
- * @param c class to build
- * @param <T> type expected
- * @return an instance of the type T
- * @throws IOException on any failure
- */
- public <T> T exec(HttpVerb method, WebResource resource, Class<T> c) throws IOException {
- return restClient.exec(method, resource, c);
- }
-
- /**
- * Execute the operation. Failures are raised as IOException subclasses
- * @param method method to execute
- * @param resource resource to work against
- * @param t type to work with
- * @param <T> type expected
- * @return an instance of the type T
- * @throws IOException on any failure
- */
- public <T> T exec(HttpVerb method, WebResource resource, GenericType<T> t)
- throws IOException {
- return restClient.exec(method, resource, t);
- }
-
- /**
- * Execute the GET operation. Failures are raised as IOException subclasses
- * @param resource resource to work against
- * @param c class to build
- * @param <T> type expected
- * @return an instance of the type T
- * @throws IOException on any failure
- */
- public <T> T get(WebResource resource, Class<T> c) throws IOException {
- return restClient.get(resource, c);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java b/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java
deleted file mode 100644
index b0eddb8..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * 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.slider.core.registry.retrieve;
-
-import com.beust.jcommander.Strings;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.registry.client.exceptions.RegistryIOException;
-import org.apache.hadoop.registry.client.types.ServiceRecord;
-import static org.apache.slider.client.ClientRegistryBinder.*;
-import org.apache.slider.common.tools.SliderUtils;
-import org.apache.slider.core.exceptions.ExceptionConverter;
-import org.apache.slider.core.registry.docstore.PublishedConfigSet;
-import org.apache.slider.core.registry.docstore.PublishedConfiguration;
-import org.apache.slider.core.registry.docstore.PublishedExports;
-import org.apache.slider.core.registry.docstore.PublishedExportsSet;
-import static org.apache.slider.core.registry.info.CustomRegistryConstants.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-/**
- * Registry retriever.
- * This hides the HTTP operations that take place to
- * get the actual content
- */
-public class RegistryRetriever extends AMWebClient {
- private static final Logger log = LoggerFactory.getLogger(RegistryRetriever.class);
-
- private final String externalConfigurationURL;
- private final String internalConfigurationURL;
- private final String externalExportsURL;
- private final String internalExportsURL;
-
- /**
- * Retrieve from a service by locating the
- * exported {@link CustomRegistryConstants.PUBLISHER_CONFIGURATIONS_API}
- * and working off it.
- *
- * @param conf configuration to work from
- * @param record service record
- * @throws RegistryIOException the address type of the endpoint does
- * not match that expected (i.e. not a list of URLs), missing endpoint...
- */
- public RegistryRetriever(Configuration conf, ServiceRecord record) throws RegistryIOException {
- super(conf);
- externalConfigurationURL = lookupRestAPI(record,
- PUBLISHER_CONFIGURATIONS_API, true);
- internalConfigurationURL = lookupRestAPI(record,
- PUBLISHER_CONFIGURATIONS_API, false);
- externalExportsURL = lookupRestAPI(record,
- PUBLISHER_EXPORTS_API, true);
- internalExportsURL = lookupRestAPI(record,
- PUBLISHER_EXPORTS_API, false);
- }
-
- /**
- * Does a bonded registry retriever have a configuration?
- * @param external flag to indicate that it is the external entries to fetch
- * @return true if there is a URL to the configurations defined
- */
- public boolean hasConfigurations(boolean external) {
- return !Strings.isStringEmpty(
- external ? externalConfigurationURL : internalConfigurationURL);
- }
-
- /**
- * Get the configurations of the registry
- * @param external flag to indicate that it is the external entries to fetch
- * @return the configuration sets
- */
- public PublishedConfigSet getConfigurations(boolean external) throws
- FileNotFoundException, IOException {
-
- String confURL = getConfigurationURL(external);
- WebResource webResource = resource(confURL);
- return get(webResource, PublishedConfigSet.class);
- }
-
- protected String getConfigurationURL(boolean external) throws FileNotFoundException {
- String confURL = external ? externalConfigurationURL: internalConfigurationURL;
- if (Strings.isStringEmpty(confURL)) {
- throw new FileNotFoundException("No configuration URL");
- }
- return confURL;
- }
-
- protected String getExportURL(boolean external) throws FileNotFoundException {
- String confURL = external ? externalExportsURL: internalExportsURL;
- if (Strings.isStringEmpty(confURL)) {
- throw new FileNotFoundException("No configuration URL");
- }
- return confURL;
- }
-
- /**
- * Get the configurations of the registry
- * @param external flag to indicate that it is the external entries to fetch
- * @return the configuration sets
- */
- public PublishedExportsSet getExports(boolean external) throws
- FileNotFoundException, IOException {
-
- String exportsUrl = getExportURL(external);
- WebResource webResource = resource(exportsUrl);
- return get(webResource, PublishedExportsSet.class);
- }
-
-
- /**
- * Get a complete configuration, with all values
- * @param configSet config set to ask for
- * @param name name of the configuration
- * @param external flag to indicate that it is an external configuration
- * @return the retrieved config
- * @throws IOException IO problems
- */
- public PublishedConfiguration retrieveConfiguration(PublishedConfigSet configSet,
- String name,
- boolean external) throws IOException {
- String confURL = getConfigurationURL(external);
- if (!configSet.contains(name)) {
- throw new FileNotFoundException("Unknown configuration " + name);
- }
- confURL = SliderUtils.appendToURL(confURL, name);
- WebResource webResource = resource(confURL);
- return get(webResource, PublishedConfiguration.class);
- }
-
- /**
- * Get a complete export, with all values
- * @param exportSet
- * @param name name of the configuration
- * @param external flag to indicate that it is an external configuration
- * @return the retrieved config
- * @throws IOException IO problems
- */
- public PublishedExports retrieveExports(PublishedExportsSet exportSet,
- String name,
- boolean external) throws IOException {
- if (!exportSet.contains(name)) {
- throw new FileNotFoundException("Unknown export " + name);
- }
- String exportsURL = getExportURL(external);
- exportsURL = SliderUtils.appendToURL(exportsURL, name);
- return get(resource(exportsURL), PublishedExports.class);
- }
-
- @Override
- public String toString() {
- final StringBuilder sb =
- new StringBuilder("RegistryRetriever{");
- sb.append("externalConfigurationURL='")
- .append(externalConfigurationURL)
- .append('\'');
- sb.append(", internalConfigurationURL='")
- .append(internalConfigurationURL)
- .append('\'');
- sb.append(", externalExportsURL='").append(externalExportsURL).append('\'');
- sb.append(", internalExportsURL='").append(internalExportsURL).append('\'');
- sb.append('}');
- return sb.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/restclient/HttpOperationResponse.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/restclient/HttpOperationResponse.java b/slider-core/src/main/java/org/apache/slider/core/restclient/HttpOperationResponse.java
deleted file mode 100644
index 0266223..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/restclient/HttpOperationResponse.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.slider.core.restclient;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * A response for use as a return value from operations
- */
-public class HttpOperationResponse {
-
- public int responseCode;
- public long lastModified;
- public String contentType;
- public byte[] data;
- public Map<String, List<String>> headers;
-}