org.seasar.mayaa.impl.engine.EngineUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mayaa Show documentation
Show all versions of mayaa Show documentation
Mayaa is server side web template engine that is strongly aware of work sharing between programmers and designers based on HTML based templates.
The newest version!
/*
* Copyright 2004-2012 the Seasar Foundation and the Others.
*
* Licensed 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 org.seasar.mayaa.impl.engine;
import java.io.IOException;
import org.seasar.mayaa.FactoryFactory;
import org.seasar.mayaa.cycle.scope.ApplicationScope;
import org.seasar.mayaa.engine.Engine;
import org.seasar.mayaa.engine.Page;
import org.seasar.mayaa.engine.Template;
import org.seasar.mayaa.engine.processor.ProcessorTreeWalker;
import org.seasar.mayaa.engine.specification.NodeTreeWalker;
import org.seasar.mayaa.engine.specification.Specification;
import org.seasar.mayaa.impl.CONST_IMPL;
import org.seasar.mayaa.impl.cycle.CycleUtil;
import org.seasar.mayaa.impl.engine.specification.SpecificationUtil;
import org.seasar.mayaa.impl.provider.ProviderUtil;
import org.seasar.mayaa.impl.source.SourceUtil;
import org.seasar.mayaa.impl.util.ObjectUtil;
import org.seasar.mayaa.source.SourceDescriptor;
/**
* @author Masataka Kurihara (Gluegent, Inc.)
*/
public class EngineUtil implements CONST_IMPL {
private EngineUtil() {
// no instantiation.
}
private static String _mayaaExtensionName;
/**
* Google App Engineのような、セキュアなWeb環境設定か否かを返却する。
* 有効にする場合はシステムプロパティ org.seasar.mayaa.secure.web に true を設定する。
*
* @return セキュアなWeb環境の設定がされている場合は true
*/
public static boolean isInSecureWeb() {
return Boolean.getBoolean(CONST_IMPL.SECURE_WEB_KEY);
}
/**
* 現在デバッグモードかどうかを返します。
* @return 現在がデバッグモードなら{@code true}、そうでなければ{@code false}。
*/
public static boolean isDebugMode() {
ApplicationScope scope = FactoryFactory.getApplicationScope();
if (scope != null) {
return ObjectUtil.booleanValue(scope.getAttribute(DEBUG), false);
}
return false;
}
public static boolean isClientAbortException(Throwable t) {
if (t instanceof IOException) {
IOException e = (IOException) t;
String simpleClassName = ObjectUtil.getSimpleClassName(e.getClass());
switch (simpleClassName.charAt(0)) {
case 'E':
return simpleClassName.equals("EOFException");
case 'C':
return simpleClassName.equals("ClientAbortException");
}
}
return false;
}
/**
* 高速化のため、Mayaaファイルの拡張子("."を含まない)を{@link EngineUtil}内に
* キャッシュします。
*
* @return Mayaaファイルの拡張子("."を含まない)
*/
public static String getMayaaExtensionName() {
if (_mayaaExtensionName == null) {
renewMayaaExtensionName();
}
return _mayaaExtensionName;
}
public static void renewMayaaExtensionName() {
_mayaaExtensionName =
getEngineSetting(MAYAA_EXTENSION, ".mayaa").substring(1);
}
public static String getEngineSetting(
String name, String defaultValue) {
Engine engine = ProviderUtil.getEngine();
String value = engine.getParameter(name);
if (value != null) {
return value;
}
return defaultValue;
}
public static boolean getEngineSettingBoolean(
String name, boolean defaultValue) {
Engine engine = ProviderUtil.getEngine();
String value = engine.getParameter(name);
return ObjectUtil.booleanValue(value, defaultValue);
}
public static String getSourcePath() {
Specification spec = SpecificationUtil.findSpecification();
if (spec == null) {
String path = CycleUtil.getServiceCycle().getRequestScope().getRequestedPath();
SourceDescriptor source = SourceUtil.getSourceDescriptor(path);
return source.getSystemID();
}
return spec.getSystemID();
}
public static String getSourcePath(ProcessorTreeWalker proc) {
for (ProcessorTreeWalker current = proc;
current != null; current = current.getStaticParentProcessor()) {
if (current instanceof Template) {
return ((Template) current).getSystemID();
}
}
throw new IllegalStateException("unknown sourcePath from processor");
}
public static String getSourcePath(NodeTreeWalker node) {
return node.getSystemID();
}
public static Template getTemplate() {
Specification spec = SpecificationUtil.findSpecification();
if (spec instanceof Page) {
NodeTreeWalker parent = spec.getParentNode();
if (parent != null) {
spec = SpecificationUtil.findSpecification();
} else {
return null;
}
}
if (spec instanceof Template) {
return (Template) spec;
}
throw new IllegalStateException("template not found");
}
public static Template getTemplate(ProcessorTreeWalker proc) {
for (ProcessorTreeWalker current = proc;
current != null; current = current.getStaticParentProcessor()) {
if (current instanceof Template) {
return (Template) current;
}
}
throw new IllegalStateException("template not found from current processor");
}
public static Specification getParentSpecification(Specification spec) {
return ProviderUtil.getParentSpecificationResolver().getParentSpecification(spec);
}
}