http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/SPEC.txt
----------------------------------------------------------------------
diff --git a/src/contrib/rest/SPEC.txt b/src/contrib/rest/SPEC.txt
deleted file mode 100644
index 8c5f701..0000000
--- a/src/contrib/rest/SPEC.txt
+++ /dev/null
@@ -1,355 +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.
-
-A REST HTTP gateway for ZooKeeper
-=================================
-
-Specification Version: 2
-
-ZooKeeper is meant to enable distributed coordination and also store
-system configuration and other relatively small amounts of information
-that must be stored in a persistent and consistent manner. The
-information stored in ZooKeeper is meant to be highly available to a
-large number of nodes in a distributed-computing cluster.
-
-ZooKeeper offers a client-side library that supports rich semantics
-that include strict ordering guarantees on operations, the creation of
-ephemeral znodes, and the ability to watch for changes to state.
-However, where clients need simple "CRUD" (create, read, update,
-delete) operations, the ZooKeeper libraries can be cumbersome, both to
-the programmers who have to use them (who are increasingly used to
-REST-style APIs), and to the operators who have to deploy and update
-them (for whom deploying and updating client libraries can be very
-painful).
-
-It turns out that most languages comes with client libraries for HTTP
-that are easy and familiar to program against, and deployed as part of
-the language runtime. Thus, for simple CRUD clients, an HTTP gateway
-would be a less cumbersome interface than the ZooKeeper library.
-
-This document describes a gatway for using HTTP to interact with a
-ZooKeeper repository.
-
-Binding ZooKeeper to HTTP
--------------------------
-
-Encoding
---------
-
-UTF-8 unless otherwise noted
-
-Paths
------
-
-A ZooKeeper paths are mapped to IRIs and URIs as follows. ZK paths
-are converted to IRIs by simply percent-encoding any characters in the
-ZK path that are not allowed in IRI paths. ZK paths are converted to
-URIs by mapping them first to IRIs, then converting to URIs in the
-standard way.
-
-Going from URIs and IRIs is the reverse of the above but for one
-difference: any "." and ".." segments in an IRI or URI must be folded
-before conversion. (Fortunately, ZK does not allow "." and ".."
-segments in its paths.)
-
-ZK and IRIs recommend the same practices when it comes to Unicode
-normalization: ultimately, normalization is left to application
-designers, but both recommend that application designers use NFC as a
-best practice.
-
-Root
-----
-
-The following examples assume that the ZooKeeper znode heirarchy is
-bound to the root of the HTTP servers namespace. This may not be the
-case in practice however, the gateway may bind to some prefix, for
-example the URL for accessing /a/b/c may be:
-
- http://localhost/zookeeper/znodes/v1/a/b/c
-
-This is perfectly valid. Users of the REST service should be aware of
-this fact and code their clients to support any root (in this case
-"/zookeeper" on the server localhost).
-
-
-Basics: GET, PUT, HEAD, and DELETE
-----------------------------------
-
-HTTP's GET, PUT, HEAD, and DELETE operations map naturally to
-ZooKeeper's "get," "set," "exists," and "delete" operations.
-
-ZooKeeper znodes have a version number that changes each time the
-znode's value is updated. This number is returned by "get," "set," and
-"exists" operations. The "set" and "delete" operations optionally take
-a version number. If one is supplied, then "set" or "delete" will fail
-if the current version of the znode doesn't match the version-number
-supplied in the call. This mechanism supports atomic read-modify-write
-cycles. Set/delete requests may include an optional parameter
-"version" which defaults to no version check.
-
-
-Getting ZooKeeper children
---------------------------
-
-We overload the GET method to return the children of a ZooKeeper. In
-particular, the GET method takes an optional parameter "view" which
-could be set to one of type values, either "data" or "children". The
-default is "data". Thus, to get the children of a znode named
-"/a/b/c", then the GET request should start:
-
- GET /znodes/v1/a/b/c?view=children HTTP/1.1
-
-If the requested view is "data", then the data of a znode is returned
-as described in the previous section. If the requested view is
-"children", then a list of children is returned in either an XML
-document, or in a JSON object. (The default is JSON, but this can be
-controlled changed by setting the Accept header.)
-
-
-Creating a ZooKeeper session
-----------------------------
-
-In order to be able to create ephemeral nodes you first need to start
-a new session.
-
- POST /sessions/v1?op=create&expire=<SECONDS> HTTP/1.1
-
-If the session creation is successful, then a 201 code will be returned.
-
-A session is just an UUID that you can pass around as a parameter and
-the REST server will foward your request on the attached persistent
-connection.
-
-Keeping a session alive
------------------------
-
-To keep a session alive you must send hearbeat requests:
-
- PUT /sessions/v1/<SESSION-UUID> HTTP/1.1
-
-Closing a ZooKeeper session
----------------------------
-
-You can close a connection by sending a DELETE request.
-
- DELETE /sessions/v1/<SESSION-UUID> HTTP/1.1
-
-If you don't close a session it will automatically expire after
-the amount of time you specified on creation.
-
-Creating a ZooKeeper znode
---------------------------
-
-We use the POST method to create a ZooKeeper znode. For example, to
-create a znode named "c" under a parent named "/a/b", then the POST
-request should start:
-
- POST /znodes/v1/a/b?op=create&name=c HTTP/1.1
-
-If the creation is successful, then a 201 code will be returned. If
-it fails, then a number of different codes might be returned
-(documented in a later subsection).
-
-ZooKeeper's create operation has a flag that tells the server to
-append a sequence-number to the client-supplied znode-name in order to
-make the znode-name unique. If you set this flag and ask to create a
-znode named "/a/b/c", and a znode named "/a/b" already exists, then
-"create" will create a znode named "/a/b/c-#" instead, where "#" is and
-integer required to generate a unique name in for format %10d.
-
-To obtain this behavior, an additional "sequence=true" parameter
-should be added to the parameters of the POST. (Note that "sequence"
-is an optional parameter, that defaults to "false"; this default may
-be provided explicitly if desired.)
-
-On success the actual path of the created znode will be returned.
-
-If you want to create an ephemeral node you need to specify an
-additional "ephemeral=true" parameter. (Note that "ephemeral" is an optional
-parameter, that defaults to "false")
-
-(Note: ZooKeeper also allows the client to set ACLs for the
-newly-created znode. This feature is not currently supported by the
-HTTP gateway to ZooKeeper.)
-
-
-Content types and negotiation
------------------------------
-
-ZooKeeper REST gateway implementations may support three content-types
-for request and response messages:
-
-* application/octet-stream
-
- HEAD - returns nothing (note below: status = 204)
- GET - returns the znode data as an octet-stream
- PUT - send binary data, returns nothing
- POST - send binary data, returns the name of the znode
- DELETE - returns nothing
-
- For PUT and HEAD some other content-type (i.e. JSON or XML) must be
- used to access the Stat information of a znode.
-
-* application/json, application/javascript & application/xml
-
- HEAD - returns nothing
- GET - returns a STAT or CHILD structure
- PUT - send binary data, returns a STAT structure (sans data field)
- POST - send binary data, returns a PATH structure
- DELETE - returns nothing
-
- (structures defined below)
-
- Results returning DATA may include an optional "dataformat"
- parameter which has two possible values; base64 (default) or
- utf8. This allows the caller to control the format of returned data
- and may simplify usage -- for example cat'ing results to the command
- line with something like curl, or accessing a url through a browser.
- Care should be exercised however, if utf8 is used on non character
- data errors may result.
-
- "application/javascript" requests may include an optional "callback"
- parameter. The response is wrapped in a callback method of your
- choice. e.g. appending &callback=foo to your request will result in
- a response body of: foo(...). Callbacks may only contain
- alphanumeric characters and underscores.
-
-PATH
- path : string
- uri: string
-
- path is the full path to the znode as seen by ZooKeeper
-
- uri is the full URI of the znode as seen by the REST server, does not
- include any query parameters (i.e. it's the path to the REST resource)
-
-SESSION
- id : string UUID
- uri : string
-
-CHILD
- PATH
- child_uri_template: string
- children : [ string* ]
-
- The children list of strings contains only the name of the child
- znodes, not the full path.
-
- child_uri_template is a template for URI of child znodes as seen by the
- REST server. e.g. "http://localhost:9998/znodes/v1/foo/{child}", where
- foo is the parent node, and {child} can be substituted with the name
- of each child in the children array in order to access that resource.
- This template is provided to simplify child access.
-
-STAT
- PATH
- encoding : value of "base64" or "utf8"
- data : base64 or utf8 encoded string
- stat :
- czxid : number
- mzxid : number
- ctime : number
- mtime : number
- version : number
- cversion : number
- aversion : number
- ephemeralOwner : number
- datalength : number
- numChildren : number
- pzxid : number
-
-
-Error Codes
------------
-
-The ZooKeeper gateway uses HTTP response codes as follows:
-
- * 200 (Success) - ZOK for "get" "set" "delete", "yes" case of "exists" (json/xml)
- * 201 (Created) - ZOK for "create"
- * 204 (No Content) - ZOK for "yes" case of "exists" (octet)
- * 400 (Bad Request) - ZINVALIDACL, ZBADARGUMENTS, version param not a number
- * 401 (Unauthorized) - ZAUTHFAILED
- * 404 (Not Found) - ZOK for "no" case of "exists;" ZNONODE for "get," "set," and "delete"
- * 409 (Conflict) - ZNODEEXISTS, ZNONODE for "create," ZNOTEMPTY,
- * 412 (Precondition Failed) - ZBADVERSION
- * 415 (Unsupported Media Type) - if content-type of PUT or POST is not "application/octet-stream"
- * 500 (Internal Server Error) - Failure in gateway code
- * 501 (Not Implemented) - HTTP method other than GET, PUT, HEAD, DELETE
- * 502 (Bad Gateway) - All other ZooKeeper error codes
- * 503 (Service Unavailable) - ZSESSIONEXPIRED, ZCONNECTIONLOSS, (gateway will try to reestablish the connection, but will not hold the request waiting...)
- * 504 (Gateway Timeout) - ZOPERATIONTIMEOUT, or ZooKeeper does not return in a timely manner
-
-Note that these are the codes used by the HTTP-to-Gateway software
-itself. Depending on how this software is configured into a Web
-server, the resulting Web Server might behave differently, e.g., it
-might do redirection, check other headers, etc.
-
-Error Messages
---------------
-
-Error messages are returned to the caller, format is dependent on the
-format requested in the call.
-
-* application/octet-stream
-
- A string containing the error message. It should include the request
- and information detailing the reason for the error.
-
-* application/json
-
- { "request":"GET /a/b/c", "message":"Node doesn't exist" }
-
-* application/xml
-
-<?xml version="1.0" encoding="UTF-8"?>
-<error>
- <request>GET /a/b/c</request>
- <message>Node doesn't exist</message>
-</error>
-
-
-Binding ZooKeeper to an HTTP server
------------------------------------
-
-It might be sage to assume that everyone is happy to run an Apache
-server, and thus write a "mod_zookeeper" for Apache that works only
-for the Apache Web Server. However, different operational
-environments prefer different Web Servers, and it would be nice to
-support more than one Web server.
-
-Issues:
-
- * Configuration.
-
- * Defining a root: Need to provide a URL alias and associate it
- with a server. Need to be able to map different aliases to
- different servers (implemented via multiple ZK connections).
-
- * Sharing connection across multiple processes.
-
- * Asynchronous.
-
- * Adaptors.
-
- * Code re-use.
-
-
-Authentication -- TBD, not currently supported
-
-...the config file should contain authentication material for the gateway
-
-...the config file should contain an ACL list to be passed along to "create"
-
-...would we ever want to authenticate each request to ZooKeeper?...
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/build.xml
----------------------------------------------------------------------
diff --git a/src/contrib/rest/build.xml b/src/contrib/rest/build.xml
deleted file mode 100644
index 53c8057..0000000
--- a/src/contrib/rest/build.xml
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.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="rest" default="jar">
- <import file="../build-contrib.xml"/>
-
- <property name="test.build.dir" value="${build.test}" />
- <property name="test.src.dir" value="src/test"/>
- <property name="test.log.dir" value="${test.build.dir}/logs" />
- <property name="test.data.dir" value="${test.build.dir}/data" />
- <property name="test.data.upgrade.dir" value="${test.data.dir}/upgrade" />
- <property name="test.tmp.dir" value="${test.build.dir}/tmp" />
- <property name="test.output" value="no" />
- <property name="test.timeout" value="900000" />
- <property name="test.junit.output.format" value="plain" />
- <property name="test.junit.fork.mode" value="perTest" />
- <property name="test.junit.printsummary" value="yes" />
- <property name="test.junit.haltonfailure" value="no" />
- <property name="test.junit.maxmem" value="512m" />
-
- <!-- ====================================================== -->
- <!-- Macro definitions -->
- <!-- ====================================================== -->
- <macrodef name="macro_tar" description="Worker Macro for tar">
- <attribute name="param.destfile"/>
- <element name="param.listofitems"/>
- <sequential>
- <tar compression="gzip" longfile="gnu"
- destfile="@{param.destfile}">
- <param.listofitems/>
- </tar>
- </sequential>
- </macrodef>
-
- <target name="package" depends="jar" unless="skip.contrib">
- <echo message="contrib: ${name}"/>
- <mkdir dir="${dist.dir}${package.share}/contrib/${name}"/>
- <copy todir="${dist.dir}${package.share}/contrib/${name}">
- <fileset dir="${build.dir}">
- <include name="zookeeper-${version}-${name}.jar" />
- </fileset>
- </copy>
- <copy todir="${dist.dir}${package.share}/contrib/${name}/lib">
- <fileset dir="${build.dir}/lib" />
- </copy>
- <copy todir="${dist.dir}${package.share}/contrib/${name}/conf">
- <fileset dir="conf" />
- </copy>
- </target>
-
- <target name="setjarname">
- <property name="jarname"
- value="${build.dir}/zookeeper-${version}-${name}.jar"/>
- </target>
-
- <target name="compile" depends="ivy-retrieve,zookeeperbuildcontrib.compile"/>
-
- <target name="test"
- depends="compile-test,test-init,test-category,test-start,junit.run,test-stop" />
-
- <target name="compile-test" depends="ivy-retrieve-test,compile">
- <property name="target.jdk" value="${ant.java.version}" />
- <property name="src.test.local" location="${basedir}/src/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-start">
- <exec executable="${test.src.dir}/zkServer.sh">
- <arg value="startClean"/>
- </exec>
- </target>
-
- <target name="test-stop">
- <exec executable="${test.src.dir}/zkServer.sh">
- <arg value="stop"/>
- </exec>
- </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}" />
- </classpath>
- <classpath>
- <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="jar" depends="checkMainCompiled, setjarname, compile">
- <echo message="contrib: ${name}"/>
- <jar jarfile="${jarname}">
- <fileset file="${zk.root}/LICENSE.txt" />
- <fileset dir="${build.classes}"/>
- <fileset dir="${build.test}"/>
- </jar>
- </target>
-
- <target name="run" depends="jar">
- <echo message="contrib: ${name}"/>
- <java classname="org.apache.zookeeper.server.jersey.RestMain" fork="true">
- <classpath>
- <pathelement path="${jarname}" />
- <fileset dir="${build.dir}/lib" includes="*.jar"/>
- <fileset dir="${zk.root}/build" includes="zookeeper-*.jar"/>
- <pathelement path="${zk.root}/src/contrib/${name}/conf" />
- <fileset dir="${zk.root}/src/java/lib">
- <include name="**/*.jar" />
- </fileset>
- </classpath>
- </java>
- </target>
-
- <target name="tar" depends="clean, jar">
- <echo message="building tar.gz: ${name}" />
- <macro_tar param.destfile="${build.dir}/zookeeper-${version}-${name}.tar.gz">
- <param.listofitems>
- <tarfileset dir="${build.dir}/lib" prefix="lib" includes="**/*.jar" />
- <tarfileset file="${build.dir}/zookeeper-*-rest.jar" />
- <tarfileset dir="${zk.root}/build" includes="zookeeper-*.jar" prefix="lib" />
- <tarfileset dir="${zk.root}/src/contrib/${name}/conf" prefix="conf" />
- <tarfileset dir="${zk.root}/src/java/lib" prefix="lib" includes="**/*.jar" />
- <tarfileset file="${zk.root}/src/contrib/${name}/rest.sh" />
- </param.listofitems>
- </macro_tar>
- </target>
-
-</project>
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/conf/keys/README
----------------------------------------------------------------------
diff --git a/src/contrib/rest/conf/keys/README b/src/contrib/rest/conf/keys/README
deleted file mode 100644
index 085810a..0000000
--- a/src/contrib/rest/conf/keys/README
+++ /dev/null
@@ -1,8 +0,0 @@
-
-In order to generate .jks (java keystore files) you need to use keytool.
-
-The password for the existing .jks is "123456" (without quotes).
-
-Some tutorials:
- - http://www.mobilefish.com/tutorials/java/java_quickguide_keytool.html
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/conf/keys/rest.cer
----------------------------------------------------------------------
diff --git a/src/contrib/rest/conf/keys/rest.cer b/src/contrib/rest/conf/keys/rest.cer
deleted file mode 100644
index 13e5aab..0000000
Binary files a/src/contrib/rest/conf/keys/rest.cer and /dev/null differ
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/conf/keys/rest.jks
----------------------------------------------------------------------
diff --git a/src/contrib/rest/conf/keys/rest.jks b/src/contrib/rest/conf/keys/rest.jks
deleted file mode 100644
index 539e8be..0000000
Binary files a/src/contrib/rest/conf/keys/rest.jks and /dev/null differ
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/conf/log4j.properties
----------------------------------------------------------------------
diff --git a/src/contrib/rest/conf/log4j.properties b/src/contrib/rest/conf/log4j.properties
deleted file mode 100644
index 21ba7e4..0000000
--- a/src/contrib/rest/conf/log4j.properties
+++ /dev/null
@@ -1,68 +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.
-#
-#
-
-#
-# ZooKeeper Logging Configuration
-#
-
-# Format is "<default threshold> (, <appender>)+
-
-# DEFAULT: console appender only
-log4j.rootLogger=INFO, CONSOLE
-
-# Example with rolling log file
-#log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE
-
-# Example with rolling log file and tracing
-#log4j.rootLogger=TRACE, CONSOLE, ROLLINGFILE, TRACEFILE
-
-#
-# Log INFO level and above messages to the console
-#
-log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
-log4j.appender.CONSOLE.Threshold=INFO
-log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
-log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n
-
-#
-# Add ROLLINGFILE to rootLogger to get log file output
-# Log DEBUG level and above messages to a log file
-log4j.appender.ROLLINGFILE=org.apache.log4j.ConsoleAppender
-log4j.appender.ROLLINGFILE.Threshold=DEBUG
-log4j.appender.ROLLINGFILE.File=bookkeeper.log
-log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
-log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n
-
-# Max log file size of 10MB
-log4j.appender.ROLLINGFILE.MaxFileSize=10MB
-# uncomment the next line to limit number of backup files
-#log4j.appender.ROLLINGFILE.MaxBackupIndex=10
-
-#
-# Add TRACEFILE to rootLogger to get log file output
-# Log DEBUG level and above messages to a log file
-log4j.appender.TRACEFILE=org.apache.log4j.FileAppender
-log4j.appender.TRACEFILE.Threshold=TRACE
-log4j.appender.TRACEFILE.File=bookkeeper_trace.log
-
-log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout
-### Notice we are including log4j's NDC here (%x)
-log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/conf/rest.properties
----------------------------------------------------------------------
diff --git a/src/contrib/rest/conf/rest.properties b/src/contrib/rest/conf/rest.properties
deleted file mode 100644
index f0abb45..0000000
--- a/src/contrib/rest/conf/rest.properties
+++ /dev/null
@@ -1,70 +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.
-#
-#
-
-#
-# ZooKeeper REST Gateway Configuration file
-#
-
-rest.port = 9998
-
-#
-# Endpoint definition
-#
-
-# plain configuration <context-path>;<host-port>
-rest.endpoint.1 = /;localhost:2181,localhost:2182
-
-# ... or chrooted to /zookeeper
-# rest.endpoint.1 = /;localhost:2181,localhost:2182/zookeeper
-
-# HTTP Basic authentication for this endpoint
-# rest.endpoint.1.http.auth = root:root1
-
-# create -e /a data digest:'demo:ojnHEyje6F33LLzGVzg+yatf4Fc=':cdrwa
-# any session on this endpoint will use authentication
-# rest.endpoint.1.zk.digest = demo:test
-
-# you can easily generate the ACL using Python:
-# import sha; sha.sha('demo:test').digest().encode('base64').strip()
-
-#
-# ... you can define as many endpoints as you wish
-#
-
-# rest.endpoint.2 = /restricted;localhost:2181
-# rest.endpoint.2.http.auth = admin:pass
-
-# rest.endpoint.3 = /cluster1;localhost:2181,localhost:2182
-# ** you should configure one end-point for each ZooKeeper cluster
-# etc.
-
-# Global HTTP Basic Authentication
-# You should also enable HTTPS-only access
-# The authentication credentials are sent as plain text
-
-# rest.http.auth = guest:guest1
-
-# Uncomment the lines bellow to allow https-only access
-
-# rest.ssl = true
-# rest.ssl.jks = keys/rest.jks
-# rest.ssl.jks.pass = 123456
-
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/ivy.xml
----------------------------------------------------------------------
diff --git a/src/contrib/rest/ivy.xml b/src/contrib/rest/ivy.xml
deleted file mode 100644
index 5ed8a9e..0000000
--- a/src/contrib/rest/ivy.xml
+++ /dev/null
@@ -1,48 +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 ZooKeeper" url="http://zookeeper.apache.org"/>
- <description>ZooKeeper REST</description>
- </info>
-
- <configurations defaultconfmapping="default">
- <conf name="default"/>
- <conf name="test"/>
- </configurations>
-
- <dependencies>
- <dependency org="org.slf4j" name="slf4j-api" rev="1.7.5"/>
- <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.5" transitive="false"/>
-
- <!-- transitive false turns off dependency checking, log4j deps seem borked -->
- <dependency org="log4j" name="log4j" rev="1.2.17" transitive="false"/>
- <dependency org="asm" name="asm" rev="3.1" />
- <dependency org="com.sun.grizzly" name="grizzly-servlet-webserver" rev="1.9.8" />
- <dependency org="com.sun.jersey" name="jersey-server" rev="1.1.5.1" />
- <dependency org="com.sun.jersey" name="jersey-json" rev="1.1.5.1" />
-
- <dependency org="junit" name="junit" rev="4.12" conf="test->default"/>
- <dependency org="com.sun.jersey" name="jersey-client" rev="1.1.5.1" conf="test->default"/>
- </dependencies>
-
-</ivy-module>
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/rest.sh
----------------------------------------------------------------------
diff --git a/src/contrib/rest/rest.sh b/src/contrib/rest/rest.sh
deleted file mode 100644
index daa8198..0000000
--- a/src/contrib/rest/rest.sh
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-#
-# If this scripted is run out of /usr/bin or some other system bin directory
-# it should be linked to and not copied. Things like java jar files are found
-# relative to the canonical path of this script.
-#
-
-# Only follow symlinks if readlink supports it
-if readlink -f "$0" > /dev/null 2>&1
-then
- ZKREST=`readlink -f "$0"`
-else
- ZKREST="$0"
-fi
-ZKREST_HOME=`dirname "$ZKREST"`
-
-if $cygwin
-then
- # cygwin has a "kill" in the shell itself, gets confused
- KILL=/bin/kill
-else
- KILL=kill
-fi
-
-if [ -z $ZKREST_PIDFILE ]
- then ZKREST_PIDFILE=$ZKREST_HOME/server.pid
-fi
-
-ZKREST_MAIN=org.apache.zookeeper.server.jersey.RestMain
-
-ZKREST_CONF=$ZKREST_HOME/conf
-ZKREST_LOG=$ZKREST_HOME/zkrest.log
-
-CLASSPATH="$ZKREST_CONF:$CLASSPATH"
-
-for i in "$ZKREST_HOME"/lib/*.jar
-do
- CLASSPATH="$i:$CLASSPATH"
-done
-
-for i in "$ZKREST_HOME"/zookeeper-*.jar
-do
- CLASSPATH="$i:$CLASSPATH"
-done
-
-case $1 in
-start)
- echo "Starting ZooKeeper REST Gateway ... "
- java -cp "$CLASSPATH" $JVMFLAGS $ZKREST_MAIN >$ZKREST_LOG 2>&1 &
- /bin/echo -n $! > "$ZKREST_PIDFILE"
- echo STARTED
- ;;
-stop)
- echo "Stopping ZooKeeper REST Gateway ... "
- if [ ! -f "$ZKREST_PIDFILE" ]
- then
- echo "error: could not find file $ZKREST_PIDFILE"
- exit 1
- else
- $KILL -9 $(cat "$ZKREST_PIDFILE")
- rm "$ZKREST_PIDFILE"
- echo STOPPED
- fi
- ;;
-restart)
- shift
- "$0" stop ${@}
- sleep 3
- "$0" start ${@}
- ;;
-*)
- echo "Usage: $0 {start|stop|restart}" >&2
-
-esac
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/RestMain.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/RestMain.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/RestMain.java
deleted file mode 100644
index 954ad04..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/RestMain.java
+++ /dev/null
@@ -1,151 +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.zookeeper.server.jersey;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.zookeeper.server.jersey.cfg.Credentials;
-import org.apache.zookeeper.server.jersey.cfg.Endpoint;
-import org.apache.zookeeper.server.jersey.cfg.RestCfg;
-import org.apache.zookeeper.server.jersey.filters.HTTPBasicAuth;
-
-import com.sun.grizzly.SSLConfig;
-import com.sun.grizzly.http.embed.GrizzlyWebServer;
-import com.sun.grizzly.http.servlet.ServletAdapter;
-import com.sun.jersey.spi.container.servlet.ServletContainer;
-
-/**
- * Demonstration of how to run the REST service using Grizzly
- */
-public class RestMain {
-
- private static Logger LOG = LoggerFactory.getLogger(RestMain.class);
-
- private GrizzlyWebServer gws;
- private RestCfg cfg;
-
- public RestMain(RestCfg cfg) {
- this.cfg = cfg;
- }
-
- public void start() throws IOException {
- System.out.println("Starting grizzly ...");
-
- boolean useSSL = cfg.useSSL();
- gws = new GrizzlyWebServer(cfg.getPort(), "/tmp/23cxv45345/2131xc2/", useSSL);
- // BUG: Grizzly needs a doc root if you are going to register multiple adapters
-
- for (Endpoint e : cfg.getEndpoints()) {
- ZooKeeperService.mapContext(e.getContext(), e);
- gws.addGrizzlyAdapter(createJerseyAdapter(e), new String[] { e
- .getContext() });
- }
-
- if (useSSL) {
- System.out.println("Starting SSL ...");
- String jks = cfg.getJKS("keys/rest.jks");
- String jksPassword = cfg.getJKSPassword();
-
- SSLConfig sslConfig = new SSLConfig();
- URL resource = getClass().getClassLoader().getResource(jks);
- if (resource == null) {
- LOG.error("Unable to find the keystore file: " + jks);
- System.exit(2);
- }
- try {
- sslConfig.setKeyStoreFile(new File(resource.toURI())
- .getAbsolutePath());
- } catch (URISyntaxException e1) {
- LOG.error("Unable to load keystore: " + jks, e1);
- System.exit(2);
- }
- sslConfig.setKeyStorePass(jksPassword);
- gws.setSSLConfig(sslConfig);
- }
-
- gws.start();
- }
-
- public void stop() {
- gws.stop();
- ZooKeeperService.closeAll();
- }
-
- private ServletAdapter createJerseyAdapter(Endpoint e) {
- ServletAdapter jersey = new ServletAdapter();
-
- jersey.setServletInstance(new ServletContainer());
- jersey.addInitParameter("com.sun.jersey.config.property.packages",
- "org.apache.zookeeper.server.jersey.resources");
- jersey.setContextPath(e.getContext());
-
- Credentials c = Credentials.join(e.getCredentials(), cfg
- .getCredentials());
- if (!c.isEmpty()) {
- jersey.addFilter(new HTTPBasicAuth(c), e.getContext()
- + "-basic-auth", null);
- }
-
- return jersey;
- }
-
- /**
- * The entry point for starting the server
- *
- */
- public static void main(String[] args) throws Exception {
- RestCfg cfg = new RestCfg("rest.properties");
-
- final RestMain main = new RestMain(cfg);
- main.start();
-
- Runtime.getRuntime().addShutdownHook(new Thread() {
- @Override
- public void run() {
- main.stop();
- System.out.println("Got exit request. Bye.");
- }
- });
-
- printEndpoints(cfg);
- System.out.println("Server started.");
- }
-
- private static void printEndpoints(RestCfg cfg) {
- int port = cfg.getPort();
-
- for (Endpoint e : cfg.getEndpoints()) {
-
- String context = e.getContext();
- if (context.charAt(context.length() - 1) != '/') {
- context += "/";
- }
-
- System.out.println(String.format(
- "Started %s - WADL: http://localhost:%d%sapplication.wadl",
- context, port, context));
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/ZooKeeperService.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/ZooKeeperService.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/ZooKeeperService.java
deleted file mode 100644
index 21d27a9..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/ZooKeeperService.java
+++ /dev/null
@@ -1,242 +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.zookeeper.server.jersey;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.TreeSet;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.Watcher.Event.KeeperState;
-import org.apache.zookeeper.server.jersey.cfg.Endpoint;
-
-/**
- * Singleton which provides JAX-RS resources access to the ZooKeeper client.
- * There's a single session for each base uri (so usually just one).
- */
-public class ZooKeeperService {
-
- private static Logger LOG = LoggerFactory.getLogger(ZooKeeperService.class);
-
- /** Map base uri to ZooKeeper host:port parameters */
- private static Map<String, Endpoint> contextMap = new HashMap<String, Endpoint>();
-
- /** Map base uri to ZooKeeper session */
- private static Map<String, ZooKeeper> zkMap = new HashMap<String, ZooKeeper>();
-
- /** Session timers */
- private static Map<String, SessionTimerTask> zkSessionTimers = new HashMap<String, SessionTimerTask>();
- private static Timer timer = new Timer();
-
- /** Track the status of the ZooKeeper session */
- private static class MyWatcher implements Watcher {
- final String contextPath;
-
- /** Separate watcher for each base uri */
- public MyWatcher(String contextPath) {
- this.contextPath = contextPath;
- }
-
- /**
- * Track state - in particular watch for expiration. if it happens for
- * re-creation of the ZK client session
- */
- synchronized public void process(WatchedEvent event) {
- if (event.getState() == KeeperState.Expired) {
- close(contextPath);
- }
- }
- }
-
- /** ZooKeeper session timer */
- private static class SessionTimerTask extends TimerTask {
-
- private int delay;
- private String contextPath, session;
- private Timer timer;
-
- public SessionTimerTask(int delayInSeconds, String session,
- String contextPath, Timer timer) {
- delay = delayInSeconds * 1000; // convert to milliseconds
- this.contextPath = contextPath;
- this.session = session;
- this.timer = timer;
- reset();
- }
-
- public SessionTimerTask(SessionTimerTask t) {
- this(t.delay / 1000, t.session, t.contextPath, t.timer);
- }
-
- @Override
- public void run() {
- if (LOG.isInfoEnabled()) {
- LOG.info(String.format("Session '%s' expired after "
- + "'%d' milliseconds.", session, delay));
- }
- ZooKeeperService.close(contextPath, session);
- }
-
- public void reset() {
- timer.schedule(this, delay);
- }
-
- }
-
- /**
- * Specify ZooKeeper host:port for a particular context path. The host:port
- * string is passed to the ZK client, so this can be formatted with more
- * than a single host:port pair.
- */
- synchronized public static void mapContext(String contextPath, Endpoint e) {
- contextMap.put(contextPath, e);
- }
-
- /**
- * Reset timer for a session
- */
- synchronized public static void resetTimer(String contextPath,
- String session) {
- if (session != null) {
- String uri = concat(contextPath, session);
-
- SessionTimerTask t = zkSessionTimers.remove(uri);
- t.cancel();
-
- zkSessionTimers.put(uri, new SessionTimerTask(t));
- }
- }
-
- /**
- * Close the ZooKeeper session and remove it from the internal maps
- */
- public static void close(String contextPath) {
- close(contextPath, null);
- }
-
- /**
- * Close the ZooKeeper session and remove it
- */
- synchronized public static void close(String contextPath, String session) {
- String uri = concat(contextPath, session);
-
- TimerTask t = zkSessionTimers.remove(uri);
- if (t != null) {
- t.cancel();
- }
-
- ZooKeeper zk = zkMap.remove(uri);
- if (zk == null) {
- return;
- }
- try {
- zk.close();
- } catch (InterruptedException e) {
- LOG.error("Interrupted while closing ZooKeeper connection.", e);
- }
- }
-
- /**
- * Close all the ZooKeeper sessions and remove them from the internal maps
- */
- synchronized public static void closeAll() {
- Set<String> sessions = new TreeSet<String>(zkMap.keySet());
- for (String key : sessions) {
- close(key);
- }
- }
-
- /**
- * Is there an active connection for this session?
- */
- synchronized public static boolean isConnected(String contextPath,
- String session) {
- return zkMap.containsKey(concat(contextPath, session));
- }
-
- /**
- * Return a ZooKeeper client not tied to a specific session.
- */
- public static ZooKeeper getClient(String contextPath) throws IOException {
- return getClient(contextPath, null);
- }
-
- /**
- * Return a ZooKeeper client for a session with a default expire time
- *
- * @throws IOException
- */
- public static ZooKeeper getClient(String contextPath, String session)
- throws IOException {
- return getClient(contextPath, session, 5);
- }
-
- /**
- * Return a ZooKeeper client which may or may not be connected, but it will
- * not be expired. This method can be called multiple times, the same object
- * will be returned except in the case where the session expires (at which
- * point a new session will be returned)
- */
- synchronized public static ZooKeeper getClient(String contextPath,
- String session, int expireTime) throws IOException {
- final String connectionId = concat(contextPath, session);
-
- ZooKeeper zk = zkMap.get(connectionId);
- if (zk == null) {
-
- if (LOG.isInfoEnabled()) {
- LOG.info(String.format("creating new "
- + "connection for : '%s'", connectionId));
- }
- Endpoint e = contextMap.get(contextPath);
- zk = new ZooKeeper(e.getHostPort(), 30000, new MyWatcher(
- connectionId));
-
- for (Map.Entry<String, String> p : e.getZooKeeperAuthInfo().entrySet()) {
- zk.addAuthInfo("digest", String.format("%s:%s", p.getKey(),
- p.getValue()).getBytes());
- }
-
- zkMap.put(connectionId, zk);
-
- // a session should automatically expire after an amount of time
- if (session != null) {
- zkSessionTimers.put(connectionId, new SessionTimerTask(
- expireTime, session, contextPath, timer));
- }
- }
- return zk;
- }
-
- private static String concat(String contextPath, String session) {
- if (session != null) {
- return String.format("%s@%s", contextPath, session);
- }
- return contextPath;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/Credentials.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/Credentials.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/Credentials.java
deleted file mode 100644
index 0730be5..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/Credentials.java
+++ /dev/null
@@ -1,47 +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.zookeeper.server.jersey.cfg;
-
-import java.util.HashMap;
-
-public class Credentials extends HashMap<String, String> {
-
- public static Credentials join(Credentials a, Credentials b) {
- Credentials result = new Credentials();
- result.putAll(a);
- result.putAll(b);
- return result;
- }
-
- public Credentials() {
- super();
- }
-
- public Credentials(String credentials) {
- super();
-
- if (!credentials.trim().equals("")) {
- String[] parts = credentials.split(",");
- for(String p : parts) {
- String[] userPass = p.split(":");
- put(userPass[0], userPass[1]);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/Endpoint.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/Endpoint.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/Endpoint.java
deleted file mode 100644
index 2a62782..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/Endpoint.java
+++ /dev/null
@@ -1,72 +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.zookeeper.server.jersey.cfg;
-
-public class Endpoint {
-
- private String context;
- private HostPortSet hostPort;
- private Credentials credentials;
- private Credentials zookeeperAuth;
-
- public Endpoint(String context, String hostPortList) {
- this.context = context;
- this.hostPort = new HostPortSet(hostPortList);
- }
-
- public String getContext() {
- return context;
- }
-
- public String getHostPort() {
- return hostPort.toString();
- }
-
- public Credentials getCredentials() {
- return credentials;
- }
-
- public void setCredentials(String c) {
- this.credentials = new Credentials(c);
- }
-
- public void setZooKeeperAuthInfo(String digest) {
- zookeeperAuth = new Credentials(digest);
- }
-
- public final Credentials getZooKeeperAuthInfo() {
- return zookeeperAuth;
- }
-
- @Override
- public boolean equals(Object o) {
- Endpoint e = (Endpoint) o;
- return context.equals(e.context);
- }
-
- @Override
- public int hashCode() {
- return context.hashCode();
- }
-
- @Override
- public String toString() {
- return String.format("<Endpoint %s %s>", context, hostPort.toString());
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/HostPort.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/HostPort.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/HostPort.java
deleted file mode 100644
index 51a1bdd..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/HostPort.java
+++ /dev/null
@@ -1,51 +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.zookeeper.server.jersey.cfg;
-
-public class HostPort {
-
- private String host;
- private int port;
-
- public HostPort(String hostPort) {
- String[] parts = hostPort.split(":");
- host = parts[0];
- port = Integer.parseInt(parts[1]);
- }
-
- public String getHost() {
- return host;
- }
-
- public int getPort() {
- return port;
- }
-
- @Override
- public boolean equals(Object o) {
- HostPort p = (HostPort) o;
- return host.equals(p.host) && port == p.port;
- }
-
- @Override
- public int hashCode() {
- return String.format("%s:%d", host, port).hashCode();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/HostPortSet.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/HostPortSet.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/HostPortSet.java
deleted file mode 100644
index 301a565..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/HostPortSet.java
+++ /dev/null
@@ -1,51 +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.zookeeper.server.jersey.cfg;
-
-import java.util.HashSet;
-import java.util.Set;
-
-public class HostPortSet {
-
- private Set<HostPort> hostPortSet = new HashSet<HostPort>();
- private String original;
-
- public HostPortSet(String hostPortList) {
- original = hostPortList;
-
- int chrootStart = hostPortList.indexOf('/');
- String hostPortPairs;
- if (chrootStart != -1) {
- hostPortPairs = hostPortList.substring(0, chrootStart);
- } else {
- hostPortPairs = hostPortList;
- }
-
- String[] parts = hostPortPairs.split(",");
- for(String p : parts) {
- hostPortSet.add(new HostPort(p));
- }
- }
-
- @Override
- public String toString() {
- return original;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/RestCfg.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/RestCfg.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/RestCfg.java
deleted file mode 100644
index 93dd632..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/cfg/RestCfg.java
+++ /dev/null
@@ -1,110 +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.zookeeper.server.jersey.cfg;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
-
-public class RestCfg {
-
- private Properties cfg = new Properties();
-
- private Set<Endpoint> endpoints = new HashSet<Endpoint>();
- private Credentials credentials = new Credentials();
-
- public RestCfg(String resource) throws IOException {
- this(RestCfg.class.getClassLoader().getResourceAsStream(resource));
- }
-
- public RestCfg(InputStream io) throws IOException {
- try {
- cfg.load(io);
- extractEndpoints();
- extractCredentials();
- } finally {
- io.close();
- }
- }
-
- private void extractCredentials() {
- if (cfg.containsKey("rest.http.auth")) {
- credentials = new Credentials(cfg.getProperty("rest.http.auth", ""));
- }
- }
-
- private void extractEndpoints() {
- int count = 1;
- while (true) {
- String e = cfg.getProperty(
- String.format("rest.endpoint.%d", count), null);
- if (e == null) {
- break;
- }
-
- String[] parts = e.split(";");
- if (parts.length != 2) {
- count++;
- continue;
- }
- Endpoint point = new Endpoint(parts[0], parts[1]);
-
- String c = cfg.getProperty(String.format(
- "rest.endpoint.%d.http.auth", count), "");
- point.setCredentials(c);
-
- String digest = cfg.getProperty(String.format(
- "rest.endpoint.%d.zk.digest", count), "");
- point.setZooKeeperAuthInfo(digest);
-
- endpoints.add(point);
- count++;
- }
- }
-
- public int getPort() {
- return Integer.parseInt(cfg.getProperty("rest.port", "9998"));
- }
-
- public boolean useSSL() {
- return Boolean.valueOf(cfg.getProperty("rest.ssl", "false"));
- }
-
- public final Set<Endpoint> getEndpoints() {
- return endpoints;
- }
-
- public final Credentials getCredentials() {
- return credentials;
- }
-
- public String getJKS() {
- return cfg.getProperty("rest.ssl.jks");
- }
-
- public String getJKS(String def) {
- return cfg.getProperty("rest.ssl.jks", def);
- }
-
- public String getJKSPassword() {
- return cfg.getProperty("rest.ssl.jks.pass");
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/filters/HTTPBasicAuth.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/filters/HTTPBasicAuth.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/filters/HTTPBasicAuth.java
deleted file mode 100644
index 49640b5..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/filters/HTTPBasicAuth.java
+++ /dev/null
@@ -1,87 +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.zookeeper.server.jersey.filters;
-
-import java.io.IOException;
-
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.zookeeper.server.jersey.cfg.Credentials;
-
-import com.sun.jersey.core.util.Base64;
-
-public class HTTPBasicAuth implements Filter {
-
- private Credentials credentials;
-
- public HTTPBasicAuth(Credentials c) {
- credentials = c;
- }
-
- @Override
- public void doFilter(ServletRequest req0, ServletResponse resp0,
- FilterChain chain) throws IOException, ServletException {
-
- HttpServletRequest request = (HttpServletRequest) req0;
- HttpServletResponse response = (HttpServletResponse) resp0;
-
- String authorization = request.getHeader("Authorization");
- if (authorization != null) {
- String c[] = parseAuthorization(authorization);
- if (c != null && credentials.containsKey(c[0])
- && credentials.get(c[0]).equals(c[1])) {
- chain.doFilter(request, response);
- return;
- }
- }
-
- response.setHeader("WWW-Authenticate", "Basic realm=\"Restricted\"");
- response.sendError(401);
- }
-
- private String[] parseAuthorization(String authorization) {
- String parts[] = authorization.split(" ");
- if (parts.length == 2 && parts[0].equalsIgnoreCase("Basic")) {
- String userPass = Base64.base64Decode(parts[1]);
-
- int p = userPass.indexOf(":");
- if (p != -1) {
- return new String[] { userPass.substring(0, p),
- userPass.substring(p + 1) };
- }
- }
- return null;
- }
-
- @Override
- public void init(FilterConfig arg0) throws ServletException {
- }
-
- @Override
- public void destroy() {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZChildren.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZChildren.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZChildren.java
deleted file mode 100644
index b3fad55..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZChildren.java
+++ /dev/null
@@ -1,80 +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.zookeeper.server.jersey.jaxb;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementWrapper;
-import javax.xml.bind.annotation.XmlRootElement;
-
-
-/**
- * Represents the CHILD using JAXB.
- * Special JSON version is required to get proper formatting in both
- * JSON and XML output. See details in ZNodeResource.
- */
-@XmlRootElement(name="child")
-public class ZChildren {
- public String path;
- public String uri;
-
- public String child_uri_template;
- @XmlElementWrapper(name="children")
- @XmlElement(name="child")
- public List<String> children;
-
- public ZChildren() {
- // needed by jersey
- children = new ArrayList<String>();
- }
-
- public ZChildren(String path, String uri, String child_uri_template,
- List<String> children)
- {
- this.path = path;
- this.uri = uri;
- this.child_uri_template = child_uri_template;
- if (children != null) {
- this.children = children;
- } else {
- this.children = new ArrayList<String>();
- }
- }
-
- @Override
- public int hashCode() {
- return path.hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof ZChildren)) {
- return false;
- }
- ZChildren o = (ZChildren) obj;
- return path.equals(o.path) && children.equals(o.children);
- }
-
- @Override
- public String toString() {
- return "ZChildren(" + path + "," + children + ")";
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZChildrenJSON.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZChildrenJSON.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZChildrenJSON.java
deleted file mode 100644
index 0dcece0..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZChildrenJSON.java
+++ /dev/null
@@ -1,76 +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.zookeeper.server.jersey.jaxb;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-
-/**
- * Represents the CHILD using JAXB.
- * Special JSON version is required to get proper formatting in both
- * JSON and XML output. See details in ZNodeResource.
- */
-@XmlRootElement(name="child")
-public class ZChildrenJSON {
- public String path;
- public String uri;
-
- public String child_uri_template;
- public List<String> children;
-
- public ZChildrenJSON() {
- // needed by jersey
- children = new ArrayList<String>();
- }
-
- public ZChildrenJSON(String path, String uri, String child_uri_template,
- List<String> children)
- {
- this.path = path;
- this.uri = uri;
- this.child_uri_template = child_uri_template;
- if (children != null) {
- this.children = children;
- } else {
- this.children = new ArrayList<String>();
- }
- }
-
- @Override
- public int hashCode() {
- return path.hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof ZChildrenJSON)) {
- return false;
- }
- ZChildrenJSON o = (ZChildrenJSON) obj;
- return path.equals(o.path) && children.equals(o.children);
- }
-
- @Override
- public String toString() {
- return "ZChildrenJSON(" + path + "," + children + ")";
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZError.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZError.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZError.java
deleted file mode 100644
index e976ee0..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZError.java
+++ /dev/null
@@ -1,41 +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.zookeeper.server.jersey.jaxb;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-
-/**
- * Represents an ERROR using JAXB.
- */
-@XmlRootElement(name="error")
-public class ZError {
- public String request;
- public String message;
-
- public ZError(){
- // needed by jersey
- }
-
- public ZError(String request, String message) {
- this.request = request;
- this.message = message;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZPath.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZPath.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZPath.java
deleted file mode 100644
index 4d83717..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZPath.java
+++ /dev/null
@@ -1,63 +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.zookeeper.server.jersey.jaxb;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-
-/**
- * Represents a PATH using JAXB.
- */
-@XmlRootElement(name="path")
-public class ZPath {
- public String path;
- public String uri;
-
- public ZPath(){
- // needed by jersey
- }
-
- public ZPath(String path) {
- this(path, null);
- }
-
- public ZPath(String path, String uri) {
- this.path = path;
- this.uri = uri;
- }
-
- @Override
- public int hashCode() {
- return path.hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof ZPath)) {
- return false;
- }
- ZPath o = (ZPath) obj;
- return path.equals(o.path);
- }
-
- @Override
- public String toString() {
- return "ZPath(" + path + ")";
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZSession.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZSession.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZSession.java
deleted file mode 100644
index 06ca9e5..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZSession.java
+++ /dev/null
@@ -1,55 +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.zookeeper.server.jersey.jaxb;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement(name="session")
-public class ZSession {
- public String id;
- public String uri;
-
- public ZSession() {
- // needed by jersey
- }
-
- public ZSession(String id, String uri) {
- this.id = id;
- this.uri = uri;
- }
-
- @Override
- public int hashCode() {
- return id.hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- if(!(obj instanceof ZSession)) {
- return false;
- }
- ZSession s = (ZSession) obj;
- return id.equals(s.id);
- }
-
- @Override
- public String toString() {
- return "ZSession(" + id +")";
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZStat.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZStat.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZStat.java
deleted file mode 100644
index af70d18..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/jaxb/ZStat.java
+++ /dev/null
@@ -1,106 +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.zookeeper.server.jersey.jaxb;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-
-/**
- * Represents a STAT using JAXB.
- */
-@XmlRootElement(name="stat")
-public class ZStat {
- public String path;
- public String uri;
- public byte[] data64;
- public String dataUtf8;
-
- public long czxid;
- public long mzxid;
- public long ctime;
- public long mtime;
- public int version;
- public int cversion;
- public int aversion;
- public long ephemeralOwner;
- public int dataLength;
- public int numChildren;
- public long pzxid;
-
-
- public ZStat(){
- // needed by jersey
- }
-
- public ZStat(String path, byte[] data64, String dataUtf8)
- {
- this.path = path;
- this.data64 = data64;
- this.dataUtf8 = dataUtf8;
- }
-
- public ZStat(String path, String uri, byte[] data64, String dataUtf8,
- long czxid, long mzxid, long ctime, long mtime, int version,
- int cversion, int aversion, long ephemeralOwner, int dataLength,
- int numChildren, long pzxid)
- {
- this.path = path;
- this.uri = uri;
- this.data64 = data64;
- this.dataUtf8 = dataUtf8;
-
- this.czxid = czxid;
- this.mzxid = mzxid;
- this.ctime = ctime;
- this.mtime = mtime;
- this.version = version;
- this.cversion = cversion;
- this.aversion = aversion;
- this.ephemeralOwner = ephemeralOwner;
- this.dataLength = dataLength;
- this.numChildren = numChildren;
- this.pzxid = pzxid;
- }
-
- @Override
- public int hashCode() {
- return path.hashCode();
- }
-
- /**
- * This method considers two ZStats equal if their path, encoding, and
- * data match. It does not compare the ZooKeeper
- * org.apache.zookeeper.data.Stat class fields.
- */
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof ZStat)) {
- return false;
- }
- ZStat o = (ZStat) obj;
- return toString().equals(o.toString());
- }
-
- @Override
- public String toString() {
- return "ZStat(" + path + "," + "b64["
- + (data64 == null ? null : new String(data64)) + "],"
- + dataUtf8 + ")";
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/JAXBContextResolver.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/JAXBContextResolver.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/JAXBContextResolver.java
deleted file mode 100644
index 0893586..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/JAXBContextResolver.java
+++ /dev/null
@@ -1,72 +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.zookeeper.server.jersey.resources;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.ws.rs.ext.ContextResolver;
-import javax.ws.rs.ext.Provider;
-import javax.xml.bind.JAXBContext;
-
-import org.apache.zookeeper.server.jersey.jaxb.ZChildrenJSON;
-import org.apache.zookeeper.server.jersey.jaxb.ZPath;
-import org.apache.zookeeper.server.jersey.jaxb.ZStat;
-
-import com.sun.jersey.api.json.JSONConfiguration;
-import com.sun.jersey.api.json.JSONJAXBContext;
-
-/**
- * Tell Jersey how to resolve JSON formatting. Specifically detail the
- * fields which are arrays and which are numbers (not strings).
- */
-@Provider
-@SuppressWarnings("unchecked")
-public final class JAXBContextResolver implements ContextResolver<JAXBContext> {
- private final JAXBContext context;
-
- private final Set<Class> typesSet;
-
- public JAXBContextResolver() throws Exception {
- Class[] typesArr =
- new Class[]{ZPath.class, ZStat.class, ZChildrenJSON.class};
- typesSet = new HashSet<Class>(Arrays.asList(typesArr));
- context = new JSONJAXBContext(
- JSONConfiguration.mapped()
- .arrays("children")
- .nonStrings("czxid")
- .nonStrings("mzxid")
- .nonStrings("ctime")
- .nonStrings("mtime")
- .nonStrings("version")
- .nonStrings("cversion")
- .nonStrings("aversion")
- .nonStrings("ephemeralOwner")
- .nonStrings("dataLength")
- .nonStrings("numChildren")
- .nonStrings("pzxid")
- .build(),
- typesArr);
- }
-
- public JAXBContext getContext(Class<?> objectType) {
- return (typesSet.contains(objectType)) ? context : null;
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/KeeperExceptionMapper.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/KeeperExceptionMapper.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/KeeperExceptionMapper.java
deleted file mode 100644
index fdfc27b..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/KeeperExceptionMapper.java
+++ /dev/null
@@ -1,86 +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.zookeeper.server.jersey.resources;
-
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.ext.ExceptionMapper;
-import javax.ws.rs.ext.Provider;
-
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.server.jersey.jaxb.ZError;
-
-
-/**
- * Map KeeperException to HTTP status codes
- */
-@Provider
-public class KeeperExceptionMapper implements ExceptionMapper<KeeperException> {
- private UriInfo ui;
-
- public KeeperExceptionMapper(@Context UriInfo ui) {
- this.ui = ui;
- }
-
- public Response toResponse(KeeperException e) {
- Response.Status status;
- String message;
-
- String path = e.getPath();
-
- switch(e.code()) {
- case AUTHFAILED:
- status = Response.Status.UNAUTHORIZED;
- message = path + " not authorized";
- break;
- case BADARGUMENTS:
- status = Response.Status.BAD_REQUEST;
- message = path + " bad arguments";
- break;
- case BADVERSION:
- status = Response.Status.PRECONDITION_FAILED;
- message = path + " bad version";
- break;
- case INVALIDACL:
- status = Response.Status.BAD_REQUEST;
- message = path + " invalid acl";
- break;
- case NODEEXISTS:
- status = Response.Status.CONFLICT;
- message = path + " already exists";
- break;
- case NONODE:
- status = Response.Status.NOT_FOUND;
- message = path + " not found";
- break;
- case NOTEMPTY:
- status = Response.Status.CONFLICT;
- message = path + " not empty";
- break;
- default:
- status = Response.Status.fromStatusCode(502); // bad gateway
- message = "Error processing request for " + path
- + " : " + e.getMessage();
- }
-
- return Response.status(status).entity(
- new ZError(ui.getRequestUri().toString(), message)).build();
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b0df8fe1/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/RuntimeExceptionMapper.java
----------------------------------------------------------------------
diff --git a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/RuntimeExceptionMapper.java b/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/RuntimeExceptionMapper.java
deleted file mode 100644
index 46f33bb..0000000
--- a/src/contrib/rest/src/java/org/apache/zookeeper/server/jersey/resources/RuntimeExceptionMapper.java
+++ /dev/null
@@ -1,55 +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.zookeeper.server.jersey.resources;
-
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.ext.ExceptionMapper;
-import javax.ws.rs.ext.Provider;
-
-import org.apache.zookeeper.server.jersey.jaxb.ZError;
-
-/**
- * Map RuntimeException to HTTP status codes
- */
-@Provider
-public class RuntimeExceptionMapper
- implements ExceptionMapper<RuntimeException>
-{
- private UriInfo ui;
-
- public RuntimeExceptionMapper(@Context UriInfo ui) {
- this.ui = ui;
- }
-
- public Response toResponse(RuntimeException e) {
- // don't try to handle jersey exceptions ourselves
- if (e instanceof WebApplicationException) {
- WebApplicationException ie =(WebApplicationException) e;
- return ie.getResponse();
- }
-
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
- new ZError(ui.getRequestUri().toString(),
- "Error processing request due to " + e
- )).build();
- }
-}
|