<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>Association</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Association";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../javax/xml/registry/infomodel/AuditableEvent.html" title="interface in javax.xml.registry.infomodel"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?javax/xml/registry/infomodel/Association.html" target="_top">Frames</a></li>
<li><a href="Association.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">javax.xml.registry.infomodel</div>
<h2 title="Interface Association" class="title">Interface Association</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../../javax/xml/registry/infomodel/ExtensibleObject.html" title="interface in javax.xml.registry.infomodel">ExtensibleObject</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">Association</span>
extends <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a></pre>
<div class="block">A RegistryObject instance may be associated with zero or more RegistryObject instances. The information model defines an Association interface, an instance of which may be used to associate any two RegistryObject instances. 
 
 <h2>Example of an Association</h2>
 One example of such an association is between two ClassificationScheme instances, where one ClassificationScheme supersedes the other ClassificationScheme as shown in Figure 1. This may be the case when a new version of a ClassificationScheme is submitted. 
 In Figure 1, we see how an Association is defined between a new version of the NAICS ClassificationScheme and an older version of the NAICS ClassificationScheme.
 
 <p>
 <center>
 <img SRC="../../../../resources/images/associationInstance.gif" ALT="Example of RegistryObject Association">
 <br><b>Figure 1. Example of RegistryObject Association</b>
 </center>
 <p> 

 <h2>Source and Target Objects</h2>
 An Association instance represents an association between a source RegistryObject and a target RegistryObject. These are referred to as sourceObject and targetObject for the Association instance. It is important which object is the sourceObject and which is the targetObject as it determines the directional semantics of an Association.
 In the example in Figure 1, it is important to make the newer version of NAICS ClassificationScheme be the sourceObject and the older version of NAICS be the targetObject because the associationType implies that the sourceObject supersedes the targetObject (and not the other way around).  
 <h2>Association Types</h2>
 Each Association must have an associationType attribute that identifies the type of that association. The associationType attribute is a reference to an enumeration Concept as defined by the predefined associationType ClassificationScheme in the JAXR specification. Our example uses the pre-defined associationType Concept named Supersedes.
 
 <h2>Intramural Associations</h2>
 A common use case for the Association interface is when a User "u" creates an Association "a" between two RegistryObjects "o1" and "o2" where association "a" and RegistryObjects "o1" and "o2" are objects that were created by the same User "u". This is the simplest use case where the association is between two objects that are owned by same User that is defining the Association. Such associations are referred to as intramural associations.
 Figure 2 extends the previous example in Figure 1 for the intramural association case.
 <p>
 <center>
 <img SRC="../../../../resources/images/associationInstanceIntramural.gif" ALT="Example of Intramural Association">
 <br><b>Figure 2. Example of Intramural Association</b>
 </center>

 <h2>Extramural Association</h2>
 The information model also allows a more sophisticated use case where a User "u1" creates an Association "a" between two RegistryObjects "o1" and "o2" where association "a" is owned by User "u1", but RegistryObjects "o1" and "o2" are owned by User "u2" and User "u3" respectively.
 In this use case the Association is being defined where either or both objects that are being associated are owned by a User different from the User defining the Association. Such associations are referred to as extramural associations. The Association interface provides a convenience method called isExtramural that returns true if the Association instance is an extramural Association.
 Figure 3 extends the previous example in Figure 1 for the extramural association case. Note that it is possible for an extramural association to have two distinct Users rather than three distinct Users as shown in Figure 3. In such case, one of the two users owns two of the three objects involved (Association, sourceObject and targetObject).
 <p>
 <center>
 <img SRC="../../../../resources/images/associationInstanceExtramural.gif" ALT="Example of Extramural Association">
 <br><b>Figure 3. Example of Extramural Association</b>
 </center>
 <p>

 <h2>Confirmation of an Association</h2>
 An association may need to be confirmed by the parties whose objects are involved in that Association. This section describes the semantics of confirmation of an association by the parties involved.
 <h3>Confirmation of Intramural Associations</h3>
 Intramural associations may be viewed as declarations of truth and do not require any explicit steps to confirm that Association as being true. In other words, intramural associations are implicitly considered be confirmed.
 <h3>Confirmation of Extramural Associations</h3>
 Extramural associations may be viewed as a unilateral assertion that may not be viewed as truth until it has been confirmed by the other (extramural) parties (Users "u2" and "u3" in example).  The confirmAssociation method on the BusinessLifeCycleManager interface may be called by the extramural parties that own the sourceObject or targetObject.
 <h2>Visibility of Unconfirmed Associations</h2>
 Extramural associations require each extramural party to confirm the assertion being made by the extramural Association before the Association is visible to 3rd parties that are not involved in the Association. This ensures that unconfirmed Associations are not visible to 3rd party registry clients.
 <h2>Possible Confirmation States</h2>
 Assume the most general case where there are three distinct User instances as shown in Figure 23 for an extramural Association. The extramural Association needs to be confirmed by both the other (extramural) parties (Users "u2" and "u3" in example) in order to be fully confirmed. The methods isConfirmedBySourceOwner and isConfiremedByTargetOwner in the Association interface provide access to confirmation state for both the sourceObject and targetObject. A third convenience method called isConfirmed provides a way to determine whether the Association is fully confirmed or not. So there are the following four possibilities related to confirmation state of an extramural Association:
 <ul>
 <li>The Association is confirmed neither by the owner of the sourceObject nor is it confirmed by owner of targetObject.</li>
 <li>The Association is confirmed by the owner of the sourceObject but it is not confirmed by owner of targetObject.</li>
 <li>The Association is not confirmed by the owner of the sourceObject but it is confirmed by owner of targetObject.</li>
 <li>The Association is confirmed by the owner of the sourceObject and it is confirmed by owner of targetObject. This is the only state where the Association is fully confirmed.</li>
 </ul></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel"><code>RegistryObject</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../javax/xml/registry/infomodel/Concept.html" title="interface in javax.xml.registry.infomodel">Concept</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/registry/infomodel/Association.html#getAssociationType--">getAssociationType</a></span>()</code>
