<!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.4.2_08) on Sat Apr 22 18:56:46 PDT 2006 -->
<TITLE>
RB (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.axis.i18n.RB class">

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

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="RB (Axis API)";
}
</SCRIPT>

</HEAD>

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


<!-- ========= 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=3 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/RB.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/axis/i18n/ProjectResourceBundle.html" title="class in org.apache.axis.i18n"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="RB.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;<A HREF="#field_summary">FIELD</A>&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;<A HREF="#field_detail">FIELD</A>&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.axis.i18n</FONT>
<BR>
Class RB</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>org.apache.axis.i18n.RB</B>
</PRE>
<HR>
<DL>
<DT>public class <B>RB</B><DT>extends java.lang.Object</DL>

<P>
CURRENTLY NOT USED
 KEEPING FOR REFERENCE  9/19/2002
 
 <p>Wrapper class for resource bundles. Property files are used to store
 resource strings, which are the only types of resources available.
 Property files can inherit properties from other files so that
 a base property file can be used and a small number of properties
 can be over-ridden by another property file. For example you may
 create an english version of a resource file named "resource.properties".
 You then decide that the British English version of all of the properties
 except one are the same, so there is no need to redefine all of the
 properties in "resource_en_GB", just the one that is different.</p>
 <p>The property file lookup searches for classes with various suffixes
 on the basis if the desired local and the current default local
 (as returned by Local.getDefault()). As property files are found the
 property values are merged so that inheritance is preserved.</p>
 <p>The order of searching is:</p>
 <dir>
 basename + "_" + langage + "_" + country + "_" + variant
 basename + "_" + langage + "_" + country
 basename + "_" + langage
 basename + "_" + defaultLanguage + "_" + defaultCountry + "_" + defaultVariant
 basename + "_" + defaultLanguage + "_" + defaultCountry
 basename + "_" + defaultLanguage
 basename
 </dir>
 <p>The basename is the name of the property file without the ".properties"
 extension.</p>
 <p>Properties will be cached for performance.<p>
 <p>Property values stored in the property files can also contain dynamic
 variables. Any dynamic variable defined in PropertiesUtil.getVariableValue()
 can be used (such as {date}), as well as arguments in the form {0}, {1}, etc.
 Argument values are specified in the various overloaded getString() methods.</p>
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Karl Moss (kmoss@macromedia.com), Glen Daniels (gdaniels@apache.org)</DD>
</DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Field Summary</B></FONT></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/axis/i18n/RB.html#BASE_NAME">BASE_NAME</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#basePropertyFileName">basePropertyFileName</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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/axis/i18n/RB.html#PROPERTY_EXT">PROPERTY_EXT</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.Properties</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#resourceProperties">resourceProperties</A></B></CODE>

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

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#RB(java.lang.Object, java.lang.String)">RB</A></B>(java.lang.Object&nbsp;caller,
   java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a new RB</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#RB(java.lang.Object, java.lang.String, java.util.Locale)">RB</A></B>(java.lang.Object&nbsp;caller,
   java.lang.String&nbsp;name,
   java.util.Locale&nbsp;locale)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a new RB</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#RB(java.lang.String)">RB</A></B>(java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a new RB</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">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></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/axis/i18n/RB.html#clearCache()">clearCache</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clears the internal cache</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/axis/i18n/RB.html#getMessage(java.lang.Object, java.lang.String, java.util.Locale, java.lang.String, java.lang.Object[])">getMessage</A></B>(java.lang.Object&nbsp;caller,
           java.lang.String&nbsp;basename,
           java.util.Locale&nbsp;locale,
           java.lang.String&nbsp;key,
           java.lang.Object[]&nbsp;args)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Properties</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#getProperties()">getProperties</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the underlying properties</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/axis/i18n/RB.html#getString(java.lang.Object, java.util.Locale, java.lang.String)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.util.Locale&nbsp;locale,
          java.lang.String&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.util.Locale&nbsp;locale,
          java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object[])">getString</A></B>(java.lang.Object&nbsp;caller,
          java.util.Locale&nbsp;locale,
          java.lang.String&nbsp;key,
          java.lang.Object[]&nbsp;args)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object, java.lang.Object)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.util.Locale&nbsp;locale,
          java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0,
          java.lang.Object&nbsp;arg1)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.util.Locale&nbsp;locale,
          java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0,
          java.lang.Object&nbsp;arg1,
          java.lang.Object&nbsp;arg2)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.util.Locale&nbsp;locale,
          java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0,
          java.lang.Object&nbsp;arg1,
          java.lang.Object&nbsp;arg2,
          java.lang.Object&nbsp;arg3)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.util.Locale&nbsp;locale,
          java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0,
          java.lang.Object&nbsp;arg1,
          java.lang.Object&nbsp;arg2,
          java.lang.Object&nbsp;arg3,
          java.lang.Object&nbsp;arg4)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.lang.String)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.lang.String&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.lang.String, java.lang.Object)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.lang.String, java.lang.Object[])">getString</A></B>(java.lang.Object&nbsp;caller,
          java.lang.String&nbsp;key,
          java.lang.Object[]&nbsp;args)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.lang.String, java.lang.Object, java.lang.Object)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0,
          java.lang.Object&nbsp;arg1)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0,
          java.lang.Object&nbsp;arg1,
          java.lang.Object&nbsp;arg2)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0,
          java.lang.Object&nbsp;arg1,
          java.lang.Object&nbsp;arg2,
          java.lang.Object&nbsp;arg3)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</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/axis/i18n/RB.html#getString(java.lang.Object, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)">getString</A></B>(java.lang.Object&nbsp;caller,
          java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0,
          java.lang.Object&nbsp;arg1,
          java.lang.Object&nbsp;arg2,
          java.lang.Object&nbsp;arg3,
          java.lang.Object&nbsp;arg4)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a message from resource.properties from the package of the given object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#getString(java.lang.String)">getString</A></B>(java.lang.String&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a string message from the resource bundle for the given key</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#getString(java.lang.String, java.lang.Object)">getString</A></B>(java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a string message from the resource bundle for the given key.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#getString(java.lang.String, java.lang.Object[])">getString</A></B>(java.lang.String&nbsp;key,
          java.lang.Object[]&nbsp;array)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a string message from the resource bundle for the given key.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#getString(java.lang.String, java.lang.Object, java.lang.Object)">getString</A></B>(java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0,
          java.lang.Object&nbsp;arg1)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a string message from the resource bundle for the given key.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#getString(java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object)">getString</A></B>(java.lang.String&nbsp;key,
          java.lang.Object&nbsp;arg0,
          java.lang.Object&nbsp;arg1,
          java.lang.Object&nbsp;arg2)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a string message from the resource bundle for the given key.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.Properties</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#loadProperties(java.lang.String, java.lang.ClassLoader)">loadProperties</A></B>(java.lang.String&nbsp;resname,
               java.lang.ClassLoader&nbsp;loader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#loadProperties(java.lang.String, java.lang.ClassLoader, java.util.Locale, java.util.Locale)">loadProperties</A></B>(java.lang.String&nbsp;basename,
               java.lang.ClassLoader&nbsp;loader,
               java.util.Locale&nbsp;locale,
               java.util.Locale&nbsp;defaultLocale)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.Properties</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#loadProperties(java.lang.String, java.lang.ClassLoader, java.util.Locale, java.util.Properties)">loadProperties</A></B>(java.lang.String&nbsp;basename,
               java.lang.ClassLoader&nbsp;loader,
               java.util.Locale&nbsp;locale,
               java.util.Properties&nbsp;props)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.Properties</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/i18n/RB.html#merge(java.util.Properties, java.util.Properties)">merge</A></B>(java.util.Properties&nbsp;p1,
      java.util.Properties&nbsp;p2)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Merge two Properties objects</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">
