<!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.5.0) on Fri May 16 17:07:40 EDT 2008 -->
<TITLE>
G-Index
</TITLE>


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

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="G-Index";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</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=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;<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?index-filesindex-6.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">I</A> <A HREF="index-8.html">L</A> <A HREF="index-9.html">O</A> <A HREF="index-10.html">P</A> <A HREF="index-11.html">Q</A> <A HREF="index-12.html">R</A> <A HREF="index-13.html">S</A> <A HREF="index-14.html">T</A> <A HREF="index-15.html">V</A> <HR>
<A NAME="_G_"><!-- --></A><H2>
<B>G</B></H2>
<DL>
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/IQuickFixActionInfo.html#getAction()"><B>getAction()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/IQuickFixActionInfo.html" title="interface in org.eclipse.wst.ws.service.policy.ui">IQuickFixActionInfo</A>
<DD>Returns the action for this quick fix.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html#getAllOperations()"><B>getAllOperations()</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html" title="class in org.eclipse.wst.ws.service.policy.ui">ServicePolicyPlatformUI</A>
<DD>Returns all the operations for all known policies.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html#getAllPolicyIds()"><B>getAllPolicyIds()</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html" title="class in org.eclipse.wst.ws.service.policy">ServicePolicyPlatform</A>
<DD>Returns all service policy IDs that are defined.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/utils/RegistryUtils.html#getAttribute(org.eclipse.core.runtime.IConfigurationElement, java.lang.String)"><B>getAttribute(IConfigurationElement, String)</B></A> - 
Static method in class org.eclipse.wst.ws.service.policy.utils.<A HREF="../org/eclipse/wst/ws/service/policy/utils/RegistryUtils.html" title="class in org.eclipse.wst.ws.service.policy.utils">RegistryUtils</A>
<DD>Gets a attribute value where the attribute name is case insensitive.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/utils/RegistryUtils.html#getAttributeName(org.eclipse.core.runtime.IConfigurationElement, java.lang.String)"><B>getAttributeName(IConfigurationElement, String)</B></A> - 
Static method in class org.eclipse.wst.ws.service.policy.utils.<A HREF="../org/eclipse/wst/ws/service/policy/utils/RegistryUtils.html" title="class in org.eclipse.wst.ws.service.policy.utils">RegistryUtils</A>
<DD>This method takes in a lower case attribute name.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html#getChildren()"><B>getChildren()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html" title="interface in org.eclipse.wst.ws.service.policy">IServicePolicy</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html#getContextHelpId()"><B>getContextHelpId()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html" title="interface in org.eclipse.wst.ws.service.policy">IDescriptor</A>
<DD>Returns the context help id.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/utils/ActivityUtils.html#getCurrentActivitiesFilter()"><B>getCurrentActivitiesFilter()</B></A> - 
Static method in class org.eclipse.wst.ws.service.policy.ui.utils.<A HREF="../org/eclipse/wst/ws/service/policy/ui/utils/ActivityUtils.html" title="class in org.eclipse.wst.ws.service.policy.ui.utils">ActivityUtils</A>
<DD>Returns a service policy filter based on the Eclipse activities settings.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IPolicyStateEnum.html#getCurrentItem()"><B>getCurrentItem()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IPolicyStateEnum.html" title="interface in org.eclipse.wst.ws.service.policy">IPolicyStateEnum</A>
<DD>Returns the current enum item.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyActivator.html#getDefault()"><B>getDefault()</B></A> - 
Static method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyActivator.html" title="class in org.eclipse.wst.ws.service.policy">ServicePolicyActivator</A>
<DD>Returns the shared instance
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyActivatorUI.html#getDefault()"><B>getDefault()</B></A> - 
Static method in class org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyActivatorUI.html" title="class in org.eclipse.wst.ws.service.policy.ui">ServicePolicyActivatorUI</A>
<DD>Returns the shared instance
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IPolicyStateEnum.html#getDefaultId()"><B>getDefaultId()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IPolicyStateEnum.html" title="interface in org.eclipse.wst.ws.service.policy">IPolicyStateEnum</A>
<DD>Returns the default enum item for this enumeration.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html#getDefaultItem()"><B>getDefaultItem()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html" title="interface in org.eclipse.wst.ws.service.policy.ui">IPolicyOperation</A>
<DD>Returns the default enumeration item for this operation.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html#getDescription()"><B>getDescription()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html" title="interface in org.eclipse.wst.ws.service.policy">IDescriptor</A>
<DD>Returns the description for this descriptor.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html#getDescriptor()"><B>getDescriptor()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html" title="interface in org.eclipse.wst.ws.service.policy">IServicePolicy</A>
<DD>Returns the descriptor for this service policy.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html#getDescriptor()"><B>getDescriptor()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html" title="interface in org.eclipse.wst.ws.service.policy.ui">IPolicyOperation</A>
<DD>Returns the descriptor for this service policy operation.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/IQuickFixActionInfo.html#getDescriptor()"><B>getDescriptor()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/IQuickFixActionInfo.html" title="interface in org.eclipse.wst.ws.service.policy.ui">IQuickFixActionInfo</A>
<DD>Returns a descriptor for this quick fix.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html#getEnumerationId()"><B>getEnumerationId()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html" title="interface in org.eclipse.wst.ws.service.policy.ui">IPolicyOperation</A>
<DD>Returns the enum ID for this operation.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IPolicyEnumerationList.html#getEnumerationList()"><B>getEnumerationList()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IPolicyEnumerationList.html" title="interface in org.eclipse.wst.ws.service.policy">IPolicyEnumerationList</A>
<DD>Returns the state enumeration list items.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/PolicyEnumerationListImpl.html#getEnumerationList()"><B>getEnumerationList()</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/PolicyEnumerationListImpl.html" title="class in org.eclipse.wst.ws.service.policy">PolicyEnumerationListImpl</A>
<DD>Returns a list of state enumeration items.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IPolicyStateEnum.html#getEnumId()"><B>getEnumId()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IPolicyStateEnum.html" title="interface in org.eclipse.wst.ws.service.policy">IPolicyStateEnum</A>
<DD>Returns the enumeration id associated with this service policy.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html#getIconBundleId()"><B>getIconBundleId()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html" title="interface in org.eclipse.wst.ws.service.policy">IDescriptor</A>
<DD>Returns the icon bundle id.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html#getIconPath()"><B>getIconPath()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html" title="interface in org.eclipse.wst.ws.service.policy">IDescriptor</A>
<DD>Returns the icon path relative to an icon bundle.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html#getId()"><B>getId()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html" title="interface in org.eclipse.wst.ws.service.policy">IServicePolicy</A>
<DD>Returns the unique ID for this service policy.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IStateEnumerationItem.html#getId()"><B>getId()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IStateEnumerationItem.html" title="interface in org.eclipse.wst.ws.service.policy">IStateEnumerationItem</A>
<DD>Returns the ID of this state enumeration item.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html#getId()"><B>getId()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html" title="interface in org.eclipse.wst.ws.service.policy.ui">IPolicyOperation</A>
<DD>Returns the unique ID associated with this service policy operation.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyActivatorUI.html#getImageDescriptor(java.lang.String)"><B>getImageDescriptor(String)</B></A> - 
Static method in class org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyActivatorUI.html" title="class in org.eclipse.wst.ws.service.policy.ui">ServicePolicyActivatorUI</A>
<DD>Returns an image descriptor for the named resource
 as relative to the plugin install location.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html#getInstance()"><B>getInstance()</B></A> - 