<div class="block">Gets the association type for this Association.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/registry/infomodel/Association.html#getSourceObject--">getSourceObject</a></span>()</code>
<div class="block">Gets the Object that is the source of this Association.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/registry/infomodel/Association.html#getTargetObject--">getTargetObject</a></span>()</code>
<div class="block">Gets the Object that is the target of this Association.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/registry/infomodel/Association.html#isConfirmed--">isConfirmed</a></span>()</code>
<div class="block">Determines whether an Association has been confirmed completely.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/registry/infomodel/Association.html#isConfirmedBySourceOwner--">isConfirmedBySourceOwner</a></span>()</code>
<div class="block">Determines whether an Association has been confirmed by the owner of the source object.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/registry/infomodel/Association.html#isConfirmedByTargetOwner--">isConfirmedByTargetOwner</a></span>()</code>
<div class="block">Determines whether an Association has been confirmed by the owner of the target object.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/registry/infomodel/Association.html#isExtramural--">isExtramural</a></span>()</code>
<div class="block">Determines whether an Association is extramural or not.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/registry/infomodel/Association.html#setAssociationType-javax.xml.registry.infomodel.Concept-">setAssociationType</a></span>(<a href="../../../../javax/xml/registry/infomodel/Concept.html" title="interface in javax.xml.registry.infomodel">Concept</a>&nbsp;associationType)</code>
<div class="block">Sets the association type for this Association.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/registry/infomodel/Association.html#setSourceObject-javax.xml.registry.infomodel.RegistryObject-">setSourceObject</a></span>(<a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a>&nbsp;srcObject)</code>
<div class="block">Sets the Object that is the source of this Association.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/registry/infomodel/Association.html#setTargetObject-javax.xml.registry.infomodel.RegistryObject-">setTargetObject</a></span>(<a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a>&nbsp;targetObject)</code>
<div class="block">Sets the Object that is the target of this Association.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.xml.registry.infomodel.RegistryObject">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;javax.xml.registry.infomodel.<a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a></h3>
<code><a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#addAssociation-javax.xml.registry.infomodel.Association-">addAssociation</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#addAssociations-java.util.Collection-">addAssociations</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#addClassification-javax.xml.registry.infomodel.Classification-">addClassification</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#addClassifications-java.util.Collection-">addClassifications</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#addExternalIdentifier-javax.xml.registry.infomodel.ExternalIdentifier-">addExternalIdentifier</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#addExternalIdentifiers-java.util.Collection-">addExternalIdentifiers</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#addExternalLink-javax.xml.registry.infomodel.ExternalLink-">addExternalLink</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#addExternalLinks-java.util.Collection-">addExternalLinks</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getAssociatedObjects--">getAssociatedObjects</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getAssociations--">getAssociations</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getAuditTrail--">getAuditTrail</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getClassifications--">getClassifications</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getDescription--">getDescription</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getExternalIdentifiers--">getExternalIdentifiers</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getExternalLinks--">getExternalLinks</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getKey--">getKey</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getLifeCycleManager--">getLifeCycleManager</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getName--">getName</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getObjectType--">getObjectType</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getRegistryPackages--">getRegistryPackages</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#getSubmittingOrganization--">getSubmittingOrganization</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#removeAssociation-javax.xml.registry.infomodel.Association-">removeAssociation</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#removeAssociations-java.util.Collection-">removeAssociations</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#removeClassification-javax.xml.registry.infomodel.Classification-">removeClassification</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#removeClassifications-java.util.Collection-">removeClassifications</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#removeExternalIdentifier-javax.xml.registry.infomodel.ExternalIdentifier-">removeExternalIdentifier</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#removeExternalIdentifiers-java.util.Collection-">removeExternalIdentifiers</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#removeExternalLink-javax.xml.registry.infomodel.ExternalLink-">removeExternalLink</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#removeExternalLinks-java.util.Collection-">removeExternalLinks</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#setAssociations-java.util.Collection-">setAssociations</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#setClassifications-java.util.Collection-">setClassifications</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#setDescription-javax.xml.registry.infomodel.InternationalString-">setDescription</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#setExternalIdentifiers-java.util.Collection-">setExternalIdentifiers</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#setExternalLinks-java.util.Collection-">setExternalLinks</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#setKey-javax.xml.registry.infomodel.Key-">setKey</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#setName-javax.xml.registry.infomodel.InternationalString-">setName</a>, <a href="../../../../javax/xml/registry/infomodel/RegistryObject.html#toXML--">toXML</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.xml.registry.infomodel.ExtensibleObject">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;javax.xml.registry.infomodel.<a href="../../../../javax/xml/registry/infomodel/ExtensibleObject.html" title="interface in javax.xml.registry.infomodel">ExtensibleObject</a></h3>
<code><a href="../../../../javax/xml/registry/infomodel/ExtensibleObject.html#addSlot-javax.xml.registry.infomodel.Slot-">addSlot</a>, <a href="../../../../javax/xml/registry/infomodel/ExtensibleObject.html#addSlots-java.util.Collection-">addSlots</a>, <a href="../../../../javax/xml/registry/infomodel/ExtensibleObject.html#getSlot-java.lang.String-">getSlot</a>, <a href="../../../../javax/xml/registry/infomodel/ExtensibleObject.html#getSlots--">getSlots</a>, <a href="../../../../javax/xml/registry/infomodel/ExtensibleObject.html#removeSlot-java.lang.String-">removeSlot</a>, <a href="../../../../javax/xml/registry/infomodel/ExtensibleObject.html#removeSlots-java.util.Collection-">removeSlots</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getSourceObject--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSourceObject</h4>
<pre><a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a>&nbsp;getSourceObject()
                        throws <a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></pre>
