<html>
    <head>
      <base href="http://www.jacorb.org/bugzilla/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Interface Repository does not return Repository IDs for FullInterfaceDescription.base_interfaces"
   href="http://www.jacorb.org/bugzilla/show_bug.cgi?id=993">993</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Interface Repository does not return Repository IDs for FullInterfaceDescription.base_interfaces
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>JacORB
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>3.5
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P5
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Interface Repository
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>jacorb-bugs@lists.spline.inf.fu-berlin.de
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>earthmabus@hotmail.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>I've noticed that the Interface Repository does not work properly when tracking
the inheritance relationships between interfaces.  As an example, suppose I
have the following IDL (let's call it AddressBook.idl):

module AddressBook
{
  struct PersonData
  {
    string ssn;
    string firstname;
    string lastname;
  };

  typedef sequence<PersonData> PersonDataSeq;

  interface ReadonlyDirectory
  {
    PersonDataSeq getAllPeople();
  };

  interface Directory : ReadonlyDirectory
  {
    void addPerson(in PersonData newPerson) raises (SsnAlreadyExists);
  };
}
I compile AddressBook.idl using the following:
<span class="quote">> idl -ir AddressBook.idl</span >

I then start up the Interface Repository against the class files, which were
the result of the compile and build, using the following:
<span class="quote">> ir ../../AddressBook/AddressBookIdl/build/classes if_repo.ior</span >

When I interact with the FullInterfaceDescription object that represents the
Directory interface with the following code:

org.omg.CORBA.InterfaceDef interfaceDef = ... // interfaceDef for Directory
org.omg.CORBA.InterfaceDefPackage.FullInterfaceDescription fullDescr =
interfaceDef.describe_interface();
String[] parent_interfaces = fullDescr.base_interfaces;

The issue with the above code is that parent_interfaces contains a single item
(which is good) with a value of "AddressBook.ReadonlyDirectory" (which is bad).
 I've noticed that other IR implementations (such as the older TAO ones) will
return the repository id here (IDL:AddressBook/ReadonlyDirectory:1.0) which I
believe is a part of the IR specification (with the RepositoryID of the
parents, you could immediately query the IR for info about the parents... with
the data being returned, you have to play games with the returned data.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>