Static method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html" title="class in org.eclipse.wst.ws.service.policy">ServicePolicyPlatform</A>
<DD>Returns a singleton instance of this service policy platform.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html#getInstance()"><B>getInstance()</B></A> - 
Static method in class org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html" title="class in org.eclipse.wst.ws.service.policy.ui">ServicePolicyPlatformUI</A>
<DD>Returns an instance of this service policy platform UI object.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html#getLongName()"><B>getLongName()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html" title="interface in org.eclipse.wst.ws.service.policy">IDescriptor</A>
<DD>Returns the long name for the descriptor.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IStateEnumerationItem.html#getLongName()"><B>getLongName()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IStateEnumerationItem.html" title="interface in org.eclipse.wst.ws.service.policy">IStateEnumerationItem</A>
<DD>Returns the long name of this state enumeration item.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html#getOperation(org.eclipse.wst.ws.service.policy.IServicePolicy, java.lang.String)"><B>getOperation(IServicePolicy, String)</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html" title="class in org.eclipse.wst.ws.service.policy.ui">ServicePolicyPlatformUI</A>
<DD>Returns an operation that is associated with a particular service policy
 and has the specified id.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html#getOperationKind()"><B>getOperationKind()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html" title="interface in org.eclipse.wst.ws.service.policy.ui">IPolicyOperation</A>
