/*******************************************************************************
 * Copyright (c) 2000, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

package org.eclipse.wst.ws.internal.datamodel;

/**
* This is the abstract class for a connection that ties a Rel to a Node.
* Normally Connection objects are manufactured and managed within the
* derived classes of the Model framework, and are not manipulated by
* the caller directly.
*/
public interface Connection
{

  // Copyright
  public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002.";

  /**
  * Returns the Rel that owns this connection.
  * @return Rel The Rel that owns this connection.
  * This method never returns null, that is, a Connection
  * cannot exist without a Rel to own it.
  */
  public Rel getRel ();

  /**
  * Returns the Node that this connection points to.
  * @return Node The Node this connection points to.
  * This method never returns null, that is, a Connection
  * cannot exist without a Node to point to.
  */
  public Element getElement ();

  /**
  * Returns the opposing connection to this connection.
  * Connection objects always exist in pairs, that is,
  * if node "Parent" has a relationship named "Children"
  * containing a connection to node "Child", then there
  * must exist an opposing connection from "Child" to
  * "Parent" in some relationship of "Child" (for example,
  * in a relationship called "Parents").
  * @return Connection The opposing connection.
  * As a general rule, this method should never return null.
  * It may only return null during construction of the pair
  * of connections.
  */
  public Connection getOpposingConnection ();
}

