Последовательности CORBA: можно ли определить последовательности объектов с методами? - PullRequest
0 голосов
/ 16 сентября 2010

У меня есть интерфейс с методом, который должен возвращать список элементов, и каждый элемент должен иметь определенные методы, связанные с ним. Например, я хочу определить метод listAllItems (), который возвращает набор объектов «item», к которым прикреплены методы (поэтому я могу заставить клиентский процесс выбрать один из элементов и сказать, например, itemone.buy (), который будет выполнять соответствующий метод на сервере).

Могу ли я сделать это в CORBA? Кажется, я не могу определить «элемент интерфейса», а затем в другом интерфейсе сказать «последовательность».

Я буду компилировать свой idl для Java, если это будет иметь значение.

Спасибо!

Ответы [ 2 ]

1 голос
/ 07 апреля 2013

Необходимую Пейтону информацию, концептуальное отображение между последовательностью IDL и типом набора Java, можно найти на физической странице 42, проиндексированной странице 23 этого руководства:

http://www.omg.org/spec/I2JAV/1.3/

И чтобы ответить на его вопрос: очевидно, java на самом деле не указывает объект последовательности, даже если вы печатаете def.Вы, конечно, можете сделать это вручную.Но если вы хотите полагаться на то, что автоматически делает для вас idlj, вам придется использовать методы из Helper.java.Они работают с простыми массивами типа [] и включают в себя геттеры и сеттеры.

Вкратце: если ваш idl содержит

struct MyObject
{
  long my_int;
};
typedef sequence<MyObject> MyObjects;
interface HasArray
{
  attribute MyObjects some_stuff;
};

Тогда вашей java-реализации потребуется:

public class HasArrayImpl extends HasArrayPOA
{
  private List<MyObject> local_storage;

  /** getter */
  MyObject[] some_stuff()
  {
    /* ... */
  }

  /** setter */
  void some_stuff(MyObject[] newSome_stuff)
  {
    /* ... */
  }
}

И под капотом Java создаст для вас MyObjectsHelper и MyObjectsHolder.

0 голосов
/ 16 сентября 2010

Конечно, вы можете.

Вам придется более подробно рассказать, почему вы говорите, что это не работает для вас.Но я регулярно работаю с IDL, который содержит последовательность интерфейсов.

...