<!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) on Thu May 05 15:26:38 EDT 2005 -->
<TITLE>
G-Index
</TITLE>


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

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="G-Index";
}
</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">    <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="../serialized-form.html"><FONT CLASS="NavBarFont1"><B>Serialized</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;<A HREF="#main"><FONT CLASS="NavBarFont1Rev"><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="index-5.html"><B>PREV LETTER</B></A>&nbsp;
&nbsp;<A HREF="index-7.html"><B>NEXT LETTER</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="index-6.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 NAME="main"></A>
<A HREF="index-1.html">A</A> <A HREF="index-2.html">C</A> <A HREF="index-3.html">D</A> <A HREF="index-4.html">E</A> <A HREF="index-5.html">F</A> <A HREF="index-6.html">G</A> <A HREF="index-7.html">H</A> <A HREF="index-8.html">I</A> <A HREF="index-9.html">J</A> <A HREF="index-10.html">M</A> <A HREF="index-11.html">N</A> <A HREF="index-12.html">O</A> <A HREF="index-13.html">P</A> <A HREF="index-14.html">R</A> <A HREF="index-15.html">S</A> <A HREF="index-16.html">T</A> <A HREF="index-17.html">U</A> <A HREF="index-18.html">V</A> <A HREF="index-19.html">W</A> <HR>
<A NAME="_G_"><!-- --></A><H2>
<B>G</B></H2>
<DL>
<DT><A HREF="../org/eclipse/jst/server/core/Servlet.html#getAlias()"><B>getAlias()</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/Servlet.html" title="class in org.eclipse.jst.server.core">Servlet</A>
<DD>Return the servlet's alias.
<DT><A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html#getAppClientArtifactEditForRead(ComponentHandle)"><B>getAppClientArtifactEditForRead(ComponentHandle)</B></A> - 
Static method in class org.eclipse.jst.j2ee.applicationclient.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html" title="class in org.eclipse.jst.j2ee.applicationclient.componentcore.util">AppClientArtifactEdit</A>
<DD>
 Returns an instance facade to manage the underlying edit model for the given
 <CODE>WorkbenchComponent</CODE>.
<DT><A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html#getAppClientArtifactEditForWrite(ComponentHandle)"><B>getAppClientArtifactEditForWrite(ComponentHandle)</B></A> - 
Static method in class org.eclipse.jst.j2ee.applicationclient.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html" title="class in org.eclipse.jst.j2ee.applicationclient.componentcore.util">AppClientArtifactEdit</A>
<DD>
 Returns an instance facade to manage the underlying edit model for the given
 <CODE>WorkbenchComponent</CODE>.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html#getApplication()"><B>getApplication()</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore.util">EARArtifactEdit</A>
<DD>
 Obtains the Application <CODE>Application</CODE>root object from the <CODE>ApplicationResource</CODE>,
 the root object contains all other resource defined objects.
<DT><A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html#getApplicationClient()"><B>getApplicationClient()</B></A> - 
Method in class org.eclipse.jst.j2ee.applicationclient.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html" title="class in org.eclipse.jst.j2ee.applicationclient.componentcore.util">AppClientArtifactEdit</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html#getApplicationClientXmiResource()"><B>getApplicationClientXmiResource()</B></A> - 
Method in class org.eclipse.jst.j2ee.applicationclient.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html" title="class in org.eclipse.jst.j2ee.applicationclient.componentcore.util">AppClientArtifactEdit</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html#getApplicationXmiResource()"><B>getApplicationXmiResource()</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore.util">EARArtifactEdit</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/server/core/IConnectorModule.html#getClasspath()"><B>getClasspath()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IConnectorModule.html" title="interface in org.eclipse.jst.server.core">IConnectorModule</A>
<DD>Returns the classpath as an array of absolute IPaths.
<DT><A HREF="../org/eclipse/jst/server/core/ClasspathRuntimeTargetHandler.html#getClasspathContainerLabel(IRuntime, java.lang.String)"><B>getClasspathContainerLabel(IRuntime, String)</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/ClasspathRuntimeTargetHandler.html" title="class in org.eclipse.jst.server.core">ClasspathRuntimeTargetHandler</A>
<DD>Returns the classpath container label for the given runtime and the given
 classpath container id (returned from getClasspathEntryIds()).