<TD><B>Methods inherited from class java.lang.Object</B></TD>
</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>

<!-- ============ FIELD DETAIL =========== -->

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

<A NAME="BASE_NAME"><!-- --></A><H3>
BASE_NAME</H3>
<PRE>
public static final java.lang.String <B>BASE_NAME</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#org.apache.axis.i18n.RB.BASE_NAME">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="PROPERTY_EXT"><!-- --></A><H3>
PROPERTY_EXT</H3>
<PRE>
public static final java.lang.String <B>PROPERTY_EXT</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#org.apache.axis.i18n.RB.PROPERTY_EXT">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="basePropertyFileName"><!-- --></A><H3>
basePropertyFileName</H3>
<PRE>
protected java.lang.String <B>basePropertyFileName</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="resourceProperties"><!-- --></A><H3>
resourceProperties</H3>
<PRE>
protected java.util.Properties <B>resourceProperties</B></PRE>
<DL>
<DL>
</DL>
</DL>

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

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

<A NAME="RB(java.lang.String)"><!-- --></A><H3>
RB</H3>
<PRE>
public <B>RB</B>(java.lang.String&nbsp;name)
   throws java.util.MissingResourceException</PRE>
<DL>
<DD>Construct a new RB
<P>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - The name of the property file without the ".properties" extension</DL>
<HR>

