<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"?>
<rdf:RDF xml:lang="en"
         xmlns="http://usefulinc.com/ns/doap#" 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:asfext="http://projects.apache.org/ns/asfext#"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">
<!--
    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 rdf:about="http://curator.apache.org/">
    <created>2011-02-06</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache Curator</name>
    <homepage rdf:resource="http://curator.apache.org/" />
    <asfext:pmc rdf:resource="http://curator.apache.org" />
    <shortdesc>A set of Java libraries that make using Apache ZooKeeper much easier.</shortdesc>
    <description>New users of ZooKeeper are surprised to learn that a significant amount of connection management must be done manually. For example, when the ZooKeeper client connects to the ensemble it must negotiate a new session, etc. This takes some time. If you use a ZooKeeper client API before the connection process has completed, ZooKeeper will throw an exception. These types of exceptions are referred to as "recoverable" errors. Curator automatically handles connection management, greatly simplifying client code. Instead of directly using the ZooKeeper APIs you use Curator APIs that internally check for connection completion and wrap each ZooKeeper API in a retry loop. Curator uses a retry mechanism to handle recoverable errors and automatically retry operations. The method of retry is customizable. Curator comes bundled with several implementations (ExponentialBackoffRetry, etc.) or custom implementations can be written.</description>
    <bug-database rdf:resource="http://issues.apache.org/jira/browse/CURATOR" />
    <mailing-list rdf:resource="http://curator.apache.org/mail-lists.html" />
    <download-page rdf:resource="http://www.apache.org/dyn/closer.cgi/curator/" />
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/database" />
    <repository>
    <GitRepository>
      <location rdf:resource="https://git-wip-us.apache.org/repos/asf/curator.git"/>
      <browse rdf:resource="https://git-wip-us.apache.org/repos/asf?p=curator.git"/>
    </GitRepository>
    </repository>
  </Project>
</rdf:RDF>
