http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zktreeutil/src/ZkTreeUtil.cc
----------------------------------------------------------------------
diff --git a/src/contrib/zktreeutil/src/ZkTreeUtil.cc b/src/contrib/zktreeutil/src/ZkTreeUtil.cc
deleted file mode 100644
index 270bf31..0000000
--- a/src/contrib/zktreeutil/src/ZkTreeUtil.cc
+++ /dev/null
@@ -1,705 +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.
- */
-
-#include "ZkTreeUtil.h"
-
-#include <map>
-#include <iostream>
-#include <log4cxx/logger.h>
-#include <boost/algorithm/string.hpp>
-#include <boost/algorithm/string/split.hpp>
-
-namespace zktreeutil
-{
- using std::map;
- using std::pair;
-
- static ZkTreeNodeSptr loadZkTree_ (ZooKeeperAdapterSptr zkHandle,
- const string& path)
- {
- // Extract the node value
- string value = zkHandle->getNodeData(path);
-
- // Extract nodename from the path
- string nodename = "/";
- if (path != "/")
- {
- vector< string > nodes;
- boost::split(nodes, path, boost::is_any_of ("/") );
- nodename = nodes[nodes.size()-1];
- }
-
- // Create tree-node with name and value
- ZkTreeNodeSptr nodeSptr = ZkTreeNodeSptr (new ZkTreeNode (nodename, value));
- std::cerr << "[zktreeutil] loaded nodename: "
- << nodename
- << " value: "
- << value
- << std::endl;
-
- // Load all the children
- vector< string > cnodes = zkHandle->getNodeChildren (path);
- for (unsigned i = 0; i < cnodes.size(); i++)
- nodeSptr->addChild (loadZkTree_ (zkHandle, cnodes[i]));
-
- // Return the constructed node
- return nodeSptr;
- }
-
- static ZkTreeNodeSptr loadZkTreeXml_ (xmlNode* xmlNodePtr)
- {
- // Null check
- if (xmlNodePtr == NULL)
- {
- std::cerr << "[zktreeutil] empty XML node encountered" << std::endl;
- exit (-1);
- }
-
- // Get the node name
- xmlChar* name = xmlGetProp (xmlNodePtr, BAD_CAST "name");
- string nameStr = (const char*)name;
- std::cerr << "[zktreeutil] node name: " << nameStr;
- xmlFree (name);
- // Get the node value
- string valueStr;
- xmlChar* value = xmlGetProp (xmlNodePtr, BAD_CAST "value");
- if (value)
- {
- valueStr = (const char*)value;
- std::cerr << " value: " << valueStr;
- }
- xmlFree (value);
- // Get the ignore flag
- bool doIgnore = false;
- xmlChar* ignore = xmlGetProp (xmlNodePtr, BAD_CAST "ignore");
- if (ignore)
- {
- string ignoreStr = (const char*) ignore;
- if (ignoreStr == "true" || ignoreStr == "yes" || ignoreStr == "1")
- {
- doIgnore = true;
- std::cerr << " <ignore:>";
- }
- }
- xmlFree (ignore);
- std::cerr << std::endl;
-
- // Create the zk node
- ZkTreeNodeSptr nodeSptr =
- ZkTreeNodeSptr (new ZkTreeNode (nameStr,
- ZkNodeData (valueStr, doIgnore)));
-
- // Load the children
- for (xmlNode* chldNode = xmlNodePtr->children;
- chldNode;
- chldNode = chldNode->next)
- if (chldNode->type == XML_ELEMENT_NODE)
- nodeSptr->addChild (loadZkTreeXml_ (chldNode));
-
- // Return the loaded node
- return nodeSptr;
- }
-
- static void writeZkTree_ (ZooKeeperAdapterSptr zkHandle,
- const ZkTreeNodeSptr zkNodeSptr,
- const string& path)
- {
- // Create the path in zk-tree
- zkHandle->createNode(path.c_str(), "", 0, false);
- std::cerr << "[zktreeutil] created key: " << path << std::endl;
- // Set value for the path
- string value = zkNodeSptr->getData().value;
- if (value != "")
- {
- zkHandle->setNodeData (path.c_str(), value.c_str());
- std::cerr << "[zktreeutil] set value: " << std::endl;
- }
-
- // Go deep to write the subtree rooted in the node, if not to be ignored
- if (!(zkNodeSptr->getData().ignoreUpdate))
- {
- for (unsigned i=0; i < zkNodeSptr->numChildren(); i++)
- {
- ZkTreeNodeSptr childNodeSptr = zkNodeSptr->getChild (i);
- // Add the node name into the path and write in zk-tree
- string cpath = ((path != "/")? path : "")
- + string("/")
- + childNodeSptr->getKey();
- writeZkTree_ (zkHandle, childNodeSptr, cpath);
- }
- }
-
- return;
- }
-
- static void addTreeZkAction_ (const ZkTreeNodeSptr zkNodeSptr,
- const string& path,
- vector< ZkAction >& actions)
- {
- // Create the key
- actions.push_back (ZkAction (ZkAction::CREATE, path));
-
- // Set value for the new key
- if (zkNodeSptr->getData().value != "")
- actions.push_back (ZkAction (ZkAction::VALUE,
- path,
- zkNodeSptr->getData().value));
-
- // Add all the children
- for (unsigned i=0; i < zkNodeSptr->numChildren(); i++)
- {
- ZkTreeNodeSptr childSptr = zkNodeSptr->getChild (i);
- string cpath = path + string("/") + childSptr->getKey();
- addTreeZkAction_ (childSptr, cpath, actions);
- }
-
- return;
- }
-
- static xmlNodePtr dumpZkTreeXml_ (const ZkTreeNodeSptr zkNodeSptr)
- {
- // Create xml node with zknode name and value
- string nodename = zkNodeSptr->getKey ();
- string value = zkNodeSptr->getData().value;
- xmlNodePtr node = xmlNewNode(NULL, BAD_CAST "zknode");
- xmlNewProp (node, BAD_CAST "name", BAD_CAST nodename.c_str());
- if (value.length())
- xmlNewProp (node, BAD_CAST "value", BAD_CAST value.c_str());
-
- // Add all the children rotted at this node
- for (unsigned i=0; i < zkNodeSptr->numChildren(); i++)
- xmlAddChild (node, dumpZkTreeXml_ (zkNodeSptr->getChild (i)));
-
- // Return xml node
- return node;
- }
-
- static void dumpZkTree_ (const ZkTreeNodeSptr zkNodeSptr,
- int maxLevel,
- int level,
- vector< bool >& masks)
- {
- // Check the max. dlevel to be dumped
- if (level > maxLevel)
- return;
-
-
- // Create branch
- for (int i=0; i < level; i++)
- {
- if ( i== level-1) std::cout << "| ";
- else if (masks[i]) std::cout << " ";
- else std::cout << "| ";
- }
- std::cout << std::endl;
- for (int i=0; i < level-1; i++)
- {
- if (masks[i]) std::cout << " ";
- else std::cout << "| ";
- }
-
- // Dump the node name and value
- std::cout << "|--[" << zkNodeSptr->getKey();
- if (zkNodeSptr->getData().value != "")
- std::cout << " => " << zkNodeSptr->getData().value;
- std::cout << "]" << std::endl;
-
- // Dump all the children
- for (unsigned i=0; i < zkNodeSptr->numChildren(); i++)
- {
- // Add mask for last child
- if (i == zkNodeSptr->numChildren()-1)
- masks.push_back(true);
- else
- masks.push_back(false);
- dumpZkTree_ (zkNodeSptr->getChild (i), maxLevel, level+1, masks);
- }
-
- masks.pop_back();
- return;
- }
-
- static ZkTreeNodeSptr traverseBranch_ (const ZkTreeNodeSptr& zkRootSptr,
- const string& path)
- {
- // Check if the tree is loaded into memory
- if (zkRootSptr == NULL)
- {
- string errMsg = "[zktreeutil] null root passed for traversing";
- std::cout << errMsg << std::endl;
- throw std::logic_error (errMsg);
- }
-
- // Split the path and add intermediate znodes
- vector< string > nodes;
- boost::split(nodes, path, boost::is_any_of ("/") );
-
- // Start traversing the tree
- ZkTreeNodeSptr currNodeSptr = zkRootSptr;
- for (unsigned znode_idx = 1; znode_idx < nodes.size(); znode_idx++)
- {
- bool found = false;
- for (unsigned i=0; i < currNodeSptr->numChildren(); i++)
- {
- ZkTreeNodeSptr childNodeSptr = currNodeSptr->getChild(i);
- if (childNodeSptr->getKey() == nodes[znode_idx])
- {
- // Found! go to the znode
- currNodeSptr = childNodeSptr;
- found = true;
- break;
- }
- }
- if (!found) // No such znode found; return NULL node-ptr
- {
- string errMsg = string("[zktreeutil] unknown znode during traversal: ")
- + nodes[znode_idx];
- std::cout << errMsg << std::endl;
- throw std::logic_error (errMsg);
- }
- }
-
- return currNodeSptr;
- }
-
- static ZkTreeNodeSptr createAncestors_ (const string& path)
- {
- // Create the root znode
- ZkTreeNodeSptr zkRootSptr = ZkTreeNodeSptr (new ZkTreeNode ("/"));
- ZkTreeNodeSptr currNodeSptr = zkRootSptr;
- // Split the path and add intermediate znodes
- vector< string > nodes;
- boost::split(nodes, path, boost::is_any_of ("/") );
- for (unsigned i=1; i < nodes.size()-1; i++)
- {
- ZkTreeNodeSptr childNodeSptr = ZkTreeNodeSptr (new ZkTreeNode (nodes[i]));
- currNodeSptr->addChild (childNodeSptr);
- currNodeSptr = childNodeSptr;
- }
-
- //Return the root of the branch
- return zkRootSptr;
- }
-
- ZooKeeperAdapterSptr ZkTreeUtil::get_zkHandle (const string& zkHosts)
- {
- try
- {
- // Create an instance of ZK adapter.
- ZooKeeperConfig config (zkHosts, 10000);
- ZooKeeperAdapterSptr zkHandleSptr =
- ZooKeeperAdapterSptr (new ZooKeeperAdapter (config));
- return zkHandleSptr;
- }
- catch (const ZooKeeperException &e)
- {
- std::cerr << "[zktreeutil] zooKeeper exception caught: "
- << e.what()
- << std::endl;
- throw;
- }
- catch (std::exception &stde)
- {
- std::cerr << "[zktreeutil] standard exception caught: "
- << stde.what()
- << std::endl;
- throw;
- }
- catch (...)
- {
- std::cerr
- << "[zktreeutil] unknown exception while connecting to zookeeper"
- << std::endl;
- throw;
- }
- }
-
-
- void ZkTreeUtil::loadZkTree (const string& zkHosts,
- const string& path,
- bool force)
- {
- // Check if already loaded
- if (loaded_ && !force)
- {
- std::cerr << "[zktreeutil] zk-tree already loaded into memory"
- << std::endl;
- return;
- }
-
- // Connect to ZK server
- ZooKeeperAdapterSptr zkHandle = get_zkHandle (zkHosts);
- std::cerr << "[zktreeutil] connected to ZK serverfor reading"
- << std::endl;
-
- // Check the existence of the path to znode
- if (!zkHandle->nodeExists (path))
- {
- string errMsg = string("[zktreeutil] path does not exists : ") + path;
- std::cout << errMsg << std::endl;
- throw std::logic_error (errMsg);
- }
-
- // Load the rooted (sub)tree
- ZkTreeNodeSptr zkSubrootSptr = loadZkTree_ (zkHandle, path);
-
- // Create the ancestors before loading the rooted subtree
- if (path != "/")
- {
- zkRootSptr_ = createAncestors_(path);
- string ppath = path.substr (0, path.rfind('/'));
- ZkTreeNodeSptr parentSptr = traverseBranch_( zkRootSptr_, ppath);
- parentSptr->addChild (zkSubrootSptr);
- }
- else // Loaded entire zk-tree
- {
- zkRootSptr_ = zkSubrootSptr;
- }
-
- // Set load flag
- loaded_ = true;
- return;
- }
-
- void ZkTreeUtil::loadZkTreeXml (const string& zkXmlConfig,
- bool force)
- {
- // Check if already loaded
- if (loaded_ && !force)
- {
- std::cerr << "[zktreeutil] zk-tree already loaded into memory"
- << std::endl;
- return;
- }
-
- // Parse the file and get the DOM
- xmlDocPtr docPtr = xmlReadFile(zkXmlConfig.c_str(), NULL, 0);
- if (docPtr == NULL) {
- std::cerr << "[zktreeutil] could not parse XML file "
- << zkXmlConfig
- << std::endl;
- exit (-1);
- }
- std::cerr << "[zktreeutil] zk-tree XML parsing successful"
- << std::endl;
-
- // Get the root element node
- xmlNodePtr rootPtr = xmlDocGetRootElement(docPtr);
- // Create the root zk node
- zkRootSptr_ = ZkTreeNodeSptr (new ZkTreeNode ("/"));
- // Load the rooted XML tree
- for (xmlNode* chldNode = rootPtr->children;
- chldNode;
- chldNode = chldNode->next)
- {
- if (chldNode->type == XML_ELEMENT_NODE)
- zkRootSptr_->addChild (loadZkTreeXml_ (chldNode));
- }
-
- // set oad flag
- loaded_ = true;
- // Cleanup stuff
- xmlFreeDoc(docPtr);
- xmlCleanupParser();
- return;
- }
-
- void ZkTreeUtil::writeZkTree (const string& zkHosts,
- const string& path,
- bool force) const
- {
- // Connect to ZK server
- ZooKeeperAdapterSptr zkHandle = get_zkHandle (zkHosts);
- std::cerr << "[zktreeutil] connected to ZK server for writing"
- << std::endl;
-
- // Go to the rooted subtree
- ZkTreeNodeSptr zkRootSptr = traverseBranch_ (zkRootSptr_, path);
-
- // Cleanup before write if forceful write enabled
- if (force)
- {
- if (path != "/") // remove the subtree rooted at the znode
- {
- // Delete the subtree rooted at the znode before write
- if (zkHandle->nodeExists (path))
- {
- std::cerr << "[zktreeutil] deleting subtree rooted at "
- << path
- << "..."
- << std::endl;
- zkHandle->deleteNode (path, true);
- }
- }
- else // remove the rooted znodes
- {
- std::cerr << "[zktreeutil] deleting rooted zk-tree"
- << "..."
- << std::endl;
- // Get the root's children
- vector< string > cnodes = zkHandle->getNodeChildren ("/");
- for (unsigned i=0; i < cnodes.size(); i++)
- {
- if ( cnodes[i] != "/zookeeper") // reserved for zookeeper use
- zkHandle->deleteNode(cnodes[i], true);
- }
- }
- }
-
- // Start tree construction
- writeZkTree_ (zkHandle, zkRootSptr, path);
- return;
- }
-
- void ZkTreeUtil::dumpZkTree (bool xml, int depth) const
- {
- if (xml)
- {
- // Creates a new document, a node and set it as a root node
- xmlDocPtr docPtr = xmlNewDoc(BAD_CAST "1.0");
- xmlNodePtr rootNode = xmlNewNode(NULL, BAD_CAST "root");
- xmlDocSetRootElement(docPtr, rootNode);
-
- // Add all the rooted children
- for (unsigned i=0; i < zkRootSptr_->numChildren(); i++)
- xmlAddChild (rootNode, dumpZkTreeXml_ (zkRootSptr_->getChild (i)));
-
- // Dumping document to stdio or file
- xmlSaveFormatFileEnc("-", docPtr, "UTF-8", 1);
-
- // Cleanup stuff
- xmlFreeDoc(docPtr);
- xmlCleanupParser();
- return;
- }
-
- // Dump text
- std::cout << "/" << std::endl;
- vector< bool > masks;
- for (unsigned i=0; i < zkRootSptr_->numChildren(); i++)
- {
- if (i == zkRootSptr_->numChildren()-1)
- masks.push_back(true);
- else
- masks.push_back(false);
- dumpZkTree_ (zkRootSptr_->getChild (i), depth, 1, masks);
- }
-
- return;
- }
-
- vector< ZkAction > ZkTreeUtil::diffZkTree (const string& zkHosts,
- const string& path) const
- {
- // Action container
- vector< ZkAction > actions;
-
- if (!loaded_)
- {
- std::cout << "[zktreeutil] zk-tree not loaded for diff"
- << std::endl;
- exit (-1);
- }
-
- // Load the rooted subtree from zookeeper
- ZooKeeperAdapterSptr zkHandle = get_zkHandle (zkHosts);
- std::cerr << "[zktreeutil] connected to ZK server for reading"
- << std::endl;
- ZkTreeNodeSptr zkLiveRootSptr = loadZkTree_ (zkHandle, path);
-
- // Go to the saved rooted subtree
- ZkTreeNodeSptr zkLoadedRootSptr =
- traverseBranch_ (zkRootSptr_, path);
-
- // Check the root value first
- if (zkLoadedRootSptr->getData().value
- != zkLiveRootSptr->getData().value)
- {
- actions.push_back (ZkAction (ZkAction::VALUE,
- path,
- zkLoadedRootSptr->getData().value,
- zkLiveRootSptr->getData().value));
- }
-
- // Start traversal from root
- vector< string > ppaths;
- vector< pair< ZkTreeNodeSptr, ZkTreeNodeSptr > > commonNodes;
- ppaths.push_back ((path != "/")? path : "");
- commonNodes.push_back (pair< ZkTreeNodeSptr, ZkTreeNodeSptr >
- (zkLoadedRootSptr, zkLiveRootSptr));
-
- for (unsigned j=0; j < commonNodes.size(); j++)
- {
- // Get children of loaded tree
- map< string, ZkTreeNodeSptr > loadedChildren;
- for (unsigned i=0; i < commonNodes[j].first->numChildren(); i++)
- {
- ZkTreeNodeSptr childSptr = commonNodes[j].first->getChild (i);
- loadedChildren[childSptr->getKey()] = childSptr;
- }
- // Get children of live tree
- map< string, ZkTreeNodeSptr > liveChildren;
- for (unsigned i=0; i < commonNodes[j].second->numChildren(); i++)
- {
- ZkTreeNodeSptr childSptr = commonNodes[j].second->getChild (i);
- liveChildren[childSptr->getKey()] = childSptr;
- }
-
- // Start comparing the children
- for (map< string, ZkTreeNodeSptr >::const_iterator it =
- loadedChildren.begin();
- it != loadedChildren.end();
- it++)
- {
- bool ignoreKey = it->second->getData().ignoreUpdate;
- string loadedVal = it->second->getData().value;
- // Path to this node
- string path = ppaths[j] + string("/") + it->first;
-
- map< string, ZkTreeNodeSptr >::const_iterator jt =
- liveChildren.find (it->first);
- if (jt != liveChildren.end())
- {
- // Key is present in live zk-tree
- string liveVal = jt->second->getData().value;
- // Check value for the key, if not ignored
- if (!ignoreKey)
- {
- if (loadedVal != liveVal)
- {
- // Value differs, set the new value for the key
- actions.push_back (ZkAction (ZkAction::VALUE,
- path,
- loadedVal,
- liveVal));
- }
-
- // Add node to common nodes
- ppaths.push_back (path);
- commonNodes.push_back (pair< ZkTreeNodeSptr, ZkTreeNodeSptr >
- (it->second, jt->second));
- }
-
- // Remove the live zk node
- liveChildren.erase (it->first);
- }
- else
- {
- // Add the subtree rooted to this node, if not ignored
- if (!ignoreKey)
- addTreeZkAction_ (it->second, path, actions);
- }
- }
-
- // Remaining live zk nodes to be deleted
- for (map< string, ZkTreeNodeSptr >::const_iterator it = liveChildren.begin();
- it != liveChildren.end(); it++)
- {
- string path = ppaths[j] + string("/") + it->first;
- actions.push_back (ZkAction (ZkAction::DELETE, path));
- }
- }
- // return the diff actions
- return actions;
- }
-
- void ZkTreeUtil::executeZkActions (const string& zkHosts,
- const vector< ZkAction >& zkActions,
- int execFlags) const
- {
- // Execute the diff zk actions
- if (zkActions.size())
- {
- // Connect to Zookeeper for writing
- ZooKeeperAdapterSptr zkHandleSptr;
- if ((execFlags & EXECUTE)
- || (execFlags & INTERACTIVE))
- {
- zkHandleSptr = get_zkHandle (zkHosts);
- std::cerr << "[zktreeutil] connected to ZK server for writing"
- << std::endl;
- }
-
- for (unsigned i=0; i < zkActions.size(); i++)
- {
- if (zkActions[i].action == ZkAction::CREATE)
- {
- if (execFlags & PRINT)
- std::cout << "CREAT- key:" << zkActions[i].key << std::endl;
- if (execFlags & EXECUTE)
- {
- if (execFlags & INTERACTIVE)
- {
- string resp;
- std::cout << "Execute this action?[yes/no]: ";
- std::getline(std::cin, resp);
- if (resp != "yes")
- continue;
- }
- zkHandleSptr->createNode(zkActions[i].key.c_str(), "", 0, false);
- }
- }
- else if (zkActions[i].action == ZkAction::DELETE)
- {
- if (execFlags & PRINT)
- std::cout << "DELET- key:" << zkActions[i].key << std::endl;
- if (execFlags & EXECUTE)
- {
- if (execFlags & INTERACTIVE)
- {
- string resp;
- std::cout << "Execute this action?[yes/no]: ";
- std::getline(std::cin, resp);
- if (resp != "yes")
- continue;
- }
- zkHandleSptr->deleteNode(zkActions[i].key.c_str(), true);
- }
- }
- else if (zkActions[i].action == ZkAction::VALUE)
- {
- if (execFlags & PRINT)
- {
- std::cout << "VALUE- key:"
- << zkActions[i].key
- << " value:" << zkActions[i].newval;
- if (zkActions[i].oldval != "")
- std::cout << " old_value:" << zkActions[i].oldval;
- std::cout << std::endl;
- }
- if (execFlags & EXECUTE)
- {
- if (execFlags & INTERACTIVE)
- {
- string resp;
- std::cout << "Execute this action?[yes/no]: ";
- std::getline(std::cin, resp);
- if (resp != "yes")
- continue;
- }
- zkHandleSptr->setNodeData (zkActions[i].key, zkActions[i].newval);
- }
- }
- }
- }
-
- return;
- }
-
-}
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zktreeutil/src/ZkTreeUtil.h
----------------------------------------------------------------------
diff --git a/src/contrib/zktreeutil/src/ZkTreeUtil.h b/src/contrib/zktreeutil/src/ZkTreeUtil.h
deleted file mode 100644
index 0a9be03..0000000
--- a/src/contrib/zktreeutil/src/ZkTreeUtil.h
+++ /dev/null
@@ -1,262 +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.
- */
-
-#ifndef __ZK_TREE_UTIL_H__
-#define __ZK_TREE_UTIL_H__
-
-#include <libxml/parser.h>
-#include <libxml/tree.h>
-#include "SimpleTree.h"
-#include "ZkAdaptor.h"
-
-namespace zktreeutil
-{
-
-#define ZKTREEUTIL_INF 1000000000
- /**
- * \brief A structure containing ZK node data.
- */
- struct ZkNodeData
- {
- /**
- * \brief The value string of the ZK node.
- */
- string value;
-
- /**
- * \brief The flag indicating whether children of the
- * \brief node shduld be ignored during create/diff/update
- */
- bool ignoreUpdate;
-
- /**
- * \brief Constructor.
- *
- * @param val the value string
- * @param ignore the flag indicating ignore any update/diff
- */
- ZkNodeData (const string& val, bool ignore=false)
- : value (val), ignoreUpdate (ignore) {}
-
- /**
- * \brief Constructor.
- *
- * @param ignore the flag indicating ignore any update/diff
- */
- ZkNodeData (bool ignore=false)
- : ignoreUpdate (ignore) {}
- };
-
- /**
- * \brief The type representing a ZK Treenode
- */
- typedef SimpleTreeNode< string, ZkNodeData > ZkTreeNode;
-
- /**
- * \brief The type representing a ZK Treenode smart-pointer
- */
- typedef boost::shared_ptr< ZkTreeNode > ZkTreeNodeSptr;
-
- /**
- * \brief The type representing a ZK Adapter smart-pointer
- */
- typedef boost::shared_ptr< ZooKeeperAdapter > ZooKeeperAdapterSptr;
-
- /**
- * \brief A structure defining a particular action on ZK node;
- * \brief the action can be any of -
- * \brief CREAT- <zknode> : creates <zknode> recussively
- * \brief DELET- <zknode> : deletes <zknode> recursively
- * \brief VALUE- <zknode> <value> : sets <value> to <zknode>
- */
- struct ZkAction
- {
- /**
- * \brief The action type; any of create/delete/setvalue.
- */
- enum ZkActionType
- {
- NONE,
- CREATE,
- DELETE,
- VALUE,
- };
-
- /**
- * \brief action of this instance
- */
- ZkActionType action;
-
- /**
- * \brief ZK node key
- */
- string key;
-
- /**
- * \brief value to be set, if action is setvalue
- */
- string newval;
-
- /**
- * \brief existing value of the ZK node key
- */
- string oldval;
-
- /**
- * \brief Constructor.
- */
- ZkAction ()
- : action (ZkAction::NONE) {}
-
- /**
- * \brief Constructor.
- *
- * @param act the action to be taken
- * @param k the key on which action to be taken
- */
- ZkAction (ZkActionType act, const string& k)
- : action(act),
- key(k) {}
-
- /**
- * \brief Constructor.
- *
- * @param act the action to be taken
- * @param k the key on which action to be taken
- * @param v the value of the ZK node key
- */
- ZkAction (ZkActionType act, const string& k, const string& v)
- : action(act),
- key(k),
- newval(v) {}
-
- /**
- * \brief Constructor.
- *
- * @param act the action to be taken
- * @param k the key on which action to be taken
- * @param nv the new value of the ZK node key
- * @param ov the old value of the ZK node key
- */
- ZkAction (ZkActionType act, const string& k, const string& nv, const string& ov)
- : action (act),
- key(k),
- newval(nv),
- oldval(ov) {}
- };
-
- /**
- * \brief The ZK tree utility class; supports loading ZK tree from ZK server OR
- * \brief from saved XML file, saving ZK tree into XML file, dumping the ZK tree
- * \brief on standard output, creting a diff between saved ZK tree and live ZK
- * \brief tree and incremental update of the live ZK tree.
- */
- class ZkTreeUtil
- {
- public:
- /**
- * \brief Execution flag on ZkAction
- */
- enum ZkActionExecuteFlag
- {
- NONE = 0,
- PRINT = 1,
- EXECUTE = 2,
- INTERACTIVE = 5,
- };
-
- public:
- /**
- * \brief Connects to zookeeper and returns a valid ZK handle
- *
- * @param zkHosts comma separated list of host:port forming ZK quorum
- * @param a valid ZK handle
- */
- static ZooKeeperAdapterSptr get_zkHandle (const string& zkHosts);
-
-
- public:
- /**
- * \brief Constructor.
- */
- ZkTreeUtil () : loaded_(false) {}
-
- /**
- * \brief loads the ZK tree from ZK server into memory
- *
- * @param zkHosts comma separated list of host:port forming ZK quorum
- * @param path path to the subtree to be loaded into memory
- * @param force forces reloading in case tree already loaded into memory
- */
- void loadZkTree (const string& zkHosts, const string& path="/", bool force=false);
-
- /**
- * \brief loads the ZK tree from XML file into memory
- *
- * @param zkXmlConfig ZK tree XML file
- * @param force forces reloading in case tree already loaded into memory
- */
- void loadZkTreeXml (const string& zkXmlConfig, bool force=false);
-
- /**
- * \brief writes the in-memory ZK tree on to ZK server
- *
- * @param zkHosts comma separated list of host:port forming ZK quorum
- * @param path path to the subtree to be written to ZK tree
- * @param force forces cleanup of the ZK tree on the ZK server before writing
- */
- void writeZkTree (const string& zkHosts, const string& path="/", bool force=false) const;
-
- /**
- * \brief dupms the in-memory ZK tree on the standard output device;
- *
- * @param xml flag indicates whether tree should be dumped in XML format
- * @param depth the depth of the tree to be dumped for non-xml dump
- */
- void dumpZkTree (bool xml=false, int depth=ZKTREEUTIL_INF) const;
-
- /**
- * \brief returns a list of actions after taking a diff of in-memory
- * \brief ZK tree and live ZK tree.
- *
- * @param zkHosts comma separated list of host:port forming ZK quorum
- * @param path path to the subtree in consideration while taking diff with ZK tree
- * @return a list of ZKAction instances to be performed on live ZK tree
- */
- vector< ZkAction > diffZkTree (const string& zkHosts, const string& path="/") const;
-
- /**
- * \brief performs create/delete/setvalue by executing a set of
- * ZkActions on a live ZK tree.
- *
- * @param zkHosts comma separated list of host:port forming ZK quorum
- * @param zkActions set of ZkActions
- * @param execFlags flags indicating print/execute/interactive etc
- */
- void executeZkActions (const string& zkHosts,
- const vector< ZkAction >& zkActions,
- int execFlags) const;
-
- private:
-
- ZkTreeNodeSptr zkRootSptr_; // ZK tree root node
- bool loaded_; // Falg indicating whether ZK tree loaded into memory
- };
-}
-
-#endif // __ZK_TREE_UTIL_H__
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zktreeutil/src/ZkTreeUtilMain.cc
----------------------------------------------------------------------
diff --git a/src/contrib/zktreeutil/src/ZkTreeUtilMain.cc b/src/contrib/zktreeutil/src/ZkTreeUtilMain.cc
deleted file mode 100644
index 8afebf6..0000000
--- a/src/contrib/zktreeutil/src/ZkTreeUtilMain.cc
+++ /dev/null
@@ -1,247 +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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <unistd.h>
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-#include <getopt.h>
-#include <iostream>
-#include "ZkTreeUtil.h"
-
-using namespace zktreeutil;
-
-// The set of "long" options accepted by this program.
-static struct option long_options[] = {
- {"help", no_argument, 0, 'h'},
- {"import", no_argument, 0, 'I'},
- {"export", no_argument, 0, 'E'},
- {"update", no_argument, 0, 'U'},
- {"diff", no_argument, 0, 'F'},
- {"dump", no_argument, 0, 'D'},
- {"force", no_argument, 0, 'f'},
- {"xmlfile", required_argument, 0, 'x'},
- {"path", required_argument, 0, 'p'},
- {"depth", required_argument, 0, 'd'},
- {"zookeeper", required_argument, 0, 'z'},
- {0, 0, 0, 0}
-};
-static char *short_options = "IEUFDfx:p:d:hz:";
-
-static void usage(int argc, char *argv[])
-{
- std::cout << "ZK-tree utility for managing ZK-tree with XML import/export," << std::endl;
- std::cout << "viewing diff between live and saved ZK-tree and performing" << std::endl;
- std::cout << "incremental update of the same." << std::endl;
- std::cout << "Usage: " << argv[0] << " [args-and-values]+" << std::endl;
- std::cout
- << "\t--import or -I: "
- << std::endl
- << "\t Imports the zookeeper tree from XML file. Must be specified with"
- << std::endl
- << "\t --zookeeper AND --xmlfile options. Optionally takes --path for"
- << std::endl
- << "\t importing subtree"
- << std::endl;
- std::cout
- << "\t--export or -E: "
- << std::endl
- << "\t Exports the zookeeper tree to XML file. Must be specified with"
- << std::endl
- << "\t --zookeeper option. Optionally takes --path for exporting subtree"
- << std::endl;
- std::cout
- << "\t--update or -U: "
- << std::endl
- << "\t Updates zookeeper tree with changes from XML file. Update operation"
- << std::endl
- << "\t is interactive unless specified with --force option. Must be speci-"
- << std::endl
- << "\t fied with --zookeeper AND --xmlfile options. Optionally takes --path"
- << std::endl
- << "\t for updating subtree."
- << std::endl;
- std::cout
- << "\t--diff or -F: "
- << std::endl
- << "\t Creates a list of diff actions on ZK tree based on XML data. Must"
- << std::endl
- << "\t be specified with --zookeeper OR --xmlfile options. Optionally takes"
- << std::endl
- << "\t --path for subtree diff"
- << std::endl;
- std::cout
- << "\t--dump or -D: "
- << std::endl
- << "\t Dumps the entire ZK (sub)tree to standard output. Must be specified"
- << std::endl
- << "\t with --zookeeper OR --xmlfile options. Optionally takes --path and"
- << std::endl
- << "\t --depth for dumping subtree."
- << std::endl;
- std::cout
- << "\t--xmlfile=<filename> or -x <filename>: "
- << std::endl
- << "\t Zookeeper tree-data XML file."
- << std::endl;
- std::cout
- << "\t--path=<znodepath> or -p <znodepath>: "
- << std::endl
- << "\t Path to the zookeeper subtree rootnode."
- << std::endl;
- std::cout
- << "\t--depth=<tree-depth> or -d <tree-depth>: "
- << std::endl
- << "\t Depth of the ZK tree to be dumped (ignored for XML dump)."
- << std::endl;
- std::cout
- << "\t--force or -f: Forces cleanup before import; also used for forceful"
- << std::endl
- << "\t update. Optionally be specified with --import and --update."
- << std::endl;
- std::cout
- << "\t--help or -h: "
- << std::endl
- << "\t prints this message"
- << std::endl;
- std::cout
- << "\t--zookeeper=<zkhosts> or -z <zkhosts>: "
- << std::endl
- << "\t specifies information to connect to zookeeper."
- << std::endl;
-}
-
-int main(int argc, char **argv)
-{
- if (argc == 1) {
- usage(argc, argv);
- exit(0);
- }
-
- // Parse the arguments.
- int op = 0;
- bool force = false;
- string zkHosts;
- string xmlFile;
- string path = "/";
- int depth = 0;
- while (1)
- {
- int c = getopt_long(argc, argv, short_options, long_options, 0);
- if (c == -1)
- break;
-
- switch (c) {
- case 'I': op = c;
- break;
- case 'E': op = c;
- break;
- case 'U': op = c;
- break;
- case 'F': op = c;
- break;
- case 'D': op = c;
- break;
- case 'f': force = true;
- break;
- case 'x': xmlFile = optarg;
- break;
- case 'p': path = optarg;
- break;
- case 'd': depth = atoi (optarg);
- break;
- case 'z': zkHosts = optarg;
- break;
- case 'h': usage (argc, argv);
- exit(0);
- }
- }
-
- ZkTreeUtil zkTreeUtil;
- switch (op)
- {
- case 'I': {
- if (zkHosts == "" || xmlFile == "")
- {
- std::cout << "[zktreeutil] missing params; please see usage" << std::endl;
- exit (-1);
- }
- zkTreeUtil.loadZkTreeXml (xmlFile);
- zkTreeUtil.writeZkTree (zkHosts, path, force);
- std::cout << "[zktreeutil] import successful!" << std::endl;
- break;
- }
- case 'E': {
- if (zkHosts == "")
- {
- std::cout << "[zktreeutil] missing params; please see usage" << std::endl;
- exit (-1);
- }
- zkTreeUtil.loadZkTree (zkHosts, path);
- zkTreeUtil.dumpZkTree (true);
- break;
- }
- case 'U': {
- if (zkHosts == "" || xmlFile == "")
- {
- std::cout << "[zktreeutil] missing params; please see usage" << std::endl;
- exit (-1);
- }
- zkTreeUtil.loadZkTreeXml (xmlFile);
- vector< ZkAction > zkActions = zkTreeUtil.diffZkTree (zkHosts, path);
- int flags = ZkTreeUtil::EXECUTE;
- if (!force) flags |= ZkTreeUtil::INTERACTIVE;
- zkTreeUtil.executeZkActions (zkHosts, zkActions, flags);
- std::cout << "[zktreeutil] update successful!" << std::endl;
- break;
- }
- case 'F': {
- if (zkHosts == "" || xmlFile == "")
- {
- std::cout << "[zktreeutil] missing params; please see usage" << std::endl;
- exit (-1);
- }
- zkTreeUtil.loadZkTreeXml (xmlFile);
- vector< ZkAction > zkActions = zkTreeUtil.diffZkTree (zkHosts, path);
- zkTreeUtil.executeZkActions (zkHosts, zkActions, ZkTreeUtil::PRINT);
- break;
- }
- case 'D': {
- if (zkHosts != "")
- zkTreeUtil.loadZkTree (zkHosts, path);
- else if (xmlFile != "")
- zkTreeUtil.loadZkTreeXml (xmlFile);
- else
- {
- std::cout << "[zktreeutil] missing params; please see usage" << std::endl;
- exit (-1);
- }
- // Dump the ZK tree
- if (depth) zkTreeUtil.dumpZkTree (false, depth);
- else zkTreeUtil.dumpZkTree (false);
- break;
- }
- }
-
- exit(0);
-}
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zktreeutil/tests/zk_sample.xml
----------------------------------------------------------------------
diff --git a/src/contrib/zktreeutil/tests/zk_sample.xml b/src/contrib/zktreeutil/tests/zk_sample.xml
deleted file mode 100644
index 6e97daa..0000000
--- a/src/contrib/zktreeutil/tests/zk_sample.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-
-<root>
- <zknode name="myapp">
- <zknode name="version-1.0">
- <zknode name="clientConfig">
- <zknode name="testClient" value="cluster.id=local;server.host=localhost;server.port=4080"/>
- </zknode>
- <zknode name="configuration" value="v4.0">
- <zknode name="cacheControl" value="on"/>
- <zknode name="healthCheck" value="on"/>
- </zknode>
- <zknode name="distributions">
- <zknode name="http">
- <zknode name="goldenShards" value="0,4294967296,server,localhost:8085;"/>
- <zknode name="versionedShards" value="33;0,4294967296,server,localhost:8086;"/>
- <zknode name="shards" value="0,4294967296,server,localhost:8086;"/>
- </zknode>
- </zknode>
- <zknode name="tmp" ignore="yes">
- <zknode name="alerts" value="test"/>
- <zknode name="locks"/>
- <zknode name="transactions"/>
- </zknode>
- </zknode>
- </zknode>
- <zknode name="zookeeper" ignore="true"/>
-</root>
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zooinspector/NOTICE.txt
----------------------------------------------------------------------
diff --git a/src/contrib/zooinspector/NOTICE.txt b/src/contrib/zooinspector/NOTICE.txt
deleted file mode 100644
index 5420ef0..0000000
--- a/src/contrib/zooinspector/NOTICE.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-src/java/com/nitido/utils/toaster/Toaster.java:
-This java file is copyright by Daniele Piras ("danielepiras80", no email known) released under the Apache Software License 2.0
-It has been downloaded in december 2009 from the CVS web interface of the sourceforge project http://sourceforge.net/projects/jtoaster/ . The web interface to CVS is not available anymore on sourceforge.
-
-The icons in src/main/resources/icons are taken from the Tango project
-downloaded from http://tango.freedesktop.org/releases on 2011-09-06.
-The Tango project is public domain.
-
-Distribution packagers should not include the icons in the package but rather depend on tango-icon-theme (Debian package name). ZooInspector will then try to get the icons from /usr/share/icons/Tango rather then from its jar file.
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zooinspector/README.txt
----------------------------------------------------------------------
diff --git a/src/contrib/zooinspector/README.txt b/src/contrib/zooinspector/README.txt
deleted file mode 100644
index 3c2a58f..0000000
--- a/src/contrib/zooinspector/README.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-==========================================
-ZooInspector - Browser and Editor for ZooKeeper Instances
-Author: Colin Goodheart-Smithe
-Date: February 2010
-==========================================
-
-ZooInspector is a Java Swing based application for browsing and editing ZooKeeper instances.
-
-Contents
---------
- - Features
- - Pre-requisites
- - Build Instructions
- - Using ZooInspector
- - Creating and Using Plugins
-
-Features
---------
- Below is a list of features in the current release of ZooInspector.
- - Load connection settings from a zookeeper properties file
- - Plugable DataEncryptionManagers to specify how data should be encrypted and decrypted in the Zookeeper instance
- - Browseable tree view of the ZooKeeper instance
- - View the data in a node
- - View the ACL's currently applied to a node
- - View the metadata for a node (Version, Number of Children, Last modified Tiem, etc.)
- - Plugable NodeViewers interface
- - Ability to save/load and set default Node Viewers
-
-Pre-requisites
---------------
- - The main zookeeper build script must have been run before building this module
-
-Build Instructions
-------------------
- 1. Open a command line.
- 2. cd into this directory
- 3. Run command: ant
- 4. ZooInspector will be built to ../../../build/contrib/ZooInspector
- 5. Copy zookeeper-3.x.x.jar into the lib sub-directory (if you are using zookeeper-3.3.0.jar it will have been
- copied to this directory during the build
- 6. By default the zookeeper.cmd and zookeeper.sh files expect zookeeper-3.3.0.jar. If you are using another version
- you will need to change these files to point to the zookeeper-3.x.x.jar you copied to the lib directory
- 7. To run ZooInspector run zooInspector.cmd (on Windows) or zooInspector.sh (on Linux). If you are using
- zookeeper-3.3.0.jar and do not require any classpath changes you can run the zookeeper-dev-ZooInspector.jar
- directly
-
-Using ZooInspector
-------------------
- To start ZooInspector run zooInspector.cmd (on Windows) or zooInspector.sh (on Linux). If you are using
- zookeeper-3.3.0.jar and do not require any classpath changes you can run the zookeeper-dev-ZooInspector.jar
- directly.
-
- Click the play button on the toolbar to bring up the connection dialog. From here you can enter connection
- information for your zookeeper instance. You can also load the connection properties from a file. This file can
- have the format as a normal zookeeper properties file (i.e. hosts and timeout key-value pairs) and van optional have
- an encryptionManager key-value pair to specify the DataEncryptionManager to use for this connection
- (DataEncryptionManagers are explained in further detail in the 'Creating and Using Plugins' section below). You can
- also set the entered information as the defaults so that when you first start ZooInspector these settings are
- automatically loaded into this dialog. Pressing the OK button with connect to your ZooKeeper instance and show the
- current node tree on the left of the main panel.
-
- Clicking a node in the node tree will load the data for that node into the node viewers. Three node viewers are
- currently distributed with ZooInspector:
- 1. Node Data - This enables you to see the data current stored on that node. This data can be modified and
- saved. The data is decrypted and encrypted using the DataEncryptionManager specified on the connection
- dialog.
- 2. Node Metadata - This enables you to see the metadata associiated with this node. This is Essentially the data
- obtained from the Stat object for this node.
- 3. Node ACLs - This allows you to see the ACLs currently applied to this node. Currently there is no ability
- to change the ACLs on a node, but it is a feature I would like to add.
- Other custom Node Viewers can be added, this is explained in the 'Creating and Using Plugins' section below.
-
-
-Creating and Using Plugins
---------------------------
- There are two types of plugin which can be used with ZooInspector:
- 1. DataEncryptionManager - This specifies how data should be encrypted and decrypted when working with a
- zookeeper instance.
- 2. ZooInspectorNodeViewer - This is a GUI panel which provides a view of visualisation on a node.
- More information on these interfaces can be found in the javadocs for this module.
-
- To use a plugin in ZooInspector, build the plugin to a jar and copy the jar to the lib sub-directory. Edit the
- zooInspector.cmd and/or zooInspector.sh files to include your new jar on the classpath and run ZooInspector.
-
- For DataEncryptionManagers, click the play button to open the connection dialog and enter the full class name of
- your DataEncryptionManager in the 'Data Encryption Manager' field. You can make this Data Encryption Manager the
- default by clicking 'Set As Default'. Click the 'OK' button to instantiate and use your plugin.
-
- For ZooInspectorNodeViewers, Click the 'Change Node Viewers' button on the toolbar (looks like a tree with a pencil)
- and enter the full classname for your Node Viewer in the field left of the 'Add' button, then click the 'Add'
- button. The Node Viewer will be instantiated and should appear in the list. You can change the order of the Node
- viewers by clicking the up and dpwn buttons and delete a Node Viewer by clicking the delete button. You can save
- to configuration to a file or set it as the default if necessary. Then click the 'OK' button and your Node Viewer
- should appear in the tabs on the right of the main panel.
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zooinspector/TODO
----------------------------------------------------------------------
diff --git a/src/contrib/zooinspector/TODO b/src/contrib/zooinspector/TODO
deleted file mode 100644
index 404d5c9..0000000
--- a/src/contrib/zooinspector/TODO
+++ /dev/null
@@ -1,19 +0,0 @@
-- replace JToaster with standard notifications, see:
- http://www.galago-project.org/specs/notification/
- http://stackoverflow.com/questions/857154/freedesktop-org-notifications-in-java
- DBus and Java:
- http://bolta-gecko.blogspot.com/2009/06/using-d-bus-in-java.html
- http://dbus.freedesktop.org/doc/dbus-java/ (packaged in Debian)
-
-- properly respect
- http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
- http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
- http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
-
-- Rename classes to avoid redundand "ZooInspector" prefix.
-
-- Ant build file has hard coded log4j dependency. (ZK will move to maven anyways...)
-
-- make directory for config files configurable via commandline parameter
-
-- Clean up the code! :-)
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zooinspector/build.xml
----------------------------------------------------------------------
diff --git a/src/contrib/zooinspector/build.xml b/src/contrib/zooinspector/build.xml
deleted file mode 100644
index 52f3eb1..0000000
--- a/src/contrib/zooinspector/build.xml
+++ /dev/null
@@ -1,139 +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.
--->
-
-<project name="ZooInspector" default="jar">
- <import file="../build-contrib.xml" />
-
-
- <target name="setjarname">
- <property name="jarname" value="${build.dir}/zookeeper-${version}-${name}.jar" />
- </target>
-
- <target name="init" depends="checkMainCompiled, zookeeperbuildcontrib.init">
- <mkdir dir="${build.dir}/licences" />
- <copy todir="${build.dir}/licences">
- <fileset dir="${basedir}/licences" />
- </copy>
- <mkdir dir="${build.dir}/icons" />
- <copy todir="${build.dir}/icons">
- <fileset dir="${basedir}/src/main/resources/icons" />
- </copy>
- <mkdir dir="${build.dir}/config" />
- <copy todir="${build.dir}/config">
- <fileset dir="${basedir}/config" />
- </copy>
- <copy todir="${build.dir}/lib">
- <fileset file="${basedir}/lib/log4j.properties" />
- </copy>
- <copy todir="${build.dir}/lib">
- <fileset file="../../../build/zookeeper-${version}.jar" />
- </copy>
- <copy todir="${build.dir}">
- <fileset dir="${basedir}" includes="*.*" excludes="build.xml,ivy.xml" />
- </copy>
- </target>
-
- <!-- Override jar target to specify main class -->
- <target name="jar" depends="setjarname, compile">
- <echo message="contrib: ${name}" />
-
- <jar jarfile="${jarname}">
- <manifest>
- <attribute name="Main-Class" value="org.apache.zookeeper.inspector.ZooInspector" />
- <attribute name="Built-By" value="${user.name}" />
- <attribute name="Built-At" value="${build.time}" />
- <attribute name="Built-On" value="${host.name}" />
- <attribute name="Implementation-Title" value="org.apache.zookeeper" />
- <attribute name="Implementation-Version" value="${revision}" />
- <attribute name="Implementation-Vendor" value="The Apache Software Foundation" />
- </manifest>
- <fileset file="${zk.root}/LICENSE.txt" />
- <fileset dir="${build.classes}" />
- <fileset dir="${basedir}/src/main/resources" />
- <fileset dir="${basedir}/src/java" excludes="**/*.jar, **/*.java"/>
- </jar>
- </target>
-
- <target name="compile" depends="ivy-retrieve,zookeeperbuildcontrib.compile" />
-
- <target name="test" depends="checkMainTestCompiled,compile-test,test-init,test-category,junit.run" />
-
- <target name="compile-test" depends="ivy-retrieve-test,compile">
- <property name="target.jdk" value="${ant.java.version}" />
- <property name="src.test.local" location="${basedir}/test" />
- <mkdir dir="${build.test}" />
- <javac srcdir="${src.test.local}" destdir="${build.test}" target="${target.jdk}" debug="on" encoding="${build.encoding}">
- <classpath refid="classpath" />
- <classpath>
- <pathelement location="${zk.root}/build/test/classes" />
- </classpath>
- </javac>
- </target>
-
- <target name="test-init" depends="jar,compile-test">
- <delete dir="${test.log.dir}" />
- <delete dir="${test.tmp.dir}" />
- <delete dir="${test.data.dir}" />
- <mkdir dir="${test.log.dir}" />
- <mkdir dir="${test.tmp.dir}" />
- <mkdir dir="${test.data.dir}" />
- </target>
-
- <target name="test-category">
- <property name="test.category" value="" />
- </target>
-
- <target name="junit.run">
- <echo message="${test.src.dir}" />
- <junit showoutput="${test.output}" printsummary="${test.junit.printsummary}" haltonfailure="${test.junit.haltonfailure}" fork="yes" forkmode="${test.junit.fork.mode}" maxmemory="${test.junit.maxmem}" dir="${basedir}" timeout="${test.timeout}" errorProperty="tests.failed" failureProperty="tests.failed">
- <sysproperty key="build.test.dir" value="${test.tmp.dir}" />
- <sysproperty key="test.data.dir" value="${test.data.dir}" />
- <sysproperty key="log4j.configuration" value="file:${basedir}/conf/log4j.properties" />
- <classpath refid="classpath" />
- <classpath>
- <pathelement path="${build.test}" />
- <pathelement location="${zk.root}/build/test/classes" />
- </classpath>
- <formatter type="${test.junit.output.format}" />
- <batchtest todir="${test.log.dir}" unless="testcase">
- <fileset dir="${test.src.dir}" includes="**/*${test.category}Test.java" />
- </batchtest>
- <batchtest todir="${test.log.dir}" if="testcase">
- <fileset dir="${test.src.dir}" includes="**/${testcase}.java" />
- </batchtest>
- </junit>
- <fail if="tests.failed">Tests failed!</fail>
- </target>
-
- <target name="package" depends="jar, zookeeperbuildcontrib.package" unless="skip.contrib">
-
- <copy file="${basedir}/build.xml" todir="${dist.dir}/contrib/${name}" />
-
- <mkdir dir="${dist.dir}/contrib/${name}/src" />
- <copy todir="${dist.dir}/contrib/${name}/src">
- <fileset dir="${basedir}/src" />
- </copy>
- <mkdir dir="${dist.dir}/contrib/${name}/licences" />
- <copy todir="${dist.dir}/contrib/${name}/licences">
- <fileset dir="${basedir}/licences" />
- </copy>
- <mkdir dir="${dist.dir}/contrib/${name}/config" />
- <copy todir="${dist.dir}/contrib/${name}/config">
- <fileset dir="${basedir}/config" />
- </copy>
- </target>
-</project>
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zooinspector/config/defaultConnectionSettings.cfg
----------------------------------------------------------------------
diff --git a/src/contrib/zooinspector/config/defaultConnectionSettings.cfg b/src/contrib/zooinspector/config/defaultConnectionSettings.cfg
deleted file mode 100644
index 90f20ae..0000000
--- a/src/contrib/zooinspector/config/defaultConnectionSettings.cfg
+++ /dev/null
@@ -1,21 +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.
-#
-#Default connection for ZooInspector
-hosts=localhost\:2181
-encryptionManager=org.apache.zookeeper.inspector.encryption.BasicDataEncryptionManager
-timeout=5000
-authScheme=
-authData=
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zooinspector/config/defaultNodeViewers.cfg
----------------------------------------------------------------------
diff --git a/src/contrib/zooinspector/config/defaultNodeViewers.cfg b/src/contrib/zooinspector/config/defaultNodeViewers.cfg
deleted file mode 100644
index 38fe9a8..0000000
--- a/src/contrib/zooinspector/config/defaultNodeViewers.cfg
+++ /dev/null
@@ -1,17 +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.
-org.apache.zookeeper.inspector.gui.nodeviewer.NodeViewerData
-org.apache.zookeeper.inspector.gui.nodeviewer.NodeViewerMetaData
-org.apache.zookeeper.inspector.gui.nodeviewer.NodeViewerACL
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zooinspector/ivy.xml
----------------------------------------------------------------------
diff --git a/src/contrib/zooinspector/ivy.xml b/src/contrib/zooinspector/ivy.xml
deleted file mode 100644
index d841d18..0000000
--- a/src/contrib/zooinspector/ivy.xml
+++ /dev/null
@@ -1,50 +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.
--->
-
-<ivy-module version="2.0"
- xmlns:e="http://ant.apache.org/ivy/extra">
-
- <info organisation="org.apache.zookeeper"
- module="${name}" revision="${version}">
- <license name="Apache 2.0"/>
- <ivyauthor name="Apache Hadoop" url="http://hadoop.apache.org"/>
- <description>ZooInspector</description>
- </info>
-
- <configurations defaultconfmapping="default">
- <conf name="default"/>
- <conf name="test"/>
- <conf name="releaseaudit" visibility="private" description="Artifacts required for releaseaudit target"/>
- </configurations>
-
- <dependencies>
- <dependency org="com.google.guava" name="guava" rev="18.0" />
-
- <dependency org="org.slf4j" name="slf4j-api" rev="1.7.5"/>
- <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.5" transitive="false"/>
-
- <dependency org="log4j" name="log4j" rev="1.2.17" transitive="false"/>
- <dependency org="junit" name="junit" rev="4.12" conf="test->default"/>
- <dependency org="org.apache.rat" name="apache-rat-tasks"
- rev="0.6" conf="releaseaudit->default"/>
- <dependency org="commons-lang" name="commons-lang"
- rev="2.4" conf="releaseaudit->default"/>
- <dependency org="commons-collections" name="commons-collections"
- rev="3.2.2" conf="releaseaudit->default"/>
- </dependencies>
-
-</ivy-module>
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zooinspector/lib/log4j.properties
----------------------------------------------------------------------
diff --git a/src/contrib/zooinspector/lib/log4j.properties b/src/contrib/zooinspector/lib/log4j.properties
deleted file mode 100644
index db05af4..0000000
--- a/src/contrib/zooinspector/lib/log4j.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-# ***** Set root logger level to INFO and it appender to stdout.
-log4j.rootLogger=INFO,stdout
-
-# ***** stdout is set to be a ConsoleAppender.
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-# ***** stdout uses PatternLayout.
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-# ***** Pattern to output the caller's file name and line number.
-log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/eab8c1eb/src/contrib/zooinspector/licences/Apache Software Licence v2.0.txt
----------------------------------------------------------------------
diff --git a/src/contrib/zooinspector/licences/Apache Software Licence v2.0.txt b/src/contrib/zooinspector/licences/Apache Software Licence v2.0.txt
deleted file mode 100644
index d645695..0000000
--- a/src/contrib/zooinspector/licences/Apache Software Licence v2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
|