@Override public Object getValue(Property property, Object model, ExportConfig config) throws IOException { try { return property.getValue(model); } catch (IllegalAccessException | InvocationTargetException | NotExportableException e) { if(!property.getType().isAssignableFrom(NotExportedBean.class)){ throw new IOException("Failed to write "+property.name); } return SKIP; //skip failing property } } }
void writeNestedObjectTo(T object, TreePruner pruner, DataWriter writer) throws IOException { if(superModel !=null) superModel.writeNestedObjectTo(object,pruner,writer); for (Property p : properties) p.writeTo(object,pruner,writer); } }
/** * Writes one property of the given object to {@link DataWriter}. * * @param pruner * Determines how to prune the object graph tree. */ public void writeTo(Object object, TreePruner pruner, DataWriter writer) throws IOException { TreePruner child = pruner.accept(object, this); if (child==null) return; try { writer.name(name); writeValue(getValue(object),child,writer); } catch (IllegalAccessException e) { IOException x = new IOException("Failed to write " + name); x.initCause(e); throw x; } catch (InvocationTargetException e) { IOException x = new IOException("Failed to write " + name); x.initCause(e); throw x; } }
Class t = p.getType(); final boolean isCollection; final Class itemType; isCollection = true; itemType = TypeUtil.erasure( TypeUtil.getTypeArgument(TypeUtil.getBaseClass(p.getGenericType(),Collection.class),0)); } else { isCollection = false; e.maxOccurs("unbounded"); annotate(e,p.getJavadoc());
/** * Writes one value of the property to {@link DataWriter}. */ private void writeValue(Object value, TreePruner pruner, DataWriter writer) throws IOException { writeValue(value,pruner,writer,false); }
writeValue(expected,((CustomExportedBean)value).toExportedObject(),pruner,writer); return; writeBuffered(act, item, pruner, writer); writeBuffered(act, Array.get(value, i), pruner, writer); Type expectedItemType = Types.getTypeArgument(expected, 0, null); for (Object item : pruner.getRange().apply((Iterable) value)) { writeBuffered(expectedItemType, item, pruner, writer); BufferedDataWriter buffer = new BufferedDataWriter(writer.getExportConfig()); try { writeStartObjectNullType(buffer); buffer.name(verboseMap[0]); writeValue(null, e.getKey(), pruner, buffer); buffer.name(verboseMap[1]); writeValue(null, e.getValue(), pruner, buffer); buffer.endObject(); buffer.finished(); writeStartObjectNullType(writer); for (Map.Entry e : ((Map<?,?>) value).entrySet()) { BufferedDataWriter buffer = new BufferedDataWriter(writer.getExportConfig()); try { buffer.name(e.getKey().toString()); writeValue(null, e.getValue(), pruner, buffer); buffer.finished(); } catch (IOException x) {
@Override public Object getValue(Property property, Object model, ExportConfig config) throws IOException { try { return property.getValue(model); } catch (IllegalAccessException | InvocationTargetException e) { if(config.isSkipIfFail()) { LOGGER.log(Level.WARNING,"Failed to get \"" + property.name + "\" from a " + model.getClass().getName(), e); return SKIP; } throw new IOException("Failed to write " + property.name + ":" + e.getMessage(), e); } } };
Class t = p.getType(); final boolean isCollection; final Class itemType; isCollection = true; itemType = TypeUtil.erasure( TypeUtil.getTypeArgument(TypeUtil.getBaseClass(p.getGenericType(),Collection.class),0)); } else { isCollection = false; e.maxOccurs("unbounded"); annotate(e,p.getJavadoc());
/** * Writes one value of the property to {@link DataWriter}. */ private void writeValue(Type expected, Object value, TreePruner pruner, DataWriter writer) throws IOException { writeValue(expected,value,pruner,writer,writer.getExportConfig().isSkipIfFail()); }
writeValue(expected,((CustomExportedBean)value).toExportedObject(),pruner,writer); return; writeBuffered(act, item, pruner, writer); writeBuffered(act, Array.get(value, i), pruner, writer); Type expectedItemType = Types.getTypeArgument(expected, 0, null); for (Object item : pruner.getRange().apply((Iterable) value)) { writeBuffered(expectedItemType, item, pruner, writer); BufferedDataWriter buffer = new BufferedDataWriter(writer.getExportConfig()); try { writeStartObjectNullType(buffer); buffer.name(verboseMap[0]); writeValue(null, e.getKey(), pruner, buffer); buffer.name(verboseMap[1]); writeValue(null, e.getValue(), pruner, buffer); buffer.endObject(); buffer.finished(); writeStartObjectNullType(writer); for (Map.Entry e : ((Map<?,?>) value).entrySet()) { BufferedDataWriter buffer = new BufferedDataWriter(writer.getExportConfig()); try { buffer.name(e.getKey().toString()); writeValue(null, e.getValue(), pruner, buffer); buffer.finished(); } catch (IOException x) {
@Override public Object getValue(Property property, Object model, ExportConfig config) throws IOException { try { return property.getValue(model); } catch (IllegalAccessException | InvocationTargetException e) { if(config.isSkipIfFail()) { LOGGER.log(Level.WARNING,"Failed to get \"" + property.name + "\" from a " + model.getClass().getName(), e); return SKIP; } throw new IOException("Failed to write " + property.name + ":" + e.getMessage(), e); } } };
Class t = p.getType(); final boolean isCollection; final Class itemType; isCollection = true; itemType = TypeUtil.erasure( TypeUtil.getTypeArgument(TypeUtil.getBaseClass(p.getGenericType(),Collection.class),0)); } else { isCollection = false; e.maxOccurs("unbounded"); annotate(e,p.getJavadoc());
private void writeBuffered(Type expected, Object value, TreePruner pruner, DataWriter writer) throws IOException { BufferedDataWriter buffer = new BufferedDataWriter(writer.getExportConfig()); try { writeValue(expected, value, pruner, buffer, true); buffer.finished(); } catch (IOException x) { if (x.getCause() instanceof InvocationTargetException) { LOGGER.log(Level.WARNING, "skipping export of " + value, x); } } buffer.commit(writer); }
@Override public Object getValue(Property property, Object model, ExportConfig config) throws IOException { try { return property.getValue(model); } catch (IllegalAccessException | InvocationTargetException | NotExportableException e) { if(property.name.equals("shouldBeSkipped")){ return SKIP; } throw new IOException(e); } } }
/** * @deprecated as of 1.139 */ public void writeTo(Object object, int depth, DataWriter writer) throws IOException { writeTo(object,new ByDepth(depth),writer); }
/** * Writes one value of the property to {@link DataWriter}. */ private void writeValue(Type expected, Object value, TreePruner pruner, DataWriter writer) throws IOException { writeValue(expected,value,pruner,writer,writer.getExportConfig().isSkipIfFail()); }
/** * @deprecated as of 1.139 */ public void writeTo(Object object, int depth, DataWriter writer) throws IOException { writeTo(object,new ByDepth(depth),writer); }
private void writeBuffered(Type expected, Object value, TreePruner pruner, DataWriter writer) throws IOException { BufferedDataWriter buffer = new BufferedDataWriter(writer.getExportConfig()); try { writeValue(expected, value, pruner, buffer, true); buffer.finished(); } catch (IOException x) { if (x.getCause() instanceof InvocationTargetException) { LOGGER.log(Level.WARNING, "skipping export of " + value, x); } } buffer.commit(writer); }
/** * @deprecated as of 1.139 */ public void writeTo(Object object, int depth, DataWriter writer) throws IOException { writeTo(object,new ByDepth(depth),writer); }
writeValue(((CustomExportedBean)value).toExportedObject(),pruner,writer); return; writeValue(item,pruner,writer,true); } else { writeValue(Array.get(value,i),pruner,writer,true); writer.startArray(); for (Object item : (Collection) value) writeValue(item,pruner,writer,true); writer.endArray(); return; writer.startObject(); writer.name(verboseMap[0]); writeValue(e.getKey(),pruner,writer); writer.name(verboseMap[1]); writeValue(e.getValue(),pruner,writer); writer.endObject(); for (Map.Entry e : ((Map<?,?>) value).entrySet()) { writer.name(e.getKey().toString()); writeValue(e.getValue(),pruner,writer);