package net.jhorstmann.i18n.jsf; import javax.faces.component.UIComponent; import javax.faces.view.facelets.*; import java.io.IOException; class TagHelper { static void applyHandler(FaceletContext ctx, Tag tag, FaceletHandler nextHandler, UIComponent comp, String contentAttribute) throws IOException { if (nextHandler instanceof TextHandler) { TextHandler textHandler = (TextHandler) nextHandler; String message = textHandler.getText(ctx).trim(); if (!message.isEmpty()) { comp.getAttributes().put(contentAttribute, message); } } else if (nextHandler instanceof CompositeFaceletHandler) { StringBuilder content = new StringBuilder(); FaceletHandler[] handlers = ((CompositeFaceletHandler) nextHandler).getHandlers(); for (int i = 0, len = handlers.length; i < len; i++) { if (handlers[i] instanceof TextHandler) { TextHandler textHandler = (TextHandler) handlers[i]; content.append(textHandler.getText(ctx)); } else { handlers[i].apply(ctx, comp); } } String message = content.toString().trim(); if (!message.isEmpty()) { comp.getAttributes().put(contentAttribute, message); } } else { nextHandler.apply(ctx, comp); } } }