<A NAME="RB(java.lang.Object, java.lang.String)"><!-- --></A><H3>
RB</H3>
<PRE>
public <B>RB</B>(java.lang.Object&nbsp;caller,
          java.lang.String&nbsp;name)
   throws java.util.MissingResourceException</PRE>
<DL>
<DD>Construct a new RB
<P>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object. This is used to get the package name
 to further construct the basename as well as to get the proper ClassLoader<DD><CODE>name</CODE> - The name of the property file without the ".properties" extension</DL>
<HR>

<A NAME="RB(java.lang.Object, java.lang.String, java.util.Locale)"><!-- --></A><H3>
RB</H3>
<PRE>
public <B>RB</B>(java.lang.Object&nbsp;caller,
          java.lang.String&nbsp;name,
          java.util.Locale&nbsp;locale)
   throws java.util.MissingResourceException</PRE>
<DL>
<DD>Construct a new RB
<P>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object. This is used to get the package name
 to further construct the basename as well as to get the proper ClassLoader<DD><CODE>name</CODE> - The name of the property file without the ".properties" extension</DL>

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

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

<A NAME="getString(java.lang.String)"><!-- --></A><H3>
getString</H3>
<PRE>
public java.lang.String <B>getString</B>(java.lang.String&nbsp;key)
                           throws java.util.MissingResourceException</PRE>
<DL>
<DD>Gets a string message from the resource bundle for the given key
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - The resource key
<DT><B>Returns:</B><DD>The message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.String, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public java.lang.String <B>getString</B>(java.lang.String&nbsp;key,
                                  java.lang.Object&nbsp;arg0)
                           throws java.util.MissingResourceException</PRE>
<DL>
<DD><p>Gets a string message from the resource bundle for the given key. The
 message may contain variables that will be substituted with the given
 arguments. Variables have the format:</p>
 <dir>
 This message has two variables: {0} and {1}
 </dir>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}
<DT><B>Returns:</B><DD>The message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.String, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public java.lang.String <B>getString</B>(java.lang.String&nbsp;key,
                                  java.lang.Object&nbsp;arg0,
                                  java.lang.Object&nbsp;arg1)
                           throws java.util.MissingResourceException</PRE>
<DL>
<DD><p>Gets a string message from the resource bundle for the given key. The
 message may contain variables that will be substituted with the given
 arguments. Variables have the format:</p>
 <dir>
 This message has two variables: {0} and {1}
 </dir>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}<DD><CODE>arg1</CODE> - The argument to place in variable {1}
<DT><B>Returns:</B><DD>The message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public java.lang.String <B>getString</B>(java.lang.String&nbsp;key,
                                  java.lang.Object&nbsp;arg0,
                                  java.lang.Object&nbsp;arg1,
                                  java.lang.Object&nbsp;arg2)
                           throws java.util.MissingResourceException</PRE>
