@Override public JAXBElement<?> map(ArrayItem item, JAXBElement<?> origin) { JAXBElement<?> source = origin; if (origin == null) { if (item instanceof ExtentItem) { source = factory.createPhysicalDescriptionTypeExtent(null); } else if (item instanceof NoteItem) { NoteItem noteItem = (NoteItem) item; NoteType noteType = factory.createNoteType(); noteType.setAtType(noteItem.getType()); source = factory.createPhysicalDescriptionTypeNote(noteType); } else { throw new IllegalStateException("unsupported array item: " + item.getClass()); } } if (item instanceof ExtentItem) { ExtentItem extentItem = (ExtentItem) item; JAXBElement<String> extentSource = (JAXBElement<String>) source; // delete with empty string to prevent XML nil extentSource.setValue(extentItem.getValue() != null ? extentItem.getValue() : ""); } else if (item instanceof NoteItem && !((NoteItem) item).ignore) { NoteItem noteItem = (NoteItem) item; NoteType noteType = (NoteType) source.getValue(); noteType.setValue(noteItem.getValue()); } return source; }
@Override public ArrayItem map(JAXBElement<?> source) { if (ObjectFactory._PhysicalDescriptionTypeExtent_QNAME.equals(source.getName())) { ExtentItem result = new ExtentItem(); result.setValue((String) source.getValue()); return result; } else if (ObjectFactory._PhysicalDescriptionTypeNote_QNAME.equals(source.getName())) { NoteType note = (NoteType) source.getValue(); return new NoteItem(null, note.getValue(), note.getAtType()); } else { return new UnkownItem(); } }