use of com.sun.jsftemplating.layout.descriptors.ComponentType in project Payara by payara.
the class PluginHandlers method includeFirstIntegrationPoint.
/**
* Includes the first IP based on priority for the given type. It adds
* the content to the given UIComponent root. If the IP content looks
* like a URL (contains ://), a StaticText component will be added with
* the value of the content from the URL.
*/
@Handler(id = "includeFirstIntegrationPoint", input = { @HandlerInput(name = "type", type = String.class, required = true), @HandlerInput(name = "root", type = UIComponent.class, required = false) })
public static void includeFirstIntegrationPoint(HandlerContext handlerCtx) throws java.io.IOException {
// Get the input
String type = (String) handlerCtx.getInputValue("type");
UIComponent root = (UIComponent) handlerCtx.getInputValue("root");
// Get the IntegrationPoints
FacesContext ctx = handlerCtx.getFacesContext();
Set<IntegrationPoint> points = getSortedIntegrationPoints(getIntegrationPoints(ctx, type));
if (points != null) {
Iterator<IntegrationPoint> it = points.iterator();
if (it.hasNext()) {
// Get the first one...
IntegrationPoint point = it.next();
root = getIntegrationPointParent(ctx, root, point);
// Check to see if IP points to an external URL...
if (point.getContent().lastIndexOf("://", 15) != -1) {
// Treat content as a url...
URL contentURL = FileUtil.searchForFile(point.getContent(), null);
if (contentURL == null) {
throw new IOException("Unable to locate file: " + point.getContent());
}
// Read the content...
String content = new String(FileUtil.readFromURL(contentURL));
// Create a StaticText component and add it under the
// "root" component.
LayoutComponent stDesc = new LayoutComponent(null, "externalContent", new ComponentType("tmpTextCT", "com.sun.jsftemplating.component.factory.basic.StaticTextFactory"));
stDesc.addOption("value", content);
ComponentUtil.getInstance(ctx).createChildComponent(ctx, stDesc, root);
} else {
// Include the first one...
includeIntegrationPoint(ctx, root, point);
}
}
}
}
Aggregations