<DL>
<DD><p>Gets a string message from the resource bundle for the given key. The
 message may contain variables that will be substituted with the given
 arguments. Variables have the format:</p>
 <dir>
 This message has two variables: {0} and {1}
 </dir>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}<DD><CODE>arg1</CODE> - The argument to place in variable {1}<DD><CODE>arg2</CODE> - The argument to place in variable {1}
<DT><B>Returns:</B><DD>The message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.String, java.lang.Object[])"><!-- --></A><H3>
getString</H3>
<PRE>
public java.lang.String <B>getString</B>(java.lang.String&nbsp;key,
                                  java.lang.Object[]&nbsp;array)
                           throws java.util.MissingResourceException</PRE>
<DL>
<DD><p>Gets a string message from the resource bundle for the given key. The
 message may contain variables that will be substituted with the given
 arguments. Variables have the format:</p>
 <dir>
 This message has two variables: {0} and {1}
 </dir>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - The resource key<DD><CODE>array</CODE> - An array of objects to place in corresponding variables
<DT><B>Returns:</B><DD>The message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="loadProperties(java.lang.String, java.lang.ClassLoader, java.util.Locale, java.util.Locale)"><!-- --></A><H3>
loadProperties</H3>
<PRE>
protected void <B>loadProperties</B>(java.lang.String&nbsp;basename,
                              java.lang.ClassLoader&nbsp;loader,
                              java.util.Locale&nbsp;locale,
                              java.util.Locale&nbsp;defaultLocale)
                       throws java.util.MissingResourceException</PRE>
<DL>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="loadProperties(java.lang.String, java.lang.ClassLoader, java.util.Locale, java.util.Properties)"><!-- --></A><H3>
loadProperties</H3>
<PRE>
protected java.util.Properties <B>loadProperties</B>(java.lang.String&nbsp;basename,
                                              java.lang.ClassLoader&nbsp;loader,
                                              java.util.Locale&nbsp;locale,
                                              java.util.Properties&nbsp;props)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="loadProperties(java.lang.String, java.lang.ClassLoader)"><!-- --></A><H3>
loadProperties</H3>
<PRE>
protected java.util.Properties <B>loadProperties</B>(java.lang.String&nbsp;resname,
                                              java.lang.ClassLoader&nbsp;loader)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="merge(java.util.Properties, java.util.Properties)"><!-- --></A><H3>
merge</H3>
<PRE>
protected java.util.Properties <B>merge</B>(java.util.Properties&nbsp;p1,
                                     java.util.Properties&nbsp;p2)</PRE>
