+ @SuppressWarnings("unchecked")
+ @Override
+ public <A> A adapt(Class<A> clss) throws IllegalArgumentException {
+ if (CharBuffer.class.isAssignableFrom(clss)) {
+ String textContent = element.getTextContent();
+ CharBuffer buf = CharBuffer.wrap(textContent);
+ return (A) buf;
+ }
+ return super.adapt(clss);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <A> CompletableFuture<A> write(Class<A> clss) {
+ if (String.class.isAssignableFrom(clss)) {
+ CompletableFuture<String> res = new CompletableFuture<>();
+ res.thenAccept((s) -> {
+ getSession().notifyModification(this);
+ element.setTextContent(s);
+ });
+ return (CompletableFuture<A>) res;
+ }
+ return super.write(clss);
+ }
+
+ /*
+ * TYPING
+ */
+ @Override
+ public List<QName> getContentClasses() {
+ List<QName> res = new ArrayList<>();
+ res.add(getName());
+ return res;