<!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_22) on Fri Jan 21 22:13:35 GMT 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
BeanMetadata (Apache Aries Blueprint API 0.3-SNAPSHOT API)
</TITLE>

<META NAME="date" CONTENT="2011-01-21">

<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="BeanMetadata (Apache Aries Blueprint API 0.3-SNAPSHOT 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/BeanMetadata.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/osgi/service/blueprint/reflect/BeanArgument.html" title="interface in org.osgi.service.blueprint.reflect"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanProperty.html" title="interface in org.osgi.service.blueprint.reflect"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/osgi/service/blueprint/reflect/BeanMetadata.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="BeanMetadata.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;CONSTR&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;CONSTR&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.osgi.service.blueprint.reflect</FONT>
<BR>
Interface BeanMetadata</H2>
<DL>
<DT><B>All Superinterfaces:</B> <DD><A HREF="../../../../../org/osgi/service/blueprint/reflect/ComponentMetadata.html" title="interface in org.osgi.service.blueprint.reflect">ComponentMetadata</A>, <A HREF="../../../../../org/osgi/service/blueprint/reflect/Metadata.html" title="interface in org.osgi.service.blueprint.reflect">Metadata</A>, <A HREF="../../../../../org/osgi/service/blueprint/reflect/NonNullMetadata.html" title="interface in org.osgi.service.blueprint.reflect">NonNullMetadata</A>, <A HREF="../../../../../org/osgi/service/blueprint/reflect/Target.html" title="interface in org.osgi.service.blueprint.reflect">Target</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public interface <B>BeanMetadata</B><DT>extends <A HREF="../../../../../org/osgi/service/blueprint/reflect/Target.html" title="interface in org.osgi.service.blueprint.reflect">Target</A>, <A HREF="../../../../../org/osgi/service/blueprint/reflect/ComponentMetadata.html" title="interface in org.osgi.service.blueprint.reflect">ComponentMetadata</A></DL>
</PRE>

<P>
Metadata for a Bean component.
 
 <p>
 This is specified by the <code>bean</code> element.
<P>

<P>
<DL>
<DT><B>Version:</B></DT>
  <DD>$Revision: 792499 $</DD>
</DL>
<HR>

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

<A NAME="field_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>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#SCOPE_PROTOTYPE">SCOPE_PROTOTYPE</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The bean has <code>prototype</code> scope.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#SCOPE_SINGLETON">SCOPE_SINGLETON</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The bean has <code>singleton</code> scope.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.osgi.service.blueprint.reflect.ComponentMetadata"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface org.osgi.service.blueprint.reflect.<A HREF="../../../../../org/osgi/service/blueprint/reflect/ComponentMetadata.html" title="interface in org.osgi.service.blueprint.reflect">ComponentMetadata</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../org/osgi/service/blueprint/reflect/ComponentMetadata.html#ACTIVATION_EAGER">ACTIVATION_EAGER</A>, <A HREF="../../../../../org/osgi/service/blueprint/reflect/ComponentMetadata.html#ACTIVATION_LAZY">ACTIVATION_LAZY</A></CODE></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>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanArgument.html" title="interface in org.osgi.service.blueprint.reflect">BeanArgument</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#getArguments()">getArguments</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the arguments for the factory method or constructor of the bean.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#getClassName()">getClassName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the name of the class specified for the bean.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#getDestroyMethod()">getDestroyMethod</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the name of the destroy method specified for the bean.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/osgi/service/blueprint/reflect/Target.html" title="interface in org.osgi.service.blueprint.reflect">Target</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#getFactoryComponent()">getFactoryComponent</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the Metadata for the factory component on which to invoke the
 factory method for the bean.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#getFactoryMethod()">getFactoryMethod</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the name of the factory method for the bean.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#getInitMethod()">getInitMethod</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the name of the init method specified for the bean.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanProperty.html" title="interface in org.osgi.service.blueprint.reflect">BeanProperty</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#getProperties()">getProperties</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the properties for the bean.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#getScope()">getScope</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the scope for the bean.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.osgi.service.blueprint.reflect.ComponentMetadata"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from interface org.osgi.service.blueprint.reflect.<A HREF="../../../../../org/osgi/service/blueprint/reflect/ComponentMetadata.html" title="interface in org.osgi.service.blueprint.reflect">ComponentMetadata</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../org/osgi/service/blueprint/reflect/ComponentMetadata.html#getActivation()">getActivation</A>, <A HREF="../../../../../org/osgi/service/blueprint/reflect/ComponentMetadata.html#getDependsOn()">getDependsOn</A>, <A HREF="../../../../../org/osgi/service/blueprint/reflect/ComponentMetadata.html#getId()">getId</A></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">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="SCOPE_SINGLETON"><!-- --></A><H3>
