<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Mon Apr 11 23:10:54 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
StringUtilities (Apache MINA 2.0.3 API)
</TITLE>

<META NAME="date" CONTENT="2011-04-11">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="StringUtilities (Apache MINA 2.0.3 API)";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/StringUtilities.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/mina/proxy/utils/MD4Provider.html" title="class in org.apache.mina.proxy.utils"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/apache/mina/proxy/utils/StringUtilities.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="StringUtilities.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.mina.proxy.utils</FONT>
<BR>
Class StringUtilities</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.mina.proxy.utils.StringUtilities</B>
</PRE>
<HR>
<DL>
<DT><PRE>public class <B>StringUtilities</B><DT>extends java.lang.Object</DL>
</PRE>

<P>
StringUtilities.java - Various methods to handle strings.
<P>

<P>
<DL>
<DT><B>Since:</B></DT>
  <DD>MINA 2.0.0-M3</DD>
<DT><B>Author:</B></DT>
  <DD><a href="http://mina.apache.org">Apache MINA Project</a></DD>
</DL>
<HR>

<P>

<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/mina/proxy/utils/StringUtilities.html#StringUtilities()">StringUtilities</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/mina/proxy/utils/StringUtilities.html#addValueToHeader(java.util.Map, java.lang.String, java.lang.String, boolean)">addValueToHeader</A></B>(java.util.Map&lt;java.lang.String,java.util.List&lt;java.lang.String&gt;&gt;&nbsp;headers,
                 java.lang.String&nbsp;key,
                 java.lang.String&nbsp;value,
                 boolean&nbsp;singleValued)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds an header to the provided map of headers.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/mina/proxy/utils/StringUtilities.html#copyDirective(java.util.HashMap, java.util.HashMap, java.lang.String)">copyDirective</A></B>(java.util.HashMap&lt;java.lang.String,java.lang.String&gt;&nbsp;src,
              java.util.HashMap&lt;java.lang.String,java.lang.String&gt;&nbsp;dst,
              java.lang.String&nbsp;directive)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copy the directive from the source map to the destination map, if it's
 value isn't null.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/mina/proxy/utils/StringUtilities.html#copyDirective(java.util.HashMap, java.lang.StringBuilder, java.lang.String)">copyDirective</A></B>(java.util.HashMap&lt;java.lang.String,java.lang.String&gt;&nbsp;directives,
              java.lang.StringBuilder&nbsp;sb,
              java.lang.String&nbsp;directive)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copy the directive to the <CODE>StringBuilder</CODE> if not null.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/mina/proxy/utils/StringUtilities.html#getDirectiveValue(java.util.HashMap, java.lang.String, boolean)">getDirectiveValue</A></B>(java.util.HashMap&lt;java.lang.String,java.lang.String&gt;&nbsp;directivesMap,
                  java.lang.String&nbsp;directive,
                  boolean&nbsp;mandatory)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A directive is a parameter of the digest authentication process.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/mina/proxy/utils/StringUtilities.html#getSingleValuedHeader(java.util.Map, java.lang.String)">getSingleValuedHeader</A></B>(java.util.Map&lt;java.lang.String,java.util.List&lt;java.lang.String&gt;&gt;&nbsp;headers,
                      java.lang.String&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the value of the named header.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/mina/proxy/utils/StringUtilities.html#isLws(byte)">isLws</A></B>(byte&nbsp;b)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Is character a linear white space ?
 LWS            = [CRLF] 1*( SP | HT )
 Note that we're checking individual bytes instead of CRLF</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.util.HashMap&lt;java.lang.String,java.lang.String&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/mina/proxy/utils/StringUtilities.html#parseDirectives(byte[])">parseDirectives</A></B>(byte[]&nbsp;buf)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Parses digest-challenge string, extracting each token and value(s).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/mina/proxy/utils/StringUtilities.html#stringTo8859_1(java.lang.String)">stringTo8859_1</A></B>(java.lang.String&nbsp;str)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Used to convert username-value, passwd or realm to 8859_1 encoding
 if all chars in string are within the 8859_1 (Latin 1) encoding range.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="StringUtilities()"><!-- --></A><H3>
StringUtilities</H3>
<PRE>
public <B>StringUtilities</B>()</PRE>
<DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="getDirectiveValue(java.util.HashMap, java.lang.String, boolean)"><!-- --></A><H3>
getDirectiveValue</H3>
<PRE>
public static java.lang.String <B>getDirectiveValue</B>(java.util.HashMap&lt;java.lang.String,java.lang.String&gt;&nbsp;directivesMap,
                                                 java.lang.String&nbsp;directive,
                                                 boolean&nbsp;mandatory)
                                          throws javax.security.sasl.AuthenticationException</PRE>
<DL>
<DD>A directive is a parameter of the digest authentication process.
 Returns the value of a directive from the map. If mandatory is true and the 
 value is null, then it throws an <CODE>AuthenticationException</CODE>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>directivesMap</CODE> - the directive's map<DD><CODE>directive</CODE> - the name of the directive we want to retrieve<DD><CODE>mandatory</CODE> - is the directive mandatory
<DT><B>Returns:</B><DD>the mandatory value as a String
<DT><B>Throws:</B>
<DD><CODE>javax.security.sasl.AuthenticationException</CODE> - if mandatory is true and if 
 directivesMap.get(directive) == null</DL>
</DD>
</DL>
<HR>

