Package systextil.ws

Class ResourceBase

java.lang.Object
systextil.ws.ResourceBase
Direct Known Subclasses:
ResourceGetBase

public abstract class ResourceBase extends Object
Classe básica para facilitar a confecção de endpoints de web services que usem uma AppConnection e um Login, e retornem um Object a ser serializado como JSON após uma requisição HTTP.

Subclasses devem implementar um ou mais métodos para GET ou POST (ou qualquer outro método HTTP), contendo a respectiva anotação @GET ou @POST. Essa implementação pode ser feita como se preferir, mas é recomendado que use as facilidades que já estão implementadas com o uso do método execute(Executable). Sugere-se seguir o seguinte modelo, para simplificar:

    @GET     
    public final MyObject get() throws Exception {
        return execute((conn, login) -> generateMyObject(conn, login));
    }

Essas subclasses também devem conter a anotação @Path correspondente. Opcionalmente podem injetar @PathParam onde forem usar.

Carimbo de conexão

Se a implementação conseguir obter o Login - o que geralmente é obtido informando na URL o parâmetro managerId - então esse login será carimbado na conexão que será usada, e também "descarimbado" ao terminar de usar essa conexão.

O nome do formulário NXJ que está sendo usado é obtido através do atributo de sessão nome_form. Se isso não for obtido, em seu lugar são carimbados os primeiros 9 caracteres do nome da classe do endpoint REST que atendeu à requisição.

Author:
sergio
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    O objeto que será retornado em caso de erro.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected final <T, E extends Exception>
    T
    execute(Executable<T,E> executer)
    Subclasses podem (ou devem) invocar este método para executar a consulta aos dados para o web service com segurança.
    protected String
    Obtém os dados do endereço do usuário remoto para rastreamento.
    protected final br.com.intersys.systextil.global.Login
    Credenciais do login do usuário, para uso pelas subclasses.
    protected final <T, E extends Exception>
    T
    run(Executable<T,E> executer)
    Subclasses podem invocar este método para executar a consulta aos dados para o web service com segurança.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ResourceBase

      public ResourceBase()
  • Method Details

    • getLogin

      protected final br.com.intersys.systextil.global.Login getLogin()
      Credenciais do login do usuário, para uso pelas subclasses.
      Returns:
      o login do usuário
    • run

      protected final <T, E extends Exception> T run(Executable<T,E> executer)
      Subclasses podem invocar este método para executar a consulta aos dados para o web service com segurança. Este método já assegura que a conexão ao banco de dados seja devidamente aberta e fechada, e disponibiliza os dados do login do usuário ao Executable.

      Nunca lança Exception.

      Se ocorrer alguma Exception na execução, sua mensagem será transformada num objeto ResourceBase.Err com status 500. Se a Exception for traduzível, a mensagem será traduzida para o idioma do usuário. Esse objeto será envolvido em um Response e lançado em um WebApplicationException padronizado.

      Atenção: Este método bloqueia exceções, não as propagando de maneira transparente para o runtime de web services. Por isso em momento oportuno este método será depreciado.

      Type Parameters:
      T - o tipo de objeto a retornar
      E - o tipo de exceção que o executer pode lançar (que é ignorado aqui)
      Parameters:
      executer - o objeto que executará a consulta aos dados e o retorno
      Returns:
      o objeto com os dados, que for retornado pelo Executable, ou um ResourceBase.Err se houver algum problema.
      Throws:
      javax.ws.rs.WebApplicationException - contendo um Response padrão se ocorrer alguma exceção na execução
    • getClientInfo

      protected String getClientInfo()
      Obtém os dados do endereço do usuário remoto para rastreamento.

      Lógica obtida de LoginFilter que é usado ao fazer login no ERP.

      Returns:
      o clientInfo que pode, por exemplo, ser usado ao fazer insert na tabela OPER_001
    • execute

      protected final <T, E extends Exception> T execute(Executable<T,E> executer) throws E
      Subclasses podem (ou devem) invocar este método para executar a consulta aos dados para o web service com segurança. Este método já assegura que a conexão ao banco de dados seja devidamente aberta e fechada, e disponibiliza os dados do login do usuário ao Executable.

      Qualquer Exception lançada será tratada pelo runtime de web services, o qual usará o tratador de exceções específico do plugin, se houver. Se não houver, aplicará o tratamento padrão.

      Este é o método preferido. Não interfere no tratamento de exceções e define com clareza o tipo de dados retornado.

      Type Parameters:
      T - o tipo de objeto a retornar
      E - o tipo de exceção que o executer pode lançar
      Parameters:
      executer - o objeto que executará a consulta aos dados e o retorno
      Returns:
      o objeto com os dados que for retornado pelo Executable
      Throws:
      E - a exceção lançada pelo executer se houver