Foi necessária criação de uma nova classe NFeStreamWrapper que extende a classe StreamWrapper. Alem disto é necessário substituir na classe NfeRecepção2Sutb.java como mostrado abaixo abaixo:
// We need to wrap the reader so that it produces a fake START_DOCUMENT event
// this is needed by the builder classes
org.apache.axis2.databinding.utils.NamedStaxOMBuilder builder1 =
new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
//antigo new StreamWrapper(reader),startQname1);
[b]new NFeStreamWrapper/b,startQname1);
object.setExtraElement(builder1.getOMElement());
reader.next();
-
Esta classe foi necessária para fazer uma correção do erro Falha de Schema (215), que acontecia
-
somente no Sefaz PR, este erro não acontece em outros Sefaz.
-
-
O WebService do PR precisa que a tag venha com namespace, ou seja, precisa
-
chegar o xml no WS desta forma
-
-
Embora a nota fiscal seja sera gerada pelo Adempiere com este namespace, a classe StreamWrapper
-
por um motivo que desconhecemos agora, retirava este namespace por retornar nulo para a tag NFe.
-
-
Esta foi a forma mais rápida que encontramos embora menos elegante de se resolver o problema.
*/
public class NFeStreamWrapper extends StreamWrapper {
public NFeStreamWrapper(XMLStreamReader realReader) {
super(realReader);
}
public String fakeNamespace(String value) {
if (StringUtils.isBlank(value)) {
if (“nfe”.equalsIgnoreCase(getName().getLocalPart())) {
return “xmlns”;
}
}
return value;
}
@Override
public String getNamespaceURI(String s) {
return fakeNamespace(super.getNamespaceURI(s));
}
@Override
public NamespaceContext getNamespaceContext() {
return super.getNamespaceContext();
}
@Override
public int getNamespaceCount() {
return super.getNamespaceCount();
}
@Override
public String getNamespacePrefix(int i) {
return fakeNamespace(super.getNamespacePrefix(i));
}
@Override
public String getNamespaceURI() {
return fakeNamespace(super.getNamespaceURI());
}
@Override
public String getNamespaceURI(int i) {
return fakeNamespace(super.getNamespaceURI(i));
}
}