<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<!--
   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.
-->
<plugin>
   <extension
         point="org.apache.hdt.core.hdfsClient">
      <hdfsClient
            class="org.apache.hdt.hadoop.release.HDFSClientRelease"
            protocol="hdfs"
            protocolVersion="1.1">
      </hdfsClient>
   </extension>
   <extension
         point="org.apache.hdt.core.zookeeperClient">
      <zookeeperClient
            class="org.apache.hdt.hadoop.release.ZooKeeperClientRelease"
            protocolVersion="3.4.5">
      </zookeeperClient>
   </extension>
   <extension
         point="org.apache.hdt.core.hadoopCluster">
      <hadoopCluster
            class="org.apache.hdt.hadoop.release.HadoopCluster"
            protocolVersion="1.1">
      </hadoopCluster>
   </extension>
   <extension
         point="org.apache.hdt.core.hadoopHomeReader">
      <hadoopHomeReader
            class="org.apache.hdt.hadoop.release.HadoopHomeReader"
            protocolVersion="1.1">
      </hadoopHomeReader>
   </extension>
   

</plugin>
