[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: usando <sequence>s
- Subject: Re: usando <sequence>s
- From: Edgard Pevidor de Miranda <PROTECTED>
- Date: Wed, 27 Mar 2002 13:32:21 +0000
Algumas formas que levantei para "transformar" um RoomImpl em
um Room:
Seja this.poa o meu org.omg.PortableServer.POA
e this.orb o meu org.omg.CORBA.ORB orb
1)
RoomImpl roomImpl = new RoomImpl();
this.poa.servant_to_reference(roomImpl);
Room room = (Room) roomImpl._this();
2)
RoomImpl roomImpl = new RoomImpl();
org.omg.CORBA.Object room_obj = roomImpl._this_object(this.orb);
Room room = RoomHelper.narrow(room_obj);
3)
RoomImpl roomImpl = new RoomImpl();
Room room = (Room) roomImpl._this();
Alguem sabe a diferença entre elas? Qual será a mais
indicada para resolver o nosso problema?
Falou!
Edgard
Fabio Kon wrote:
> Paulo Eduardo Azevedo Silveira writes:
> >
> > oi pessoal
> >
> > eu tenho algumas interfaces no meu modulo, uma delas eh a ChatRoom
> >
> > tenho o metodo listRooms() que retorna uma ChatRoom<sequence>
> >
> > No java, ele transforma isso para:
> > ChatRoom[] listRooms();
> >
> > Ate ai tudo bem. Mas eu tenho uma lista de ChatRoomImpl[]. que nao sao
> > ChatRoom, pois extendem ChatRoomPOA. A unica maneira que encontrei para
> > fazer essa conversao foi:
> >
> > while (...) {
> > temp[i] = ((ChatRoomImpl) iterator.next())._this();
> > }
> >
> > Esse metodo ._this() resolveu, mas o que ele faz exatamente?^Outra coisa,
> > eu vi que ele criou umas classes ChatRoomArrayHelper, achei que la ia ter
> > algo que ajudasse a fazer essa conversao, mas nao tem.
>
> Vamos la' (espero nao falar besteira).
>
> O metodo _this() registra o servente com o POA e devolve um apontador para o
> Objeto CORBA resultante. Assim, voce deve chamar o _this só uma vez para cada
> objeto ChatRoomImpl. Voce pode fazer isso, por exemplo, na operacao que cria
> novos chat rooms.
>
> Toda vez que fizer uma chamada ao _this(), guarde o valor resultante no seu
> ChatRoom[] listRooms()
> e dai' a sua operacao listRooms() pode simplesmente devolver esse vetor.
>
> O que eu acho que voce nao deve fazer e' chamar o _this() dentro da operaca
> listRooms()
>
> []s,
> Fabio.
>