Versão 26

Melhorias

Admin

Engine

  • Foi criado o método VirtualFileSystem.prototype.getFileSize com o objetivo de obter o tamanho de um arquivo da Virtual File System sem que seja necessário ler o seu conteúdo.
  • Foi criado o método VirtualFileSystem.prototype.getFilePath com o objetivo de obter o caminho de um arquivo da Virtual File System.
  • Foi criado o método VirtualFileSystem.prototype.formatFilePath com o objetivo de obter o caminho de um arquivo da Virtual File System, antes da sua criação ou modificação.
  • O construtor new Date() e a função Date.parse() passam a suportar datas no formato ISO 8601 conforme especificação ECMAScript, tornando obsoletas a função ngin.date.parseISO8601Date e o módulo parseISO8601Date.
  • Arquivos ou diretórios com nomes acentuados criados na Virtual File System não eram acessíveis via HTTP.
  • A atribuição de campos por meio de propriedades de um DataSet foi otimizada. Em casos sintéticos de testes, o ganho de desempenho observado foi de aproximadamente 9%.
  • O campo “NOME” da tabela de Classes estava configurado como invisível por padrão, impedindo o uso de processos que não configuravam a visão desse campo de forma explícita. A mudança de visibilidade foi um efeito colateral de uma melhoria introduzida na versão 19. Foi restaurada a configuração da versão anterior a essa, garantindo a estabilidade dos processos que dependam desse comportamento.
  • O método DataSet.prototype.sum falhava com o erro “Assertion failure” se todos os campos de agrupamento do primeiro registro do DataSet fossem zero, nulo, falso ou um texto vazio.
  • A função formatElapsedTime arredondava as unidades de tempo sem tratar os eventuais erros introduzidos pelas operações de ponto flutuante, gerando resultados como '30 segs 1000 ms' em vez '31 segs'.

Web Framework

  • Foram criadas classes herdeiras de HttpError específicas para os códigos de estado HTTP mais recorrentes, com o objetivo de simplificar seu uso.
  • Foram criados modos de geração automática de atalho dos botões, definidos pelas constantes em AutoShortcutKeyMode. A funcionalidade é configurável via x-class, customizando o atributo autoShortcutKeyMode da classe Configuração/Web Framework/Ambiente (-1898144676).

Defeitos corrigidos

Desenvolvimento

  • O processo Desenvolvimento > Atualização > Atualizar VFS removia os acentos do campo iUrl dos arquivos atualizados.
  • Os processos Atualizar Sistema e Atualizar Tabelas, no menu Desenvolvimento > Atualização, não atualizavam corretamente o campo iUrl dos arquivos de chave positiva na base destino, filhos das classes atualizadas.
  • O processo Desenvolvimento > Revisão de códigos > Revisor de códigos não funcionava corretamente se fosse utilizado o WinMerge 2.15 ou superior.
  • A atualização do sistema poderia falhar com o erro “A chave XXXX foi alterada por outro usuário enquanto você estava editando” caso duas ou mais atualizações estivessem sendo executadas a partir da mesma base de origem.

Engine

  • A IDE do Engine removia os acentos do caminho do arquivo, gravado no campo iUrl, comportamento distinto da classe VirtualFileSystem, que preserva os acentos.
  • O método KeysUtilities.prototype.getUrl retornava uma URL sem acentos, comportamento diferente do esperado para o campo iUrl da tabela iVfs.
  • O cabeçalho Http Date das respostas do servidor informava a data/hora local como sendo GMT.
  • A propriedade Response.prototype.expires retornava a data/hora de expiração GMT como local.
  • A informação de data/hora do servidor Http em mensagens de erro apresentava a data/hora local como sendo GMT.
  • Ao abrir conexão com o banco de dados Oracle, o Engine logava o charset utilizado exibindo caracteres inválidos.
  • O construtor Number(value) estava suportando strings com números inteiros literais descritos em sintaxe não definida pelo padrão ECMAScript.
  • O reinício do Engine falhava se ele estivesse instalado numa pasta cujo nome possuía caracteres acentuados.

Web Framework

  • A definição de um caractere de atalho de um botão utilizando ‘&’ como marcador no nome ou rótulo não funcionava ao ser usado no nome. A funcionalidade também apresentava inconsistências ao tentar designar atalhos automaticamente.
  • Caracteres especiais do XML (<, >, “, ‘, &), quando usados no nome de uma interação, ocasionavam falha de sincronismo. Estes caracteres passam a ser removidos automaticamente do nome.
  • Os erros de atualização ocorridos na fase de reinicialização automática do Engine não estavam sendo inseridos no log em uma ordem coerente em relação aos outros eventos da atualização.

Outras alterações

Engine

  • A Virtual File System passa a permitir arquivos com nome de até 255 caracteres e caminhos de até 4000 caracteres. Esses limites passam a ser publicados nas propriedades MAX_VFS_NAME_LENGTH e MAX_VFS_PATH_LENGTH do módulo @nginstack/engine/lib/database/Limits.
  • A função toSqlString passa a limitar em dez o número de casas decimais após o ponto na conversão de valores numéricos de ponto flutuante para string. Os comandos SQL usados na atualização do banco de dados, excetuando o Oracle, passam a formatar os valores numéricos de ponto flutuante dessa forma.
  • O método Request.prototype.getHeaders passa a retornar os nomes dos campos de cabeçalho em caixa baixa.
  • O método XMLHttpRequest.prototype.getAllResponseHeaders passa a retornar os nomes dos campos de cabeçalho em caixa baixa.
  • O roteador HTTP passa a codificar todas as respostas textuais em UTF-8. Antes ele codificava apenas as respostas do tipo “application/json” e para os demais tipos ele adicionava o indicativo “charset=iso-8859-1” no header “content-type”. Controladores HTTP que necessitem enviar dados na codificação iso-8859-1 devem passar a indicar o charset de forma explícita via método `RouteResult.prototype.withCharset.
  • O Engine passa a utilizar automaticamente o charset WE8MSWIN1252 no Client do Oracle, tornando desnecessária a utilização da variável de ambiente NLS_LANG.
  • A versão mínima do cliente do Oracle suportada pelo Engine passa a ser a versão 11g.

Desenvolvimento

  • O botão ‘Corrigir URL da iVfs’ do processo “Desenvolvimento > Base de dados > Atualizar estrutura” foi migrado para um processo próprio em “Desenvolvimento > Virtual File System > Corrigir URL dos arquivos”.