<div class="block">Gets the Object that is the source of this Association. 

 <p><DL><DT><B>Capability Level: 0 </B></DL></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The RegistryObject that is the source object of this Association</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></code> - If the JAXR provider encounters an internal error</dd>
</dl>
</li>
</ul>
<a name="setSourceObject-javax.xml.registry.infomodel.RegistryObject-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSourceObject</h4>
<pre>void&nbsp;setSourceObject(<a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a>&nbsp;srcObject)
              throws <a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></pre>
<div class="block">Sets the Object that is the source of this Association. 

 <p><DL><DT><B>Capability Level: 0 </B></DL></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>srcObject</code> - the RegistryObject that is the source object of this Association</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></code> - If the JAXR provider encounters an internal error</dd>
</dl>
</li>
</ul>
<a name="getTargetObject--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTargetObject</h4>
<pre><a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a>&nbsp;getTargetObject()
                        throws <a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></pre>
<div class="block">Gets the Object that is the target of this Association. 

 <p><DL><DT><B>Capability Level: 0 </B></DL></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The RegistryObject that is the target object of this Association</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></code> - If the JAXR provider encounters an internal error</dd>
</dl>
</li>
</ul>
<a name="setTargetObject-javax.xml.registry.infomodel.RegistryObject-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTargetObject</h4>
<pre>void&nbsp;setTargetObject(<a href="../../../../javax/xml/registry/infomodel/RegistryObject.html" title="interface in javax.xml.registry.infomodel">RegistryObject</a>&nbsp;targetObject)
              throws <a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></pre>