<DT><A HREF="../org/eclipse/jst/server/core/ClasspathRuntimeTargetHandler.html#getClasspathEntryIds()"><B>getClasspathEntryIds()</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/ClasspathRuntimeTargetHandler.html" title="class in org.eclipse.jst.server.core">ClasspathRuntimeTargetHandler</A>
<DD>Returns the classpath entry ids for this runtime target handler.
<DT><A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html#getConnector()"><B>getConnector()</B></A> - 
Method in class org.eclipse.jst.j2ee.jca.modulecore.util.<A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html" title="class in org.eclipse.jst.j2ee.jca.modulecore.util">ConnectorArtifactEdit</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html#getConnectorArtifactEditForRead(ComponentHandle)"><B>getConnectorArtifactEditForRead(ComponentHandle)</B></A> - 
Static method in class org.eclipse.jst.j2ee.jca.modulecore.util.<A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html" title="class in org.eclipse.jst.j2ee.jca.modulecore.util">ConnectorArtifactEdit</A>
<DD>
 Returns an instance facade to manage the underlying edit model for the
 given <CODE>WorkbenchComponent</CODE>.
<DT><A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html#getConnectorArtifactEditForWrite(ComponentHandle)"><B>getConnectorArtifactEditForWrite(ComponentHandle)</B></A> - 
Static method in class org.eclipse.jst.j2ee.jca.modulecore.util.<A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html" title="class in org.eclipse.jst.j2ee.jca.modulecore.util">ConnectorArtifactEdit</A>
<DD>
 Returns an instance facade to manage the underlying edit model for the
 given <CODE>WorkbenchComponent</CODE>.
<DT><A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html#getConnectorXmiResource()"><B>getConnectorXmiResource()</B></A> - 
Method in class org.eclipse.jst.j2ee.jca.modulecore.util.<A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html" title="class in org.eclipse.jst.j2ee.jca.modulecore.util">ConnectorArtifactEdit</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/server/core/IWebModule.html#getContextRoot()"><B>getContextRoot()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IWebModule.html" title="interface in org.eclipse.jst.server.core">IWebModule</A>
<DD>Returns the context root of the module.
<DT><A HREF="../org/eclipse/jst/server/core/ClasspathRuntimeTargetHandler.html#getDelegateClasspathEntries(IRuntime, IProgressMonitor)"><B>getDelegateClasspathEntries(IRuntime, IProgressMonitor)</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/ClasspathRuntimeTargetHandler.html" title="class in org.eclipse.jst.server.core">ClasspathRuntimeTargetHandler</A>
<DD>Returns the classpath entries that correspond to the given runtime.
<DT><A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html#getDeploymentDescriptorResource()"><B>getDeploymentDescriptorResource()</B></A> - 
Method in class org.eclipse.jst.j2ee.applicationclient.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html" title="class in org.eclipse.jst.j2ee.applicationclient.componentcore.util">AppClientArtifactEdit</A>
<DD>
 Retrieves the underlying resource from the ArtifactEditModel using defined URI.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html#getDeploymentDescriptorResource()"><B>getDeploymentDescriptorResource()</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.<A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore">EnterpriseArtifactEdit</A>
<DD>
 Retrieves a deployment descriptor resource from <CODE>ArtifactEditModel</CODE>using a defined URI.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html#getDeploymentDescriptorResource()"><B>getDeploymentDescriptorResource()</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore.util">EARArtifactEdit</A>
<DD>
 Retrieves the resource from the <CODE>ArtifactEditModel</CODE>
 
<DT><A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html#getDeploymentDescriptorResource()"><B>getDeploymentDescriptorResource()</B></A> - 
Method in class org.eclipse.jst.j2ee.ejb.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html" title="class in org.eclipse.jst.j2ee.ejb.componentcore.util">EJBArtifactEdit</A>
<DD>
 Retrieves the underlying resource from the ArtifactEditModel using defined URI.
<DT><A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html#getDeploymentDescriptorResource()"><B>getDeploymentDescriptorResource()</B></A> - 
Method in class org.eclipse.jst.j2ee.jca.modulecore.util.<A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html" title="class in org.eclipse.jst.j2ee.jca.modulecore.util">ConnectorArtifactEdit</A>
<DD>
 Retrieves the underlying resource from the ArtifactEditModel using
 defined URI.
<DT><A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html#getDeploymentDescriptorRoot()"><B>getDeploymentDescriptorRoot()</B></A> - 
Method in class org.eclipse.jst.j2ee.applicationclient.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html" title="class in org.eclipse.jst.j2ee.applicationclient.componentcore.util">AppClientArtifactEdit</A>
<DD>
 Obtains the ApplicationClient (@see ApplicationClient) root object from the ApplicationClientResource.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html#getDeploymentDescriptorRoot()"><B>getDeploymentDescriptorRoot()</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.<A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore">EnterpriseArtifactEdit</A>