<DD>Returns the kind of service policy operation.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html#getOperations(org.eclipse.wst.ws.service.policy.IServicePolicy, boolean)"><B>getOperations(IServicePolicy, boolean)</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html" title="class in org.eclipse.wst.ws.service.policy.ui">ServicePolicyPlatformUI</A>
<DD>Returns the list of operations for this policy.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html#getOperationsList(java.util.List, boolean)"><B>getOperationsList(List&lt;IServicePolicy&gt;, boolean)</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html" title="class in org.eclipse.wst.ws.service.policy.ui">ServicePolicyPlatformUI</A>
<DD>Returns a list of list policy operations which are associated with
 the specified service policies.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html#getParentPolicy()"><B>getParentPolicy()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html" title="interface in org.eclipse.wst.ws.service.policy">IServicePolicy</A>
<DD>Returns the parent service policy object.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IPolicyEnumerationList.html#getPolicy()"><B>getPolicy()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IPolicyEnumerationList.html" title="interface in org.eclipse.wst.ws.service.policy">IPolicyEnumerationList</A>
<DD>Returns the service policy for this list.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/PolicyEnumerationListImpl.html#getPolicy()"><B>getPolicy()</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/PolicyEnumerationListImpl.html" title="class in org.eclipse.wst.ws.service.policy">PolicyEnumerationListImpl</A>
<DD>Returns a service policy.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IPolicyRelationship.html#getPolicyEnumerationList()"><B>getPolicyEnumerationList()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IPolicyRelationship.html" title="interface in org.eclipse.wst.ws.service.policy">IPolicyRelationship</A>
<DD>Returns the policy enumeration list for this relationship.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/PolicyRelationshipImpl.html#getPolicyEnumerationList()"><B>getPolicyEnumerationList()</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/PolicyRelationshipImpl.html" title="class in org.eclipse.wst.ws.service.policy">PolicyRelationshipImpl</A>
<DD>Returns the policy enumeration list for this relationship.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html#getPolicyIdPattern()"><B>getPolicyIdPattern()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html" title="interface in org.eclipse.wst.ws.service.policy.ui">IPolicyOperation</A>
<DD>Returns the id pattern for this operation.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html#getPolicyState()"><B>getPolicyState()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html" title="interface in org.eclipse.wst.ws.service.policy">IServicePolicy</A>
<DD>Returns the policy state for this service policy.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html#getPolicyState(org.eclipse.core.resources.IProject)"><B>getPolicyState(IProject)</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html" title="interface in org.eclipse.wst.ws.service.policy">IServicePolicy</A>
<DD>Returns the IPolicyState for a particular project.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html#getPolicyStateEnum()"><B>getPolicyStateEnum()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html" title="interface in org.eclipse.wst.ws.service.policy">IServicePolicy</A>
<DD>Returns the policy state enumeration object.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html#getPolicyStateEnum(org.eclipse.core.resources.IProject)"><B>getPolicyStateEnum(IProject)</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html" title="interface in org.eclipse.wst.ws.service.policy">IServicePolicy</A>
<DD>Returns the policy state enumeration object for a particular project.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html#getQuickFixes(org.eclipse.core.runtime.IStatus)"><B>getQuickFixes(IStatus)</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.html" title="class in org.eclipse.wst.ws.service.policy.ui">ServicePolicyPlatformUI</A>
<DD>Returns a list of quick fix info for the specified status object.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IPolicyRelationship.html#getRelatedPolicies()"><B>getRelatedPolicies()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IPolicyRelationship.html" title="interface in org.eclipse.wst.ws.service.policy">IPolicyRelationship</A>
<DD>Returns the related policies for this relationship.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/PolicyRelationshipImpl.html#getRelatedPolicies()"><B>getRelatedPolicies()</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/PolicyRelationshipImpl.html" title="class in org.eclipse.wst.ws.service.policy">PolicyRelationshipImpl</A>
<DD>Returns the related policies for this relationship.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html#getRelationships()"><B>getRelationships()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html" title="interface in org.eclipse.wst.ws.service.policy">IServicePolicy</A>
<DD>Returns a list of relationships to other IServicePolicy objects.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html#getRootServicePolicies(org.eclipse.wst.ws.service.policy.IFilter)"><B>getRootServicePolicies(IFilter)</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html" title="class in org.eclipse.wst.ws.service.policy">ServicePolicyPlatform</A>
<DD>Returns the list of root policies for the platform given a filter.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html#getServicePolicy(java.lang.String)"><B>getServicePolicy(String)</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html" title="class in org.eclipse.wst.ws.service.policy">ServicePolicyPlatform</A>
<DD>Returns a service policy given it's unique ID.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html#getServicePolicy()"><B>getServicePolicy()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html" title="interface in org.eclipse.wst.ws.service.policy.ui">IPolicyOperation</A>
<DD>Returns the service policy for this operation.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html#getShortName()"><B>getShortName()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IDescriptor.html" title="interface in org.eclipse.wst.ws.service.policy">IDescriptor</A>
<DD>Returns the short name for the descriptor
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IStateEnumerationItem.html#getShortName()"><B>getShortName()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IStateEnumerationItem.html" title="interface in org.eclipse.wst.ws.service.policy">IStateEnumerationItem</A>
<DD>Returns the short name of this state enumeration item.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html#getStateEnumeration(java.lang.String)"><B>getStateEnumeration(String)</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html" title="class in org.eclipse.wst.ws.service.policy">ServicePolicyPlatform</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html#getStateItem(org.eclipse.core.resources.IProject)"><B>getStateItem(IProject)</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.ui.<A HREF="../org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.html" title="interface in org.eclipse.wst.ws.service.policy.ui">IPolicyOperation</A>
<DD>Returns the current enumeration item for this operation.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html#getStateItemEnumeration(java.lang.String)"><B>getStateItemEnumeration(String)</B></A> - 
Method in class org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.html" title="class in org.eclipse.wst.ws.service.policy">ServicePolicyPlatform</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html#getStatus()"><B>getStatus()</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IServicePolicy.html" title="interface in org.eclipse.wst.ws.service.policy">IServicePolicy</A>
<DD>Returns the status for this service policy.
<DT><A HREF="../org/eclipse/wst/ws/service/policy/IPolicyState.html#getValue(java.lang.String)"><B>getValue(String)</B></A> - 
Method in interface org.eclipse.wst.ws.service.policy.<A HREF="../org/eclipse/wst/ws/service/policy/IPolicyState.html" title="interface in org.eclipse.wst.ws.service.policy">IPolicyState</A>
<DD>This method gets some state for a service policy.
</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=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;<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?index-filesindex-6.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">I</A> <A HREF="index-8.html">L</A> <A HREF="index-9.html">O</A> <A HREF="index-10.html">P</A> <A HREF="index-11.html">Q</A> <A HREF="index-12.html">R</A> <A HREF="index-13.html">S</A> <A HREF="index-14.html">T</A> <A HREF="index-15.html">V</A> <HR>

</BODY>
</HTML>
