private <X extends XmlObjectNode> X doCreateGivenXmlObjectImplClass( Class<X> xmlObjectImplClass) { assert xmlObjectImplClass != null; XmlObjectBinding binding = xmlContext.getClassMetadata().get( xmlObjectImplClass, ClassMetadataConstants.IMPLEMENTATION_CLASS_BINDING); return binding.create(xmlContext, xmlObjectImplClass); }
private <X extends XmlObjectNode> X doWrapGivenXmlObjectImplClass(Object obj, Class<X> xmlObjectImplClass) { assert xmlObjectImplClass != null; XmlObjectBinding binding = xmlContext.getClassMetadata().get( xmlObjectImplClass, ClassMetadataConstants.IMPLEMENTATION_CLASS_BINDING); return binding.wrap(xmlContext, xmlObjectImplClass, obj); }
/** * Wrap any {@link ModelObject} object into an implementation of * {@link XmlObject}. Implementation class is guessed from known * meta-information. If a QName is provided, it can be used as well. * * @param obj * Internal model object to be wrapped. * @return Newly created concrete {@link XmlObject}. */ public XmlObjectNode wrap(Object obj) { if (obj instanceof ModelObject) { ModelObject modelObject = (ModelObject) obj; if (modelObject.getXmlObject() != null) return modelObject.getXmlObject(); } for (XmlObjectBinding xob : xmlContext.getXmlObjectBindings()) { if (xob.canWrap(obj)) { return xob.wrap(xmlContext, obj); } } throw new UncheckedException( String.format( "Cannot find an XmlObjectBinding capable of wrapping object class '%s'.", obj.getClass())); }