<DD>
 Obtains the root object from a deployment descriptor resource, the root object contains all
 other resource defined objects.
<DT><A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html#getDeploymentDescriptorRoot()"><B>getDeploymentDescriptorRoot()</B></A> - 
Method in class org.eclipse.jst.j2ee.ejb.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html" title="class in org.eclipse.jst.j2ee.ejb.componentcore.util">EJBArtifactEdit</A>
<DD>
 Obtains the EJBJar (@see EJBJar) root object from the EJBResource.
<DT><A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html#getDeploymentDescriptorRoot()"><B>getDeploymentDescriptorRoot()</B></A> - 
Method in class org.eclipse.jst.j2ee.jca.modulecore.util.<A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html" title="class in org.eclipse.jst.j2ee.jca.modulecore.util">ConnectorArtifactEdit</A>
<DD>
 Obtains the Connector (@see Connector) root object from the
 ConnectorResource.
<DT><A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html#getDeploymenyDescriptorType()"><B>getDeploymenyDescriptorType()</B></A> - 
Method in class org.eclipse.jst.j2ee.ejb.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html" title="class in org.eclipse.jst.j2ee.ejb.componentcore.util">EJBArtifactEdit</A>
<DD>Returns the deployment descriptor type of the EJB module.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html#getEARArtifactEditForRead(ComponentHandle)"><B>getEARArtifactEditForRead(ComponentHandle)</B></A> - 
Static method in class org.eclipse.jst.j2ee.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore.util">EARArtifactEdit</A>
<DD>
 Returns an instance facade to manage the underlying edit model for the given
 <CODE>WorkbenchComponent</CODE>.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html#getEARArtifactEditForWrite(ComponentHandle)"><B>getEARArtifactEditForWrite(ComponentHandle)</B></A> - 
Static method in class org.eclipse.jst.j2ee.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore.util">EARArtifactEdit</A>
<DD>
 Returns an instance facade to manage the underlying edit model for the given
 <CODE>WorkbenchComponent</CODE>.
<DT><A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html#getEJBArtifactEditForRead(ComponentHandle)"><B>getEJBArtifactEditForRead(ComponentHandle)</B></A> - 
Static method in class org.eclipse.jst.j2ee.ejb.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html" title="class in org.eclipse.jst.j2ee.ejb.componentcore.util">EJBArtifactEdit</A>
<DD>
 Returns an instance facade to manage the underlying edit model for the given
 <CODE>WorkbenchComponent</CODE>.
<DT><A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html#getEJBArtifactEditForWrite(ComponentHandle)"><B>getEJBArtifactEditForWrite(ComponentHandle)</B></A> - 
Static method in class org.eclipse.jst.j2ee.ejb.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html" title="class in org.eclipse.jst.j2ee.ejb.componentcore.util">EJBArtifactEdit</A>
<DD>
 Returns an instance facade to manage the underlying edit model for the given
 <CODE>WorkbenchComponent</CODE>.
<DT><A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html#getEJBClientJarModule(IProject)"><B>getEJBClientJarModule(IProject)</B></A> - 
Method in class org.eclipse.jst.j2ee.ejb.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html" title="class in org.eclipse.jst.j2ee.ejb.componentcore.util">EJBArtifactEdit</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html#getEJBJar()"><B>getEJBJar()</B></A> - 
Method in class org.eclipse.jst.j2ee.ejb.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html" title="class in org.eclipse.jst.j2ee.ejb.componentcore.util">EJBArtifactEdit</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html#getEJBJarXmiResource()"><B>getEJBJarXmiResource()</B></A> - 
Method in class org.eclipse.jst.j2ee.ejb.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html" title="class in org.eclipse.jst.j2ee.ejb.componentcore.util">EJBArtifactEdit</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/server/core/IEJBModule.html#getEJBSpecificationVersion()"><B>getEJBSpecificationVersion()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IEJBModule.html" title="interface in org.eclipse.jst.server.core">IEJBModule</A>
<DD>Returns a version number in the form "x.y.z".
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html#getExistingWorkingCopy(ICompilationUnit)"><B>getExistingWorkingCopy(ICompilationUnit)</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.<A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore">EnterpriseArtifactEdit</A>
<DD>Returns the working copy remembered for the compilation unit encoded in the given editor
 input.
