All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.greenlaw110.rythm.internal.ExtensionManager Maven / Gradle / Ivy

Go to download

A strong typed high performance Java Template engine with .Net Razor like syntax

The newest version!
/* 
 * Copyright (C) 2013 The Rythm Engine project
 * Gelin Luo 
 *
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
*/
package com.greenlaw110.rythm.internal;

import com.greenlaw110.rythm.RythmEngine;
import com.greenlaw110.rythm.extension.ICodeType;
import com.greenlaw110.rythm.utils.S;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;


public class ExtensionManager {

    private final Set _extensions = new HashSet();
    private final RythmEngine engine;

    public ExtensionManager(RythmEngine engine) {
        if (null == engine) throw new NullPointerException();
        this.engine = engine;
    }

    /**
     * Add a Java extension
     *
     * @param javaExtension
     */
    public void registerJavaExtension(IJavaExtension javaExtension) {
        _extensions.add(javaExtension);
    }

    Iterable javaExtensions() {
        return _extensions;
    }

    /**
     * Is a specified method name a java extension?
     *
     * @param s
     * @return true if the name is a java extension
     */
    public boolean isJavaExtension(String s) {
        for (IJavaExtension ext : _extensions) {
            if (S.isEqual(s, ext.methodName())) {
                return true;
            }
        }
        return false;
    }

    public ExtensionManager registerUserDefinedParsers(IParserFactory... parsers) {
        return registerUserDefinedParsers(null, parsers);
    }

    /**
     * Register a special case parser to a dialect
     * 

*

for example, the play-rythm plugin might want to register a special case parser to * process something like @{Controller.actionMethod()} or &{'MSG_ID'} etc to "japid" * and "play-groovy" dialects * * @param dialect * @param parsers */ public ExtensionManager registerUserDefinedParsers(String dialect, IParserFactory... parsers) { engine.dialectManager().registerExternalParsers(dialect, parsers); return this; } private List expressionProcessors = new ArrayList(); public ExtensionManager registerExpressionProcessor(IExpressionProcessor p) { if (!expressionProcessors.contains(p)) expressionProcessors.add(p); return this; } public Iterable expressionProcessors() { return expressionProcessors; } private List codeTypeList = new ArrayList(); public ExtensionManager registerCodeType(ICodeType type) { codeTypeList.add(type); return this; } public Iterable templateLangs() { return codeTypeList; } public boolean hasTemplateLangs() { return !codeTypeList.isEmpty(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy