GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Agosto de 2013 Mapeamento de IDL para Java.

Slides:



Advertisements
Apresentações semelhantes
|Introdução a Java para programadores Telis. Jogo de Dados simples O jogo é jogado por dois jogadores. Cada jogador faz sua jogada (lança um dado), e.
Advertisements

Modificadores Marco Antonio. Introdução Em todas as linguagens de programação o acesso a classes/métodos deve seguir algumas regras.
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
Orientação a Objetos: Modificador Final para Métodos e Classes
Walfredo Cirne walfredo.dsc.ufpb.br
Walfredo Cirne Threads Walfredo Cirne
Polimorfismo e Classes Abstratas Profa
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
Comunicação Entre Objetos Distribuídos
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
Capítulo 9 Herança 1.
A linguagem C#.
Métodos Programação II
Clique para editar o estilo do subtítulo mestre Desenvolvimento web com Java JAVA 5 – Declarações e Controles de Acesso.
Classes e objetos Arrays e Sobrecarga
Estrutura de Dados em Java
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Concorrência em Java Threads em Java.
Departamento de Estatística e Informática
Tipos Agregados Homogêneos e Listas
Programação Orientada a Objetos com Java
GEJAVA IV SCJA – Certificação Sun java associado exame cx
Atributos, Encapsulamento e Interface em Java
Chamada Remota de Procedimentos
OPERADORESOPERADORES SCJP – Otimize-TI. Operadores Java Resultado: Maioria das operações é um booleano ou numérico. Não podem ser sobrecarregados (Existem.
Introdução à Programação Orientada a Objetos com Java
Desenvolvimento de Aplicações CORBA
Classes, Objetos, Atributos e Métodos JAVA
Os métodos equals() e hashCode()
Capítulo 1 Tipo enumerado.
Aula 3 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.
PROGRAMAÇÃO - INTRODUÇÃO George Gomes Cabral. DECOMPOSIÇÃO Dividir para conquistar: Paradigma básico para tratamento de grandes problemas. Nossa meta.
Pilhas Profa. Nádia Félix.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
Orientação a Objetos Parte II
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Polimorfismo.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Classes Abstratas e Interface
Módulo 9 Strings , Coleções e I/O
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Fevereiro de 2014 IDL.
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Construtores e Destrutores
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Paradigmas da Programação – Semestre 1 – Aula 8 Professor: Eduardo Mantovani )
Bruno Inojosa MCP .NET Framework
Linguagem II Classes Abstratas Interfaces. Davi Pires Revisão Reuso de código Superclasses e subclasses Composição vs. Herança Construtores.
Tecgraf PUC-Rio setembro de 2013 IDL. Interface Definition Language Linguagem neutra Define a interface dos objetos CORBA struct Book { string author;
Modificadores Programação II.
Conceitos de OO em Java Parte I
Tecgraf PUC-Rio maio de 2011 Mapeamento de IDL para Java.
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Desenvolvendo uma aplicação CORBA utilizando C#
Laboratório de Programação II Método main Dados e Métodos de Classes.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Principais conceitos de CORBA.
Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 Desenvolvendo uma aplicação CORBA utilizando Java.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Mapeamento de IDL para C#
Array e ArrayList LPOO – 01/09/14.
Tecgraf PUC-Rio maio de 2011 Desenvolvendo uma aplicação CORBA utilizando Java.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 IDL.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Classes Abstratas e Interface. 2 Classe Abstrata  Uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos);
1 Interface (o termo) » Interface (a palavra reservada): Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Agosto de 2013 Mapeamento de IDL para Java

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de interface Em Java, uma interface IDL é mapeada para: – uma interface java de assinatura – uma interface java de operações A interface de assinatura possui o mesmo nome da interface IDL, estende outras interfaces CORBA e é usada como o tipo referenciado em outras interfaces A interface de operações possui o nome da interface IDL junto com o sufixo Operations e é uma interface “java pura”, ou seja, possui apenas as declarações das operações e atributos definidos na interface IDL As classes Helper e Holder são geradas

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de interface Atributos definidos na interface são mapeados para um par de métodos get e set Atributos readonly são mapeados apenas para métodos get Parâmetros in são mapeados para parâmetros conforme o tipo correspondente Parâmetros out e inout são mapeados para parâmetros do tipo Holder correspondente

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de interface // Java public interface CadastroPessoaOperations { /* constants */ /* operations */ java.lang.String empresa(); void empresa(java.lang.String arg); void incluiPessoa(exemplo.Pessoa p); void alteraPessoa(exemplo.PessoaHolder p); } // IDL module exemplo { struct Pessoa { string nome; long idade; }; interface CadastroPessoa { attribute string empresa; void incluiPessoa (in Pessoa p); void alteraPessoa (inout Pessoa p); };

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento dos tipos primitivos

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de struct Um struct IDL é mapeado para uma final class que possui uma variável para cada campo A classe possui o mesmo nome do struct IDL A classe possui dois construtores: um que recebe os valores iniciais para os campos um construtor vazio As classes Helper e Holder são geradas

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de struct // Java final public class StructType implements org.omg.CORBA.portable.IDLEntity { // instance variables public int field1; public String field2 = ""; // constructors public StructType() {} public StructType(int f1, String f2){...} } // IDL struct StructType { long field1; string field2; };

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de sequence Um sequence IDL é mapeado para um array Java uni-dimensional com o mesmo nome No caso de um sequence com tamanho máximo, a exceção CORBA::MARSHAL é lançada se o valor do array for maior do que o estabelecido As classes Helper e Holder são geradas

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de sequence // Java final public class UnboundedDataHolder implements org.omg.CORBA.portable.Streamable { public int[] value; public UnboundedDataHolder() {}; public UnboundedDataHolder(int[] initial) {...};... } final public class BoundedDataHolder implements org.omg.CORBA.portable.Streamable { public int[] value; public BoundedDataHolder() {}; public BoundedDataHolder(int[] initial) {...}... } // IDL typedef sequence UnboundedData; typedef sequence BoundedData;

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de array Um array IDL é mapeado para um array Java multi-dimensional com o mesmo nome A exceção CORBA::MARSHAL é lançada se o valor do array for maior do que o estabelecido As classes Helper e Holder são geradas

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de array // Java public final class larrayHolder implements org.omg.CORBA.portable.Streamable { public int[][] value;... } // IDL typedef long larray[10][5];

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de typedef Java não possui uma construção para typedef Classes de Helper são geradas para todos os tipos definidos com a IDL typedef O typedef de sequence cria, além do Helper, um Holder também

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de enum O enum IDL é mapeado para uma classe com o mesmo nome O tipo int é usado para representar cada valor da enumeração As classes Helper e Holder são geradas

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de enum // Java public class TrafficLight implements org.omg.CORBA.portable.IDLEntity { final public static int _red = 0; final public static int _yellow = 1; final public static int _green = 2; final public static TrafficLight red = new TrafficLight(_red); final public static TrafficLight yellow = new TrafficLight(_yellow); final public static TrafficLight green = new TrafficLight(_green); public static TrafficLight from_int(int value); public int value() {....} … } // IDL enum TrafficLight { red, yellow, green };

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de union O union IDL é mapeado para uma classe com o mesmo nome, que possui os métodos: de acesso ao valor determinante de acesso e modificação para cada possível valor das opções definidas no tipo e para o valor default As classes Helper e Holder são geradas

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de valuetype O valuetype IDL é mapeado para uma classe abstrata com o mesmo nome É responsabilidade do desenvolvedor criar a classe que implenta essa classe abstrata, garantindo a correta recomposição do estado do objeto no processo de unmarshal As classes Helper e Holder são geradas

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de valuetype // Java public abstract class Node implements org.omg.CORBA.portable.StreamableValue {... public int id; public exemplo.Node next; public void _write (org.omg.CORBA.portable.OutputStream os) { os.write_long(id); ((org.omg.CORBA_2_3.portable.OutputStream)os).write_value (next); } public void _read (final org.omg.CORBA.portable.InputStream os) { id=os.read_long(); next=(exemplo.Node)((org.omg.CORBA_2_3.portable.InputStream) os).read_value ("IDL:exemplo/Node:1.0"); } // IDL valuetype Node { public long id; public Node next; };

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de valuetype O desenvolvedor deve criar a classe que implementa a classe abstrata gerada a partir do valuetype public class NodeImpl extends Node { public NodeImpl() { } public NodeImpl (int id) { this.id = id; } public String toString() { return "#" + Integer.toString (id) + "#"; }

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 ValueFactory Quando uma instância de um valuetype chega no servidor, a classe que implementa esse objeto precisa ser encontrada para que o objeto seja reconstruído. O valuetype deve ter um objeto “fábrica”, do tipo ValueFactory que é usado para instanciar a classe que implementa o valuetype. É responsabilidade do desenvolvedor implementar as classes ValueFactory e registrá-la no ORB

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Implementação de ValueFactory import java.io.Serializable; import org.omg.CORBA.portable.ValueFactory; import org.omg.CORBA_2_3.portable.InputStream; /** * Fábrica necessária para o unmarshalling do objeto * que implementa o Node. * */ public class NodeFactory implements ValueFactory { public Serializable read_value(InputStream is) { return is.read_value(new NodeImpl()); }

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Registro de ValueFactory no ORB Note que apenas a classe org.omg.CORBA.ORB possui os métodos que permitem registrar e remover as fábricas do ORB orb.register_value_factory( NodeHelper.id(), new NodeFactory());

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Mapeamento de ANY O tipo Any usado na IDL é mapeado para a classe Java org.omg.CORBA.Any Essa classe possui todos os métodos necessários para inserir e extrair valores dos tipos primitivos Se o método de extração usado for para um tipo diferente daquele guardado no Any, uma exceção CORBA::BAD_OPERATION é lançada

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Módulos Um módulo IDL é mapeado para um pacote Java com o mesmo nome. // IDL module tecgraf { module openbus { module DRMAA {... } // pacote Java tecgraf.openbus.DRMAA

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Conflitos de nomes Em geral, os nomes usados na IDL são mapeados diretamente para os mesmos nomes em Java Conflitos de nomes no mapeamento são resolvidos usando um prefixo _ no nome em Java

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Nomes reservados As classes Helper and Holder, onde é um nome de um tipo na IDL As classes Operations, POA, e POATie, onde é um nome de um tipo de interface na IDL As palavras-chave na linguagem Java Métodos que colidem com os da classe java.lang.Object: – clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString e wait