== DESCRIPTION

Curator is a set of Java libraries that make using Apache ZooKeeper much easier. While
ZooKeeper comes bundled with a Java client, using the client is non-trivial and error prone.

== DETAILS

Please see the doc at https://github.com/Netflix/curator/wiki

== MAVEN

Curator binaries are published to Maven Central. The dependency specs are:

Curator Client:
    <dependency>
        <groupId>com.netflix.curator</groupId>
        <artifactId>curator-client</artifactId>
        <version>version-number</version>
    </dependency>

Curator Framework:
    <dependency>
        <groupId>com.netflix.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>version-number</version>
    </dependency>

Curator Recipes:
    <dependency>
        <groupId>com.netflix.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>version-number</version>
    </dependency>

== AUTHOR

Jordan Zimmerman (mailto:jzimmerman@netflix.com)

== LICENSE

Copyright 2011 Netflix, Inc.

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.