SCOPE_SINGLETON</H3>
<PRE>
static final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>SCOPE_SINGLETON</B></PRE>
<DL>
<DD>The bean has <code>singleton</code> scope.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#getScope()"><CODE>getScope()</CODE></A>, 
<A HREF="../../../../../constant-values.html#org.osgi.service.blueprint.reflect.BeanMetadata.SCOPE_SINGLETON">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="SCOPE_PROTOTYPE"><!-- --></A><H3>
SCOPE_PROTOTYPE</H3>
<PRE>
static final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>SCOPE_PROTOTYPE</B></PRE>
<DL>
<DD>The bean has <code>prototype</code> scope.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#getScope()"><CODE>getScope()</CODE></A>, 
<A HREF="../../../../../constant-values.html#org.osgi.service.blueprint.reflect.BeanMetadata.SCOPE_PROTOTYPE">Constant Field Values</A></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="getClassName()"><!-- --></A><H3>
getClassName</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getClassName</B>()</PRE>
<DL>
<DD>Return the name of the class specified for the bean.
 
 This is specified by the <code>class</code> attribute of the bean
 definition.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The name of the class specified for the bean. If no class is
         specified in the bean definition, because the a factory component
         is used instead, then this method will return <code>null</code>.</DL>
</DD>
</DL>
<HR>

<A NAME="getInitMethod()"><!-- --></A><H3>
getInitMethod</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getInitMethod</B>()</PRE>
<DL>
<DD>Return the name of the init method specified for the bean.
 
 This is specified by the <code>init-method</code> attribute of the bean
 definition.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The name of the init method specified for the bean, or
         <code>null</code> if no init method is specified.</DL>
</DD>
</DL>
<HR>

<A NAME="getDestroyMethod()"><!-- --></A><H3>
getDestroyMethod</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getDestroyMethod</B>()</PRE>
<DL>
<DD>Return the name of the destroy method specified for the bean.
 
 This is specified by the <code>destroy-method</code> attribute of the
 bean definition.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The name of the destroy method specified for the bean, or
         <code>null</code> if no destroy method is specified.</DL>
</DD>
</DL>
<HR>

<A NAME="getArguments()"><!-- --></A><H3>
getArguments</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanArgument.html" title="interface in org.osgi.service.blueprint.reflect">BeanArgument</A>&gt; <B>getArguments</B>()</PRE>
<DL>
<DD>Return the arguments for the factory method or constructor of the bean.
 
 This is specified by the child <code>argument<code> elements.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>An immutable List of <A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanArgument.html" title="interface in org.osgi.service.blueprint.reflect"><CODE>BeanArgument</CODE></A> objects for the factory
         method or constructor of the bean. The List is empty if no
         arguments are specified for the bean.</DL>
</DD>
</DL>
<HR>

<A NAME="getProperties()"><!-- --></A><H3>
getProperties</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanProperty.html" title="interface in org.osgi.service.blueprint.reflect">BeanProperty</A>&gt; <B>getProperties</B>()</PRE>
<DL>
<DD>Return the properties for the bean.
 
 This is specified by the child <code>property</code> elements.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>An immutable List of <A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanProperty.html" title="interface in org.osgi.service.blueprint.reflect"><CODE>BeanProperty</CODE></A> objects, with one entry
         for each property to be injected in the bean. The List is empty
         if no property injection is specified for the bean.</DL>
</DD>
</DL>
<HR>

<A NAME="getFactoryMethod()"><!-- --></A><H3>
getFactoryMethod</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getFactoryMethod</B>()</PRE>
<DL>
<DD>Return the name of the factory method for the bean.
 
 This is specified by the <code>factory-method</code> attribute of the
 bean.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The name of the factory method of the bean or <code>null</code>
         if no factory method is specified for the bean.</DL>
</DD>
</DL>
<HR>

<A NAME="getFactoryComponent()"><!-- --></A><H3>
getFactoryComponent</H3>
<PRE>
<A HREF="../../../../../org/osgi/service/blueprint/reflect/Target.html" title="interface in org.osgi.service.blueprint.reflect">Target</A> <B>getFactoryComponent</B>()</PRE>
<DL>
<DD>Return the Metadata for the factory component on which to invoke the
 factory method for the bean.
 
 This is specified by the <code>factory-ref</code> attribute of the bean.
 
 <p>
 When a factory method and factory component have been specified for the
 bean, this method returns the factory component on which to invoke the
 factory method for the bean. When no factory component has been specified
 this method will return <code>null</code>.
 
 When a factory method has been specified for the bean but a factory
 component has not been specified, the factory method must be invoked as a
 static method on the bean's class.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The Metadata for the factory component on which to invoke the
         factory method for the bean or <code>null</code> if no factory
         component is specified.</DL>
</DD>
</DL>
<HR>

<A NAME="getScope()"><!-- --></A><H3>
getScope</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getScope</B>()</PRE>
<DL>
<DD>Return the scope for the bean.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The scope for the bean.<DT><B>See Also:</B><DD><A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#SCOPE_SINGLETON"><CODE>SCOPE_SINGLETON</CODE></A>, 
<A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanMetadata.html#SCOPE_PROTOTYPE"><CODE>SCOPE_PROTOTYPE</CODE></A></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/BeanMetadata.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/osgi/service/blueprint/reflect/BeanArgument.html" title="interface in org.osgi.service.blueprint.reflect"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/osgi/service/blueprint/reflect/BeanProperty.html" title="interface in org.osgi.service.blueprint.reflect"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/osgi/service/blueprint/reflect/BeanMetadata.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="BeanMetadata.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;CONSTR&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;CONSTR&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; 2009-2011 <a href="http://www.apache.org">The Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>
