This commit is contained in:
@@ -266,6 +266,7 @@ public abstract class Sncp {
|
|||||||
protected static <T extends Service> Class<? extends T> createLocalServiceClass(ClassLoader classLoader, final String name, final Class<T> serviceImplClass) {
|
protected static <T extends Service> Class<? extends T> createLocalServiceClass(ClassLoader classLoader, final String name, final Class<T> serviceImplClass) {
|
||||||
if (serviceImplClass == null) return null;
|
if (serviceImplClass == null) return null;
|
||||||
if (!Service.class.isAssignableFrom(serviceImplClass)) return serviceImplClass;
|
if (!Service.class.isAssignableFrom(serviceImplClass)) return serviceImplClass;
|
||||||
|
ResourceFactory.checkName(name);
|
||||||
int mod = serviceImplClass.getModifiers();
|
int mod = serviceImplClass.getModifiers();
|
||||||
if (!java.lang.reflect.Modifier.isPublic(mod)) return serviceImplClass;
|
if (!java.lang.reflect.Modifier.isPublic(mod)) return serviceImplClass;
|
||||||
if (java.lang.reflect.Modifier.isAbstract(mod)) return serviceImplClass;
|
if (java.lang.reflect.Modifier.isAbstract(mod)) return serviceImplClass;
|
||||||
@@ -890,6 +891,7 @@ public abstract class Sncp {
|
|||||||
final AnyValue conf) {
|
final AnyValue conf) {
|
||||||
if (serviceTypeOrImplClass == null) return null;
|
if (serviceTypeOrImplClass == null) return null;
|
||||||
if (!Service.class.isAssignableFrom(serviceTypeOrImplClass)) return null;
|
if (!Service.class.isAssignableFrom(serviceTypeOrImplClass)) return null;
|
||||||
|
ResourceFactory.checkName(name);
|
||||||
int mod = serviceTypeOrImplClass.getModifiers();
|
int mod = serviceTypeOrImplClass.getModifiers();
|
||||||
boolean realed = !(java.lang.reflect.Modifier.isAbstract(mod) || serviceTypeOrImplClass.isInterface());
|
boolean realed = !(java.lang.reflect.Modifier.isAbstract(mod) || serviceTypeOrImplClass.isInterface());
|
||||||
if (!java.lang.reflect.Modifier.isPublic(mod)) return null;
|
if (!java.lang.reflect.Modifier.isPublic(mod)) return null;
|
||||||
|
|||||||
@@ -96,15 +96,15 @@ public final class ResourceFactory {
|
|||||||
* 检查资源名是否合法
|
* 检查资源名是否合法
|
||||||
* <blockquote><pre>
|
* <blockquote><pre>
|
||||||
* name规则:
|
* name规则:
|
||||||
* 1: "$"有特殊含义, 不能表示"$"资源本身
|
* 1: "$"有特殊含义, 表示资源本身,"$"不能单独使用
|
||||||
* 2: 只能是字母、数字、(短横)-、(下划线)_、点(.)的组合
|
* 2: 只能是字母、数字、(短横)-、(下划线)_、点(.)的组合
|
||||||
* </pre></blockquote>
|
* </pre></blockquote>
|
||||||
*
|
*
|
||||||
* @param name String
|
* @param name String
|
||||||
*/
|
*/
|
||||||
public void checkName(String name) {
|
public static void checkName(String name) {
|
||||||
if (name == null || (!name.isEmpty() && !name.matches("^[a-zA-Z0-9_;\\-\\.\\[\\]\\(\\)]+$"))) {
|
if (name == null || (!name.isEmpty() && !name.matches("^[a-zA-Z0-9_;\\-\\.\\[\\]\\(\\)]+$"))) {
|
||||||
throw new IllegalArgumentException("Resource.name(" + name + ") contains illegal character, must be (a-z,A-Z,0-9,_,.,(,),-,[,])");
|
throw new IllegalArgumentException("name(" + name + ") contains illegal character, must be (a-z,A-Z,0-9,_,.,(,),-,[,])");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user