<DT><A HREF="../org/eclipse/jst/server/core/IEnterpriseApplication.html#getJ2EESpecificationVersion()"><B>getJ2EESpecificationVersion()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IEnterpriseApplication.html" title="interface in org.eclipse.jst.server.core">IEnterpriseApplication</A>
<DD>Returns a version number in the form "x.y.z".
<DT><A HREF="../org/eclipse/jst/server/core/IJ2EEModule.html#getJ2EESpecificationVersion()"><B>getJ2EESpecificationVersion()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IJ2EEModule.html" title="interface in org.eclipse.jst.server.core">IJ2EEModule</A>
<DD>Returns a version number in the form "x.y.z".
<DT><A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html#getJ2EEVersion()"><B>getJ2EEVersion()</B></A> - 
Method in class org.eclipse.jst.j2ee.applicationclient.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/applicationclient/componentcore/util/AppClientArtifactEdit.html" title="class in org.eclipse.jst.j2ee.applicationclient.componentcore.util">AppClientArtifactEdit</A>
<DD>
 Retrieves J2EE version information from ApplicationClientResource.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html#getJ2EEVersion()"><B>getJ2EEVersion()</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.<A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore">EnterpriseArtifactEdit</A>
<DD>
 Retrieves J2EE version information from deployment descriptor resource.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html#getJ2EEVersion()"><B>getJ2EEVersion()</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore.util">EARArtifactEdit</A>
<DD>
 Retrieves J2EE version information from ApplicationResource.
<DT><A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html#getJ2EEVersion()"><B>getJ2EEVersion()</B></A> - 
Method in class org.eclipse.jst.j2ee.ejb.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/ejb/componentcore/util/EJBArtifactEdit.html" title="class in org.eclipse.jst.j2ee.ejb.componentcore.util">EJBArtifactEdit</A>
<DD>
 Retrieves J2EE version information from EJBResource.
<DT><A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html#getJ2EEVersion()"><B>getJ2EEVersion()</B></A> - 
Method in class org.eclipse.jst.j2ee.jca.modulecore.util.<A HREF="../org/eclipse/jst/j2ee/jca/modulecore/util/ConnectorArtifactEdit.html" title="class in org.eclipse.jst.j2ee.jca.modulecore.util">ConnectorArtifactEdit</A>
<DD>
 Retrieves J2EE version information from ConnectorResource.
<DT><A HREF="../org/eclipse/jst/server/core/JndiLaunchable.html#getJNDIName()"><B>getJNDIName()</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/JndiLaunchable.html" title="class in org.eclipse.jst.server.core">JndiLaunchable</A>
<DD>Returns the JNDI name of the object.
<DT><A HREF="../org/eclipse/jst/server/core/IWebModule.html#getJSPSpecificationVersion()"><B>getJSPSpecificationVersion()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IWebModule.html" title="interface in org.eclipse.jst.server.core">IWebModule</A>
<DD>Returns a version number in the form "x.y.z".
<DT><A HREF="../org/eclipse/jst/server/core/EJBBean.html#getJndiName()"><B>getJndiName()</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/EJBBean.html" title="class in org.eclipse.jst.server.core">EJBBean</A>
<DD>Returns the JNDI name of the EJB.
<DT><A HREF="../org/eclipse/jst/server/core/JndiObject.html#getJndiName()"><B>getJndiName()</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/JndiObject.html" title="class in org.eclipse.jst.server.core">JndiObject</A>
<DD>Return the JNDI name of the object.
<DT><A HREF="../org/eclipse/jst/server/core/IEnterpriseApplication.html#getLocation()"><B>getLocation()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IEnterpriseApplication.html" title="interface in org.eclipse.jst.server.core">IEnterpriseApplication</A>
<DD>Returns the location of the root of the application.
<DT><A HREF="../org/eclipse/jst/server/core/IJ2EEModule.html#getLocation()"><B>getLocation()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IJ2EEModule.html" title="interface in org.eclipse.jst.server.core">IJ2EEModule</A>
<DD>Returns the location of the root of the module.
<DT><A HREF="../org/eclipse/jst/server/core/ILooseArchive.html#getLocation()"><B>getLocation()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/ILooseArchive.html" title="interface in org.eclipse.jst.server.core">ILooseArchive</A>
<DD>Returns the location of the root of the loose utility.
<DT><A HREF="../org/eclipse/jst/server/core/ILooseArchiveSupport.html#getLooseArchives()"><B>getLooseArchives()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/ILooseArchiveSupport.html" title="interface in org.eclipse.jst.server.core">ILooseArchiveSupport</A>
<DD>Return the loose archives that are contained within this enterprise
 application.
