/** * Copyright (c) 2015, biezhi 王爵 (biezhi.me@gmail.com) * <p> * 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 * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * 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.blade.config; import com.blade.Const; import com.blade.kit.Assert; import com.blade.kit.CollectionKit; import com.blade.kit.StringKit; import com.blade.kit.base.Config; import com.blade.mvc.context.DynamicContext; import com.blade.mvc.view.ViewSettings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import static com.blade.Blade.$; /** * Blade Application Config Class * * @author <a href="mailto:biezhi.me@gmail.com" target="_blank">biezhi</a> * @since 1.6.6 */ public class BConfig { private static final Logger LOGGER = LoggerFactory.getLogger(BConfig.class); private Set<String> packages; private Set<String> statics; // Encoding private String encoding = Const.DEFAULT_ENCODING; // Is dev mode private boolean isDev = true; private boolean isInit = false; private String webRoot; private Class<?> applicationClass; private String classPath = "config"; private Config config = new Config(); private String basePackage; public BConfig() { this.packages = CollectionKit.newHashSet(); this.statics = new HashSet<>(CollectionKit.asList("/public/", "/assets/", "/static/")); } public void setEnv(Config config) { if (null != config && !isInit) { this.isDev = config.getBoolean(Const.APP_DEV, true); this.basePackage = config.get(Const.APP_BASE_PKG); // config scan ioc packages String pkgs = config.get(Const.APP_SCAN); if (StringKit.isNotBlank(pkgs)) { String[] pkArr = StringKit.split(pkgs, ","); packages.addAll(CollectionKit.asList(pkArr)); } // get view 404, 500 page ViewSettings.$().setView500(config.get(Const.MVC_VIEW_500)); ViewSettings.$().setView404(config.get(Const.MVC_VIEW_404)); this.encoding = config.get(Const.HTTP_ENCODING, Const.DEFAULT_ENCODING); // get mvc static folders String statics = config.get(Const.MVC_STATICS); this.classPath = config.get(Const.APP_CLASSPATH, "config"); // get server start port int port = config.getInt(Const.SERVER_PORT, Const.DEFAULT_PORT); $().listen(port); if (StringKit.isNotBlank(statics)) { this.addStatic(StringKit.split(statics, ',')); } if (StringKit.isNotBlank(basePackage)) { this.setBasePackage(basePackage); } isInit = true; } } public boolean isDev() { return isDev; } public String getEncoding() { return encoding; } public boolean isInit() { return this.isInit; } public String webRoot() { return this.webRoot; } public Class<?> getApplicationClass() { return applicationClass; } public void setApplicationClass(Class<?> applicationClass) { this.applicationClass = applicationClass; DynamicContext.init(applicationClass); } public void setBasePackage(String basePackage) { Assert.notBlank(basePackage); packages.add(basePackage + ".controller"); packages.add(basePackage + ".service"); packages.add(basePackage + ".config"); packages.add(basePackage + ".context"); packages.add(basePackage + ".plugins"); packages.add(basePackage + ".init"); packages.add(basePackage + ".interceptor"); } public String getBasePackage() { return basePackage; } public void setWebRoot(String webRoot) { this.webRoot = webRoot; } public void setDev(boolean isDev) { this.isDev = isDev; } public String getClassPath() { return classPath; } public void load(String location) { try { config.add(location); } catch (Exception e) { LOGGER.warn("[load config] " + e.getMessage()); } } public Config config() { return config; } public void addScanPackage(String... packages) { if (null != packages && packages.length > 0) { this.packages.addAll(CollectionKit.asList(packages)); } } public Set<String> getStatics() { return statics; } public void addStatic(String[] statics) { if (null != statics && statics.length > 0) { this.statics.addAll(Arrays.asList(statics)); } } public Set<String> getPackages() { return packages; } }