@SuppressWarnings("unchecked")
    public SqlMapClient parse(String path) {
        if (path == null) {
            path = "/conf/SqlMapConfig.xml";
            logger.debug("Use default SqlMapConfig file path : " + path);
        }
        try {
            Document document = reader.read(this.getClass().getResource(path));
            Element sqlMapConfig = document.getRootElement();
            Iterator<Element> baseIt = sqlMapConfig.elementIterator();
            BeanConfigParser beanConfigParser = new BeanConfigParser(delegate,reader);
            while (baseIt.hasNext()) {
                Element e = baseIt.next();
                if (e.getQName().getName().equals("transactionManager")) {
                    logger.debug("Start parse transactionManager");
                    parseTransactionManager(e);
                    logger.debug("End parse transactionManager");
                } else if (e.getQName().getName().equals("sqlMap")) {
                    String classPath = e.attribute("resource").getValue();
                    logger.debug("Start parse" + classPath);
                    beanConfigParser.parseSqlMap(classPath);
                    logger.debug("End parse" + classPath);
                }
            }
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        return client;
    }