[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: usando <sequence>s



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.
>