[Dica] NFe UnmarshalException
13/janeiro/2015 - Java
Olá,
Caso esteja recebendo uma exception parecida com a mostrada abaixo…
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.portalfiscal.inf.br/nfe", local:"inutNFe"). Expected elements are <{http://www.w3.org/2000/09/xmldsig#}Signature>
… tente fazer o seguinte. Coloque essas anotações na ordem informando o namespace.
@XmlRootElement(name="inutNFe", namespace="http://www.portalfiscal.inf.br/nfe") @XmlType(name = "TInutNFe", namespace = "http://www.portalfiscal.inf.br/nfe", propOrder = {"infInut", "signature"}) @XmlAccessorType(XmlAccessType.FIELD) public class TInutNFe {
Por aqui resolveu
[Dica] Erro cannot be cast to javax.xml.bind.JAXBElement
13/janeiro/2015 - Java
Olá,
Estávamos convertendo um XML em Java Object normalmente com o trecho abaixo:
Object object = (JAXBElement<Object>) unmarsh.unmarshal(is); object.getValue();
Depois de uma alteração passei a receber essa exception:
java.lang.ClassCastException: br.com.xxxx.nfe.beans.TInutNFe cannot be cast to javax.xml.bind.JAXBElement
A alteração foi incluir essa anotação na classe
@XmlRootElement(name="inutNFe", namespace="http://www.portalfiscal.inf.br/nfe")
Com isso a variável object é uma instância do bean e não de JAXBElement, dessa forma não é necessária fazer a chamada ao método getValue() na segunda linha.
Como enviar arquivos do app do Dropbox anexados no email pelo iOS
09/janeiro/2015 - iPhone
Olá,
Alguns dias atrás eu estava emergencialmente procurando uma forma de enviar por email um arquivo zip que eu tinha na conta do dropbox, rapidamente eu abri o app do dropbox no iPhone, procurei o arquivo, selecionei ele e cliquei no botão de compartilhar e vi a opção Email (segundo botão), fiquei todo feliz 😀 . Mas…. 😥 ao tocar nele percebi que ele gera um link e coloca no corpo do email e não é isso que eu queria. Eu tinha que enviar o email com arquivo em anexo.
Eis que consegui fazer isso com esse workaround.
Problema com acentuação de email usando UTL_SMTP
07/janeiro/2015 - Oracle
Boa noite,
Se ao enviar um email usando o comando do Oracle UTL_SMTP, o assunto do email está chegando aos destinatários sem respeitar a acentuação, insira o comando abaixo para informar ao cliente de email usar a codificação ISO-8859-1.
UTL_SMTP.WRITE_DATA( w_conn, 'Subject: ' || '=?iso-8859-1?Q?' || UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(i_subj))) || '?=' || UTL_TCP.CRLF);
Oracle – returning clause
16/outubro/2014 - Geral
Olá,
Pra que serve a cláusula returning?
Com a cláusula returning é possível retornar as linhas afetadas por operações DML.
Por exemplo, se você fizer um update e logo após precisar retornar as linhas que foram alteradas, é só usar a cláusula returning. Assim não precisa fazer um cursor.
Veja o exemplo abaixo:
Script da tabela:
create table EMPREGADO
(
ID_EMP NUMBER not null,
NOME_EMP VARCHAR2(100) not null,
DATA_ADMISSAO_EMP DATE not null
)
Código PL/SQL.
DECLARE
TYPE rec_emp IS RECORD (id_emp empregado.id_emp%type,
nome_emp empregado.nome_emp%type,
data_admissao_emp empregado.data_admissao_emp%type);
TYPE tb_emp IS TABLE OF rec_emp;
a_emp tb_emp;
marca_err number;
BEGIN
marca_err := '0';
insert into empregado emp values (1, 'Julia', sysdate)
returning emp.id_emp, emp.nome_emp, emp.data_admissao_emp bulk collect into a_emp;
marca_err := '1';
dbms_output.put_line('======= INSERT ========');
for i in a_emp.first..a_emp.last loop
dbms_output.put_line('ID: ' || a_emp(i).id_emp || ' - Nome: ' || a_emp(i).nome_emp || ' - Admissão: ' || a_emp(i).data_admissao_emp);
end loop;
marca_err := '2';
update empregado emp
set emp.nome_emp = upper(emp.nome_emp)
where emp.id_emp in (1,2)
returning emp.id_emp, emp.nome_emp, emp.data_admissao_emp bulk collect into a_emp;
marca_err := '3';
DBMS_OUTPUT.PUT_LINE('======= UPDATE ========');
for i in a_emp.first..a_emp.last loop
dbms_output.put_line('ID: ' || a_emp(i).id_emp || ' - Nome: ' || a_emp(i).nome_emp || ' - Admissão: ' || a_emp(i).data_admissao_emp);
end loop;
marca_err := '4';
delete from empregado emp
returning emp.id_emp, emp.nome_emp, emp.data_admissao_emp bulk collect into a_emp;
marca_err := '5';
DBMS_OUTPUT.PUT_LINE('======= DELETE ========');
for i in a_emp.first..a_emp.last loop
dbms_output.put_line('ID: ' || a_emp(i).id_emp || ' - Nome: ' || a_emp(i).nome_emp || ' - Admissão: ' || a_emp(i).data_admissao_emp);
end loop;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Erro na execução: ponto erro: ' || marca_err || ' - ' || SQLERRM);
END;
No exemplo acima demonstro a cláusula returning com as 3 operações (Insert, Update e Delete). No caso do insert o retorno será de apenas 1 linha, não precisava usar uma table mas para padronizar eu a usei.