<!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:19:15 GMT 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
Index (Aries JPA Container 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="Index (Aries JPA Container 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">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./overview-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="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&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;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="./index.html?index-all.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="index-all.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>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<A HREF="#_A_">A</A> <A HREF="#_C_">C</A> <A HREF="#_D_">D</A> <A HREF="#_E_">E</A> <A HREF="#_G_">G</A> <A HREF="#_J_">J</A> <A HREF="#_M_">M</A> <A HREF="#_N_">N</A> <A HREF="#_O_">O</A> <A HREF="#_P_">P</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_T_">T</A> <A HREF="#_U_">U</A> <A HREF="#_V_">V</A> <HR>
<A NAME="_A_"><!-- --></A><H2>
<B>A</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html#ARIES_JPA_CONTAINER_PROPERTIES"><B>ARIES_JPA_CONTAINER_PROPERTIES</B></A> - 
Static variable in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html" title="interface in org.apache.aries.jpa.container">ManagedPersistenceUnitInfoFactory</A>
<DD>The name of the config properties file that can be used to configure
 the Aries JPA Container
</DL>
<HR>
<A NAME="_C_"><!-- --></A><H2>
<B>C</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html#CONTAINER_MANAGED_PERSISTENCE_UNIT"><B>CONTAINER_MANAGED_PERSISTENCE_UNIT</B></A> - 
Static variable in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html" title="interface in org.apache.aries.jpa.container">PersistenceUnitConstants</A>
<DD>The service property key mapped to a Boolean indicating whether this persistence unit is container managed
<DT><A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html#createManagedPersistenceUnitMetadata(org.osgi.framework.BundleContext, org.osgi.framework.Bundle, org.osgi.framework.ServiceReference, java.util.Collection)"><B>createManagedPersistenceUnitMetadata(BundleContext, Bundle, ServiceReference, Collection&lt;ParsedPersistenceUnit&gt;)</B></A> - 
Method in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html" title="interface in org.apache.aries.jpa.container">ManagedPersistenceUnitInfoFactory</A>
<DD>This method will be called by the Aries JPA container when persistence descriptors have
 been located in a persistence bundle.
</DL>
<HR>
<A NAME="_D_"><!-- --></A><H2>
<B>D</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html#DEFAULT_PU_INFO_FACTORY_KEY"><B>DEFAULT_PU_INFO_FACTORY_KEY</B></A> - 
Static variable in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html" title="interface in org.apache.aries.jpa.container">ManagedPersistenceUnitInfoFactory</A>
<DD>The config property key that should be used to provide a customized
 <A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html" title="interface in org.apache.aries.jpa.container"><CODE>ManagedPersistenceUnitInfoFactory</CODE></A> to the Aries JPA Container
<DT><A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html#destroyPersistenceBundle(org.osgi.framework.BundleContext, org.osgi.framework.Bundle)"><B>destroyPersistenceBundle(BundleContext, Bundle)</B></A> - 
Method in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html" title="interface in org.apache.aries.jpa.container">ManagedPersistenceUnitInfoFactory</A>
<DD>This method will be called when the persistence bundle is no longer being managed.
</DL>
<HR>
<A NAME="_E_"><!-- --></A><H2>
<B>E</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html#EMPTY_PERSISTENCE_UNIT_NAME"><B>EMPTY_PERSISTENCE_UNIT_NAME</B></A> - 
Static variable in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html" title="interface in org.apache.aries.jpa.container">PersistenceUnitConstants</A>
<DD>The service property key mapped to a Boolean indicating whether this persistence unit has the default (empty string) unit name 
  This allows clients to filter for empty string persistence unit names.
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#EXCLUDE_UNLISTED_CLASSES"><B>EXCLUDE_UNLISTED_CLASSES</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>A <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang"><CODE>Boolean</CODE></A> indicating whether unlisted classes should be excluded
</DL>
<HR>
<A NAME="_G_"><!-- --></A><H2>
<B>G</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfo.html#getContainerProperties()"><B>getContainerProperties()</B></A> - 
Method in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfo.html" title="interface in org.apache.aries.jpa.container">ManagedPersistenceUnitInfo</A>
<DD>Get a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><CODE>Map</CODE></A> of continer properties to pass to the <CODE>PersistenceProvider</CODE>
 when creating an <CODE>EntityManagerFactory</CODE>.
<DT><A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html#getDefaultProviderClassName()"><B>getDefaultProviderClassName()</B></A> - 
Method in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html" title="interface in org.apache.aries.jpa.container">ManagedPersistenceUnitInfoFactory</A>
<DD>If no persistence units in a persistence bundle specify a JPA <CODE>PersistenceProvider</CODE> 
 implementation class, then the JPA container will call this method to obtain a default
 provider to use.
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#getDefiningBundle()"><B>getDefiningBundle()</B></A> - 
Method in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>Return the persistence bundle that defines this persistence unit
<DT><A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptor.html#getInputStream()"><B>getInputStream()</B></A> - 
Method in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptor.html" title="interface in org.apache.aries.jpa.container.parsing">PersistenceDescriptor</A>
<DD>Get an <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io"><CODE>InputStream</CODE></A> to the persistence descriptor.
<DT><A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptor.html#getLocation()"><B>getLocation()</B></A> - 
Method in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptor.html" title="interface in org.apache.aries.jpa.container.parsing">PersistenceDescriptor</A>
<DD>Get the location of the persistence descriptor as it appears in the
 Meta-Persistence header.
<DT><A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfo.html#getPersistenceUnitInfo()"><B>getPersistenceUnitInfo()</B></A> - 
Method in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfo.html" title="interface in org.apache.aries.jpa.container">ManagedPersistenceUnitInfo</A>
<DD>Get the <CODE>PersistenceUnitInfo</CODE> object for this persistence unit.
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#getPersistenceXmlMetadata()"><B>getPersistenceXmlMetadata()</B></A> - 
Method in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>Returns a deep copy of the persistence metadata, modifications to the
 returned <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><CODE>Map</CODE></A> will not be reflected in future calls.
</DL>
<HR>
<A NAME="_J_"><!-- --></A><H2>
<B>J</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#JAR_FILES"><B>JAR_FILES</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>A <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"><CODE>List</CODE></A> of <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"><CODE>String</CODE></A> jar file names
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#JPA_PROVIDER_VERSION"><B>JPA_PROVIDER_VERSION</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>This property is used in the JPA properties to indicate a provider version range
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#JTA_DATASOURCE"><B>JTA_DATASOURCE</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>The jta-datasource name
</DL>
<HR>
<A NAME="_M_"><!-- --></A><H2>
<B>M</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#MANAGED_CLASSES"><B>MANAGED_CLASSES</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>A <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"><CODE>List</CODE></A> of <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"><CODE>String</CODE></A> managed class names
<DT><A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfo.html" title="interface in org.apache.aries.jpa.container"><B>ManagedPersistenceUnitInfo</B></A> - Interface in <A HREF="./org/apache/aries/jpa/container/package-summary.html">org.apache.aries.jpa.container</A><DD>This interface is used to provide the Aries JPA container with
 the information it needs to create a container <CODE>EntityManagerFactory</CODE>
 using the <CODE>PersistenceProvider</CODE> service from a JPA provider.<DT><A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactory.html" title="interface in org.apache.aries.jpa.container"><B>ManagedPersistenceUnitInfoFactory</B></A> - Interface in <A HREF="./org/apache/aries/jpa/container/package-summary.html">org.apache.aries.jpa.container</A><DD>A Factory for <A HREF="./org/apache/aries/jpa/container/ManagedPersistenceUnitInfo.html" title="interface in org.apache.aries.jpa.container"><CODE>ManagedPersistenceUnitInfo</CODE></A> objects.<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#MAPPING_FILES"><B>MAPPING_FILES</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>A <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"><CODE>List</CODE></A> of <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"><CODE>String</CODE></A> mapping file names
</DL>
<HR>
<A NAME="_N_"><!-- --></A><H2>
<B>N</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#NON_JTA_DATASOURCE"><B>NON_JTA_DATASOURCE</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>The non-jta-datasource name
</DL>
<HR>
<A NAME="_O_"><!-- --></A><H2>
<B>O</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/package-summary.html"><B>org.apache.aries.jpa.container</B></A> - package org.apache.aries.jpa.container<DD>&nbsp;<DT><A HREF="./org/apache/aries/jpa/container/context/package-summary.html"><B>org.apache.aries.jpa.container.context</B></A> - package org.apache.aries.jpa.container.context<DD>&nbsp;<DT><A HREF="./org/apache/aries/jpa/container/parsing/package-summary.html"><B>org.apache.aries.jpa.container.parsing</B></A> - package org.apache.aries.jpa.container.parsing<DD>&nbsp;<DT><A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html#OSGI_UNIT_NAME"><B>OSGI_UNIT_NAME</B></A> - 
Static variable in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html" title="interface in org.apache.aries.jpa.container">PersistenceUnitConstants</A>
<DD>The service property key mapped to the persistence unit name
<DT><A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html#OSGI_UNIT_PROVIDER"><B>OSGI_UNIT_PROVIDER</B></A> - 
Static variable in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html" title="interface in org.apache.aries.jpa.container">PersistenceUnitConstants</A>
<DD>The service property key mapped to the <CODE>PersistenceProvider</CODE> implementation class name
<DT><A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html#OSGI_UNIT_VERSION"><B>OSGI_UNIT_VERSION</B></A> - 
Static variable in interface org.apache.aries.jpa.container.<A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html" title="interface in org.apache.aries.jpa.container">PersistenceUnitConstants</A>
<DD>The version of the persistence bundle.
</DL>
<HR>
<A NAME="_P_"><!-- --></A><H2>
<B>P</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptorParser.html#parse(org.osgi.framework.Bundle, org.apache.aries.jpa.container.parsing.PersistenceDescriptor)"><B>parse(Bundle, PersistenceDescriptor)</B></A> - 
Method in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptorParser.html" title="interface in org.apache.aries.jpa.container.parsing">PersistenceDescriptorParser</A>
<DD>Parse the supplied <A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptor.html" title="interface in org.apache.aries.jpa.container.parsing"><CODE>PersistenceDescriptor</CODE></A>
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing"><B>ParsedPersistenceUnit</B></A> - Interface in <A HREF="./org/apache/aries/jpa/container/parsing/package-summary.html">org.apache.aries.jpa.container.parsing</A><DD>This interface provides access to the information defined by a 
 persistence unit in a persistence descriptor.<DT><A HREF="./org/apache/aries/jpa/container/context/PersistenceContextProvider.html#PERSISTENCE_CONTEXT_TYPE"><B>PERSISTENCE_CONTEXT_TYPE</B></A> - 
Static variable in interface org.apache.aries.jpa.container.context.<A HREF="./org/apache/aries/jpa/container/context/PersistenceContextProvider.html" title="interface in org.apache.aries.jpa.container.context">PersistenceContextProvider</A>
<DD>The key to use when storing the <CODE>PersistenceContextType</CODE> for this context
<DT><A HREF="./org/apache/aries/jpa/container/context/PersistenceContextProvider.html" title="interface in org.apache.aries.jpa.container.context"><B>PersistenceContextProvider</B></A> - Interface in <A HREF="./org/apache/aries/jpa/container/context/package-summary.html">org.apache.aries.jpa.container.context</A><DD>&nbsp;<DT><A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptor.html" title="interface in org.apache.aries.jpa.container.parsing"><B>PersistenceDescriptor</B></A> - Interface in <A HREF="./org/apache/aries/jpa/container/parsing/package-summary.html">org.apache.aries.jpa.container.parsing</A><DD>This is a utility interface that is used by the <A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptorParser.html" title="interface in org.apache.aries.jpa.container.parsing"><CODE>PersistenceDescriptorParser</CODE></A>.<DT><A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptorParser.html" title="interface in org.apache.aries.jpa.container.parsing"><B>PersistenceDescriptorParser</B></A> - Interface in <A HREF="./org/apache/aries/jpa/container/parsing/package-summary.html">org.apache.aries.jpa.container.parsing</A><DD>A utility service for parsing JPA persistence descriptors<DT><A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptorParserException.html" title="class in org.apache.aries.jpa.container.parsing"><B>PersistenceDescriptorParserException</B></A> - Exception in <A HREF="./org/apache/aries/jpa/container/parsing/package-summary.html">org.apache.aries.jpa.container.parsing</A><DD>This Exception will be thrown when there was an error parsing a PersistenceDescriptor
 It will use the standard chaining mechanism to wrap the Exception thrown by the parser.<DT><A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptorParserException.html#PersistenceDescriptorParserException(java.lang.String, java.lang.Exception)"><B>PersistenceDescriptorParserException(String, Exception)</B></A> - 
Constructor for exception org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptorParserException.html" title="class in org.apache.aries.jpa.container.parsing">PersistenceDescriptorParserException</A>
<DD>Construct a PersistenceDescriptorException
<DT><A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptorParserException.html#PersistenceDescriptorParserException(java.lang.String)"><B>PersistenceDescriptorParserException(String)</B></A> - 
Constructor for exception org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/PersistenceDescriptorParserException.html" title="class in org.apache.aries.jpa.container.parsing">PersistenceDescriptorParserException</A>
<DD>Construct a PersistenceDescriptorException
<DT><A HREF="./org/apache/aries/jpa/container/PersistenceUnitConstants.html" title="interface in org.apache.aries.jpa.container"><B>PersistenceUnitConstants</B></A> - Interface in <A HREF="./org/apache/aries/jpa/container/package-summary.html">org.apache.aries.jpa.container</A><DD>Constants used when registering Persistence Units in the service registry<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#PROPERTIES"><B>PROPERTIES</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>A <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util"><CODE>Properties</CODE></A> object containing the properties from the persistence unit
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#PROVIDER_CLASSNAME"><B>PROVIDER_CLASSNAME</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>The provider class name
<DT><A HREF="./org/apache/aries/jpa/container/context/PersistenceContextProvider.html#PROXY_FACTORY_EMF_ATTRIBUTE"><B>PROXY_FACTORY_EMF_ATTRIBUTE</B></A> - 
Static variable in interface org.apache.aries.jpa.container.context.<A HREF="./org/apache/aries/jpa/container/context/PersistenceContextProvider.html" title="interface in org.apache.aries.jpa.container.context">PersistenceContextProvider</A>
<DD>The service property key indicating that a registered EMF is used to create
 managed persistence contexts
</DL>
<HR>
<A NAME="_R_"><!-- --></A><H2>
<B>R</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/context/PersistenceContextProvider.html#registerContext(java.lang.String, org.osgi.framework.Bundle, java.util.HashMap)"><B>registerContext(String, Bundle, HashMap&lt;String, Object&gt;)</B></A> - 
Method in interface org.apache.aries.jpa.container.context.<A HREF="./org/apache/aries/jpa/container/context/PersistenceContextProvider.html" title="interface in org.apache.aries.jpa.container.context">PersistenceContextProvider</A>
<DD>This method will be called whenever a persistence context element is processed by the jpa
 blueprint namespace handler.
</DL>
<HR>
<A NAME="_S_"><!-- --></A><H2>
<B>S</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#SCHEMA_VERSION"><B>SCHEMA_VERSION</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>The version of the JPA schema being used
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#SHARED_CACHE_MODE"><B>SHARED_CACHE_MODE</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>The caching type of the persistence unit.
</DL>
<HR>
<A NAME="_T_"><!-- --></A><H2>
<B>T</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#TRANSACTION_TYPE"><B>TRANSACTION_TYPE</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>The Transaction type of the persistence unit
</DL>
<HR>
<A NAME="_U_"><!-- --></A><H2>
<B>U</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#UNIT_NAME"><B>UNIT_NAME</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>The name of the persistence unit
</DL>
<HR>
<A NAME="_V_"><!-- --></A><H2>
<B>V</B></H2>
<DL>
<DT><A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html#VALIDATION_MODE"><B>VALIDATION_MODE</B></A> - 
Static variable in interface org.apache.aries.jpa.container.parsing.<A HREF="./org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.html" title="interface in org.apache.aries.jpa.container.parsing">ParsedPersistenceUnit</A>
<DD>The validation mode of the persistence unit.
</DL>
<HR>
<A HREF="#_A_">A</A> <A HREF="#_C_">C</A> <A HREF="#_D_">D</A> <A HREF="#_E_">E</A> <A HREF="#_G_">G</A> <A HREF="#_J_">J</A> <A HREF="#_M_">M</A> <A HREF="#_N_">N</A> <A HREF="#_O_">O</A> <A HREF="#_P_">P</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_T_">T</A> <A HREF="#_U_">U</A> <A HREF="#_V_">V</A> 

<!-- ======= 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">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./overview-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="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&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;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="./index.html?index-all.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="index-all.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>
</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>
