http://git-wip-us.apache.org/repos/asf/hbase-site/blob/5513910e/apidocs/overview-tree.html ---------------------------------------------------------------------- diff --git a/apidocs/overview-tree.html b/apidocs/overview-tree.html index 53ed4f8..0fec9ed 100644 --- a/apidocs/overview-tree.html +++ b/apidocs/overview-tree.html @@ -843,25 +843,25 @@ <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">Order</span></a></li> <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="strong">KeepDeletedCells</span></a></li> <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ProcedureState.html" title="enum in org.apache.hadoop.hbase"><span class="strong">ProcedureState</span></a></li> +<li type="circle">org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum in org.apache.hadoop.hbase.io.encoding"><span class="strong">DataBlockEncoding</span></a></li> <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">Filter.ReturnCode</span></a></li> <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">BitComparator.BitwiseOp</span></a></li> -<li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">CompareFilter.CompareOp</span></a></li> <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">FilterList.Operator</span></a></li> <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">RegexStringComparator.EngineType</span></a></li> -<li type="circle">org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum in org.apache.hadoop.hbase.io.encoding"><span class="strong">DataBlockEncoding</span></a></li> +<li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">CompareFilter.CompareOp</span></a></li> <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">Durability</span></a></li> -<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">Consistency</span></a></li> -<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">MasterSwitchType</span></a></li> <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">IsolationLevel</span></a></li> <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">CompactionState</span></a></li> +<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">MasterSwitchType</span></a></li> +<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">Consistency</span></a></li> <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">CompactType</span></a></li> <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">SnapshotType</span></a></li> <li type="circle">org.apache.hadoop.hbase.client.security.<a href="org/apache/hadoop/hbase/client/security/SecurityCapability.html" title="enum in org.apache.hadoop.hbase.client.security"><span class="strong">SecurityCapability</span></a></li> <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">BloomType</span></a></li> +<li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">ThrottlingException.Type</span></a></li> <li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">QuotaType</span></a></li> <li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">QuotaScope</span></a></li> <li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">ThrottleType</span></a></li> -<li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">ThrottlingException.Type</span></a></li> </ul> </li> </ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/5513910e/apidocs/src-html/org/apache/hadoop/hbase/ServerName.html ---------------------------------------------------------------------- diff --git a/apidocs/src-html/org/apache/hadoop/hbase/ServerName.html b/apidocs/src-html/org/apache/hadoop/hbase/ServerName.html index 4c2a3b3..12f49be 100644 --- a/apidocs/src-html/org/apache/hadoop/hbase/ServerName.html +++ b/apidocs/src-html/org/apache/hadoop/hbase/ServerName.html @@ -308,118 +308,119 @@ <span class="sourceLineNo">300</span> if (compare != 0) return compare;<a name="line.300"></a> <span class="sourceLineNo">301</span> compare = this.getPort() - other.getPort();<a name="line.301"></a> <span class="sourceLineNo">302</span> if (compare != 0) return compare;<a name="line.302"></a> -<span class="sourceLineNo">303</span> return (int)(this.getStartcode() - other.getStartcode());<a name="line.303"></a> -<span class="sourceLineNo">304</span> }<a name="line.304"></a> -<span class="sourceLineNo">305</span><a name="line.305"></a> -<span class="sourceLineNo">306</span> @Override<a name="line.306"></a> -<span class="sourceLineNo">307</span> public int hashCode() {<a name="line.307"></a> -<span class="sourceLineNo">308</span> return getServerName().hashCode();<a name="line.308"></a> -<span class="sourceLineNo">309</span> }<a name="line.309"></a> -<span class="sourceLineNo">310</span><a name="line.310"></a> -<span class="sourceLineNo">311</span> @Override<a name="line.311"></a> -<span class="sourceLineNo">312</span> public boolean equals(Object o) {<a name="line.312"></a> -<span class="sourceLineNo">313</span> if (this == o) return true;<a name="line.313"></a> -<span class="sourceLineNo">314</span> if (o == null) return false;<a name="line.314"></a> -<span class="sourceLineNo">315</span> if (!(o instanceof ServerName)) return false;<a name="line.315"></a> -<span class="sourceLineNo">316</span> return this.compareTo((ServerName)o) == 0;<a name="line.316"></a> -<span class="sourceLineNo">317</span> }<a name="line.317"></a> -<span class="sourceLineNo">318</span><a name="line.318"></a> -<span class="sourceLineNo">319</span> /**<a name="line.319"></a> -<span class="sourceLineNo">320</span> * @param left<a name="line.320"></a> -<span class="sourceLineNo">321</span> * @param right<a name="line.321"></a> -<span class="sourceLineNo">322</span> * @return True if <code>other</code> has same hostname and port.<a name="line.322"></a> -<span class="sourceLineNo">323</span> */<a name="line.323"></a> -<span class="sourceLineNo">324</span> public static boolean isSameHostnameAndPort(final ServerName left,<a name="line.324"></a> -<span class="sourceLineNo">325</span> final ServerName right) {<a name="line.325"></a> -<span class="sourceLineNo">326</span> if (left == null) return false;<a name="line.326"></a> -<span class="sourceLineNo">327</span> if (right == null) return false;<a name="line.327"></a> -<span class="sourceLineNo">328</span> return left.getHostname().compareToIgnoreCase(right.getHostname()) == 0 &&<a name="line.328"></a> -<span class="sourceLineNo">329</span> left.getPort() == right.getPort();<a name="line.329"></a> -<span class="sourceLineNo">330</span> }<a name="line.330"></a> -<span class="sourceLineNo">331</span><a name="line.331"></a> -<span class="sourceLineNo">332</span> /**<a name="line.332"></a> -<span class="sourceLineNo">333</span> * Use this method instantiating a {@link ServerName} from bytes<a name="line.333"></a> -<span class="sourceLineNo">334</span> * gotten from a call to {@link #getVersionedBytes()}. Will take care of the<a name="line.334"></a> -<span class="sourceLineNo">335</span> * case where bytes were written by an earlier version of hbase.<a name="line.335"></a> -<span class="sourceLineNo">336</span> * @param versionedBytes Pass bytes gotten from a call to {@link #getVersionedBytes()}<a name="line.336"></a> -<span class="sourceLineNo">337</span> * @return A ServerName instance.<a name="line.337"></a> -<span class="sourceLineNo">338</span> * @see #getVersionedBytes()<a name="line.338"></a> -<span class="sourceLineNo">339</span> */<a name="line.339"></a> -<span class="sourceLineNo">340</span> public static ServerName parseVersionedServerName(final byte [] versionedBytes) {<a name="line.340"></a> -<span class="sourceLineNo">341</span> // Version is a short.<a name="line.341"></a> -<span class="sourceLineNo">342</span> short version = Bytes.toShort(versionedBytes);<a name="line.342"></a> -<span class="sourceLineNo">343</span> if (version == VERSION) {<a name="line.343"></a> -<span class="sourceLineNo">344</span> int length = versionedBytes.length - Bytes.SIZEOF_SHORT;<a name="line.344"></a> -<span class="sourceLineNo">345</span> return valueOf(Bytes.toString(versionedBytes, Bytes.SIZEOF_SHORT, length));<a name="line.345"></a> -<span class="sourceLineNo">346</span> }<a name="line.346"></a> -<span class="sourceLineNo">347</span> // Presume the bytes were written with an old version of hbase and that the<a name="line.347"></a> -<span class="sourceLineNo">348</span> // bytes are actually a String of the form "'<hostname>' ':' '<port>'".<a name="line.348"></a> -<span class="sourceLineNo">349</span> return valueOf(Bytes.toString(versionedBytes), NON_STARTCODE);<a name="line.349"></a> -<span class="sourceLineNo">350</span> }<a name="line.350"></a> -<span class="sourceLineNo">351</span><a name="line.351"></a> -<span class="sourceLineNo">352</span> /**<a name="line.352"></a> -<span class="sourceLineNo">353</span> * @param str Either an instance of {@link ServerName#toString()} or a<a name="line.353"></a> -<span class="sourceLineNo">354</span> * "'&lt;hostname&gt;' ':' '&lt;port&gt;'".<a name="line.354"></a> -<span class="sourceLineNo">355</span> * @return A ServerName instance.<a name="line.355"></a> -<span class="sourceLineNo">356</span> */<a name="line.356"></a> -<span class="sourceLineNo">357</span> public static ServerName parseServerName(final String str) {<a name="line.357"></a> -<span class="sourceLineNo">358</span> return SERVERNAME_PATTERN.matcher(str).matches()? valueOf(str) :<a name="line.358"></a> -<span class="sourceLineNo">359</span> valueOf(str, NON_STARTCODE);<a name="line.359"></a> -<span class="sourceLineNo">360</span> }<a name="line.360"></a> -<span class="sourceLineNo">361</span><a name="line.361"></a> +<span class="sourceLineNo">303</span><a name="line.303"></a> +<span class="sourceLineNo">304</span> return Long.compare(this.getStartcode(), other.getStartcode());<a name="line.304"></a> +<span class="sourceLineNo">305</span> }<a name="line.305"></a> +<span class="sourceLineNo">306</span><a name="line.306"></a> +<span class="sourceLineNo">307</span> @Override<a name="line.307"></a> +<span class="sourceLineNo">308</span> public int hashCode() {<a name="line.308"></a> +<span class="sourceLineNo">309</span> return getServerName().hashCode();<a name="line.309"></a> +<span class="sourceLineNo">310</span> }<a name="line.310"></a> +<span class="sourceLineNo">311</span><a name="line.311"></a> +<span class="sourceLineNo">312</span> @Override<a name="line.312"></a> +<span class="sourceLineNo">313</span> public boolean equals(Object o) {<a name="line.313"></a> +<span class="sourceLineNo">314</span> if (this == o) return true;<a name="line.314"></a> +<span class="sourceLineNo">315</span> if (o == null) return false;<a name="line.315"></a> +<span class="sourceLineNo">316</span> if (!(o instanceof ServerName)) return false;<a name="line.316"></a> +<span class="sourceLineNo">317</span> return this.compareTo((ServerName)o) == 0;<a name="line.317"></a> +<span class="sourceLineNo">318</span> }<a name="line.318"></a> +<span class="sourceLineNo">319</span><a name="line.319"></a> +<span class="sourceLineNo">320</span> /**<a name="line.320"></a> +<span class="sourceLineNo">321</span> * @param left<a name="line.321"></a> +<span class="sourceLineNo">322</span> * @param right<a name="line.322"></a> +<span class="sourceLineNo">323</span> * @return True if <code>other</code> has same hostname and port.<a name="line.323"></a> +<span class="sourceLineNo">324</span> */<a name="line.324"></a> +<span class="sourceLineNo">325</span> public static boolean isSameHostnameAndPort(final ServerName left,<a name="line.325"></a> +<span class="sourceLineNo">326</span> final ServerName right) {<a name="line.326"></a> +<span class="sourceLineNo">327</span> if (left == null) return false;<a name="line.327"></a> +<span class="sourceLineNo">328</span> if (right == null) return false;<a name="line.328"></a> +<span class="sourceLineNo">329</span> return left.getHostname().compareToIgnoreCase(right.getHostname()) == 0 &&<a name="line.329"></a> +<span class="sourceLineNo">330</span> left.getPort() == right.getPort();<a name="line.330"></a> +<span class="sourceLineNo">331</span> }<a name="line.331"></a> +<span class="sourceLineNo">332</span><a name="line.332"></a> +<span class="sourceLineNo">333</span> /**<a name="line.333"></a> +<span class="sourceLineNo">334</span> * Use this method instantiating a {@link ServerName} from bytes<a name="line.334"></a> +<span class="sourceLineNo">335</span> * gotten from a call to {@link #getVersionedBytes()}. Will take care of the<a name="line.335"></a> +<span class="sourceLineNo">336</span> * case where bytes were written by an earlier version of hbase.<a name="line.336"></a> +<span class="sourceLineNo">337</span> * @param versionedBytes Pass bytes gotten from a call to {@link #getVersionedBytes()}<a name="line.337"></a> +<span class="sourceLineNo">338</span> * @return A ServerName instance.<a name="line.338"></a> +<span class="sourceLineNo">339</span> * @see #getVersionedBytes()<a name="line.339"></a> +<span class="sourceLineNo">340</span> */<a name="line.340"></a> +<span class="sourceLineNo">341</span> public static ServerName parseVersionedServerName(final byte [] versionedBytes) {<a name="line.341"></a> +<span class="sourceLineNo">342</span> // Version is a short.<a name="line.342"></a> +<span class="sourceLineNo">343</span> short version = Bytes.toShort(versionedBytes);<a name="line.343"></a> +<span class="sourceLineNo">344</span> if (version == VERSION) {<a name="line.344"></a> +<span class="sourceLineNo">345</span> int length = versionedBytes.length - Bytes.SIZEOF_SHORT;<a name="line.345"></a> +<span class="sourceLineNo">346</span> return valueOf(Bytes.toString(versionedBytes, Bytes.SIZEOF_SHORT, length));<a name="line.346"></a> +<span class="sourceLineNo">347</span> }<a name="line.347"></a> +<span class="sourceLineNo">348</span> // Presume the bytes were written with an old version of hbase and that the<a name="line.348"></a> +<span class="sourceLineNo">349</span> // bytes are actually a String of the form "'<hostname>' ':' '<port>'".<a name="line.349"></a> +<span class="sourceLineNo">350</span> return valueOf(Bytes.toString(versionedBytes), NON_STARTCODE);<a name="line.350"></a> +<span class="sourceLineNo">351</span> }<a name="line.351"></a> +<span class="sourceLineNo">352</span><a name="line.352"></a> +<span class="sourceLineNo">353</span> /**<a name="line.353"></a> +<span class="sourceLineNo">354</span> * @param str Either an instance of {@link ServerName#toString()} or a<a name="line.354"></a> +<span class="sourceLineNo">355</span> * "'&lt;hostname&gt;' ':' '&lt;port&gt;'".<a name="line.355"></a> +<span class="sourceLineNo">356</span> * @return A ServerName instance.<a name="line.356"></a> +<span class="sourceLineNo">357</span> */<a name="line.357"></a> +<span class="sourceLineNo">358</span> public static ServerName parseServerName(final String str) {<a name="line.358"></a> +<span class="sourceLineNo">359</span> return SERVERNAME_PATTERN.matcher(str).matches()? valueOf(str) :<a name="line.359"></a> +<span class="sourceLineNo">360</span> valueOf(str, NON_STARTCODE);<a name="line.360"></a> +<span class="sourceLineNo">361</span> }<a name="line.361"></a> <span class="sourceLineNo">362</span><a name="line.362"></a> -<span class="sourceLineNo">363</span> /**<a name="line.363"></a> -<span class="sourceLineNo">364</span> * @return true if the String follows the pattern of {@link ServerName#toString()}, false<a name="line.364"></a> -<span class="sourceLineNo">365</span> * otherwise.<a name="line.365"></a> -<span class="sourceLineNo">366</span> */<a name="line.366"></a> -<span class="sourceLineNo">367</span> public static boolean isFullServerName(final String str){<a name="line.367"></a> -<span class="sourceLineNo">368</span> if (str == null ||str.isEmpty()) return false;<a name="line.368"></a> -<span class="sourceLineNo">369</span> return SERVERNAME_PATTERN.matcher(str).matches();<a name="line.369"></a> -<span class="sourceLineNo">370</span> }<a name="line.370"></a> -<span class="sourceLineNo">371</span><a name="line.371"></a> -<span class="sourceLineNo">372</span> /**<a name="line.372"></a> -<span class="sourceLineNo">373</span> * Get a ServerName from the passed in data bytes.<a name="line.373"></a> -<span class="sourceLineNo">374</span> * @param data Data with a serialize server name in it; can handle the old style<a name="line.374"></a> -<span class="sourceLineNo">375</span> * servername where servername was host and port. Works too with data that<a name="line.375"></a> -<span class="sourceLineNo">376</span> * begins w/ the pb 'PBUF' magic and that is then followed by a protobuf that<a name="line.376"></a> -<span class="sourceLineNo">377</span> * has a serialized {@link ServerName} in it.<a name="line.377"></a> -<span class="sourceLineNo">378</span> * @return Returns null if <code>data</code> is null else converts passed data<a name="line.378"></a> -<span class="sourceLineNo">379</span> * to a ServerName instance.<a name="line.379"></a> -<span class="sourceLineNo">380</span> * @throws DeserializationException <a name="line.380"></a> -<span class="sourceLineNo">381</span> */<a name="line.381"></a> -<span class="sourceLineNo">382</span> public static ServerName parseFrom(final byte [] data) throws DeserializationException {<a name="line.382"></a> -<span class="sourceLineNo">383</span> if (data == null || data.length <= 0) return null;<a name="line.383"></a> -<span class="sourceLineNo">384</span> if (ProtobufMagic.isPBMagicPrefix(data)) {<a name="line.384"></a> -<span class="sourceLineNo">385</span> int prefixLen = ProtobufMagic.lengthOfPBMagic();<a name="line.385"></a> -<span class="sourceLineNo">386</span> try {<a name="line.386"></a> -<span class="sourceLineNo">387</span> ZooKeeperProtos.Master rss =<a name="line.387"></a> -<span class="sourceLineNo">388</span> ZooKeeperProtos.Master.PARSER.parseFrom(data, prefixLen, data.length - prefixLen);<a name="line.388"></a> -<span class="sourceLineNo">389</span> org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName sn = rss.getMaster();<a name="line.389"></a> -<span class="sourceLineNo">390</span> return valueOf(sn.getHostName(), sn.getPort(), sn.getStartCode());<a name="line.390"></a> -<span class="sourceLineNo">391</span> } catch (InvalidProtocolBufferException e) {<a name="line.391"></a> -<span class="sourceLineNo">392</span> // A failed parse of the znode is pretty catastrophic. Rather than loop<a name="line.392"></a> -<span class="sourceLineNo">393</span> // retrying hoping the bad bytes will changes, and rather than change<a name="line.393"></a> -<span class="sourceLineNo">394</span> // the signature on this method to add an IOE which will send ripples all<a name="line.394"></a> -<span class="sourceLineNo">395</span> // over the code base, throw a RuntimeException. This should "never" happen.<a name="line.395"></a> -<span class="sourceLineNo">396</span> // Fail fast if it does.<a name="line.396"></a> -<span class="sourceLineNo">397</span> throw new DeserializationException(e);<a name="line.397"></a> -<span class="sourceLineNo">398</span> }<a name="line.398"></a> -<span class="sourceLineNo">399</span> }<a name="line.399"></a> -<span class="sourceLineNo">400</span> // The str returned could be old style -- pre hbase-1502 -- which was<a name="line.400"></a> -<span class="sourceLineNo">401</span> // hostname and port seperated by a colon rather than hostname, port and<a name="line.401"></a> -<span class="sourceLineNo">402</span> // startcode delimited by a ','.<a name="line.402"></a> -<span class="sourceLineNo">403</span> String str = Bytes.toString(data);<a name="line.403"></a> -<span class="sourceLineNo">404</span> int index = str.indexOf(ServerName.SERVERNAME_SEPARATOR);<a name="line.404"></a> -<span class="sourceLineNo">405</span> if (index != -1) {<a name="line.405"></a> -<span class="sourceLineNo">406</span> // Presume its ServerName serialized with versioned bytes.<a name="line.406"></a> -<span class="sourceLineNo">407</span> return ServerName.parseVersionedServerName(data);<a name="line.407"></a> -<span class="sourceLineNo">408</span> }<a name="line.408"></a> -<span class="sourceLineNo">409</span> // Presume it a hostname:port format.<a name="line.409"></a> -<span class="sourceLineNo">410</span> String hostname = Addressing.parseHostname(str);<a name="line.410"></a> -<span class="sourceLineNo">411</span> int port = Addressing.parsePort(str);<a name="line.411"></a> -<span class="sourceLineNo">412</span> return valueOf(hostname, port, -1L);<a name="line.412"></a> -<span class="sourceLineNo">413</span> }<a name="line.413"></a> -<span class="sourceLineNo">414</span>}<a name="line.414"></a> +<span class="sourceLineNo">363</span><a name="line.363"></a> +<span class="sourceLineNo">364</span> /**<a name="line.364"></a> +<span class="sourceLineNo">365</span> * @return true if the String follows the pattern of {@link ServerName#toString()}, false<a name="line.365"></a> +<span class="sourceLineNo">366</span> * otherwise.<a name="line.366"></a> +<span class="sourceLineNo">367</span> */<a name="line.367"></a> +<span class="sourceLineNo">368</span> public static boolean isFullServerName(final String str){<a name="line.368"></a> +<span class="sourceLineNo">369</span> if (str == null ||str.isEmpty()) return false;<a name="line.369"></a> +<span class="sourceLineNo">370</span> return SERVERNAME_PATTERN.matcher(str).matches();<a name="line.370"></a> +<span class="sourceLineNo">371</span> }<a name="line.371"></a> +<span class="sourceLineNo">372</span><a name="line.372"></a> +<span class="sourceLineNo">373</span> /**<a name="line.373"></a> +<span class="sourceLineNo">374</span> * Get a ServerName from the passed in data bytes.<a name="line.374"></a> +<span class="sourceLineNo">375</span> * @param data Data with a serialize server name in it; can handle the old style<a name="line.375"></a> +<span class="sourceLineNo">376</span> * servername where servername was host and port. Works too with data that<a name="line.376"></a> +<span class="sourceLineNo">377</span> * begins w/ the pb 'PBUF' magic and that is then followed by a protobuf that<a name="line.377"></a> +<span class="sourceLineNo">378</span> * has a serialized {@link ServerName} in it.<a name="line.378"></a> +<span class="sourceLineNo">379</span> * @return Returns null if <code>data</code> is null else converts passed data<a name="line.379"></a> +<span class="sourceLineNo">380</span> * to a ServerName instance.<a name="line.380"></a> +<span class="sourceLineNo">381</span> * @throws DeserializationException <a name="line.381"></a> +<span class="sourceLineNo">382</span> */<a name="line.382"></a> +<span class="sourceLineNo">383</span> public static ServerName parseFrom(final byte [] data) throws DeserializationException {<a name="line.383"></a> +<span class="sourceLineNo">384</span> if (data == null || data.length <= 0) return null;<a name="line.384"></a> +<span class="sourceLineNo">385</span> if (ProtobufMagic.isPBMagicPrefix(data)) {<a name="line.385"></a> +<span class="sourceLineNo">386</span> int prefixLen = ProtobufMagic.lengthOfPBMagic();<a name="line.386"></a> +<span class="sourceLineNo">387</span> try {<a name="line.387"></a> +<span class="sourceLineNo">388</span> ZooKeeperProtos.Master rss =<a name="line.388"></a> +<span class="sourceLineNo">389</span> ZooKeeperProtos.Master.PARSER.parseFrom(data, prefixLen, data.length - prefixLen);<a name="line.389"></a> +<span class="sourceLineNo">390</span> org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName sn = rss.getMaster();<a name="line.390"></a> +<span class="sourceLineNo">391</span> return valueOf(sn.getHostName(), sn.getPort(), sn.getStartCode());<a name="line.391"></a> +<span class="sourceLineNo">392</span> } catch (InvalidProtocolBufferException e) {<a name="line.392"></a> +<span class="sourceLineNo">393</span> // A failed parse of the znode is pretty catastrophic. Rather than loop<a name="line.393"></a> +<span class="sourceLineNo">394</span> // retrying hoping the bad bytes will changes, and rather than change<a name="line.394"></a> +<span class="sourceLineNo">395</span> // the signature on this method to add an IOE which will send ripples all<a name="line.395"></a> +<span class="sourceLineNo">396</span> // over the code base, throw a RuntimeException. This should "never" happen.<a name="line.396"></a> +<span class="sourceLineNo">397</span> // Fail fast if it does.<a name="line.397"></a> +<span class="sourceLineNo">398</span> throw new DeserializationException(e);<a name="line.398"></a> +<span class="sourceLineNo">399</span> }<a name="line.399"></a> +<span class="sourceLineNo">400</span> }<a name="line.400"></a> +<span class="sourceLineNo">401</span> // The str returned could be old style -- pre hbase-1502 -- which was<a name="line.401"></a> +<span class="sourceLineNo">402</span> // hostname and port seperated by a colon rather than hostname, port and<a name="line.402"></a> +<span class="sourceLineNo">403</span> // startcode delimited by a ','.<a name="line.403"></a> +<span class="sourceLineNo">404</span> String str = Bytes.toString(data);<a name="line.404"></a> +<span class="sourceLineNo">405</span> int index = str.indexOf(ServerName.SERVERNAME_SEPARATOR);<a name="line.405"></a> +<span class="sourceLineNo">406</span> if (index != -1) {<a name="line.406"></a> +<span class="sourceLineNo">407</span> // Presume its ServerName serialized with versioned bytes.<a name="line.407"></a> +<span class="sourceLineNo">408</span> return ServerName.parseVersionedServerName(data);<a name="line.408"></a> +<span class="sourceLineNo">409</span> }<a name="line.409"></a> +<span class="sourceLineNo">410</span> // Presume it a hostname:port format.<a name="line.410"></a> +<span class="sourceLineNo">411</span> String hostname = Addressing.parseHostname(str);<a name="line.411"></a> +<span class="sourceLineNo">412</span> int port = Addressing.parsePort(str);<a name="line.412"></a> +<span class="sourceLineNo">413</span> return valueOf(hostname, port, -1L);<a name="line.413"></a> +<span class="sourceLineNo">414</span> }<a name="line.414"></a> +<span class="sourceLineNo">415</span>}<a name="line.415"></a>
