/** TreeBuilderFactory.java. Purpose: Description: History: 4:49:47 PM Sep 25, 2014, Created by jumperchen Copyright (C) 2014 Potix Corporation. All Rights Reserved. */ package org.zkoss.zk.ui.metainfo; import org.zkoss.lang.Classes; import org.zkoss.zk.ui.UiException; /** * A tree builder factory to load a parser dynamically * @author jumperchen * @since 8.0.0 */ public class TreeBuilderFactory { /** * Creates a tree builder depended on its file extension. * <p> If the file extension is missing in the {@link LanguageDefinition}, and the class of * {@link XmlTreeBuilder} is assumed. */ public static TreeBuilder makeBuilder(String extension) { LanguageDefinition ldf = LanguageDefinition.getByExtension(extension); String treeBuilderClass = ldf.getTreeBuilderClass(); if (treeBuilderClass == null || "org.zkoss.zk.ui.metainfo.XulTreeBuilder".equals(treeBuilderClass)) return new XmlTreeBuilder(); try { return (TreeBuilder) Classes.newInstance(Classes.forNameByThread(treeBuilderClass), null); } catch (Exception ex) { throw UiException.Aide.wrap(ex); } } }