<DT><A HREF="../org/eclipse/jst/server/core/EJBBean.html#getModule()"><B>getModule()</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/EJBBean.html" title="class in org.eclipse.jst.server.core">EJBBean</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/server/core/JndiObject.html#getModule()"><B>getModule()</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/JndiObject.html" title="class in org.eclipse.jst.server.core">JndiObject</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/server/core/Servlet.html#getModule()"><B>getModule()</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/Servlet.html" title="class in org.eclipse.jst.server.core">Servlet</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/server/core/IEnterpriseApplication.html#getModules()"><B>getModules()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IEnterpriseApplication.html" title="interface in org.eclipse.jst.server.core">IEnterpriseApplication</A>
<DD>Returns the modules contained within this EAR.
<DT><A HREF="../org/eclipse/jst/server/core/JndiLaunchable.html#getProperties()"><B>getProperties()</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/JndiLaunchable.html" title="class in org.eclipse.jst.server.core">JndiLaunchable</A>
<DD>Returns the JNDI properties required to connect to the object.
<DT><A HREF="../org/eclipse/jst/server/core/Servlet.html#getServletClassName()"><B>getServletClassName()</B></A> - 
Method in class org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/Servlet.html" title="class in org.eclipse.jst.server.core">Servlet</A>
<DD>Return the class name of the servlet.
<DT><A HREF="../org/eclipse/jst/server/core/IWebModule.html#getServletSpecificationVersion()"><B>getServletSpecificationVersion()</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IWebModule.html" title="interface in org.eclipse.jst.server.core">IWebModule</A>
<DD>Returns a version number in the form "x.y.z".
<DT><A HREF="../org/eclipse/jst/server/core/IEnterpriseApplication.html#getURI(org.eclipse.jst.server.core.IJ2EEModule)"><B>getURI(IJ2EEModule)</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/IEnterpriseApplication.html" title="interface in org.eclipse.jst.server.core">IEnterpriseApplication</A>
<DD>Returns the URI of the given J2EE module within this
 enterprise application.
<DT><A HREF="../org/eclipse/jst/server/core/ILooseArchiveSupport.html#getURI(org.eclipse.jst.server.core.ILooseArchive)"><B>getURI(ILooseArchive)</B></A> - 
Method in interface org.eclipse.jst.server.core.<A HREF="../org/eclipse/jst/server/core/ILooseArchiveSupport.html" title="interface in org.eclipse.jst.server.core">ILooseArchiveSupport</A>
<DD>Returns the URI of the given loose archive within this
 enterprise application.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html#getWorkbenchJ2EEModules(WorkbenchComponent)"><B>getWorkbenchJ2EEModules(WorkbenchComponent)</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore.util">EARArtifactEdit</A>
<DD>Note: This method is for internal use only.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html#getWorkbenchUtilModules(WorkbenchComponent)"><B>getWorkbenchUtilModules(WorkbenchComponent)</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.util.<A HREF="../org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore.util">EARArtifactEdit</A>
<DD>Note: This method is for internal use only.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html#getWorkingCopy(ICompilationUnit, boolean)"><B>getWorkingCopy(ICompilationUnit, boolean)</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.<A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore">EnterpriseArtifactEdit</A>
<DD>Returns the working copy remembered for the compilation unit.
<DT><A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html#getWorkingCopyManager()"><B>getWorkingCopyManager()</B></A> - 
Method in class org.eclipse.jst.j2ee.componentcore.<A HREF="../org/eclipse/jst/j2ee/componentcore/EnterpriseArtifactEdit.html" title="class in org.eclipse.jst.j2ee.componentcore">EnterpriseArtifactEdit</A>
<DD>Returns a working copy managet
</DL>
<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">    <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="../serialized-form.html"><FONT CLASS="NavBarFont1"><B>Serialized</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;<A HREF="#main"><FONT CLASS="NavBarFont1Rev"><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="index-5.html"><B>PREV LETTER</B></A>&nbsp;
&nbsp;<A HREF="index-7.html"><B>NEXT LETTER</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="index-6.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 ======= -->

<A HREF="index-1.html">A</A> <A HREF="index-2.html">C</A> <A HREF="index-3.html">D</A> <A HREF="index-4.html">E</A> <A HREF="index-5.html">F</A> <A HREF="index-6.html">G</A> <A HREF="index-7.html">H</A> <A HREF="index-8.html">I</A> <A HREF="index-9.html">J</A> <A HREF="index-10.html">M</A> <A HREF="index-11.html">N</A> <A HREF="index-12.html">O</A> <A HREF="index-13.html">P</A> <A HREF="index-14.html">R</A> <A HREF="index-15.html">S</A> <A HREF="index-16.html">T</A> <A HREF="index-17.html">U</A> <A HREF="index-18.html">V</A> <A HREF="index-19.html">W</A> <HR>

</BODY>
</HTML>