<div class="block">Sets the Object that is the target of this Association. 

 <p><DL><DT><B>Capability Level: 0 </B></DL></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>targetObject</code> - the RegistryObject that is the target object of this Association</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></code> - If the JAXR provider encounters an internal error</dd>
</dl>
</li>
</ul>
<a name="getAssociationType--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAssociationType</h4>
<pre><a href="../../../../javax/xml/registry/infomodel/Concept.html" title="interface in javax.xml.registry.infomodel">Concept</a>&nbsp;getAssociationType()
                    throws <a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></pre>
<div class="block">Gets the association type for this Association. 

 <p><DL><DT><B>Capability Level: 0 </B></DL></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The association type for this Association which is a Concept in the AssociationType ClassificationScheme</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></code> - If the JAXR provider encounters an internal error</dd>
</dl>
</li>
</ul>
<a name="setAssociationType-javax.xml.registry.infomodel.Concept-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAssociationType</h4>
<pre>void&nbsp;setAssociationType(<a href="../../../../javax/xml/registry/infomodel/Concept.html" title="interface in javax.xml.registry.infomodel">Concept</a>&nbsp;associationType)
                 throws <a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></pre>
<div class="block">Sets the association type for this Association. 

 <p><DL><DT><B>Capability Level: 0 </B></DL></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>associationType</code> - the association type for this Association which is a Concept in the AssociationType ClassificationScheme</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></code> - If the JAXR provider encounters an internal error</dd>
</dl>
</li>
</ul>
<a name="isExtramural--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isExtramural</h4>
<pre>boolean&nbsp;isExtramural()
              throws <a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></pre>
<div class="block">Determines whether an Association is extramural or not.
 <p>
 An Extramural Association must be confirmed by the User(s) that own the 
 source and/or targert object, if they are different from the User who creates
 this extramural association. Both the sourceObject and targetObject owners must
 confirm an extramural Association, in order for it to be visible to
 third parties.

 <p><DL><DT><B>Capability Level: 0 </B></DL></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the sourceObject and/or the targetObject are 
                        owned by a User that is different from the User that created the Association; 
                        <code>false</code> otherwise</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></code> - If the JAXR provider encounters an internal error</dd>
</dl>
</li>
</ul>
<a name="isConfirmedBySourceOwner--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isConfirmedBySourceOwner</h4>
<pre>boolean&nbsp;isConfirmedBySourceOwner()
                          throws <a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></pre>
<div class="block">Determines whether an Association has been confirmed by the owner of the source object.

 <p><DL><DT><B>Capability Level: 0 </B></DL></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the association has been confirmed by the owner of the sourceObject;
                        <code>false</code> otherwise. For intramural Associations always return true</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></code> - If the JAXR provider encounters an internal error</dd>
</dl>
</li>
</ul>
<a name="isConfirmedByTargetOwner--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isConfirmedByTargetOwner</h4>
<pre>boolean&nbsp;isConfirmedByTargetOwner()
                          throws <a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></pre>
<div class="block">Determines whether an Association has been confirmed by the owner of the target object.

 <p><DL><DT><B>Capability Level: 0 </B></DL></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the association has been confirmed by the owner of the targetObject;
                        <code>false</code> otherwise. For intramural Associations always return true</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></code> - If the JAXR provider encounters an internal error</dd>
</dl>
</li>
</ul>
<a name="isConfirmed--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isConfirmed</h4>
<pre>boolean&nbsp;isConfirmed()
             throws <a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></pre>
<div class="block">Determines whether an Association has been confirmed completely.
 <p>
 An association should only be visible to third parties (not involved
 with the Association) if isConfirmed returns true.

 <p><DL><DT><B>Capability Level: 0 </B></DL></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the isConfirmedBySourceOwner and isConfirmedByTargetOwner methods both return true;
                        <code>false</code> otherwise. For intramural Associations always return true</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/xml/registry/JAXRException.html" title="class in javax.xml.registry">JAXRException</a></code> - If the JAXR provider encounters an internal error</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../javax/xml/registry/infomodel/Association.html#isConfirmedBySourceOwner--"><code>isConfirmedBySourceOwner()</code></a>, 
<a href="../../../../javax/xml/registry/infomodel/Association.html#isConfirmedByTargetOwner--"><code>isConfirmedByTargetOwner()</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../javax/xml/registry/infomodel/AuditableEvent.html" title="interface in javax.xml.registry.infomodel"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?javax/xml/registry/infomodel/Association.html" target="_top">Frames</a></li>
<li><a href="Association.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