<A NAME="copyDirective(java.util.HashMap, java.lang.StringBuilder, java.lang.String)"><!-- --></A><H3>
copyDirective</H3>
<PRE>
public static void <B>copyDirective</B>(java.util.HashMap&lt;java.lang.String,java.lang.String&gt;&nbsp;directives,
                                 java.lang.StringBuilder&nbsp;sb,
                                 java.lang.String&nbsp;directive)</PRE>
<DL>
<DD>Copy the directive to the <CODE>StringBuilder</CODE> if not null.
 (A directive is a parameter of the digest authentication process.)
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>directives</CODE> - the directives map<DD><CODE>sb</CODE> - the output buffer<DD><CODE>directive</CODE> - the directive name to look for</DL>
</DD>
</DL>
<HR>

<A NAME="copyDirective(java.util.HashMap, java.util.HashMap, java.lang.String)"><!-- --></A><H3>
copyDirective</H3>
<PRE>
public static java.lang.String <B>copyDirective</B>(java.util.HashMap&lt;java.lang.String,java.lang.String&gt;&nbsp;src,
                                             java.util.HashMap&lt;java.lang.String,java.lang.String&gt;&nbsp;dst,
                                             java.lang.String&nbsp;directive)</PRE>
<DL>
<DD>Copy the directive from the source map to the destination map, if it's
 value isn't null.
 (A directive is a parameter of the digest authentication process.)
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>src</CODE> - the source map<DD><CODE>dst</CODE> - the destination map<DD><CODE>directive</CODE> - the directive name
<DT><B>Returns:</B><DD>the value of the copied directive</DL>
</DD>
</DL>
<HR>

<A NAME="parseDirectives(byte[])"><!-- --></A><H3>
parseDirectives</H3>
<PRE>
public static java.util.HashMap&lt;java.lang.String,java.lang.String&gt; <B>parseDirectives</B>(byte[]&nbsp;buf)
                                                                            throws javax.security.sasl.SaslException</PRE>
<DL>
<DD>Parses digest-challenge string, extracting each token and value(s). Each token
 is a directive.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>buf</CODE> - A non-null digest-challenge string.
<DT><B>Throws:</B>
<DD><CODE>java.io.UnsupportedEncodingException</CODE>
<DD><CODE>javax.security.sasl.SaslException</CODE> - if the String cannot be parsed according to RFC 2831</DL>
</DD>
</DL>
<HR>

<A NAME="isLws(byte)"><!-- --></A><H3>
isLws</H3>
<PRE>
public static boolean <B>isLws</B>(byte&nbsp;b)</PRE>
<DL>
<DD>Is character a linear white space ?
 LWS            = [CRLF] 1*( SP | HT )
 Note that we're checking individual bytes instead of CRLF
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>b</CODE> - the byte to check
<DT><B>Returns:</B><DD><code>true</code> if it's a linear white space</DL>
</DD>
</DL>
<HR>

<A NAME="stringTo8859_1(java.lang.String)"><!-- --></A><H3>
stringTo8859_1</H3>
<PRE>
public static java.lang.String <B>stringTo8859_1</B>(java.lang.String&nbsp;str)
                                       throws java.io.UnsupportedEncodingException</PRE>
<DL>
<DD>Used to convert username-value, passwd or realm to 8859_1 encoding
 if all chars in string are within the 8859_1 (Latin 1) encoding range.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>str</CODE> - a non-null String
<DT><B>Returns:</B><DD>a non-null String containing the 8859_1 encoded string
<DT><B>Throws:</B>
<DD><CODE>javax.security.sasl.AuthenticationException</CODE>
<DD><CODE>java.io.UnsupportedEncodingException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getSingleValuedHeader(java.util.Map, java.lang.String)"><!-- --></A><H3>
getSingleValuedHeader</H3>
<PRE>
public static java.lang.String <B>getSingleValuedHeader</B>(java.util.Map&lt;java.lang.String,java.util.List&lt;java.lang.String&gt;&gt;&nbsp;headers,
                                                     java.lang.String&nbsp;key)</PRE>
<DL>
<DD>Returns the value of the named header. If it has multiple values
 then an <CODE>IllegalArgumentException</CODE> is thrown
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>headers</CODE> - the http headers map<DD><CODE>key</CODE> - the key of the header
<DT><B>Returns:</B><DD>the value of the http header</DL>
</DD>
</DL>
<HR>

<A NAME="addValueToHeader(java.util.Map, java.lang.String, java.lang.String, boolean)"><!-- --></A><H3>
addValueToHeader</H3>
<PRE>
public static void <B>addValueToHeader</B>(java.util.Map&lt;java.lang.String,java.util.List&lt;java.lang.String&gt;&gt;&nbsp;headers,
                                    java.lang.String&nbsp;key,
                                    java.lang.String&nbsp;value,
                                    boolean&nbsp;singleValued)</PRE>
<DL>
<DD>Adds an header to the provided map of headers.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>headers</CODE> - the http headers map<DD><CODE>key</CODE> - the name of the new header to add<DD><CODE>value</CODE> - the value of the added header<DD><CODE>singleValued</CODE> - if true and the map already contains one value
 then it is replaced by the new value. Otherwise it simply adds a new
 value to this multi-valued header.</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/StringUtilities.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/mina/proxy/utils/MD4Provider.html" title="class in org.apache.mina.proxy.utils"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/apache/mina/proxy/utils/StringUtilities.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="StringUtilities.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &#169; 2004-2011 <a href="http://mina.apache.org/">Apache MINA Project</a>. All Rights Reserved.
</BODY>
</HTML>
