<div dir="ltr"><div class="gmail_extra">Ya encontré el problema pero por dar feedback a la lista comento.
</div><div class="gmail_extra"><br></div><div class="gmail_extra">Estuve probando cosas y codificando a mi modo el &quot;export&quot; para acabar dándome cuenta de varias cosas:</div><div class="gmail_extra"><br></div><div class="gmail_extra">* Al abrir el store del shape manager.openStore se inicializa el defaultFeatureType del store, y si se quiere hacer algo que implique usar un FeatureType hay que pedírselo al nuevo store, no vale con usar el mismo que se uso para crearlo anteriormente en los parámetros del manager.newStore</div><div class="gmail_extra"><br></div><div class="gmail_extra">* Si que se puede reciclar un FeatureType de un store existente para crear un nuevo store</div><div class="gmail_extra"><br></div><div class="gmail_extra">* El StoreProvider de DBF automáticamente a falso el allowNull de los FeatureAttributeDescriptor del FeatureType. Entiendo que esto se hace porque los DBF no admiten nulos. En el store.createNewFeature(featureType, defaultValues) para cada valor por defecto se comprueban las reglas, y como la Feature original tenía nulos se produce una excepción. Por eso veo que en ExporttoShapeService en lugar de usarse ese método se emplea:</div><div class="gmail_extra"><br></div><div class="gmail_extra">edit_feat = target.createNewFeature(true);<br></div><div class="gmail_extra"><div class="gmail_extra">setNonNulls(featureStore.getDefaultFeatureType(), targetType, feature, edit_feat);</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">A este comportamiendo del provider de dbf por un lado le veo lógica. Sin conocer bien la arquitectura, mi impresión inicial es que los FeatureAttributeDescriptor implementaban reglas de negocio. Es decir si el desarrollador quiere crear un atributo que no incluya nulos y validarlos mediante ese mecanismo está bien, o si en la base de datos se ha seteado a not null un campo está bien.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Pero que el dbf no admita nulos y controlar eso a través del FeatureAttributeDescriptor parece más un detalle de implementación que una regla de negocio. De hecho veo que en el driver de dbf, DbaseFileWriter.fillBuffer, se hace un chequeo de cuando el valor es nulo y en caso de serlo se gestiona como el driver estima oportuno (metiendo cadena vacía, un 0, etc...</div></div><div class="gmail_extra"><br></div></div>