<DL>
<DD>Merge two Properties objects
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getProperties()"><!-- --></A><H3>
getProperties</H3>
<PRE>
public java.util.Properties <B>getProperties</B>()</PRE>
<DL>
<DD>Get the underlying properties
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.lang.String)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.lang.String&nbsp;key)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>key</CODE> - The resource key
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.lang.String, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object&nbsp;arg0)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.lang.String, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object&nbsp;arg0,
                                         java.lang.Object&nbsp;arg1)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}<DD><CODE>arg1</CODE> - The argument to place in variable {1}
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object&nbsp;arg0,
                                         java.lang.Object&nbsp;arg1,
                                         java.lang.Object&nbsp;arg2)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}<DD><CODE>arg1</CODE> - The argument to place in variable {1}<DD><CODE>arg2</CODE> - The argument to place in variable {2}
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object&nbsp;arg0,
                                         java.lang.Object&nbsp;arg1,
                                         java.lang.Object&nbsp;arg2,
                                         java.lang.Object&nbsp;arg3)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}<DD><CODE>arg1</CODE> - The argument to place in variable {1}<DD><CODE>arg2</CODE> - The argument to place in variable {2}<DD><CODE>arg3</CODE> - The argument to place in variable {3}
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object&nbsp;arg0,
                                         java.lang.Object&nbsp;arg1,
                                         java.lang.Object&nbsp;arg2,
                                         java.lang.Object&nbsp;arg3,
                                         java.lang.Object&nbsp;arg4)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}<DD><CODE>arg1</CODE> - The argument to place in variable {1}<DD><CODE>arg2</CODE> - The argument to place in variable {2}<DD><CODE>arg3</CODE> - The argument to place in variable {3}<DD><CODE>arg4</CODE> - The argument to place in variable {4}
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.lang.String, java.lang.Object[])"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object[]&nbsp;args)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>key</CODE> - The resource key
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.util.Locale, java.lang.String)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.util.Locale&nbsp;locale,
                                         java.lang.String&nbsp;key)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>locale</CODE> - The locale<DD><CODE>key</CODE> - The resource key
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.util.Locale&nbsp;locale,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object&nbsp;arg0)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>locale</CODE> - The locale<DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.util.Locale&nbsp;locale,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object&nbsp;arg0,
                                         java.lang.Object&nbsp;arg1)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>locale</CODE> - The locale<DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}<DD><CODE>arg1</CODE> - The argument to place in variable {1}
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.util.Locale&nbsp;locale,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object&nbsp;arg0,
                                         java.lang.Object&nbsp;arg1,
                                         java.lang.Object&nbsp;arg2)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>locale</CODE> - The locale<DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}<DD><CODE>arg1</CODE> - The argument to place in variable {1}<DD><CODE>arg2</CODE> - The argument to place in variable {2}
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.util.Locale&nbsp;locale,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object&nbsp;arg0,
                                         java.lang.Object&nbsp;arg1,
                                         java.lang.Object&nbsp;arg2,
                                         java.lang.Object&nbsp;arg3)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>locale</CODE> - The locale<DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}<DD><CODE>arg1</CODE> - The argument to place in variable {1}<DD><CODE>arg2</CODE> - The argument to place in variable {2}<DD><CODE>arg3</CODE> - The argument to place in variable {3}
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.util.Locale&nbsp;locale,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object&nbsp;arg0,
                                         java.lang.Object&nbsp;arg1,
                                         java.lang.Object&nbsp;arg2,
                                         java.lang.Object&nbsp;arg3,
                                         java.lang.Object&nbsp;arg4)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>locale</CODE> - The locale<DD><CODE>key</CODE> - The resource key<DD><CODE>arg0</CODE> - The argument to place in variable {0}<DD><CODE>arg1</CODE> - The argument to place in variable {1}<DD><CODE>arg2</CODE> - The argument to place in variable {2}<DD><CODE>arg3</CODE> - The argument to place in variable {3}
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getString(java.lang.Object, java.util.Locale, java.lang.String, java.lang.Object[])"><!-- --></A><H3>
getString</H3>
<PRE>
public static java.lang.String <B>getString</B>(java.lang.Object&nbsp;caller,
                                         java.util.Locale&nbsp;locale,
                                         java.lang.String&nbsp;key,
                                         java.lang.Object[]&nbsp;args)
                                  throws java.util.MissingResourceException</PRE>
<DL>
<DD>Get a message from resource.properties from the package of the given object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>caller</CODE> - The calling object, used to get the package name and class loader<DD><CODE>locale</CODE> - The locale<DD><CODE>key</CODE> - The resource key
<DT><B>Returns:</B><DD>The formatted message
<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getMessage(java.lang.Object, java.lang.String, java.util.Locale, java.lang.String, java.lang.Object[])"><!-- --></A><H3>
getMessage</H3>
<PRE>
public static java.lang.String <B>getMessage</B>(java.lang.Object&nbsp;caller,
                                          java.lang.String&nbsp;basename,
                                          java.util.Locale&nbsp;locale,
                                          java.lang.String&nbsp;key,
                                          java.lang.Object[]&nbsp;args)
                                   throws java.util.MissingResourceException</PRE>
<DL>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE>java.util.MissingResourceException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="clearCache()"><!-- --></A><H3>
clearCache</H3>
<PRE>
public static void <B>clearCache</B>()</PRE>
<DL>
<DD>Clears the internal cache
<P>
<DD><DL>
</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=3 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/RB.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/axis/i18n/ProjectResourceBundle.html" title="class in org.apache.axis.i18n"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="RB.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;<A HREF="#field_summary">FIELD</A>&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;<A HREF="#field_detail">FIELD</A>&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 © 2005 Apache Web Services Project. All Rights Reserved.
</BODY>
</HTML>
