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

net.paoding.rose.scanning.LoadScope Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2007-2009 the original author or authors.
 *
 * 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 net.paoding.rose.scanning;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.lang.StringUtils;

/**
 * 
 * @author 王志亮 [[email protected]]
 * 
 */
public class LoadScope {

    // controllers->com.yourcompany.yourapp
    // applicationContext->com.yourcampany.yourapp
    // ...
    private Map load = new HashMap();

    /**
     * 通过一个一个开发者设置的字符串,创建一个LoadScope对象。
     * 如果在loadScope中没有指定componetType的,使用defType作为他的componetType.
     * 

* loadScopeString: componetConf [; componetConf]*
* componetConf: [componetType = ] componetConfValue
* componetType: 'controllers' | 'applicationContext' | 'messages' | * '*'
* componetConfValue: package [, packages]*
* * @param loadScopeString * @param defType */ public LoadScope(String loadScopeString, String defType) { init(loadScopeString, defType); } public String[] getScope(String componentType) { String[] scope = this.load.get(componentType); if (scope == null) { scope = this.load.get("*"); } return scope; } private void init(String loadScope, String defType) { if (StringUtils.isBlank(loadScope) || "*".equals(loadScope)) { return; } loadScope = loadScope.trim(); String[] componetConfs = StringUtils.split(loadScope, ";"); for (String componetConf : componetConfs) { if (StringUtils.isBlank(loadScope)) { continue; } // 代表"controllers=com.renren.xoa, com.renren.yourapp"串 componetConf = componetConf.trim(); int componetTypeIndex; String componetType = defType; // 代表"controllers", "applicationContext", "dao", "messages", "*"等串 String componetConfValue = componetConf; if ((componetTypeIndex = componetConf.indexOf('=')) != -1) { componetType = componetConf.substring(0, componetTypeIndex).trim(); componetConfValue = componetConf.substring(componetTypeIndex + 1).trim(); } if (componetType.startsWith("!")) { componetType = componetType.substring(1); } else { componetConfValue = componetConfValue + ", net.paoding.rose"; } String[] packages = StringUtils.split(componetConfValue, ", \t\n\r\0");//都好和\t之间有一个空格 this.load.put(componetType, packages); } } @Override public String toString() { StringBuilder sb = new StringBuilder(); for (Entry componetConf : load.entrySet()) { String componetType = componetConf.getKey(); String componetConfValue[] = componetConf.getValue(); sb.append(componetType).append("="); for (String value : componetConfValue) { sb.append(value).append(";"); } if (componetConfValue.length > 0) { sb.setLength(sb.length() - 1); } } return super.toString(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy