Repository: deltaspike Updated Branches: refs/heads/master 72b12c72e -> 694756022
DELTASPIKE-1068 Merge data ClassUtils to core ClassUtils Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/69475602 Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/69475602 Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/69475602 Branch: refs/heads/master Commit: 6947560220e43e010ea8f210fea19a1bfe1a6d72 Parents: 72b12c7 Author: Thomas Andraschko <[email protected]> Authored: Mon Mar 14 23:40:09 2016 +0100 Committer: Thomas Andraschko <[email protected]> Committed: Mon Mar 14 23:40:09 2016 +0100 ---------------------------------------------------------------------- .../apache/deltaspike/core/util/ClassUtils.java | 33 ++++++++++++++ .../data/impl/builder/DelegateQueryBuilder.java | 8 ++-- .../data/impl/tx/TransactionalQueryRunner.java | 8 ++-- .../deltaspike/data/impl/util/ClassUtils.java | 46 -------------------- 4 files changed, 39 insertions(+), 56 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/deltaspike/blob/69475602/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassUtils.java ---------------------------------------------------------------------- diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassUtils.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassUtils.java index af574c2..3737a48 100644 --- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassUtils.java +++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassUtils.java @@ -18,6 +18,7 @@ */ package org.apache.deltaspike.core.util; +import java.lang.reflect.Method; import javax.enterprise.inject.Typed; import java.security.AccessController; import java.security.PrivilegedAction; @@ -321,4 +322,36 @@ public abstract class ClassUtils String classLocation = targetClass.getResource(targetClass.getSimpleName() + ".class").toString(); return classLocation.substring(0, classLocation.indexOf(classFilePath) - 1) + manifestFilePath; } + + /** + * Checks if the given class contains a method with the same signature. + * + * @param targetClass The class to check + * @param method The source method + * @return if it contains a method with the same signature. + */ + public static boolean containsMethod(Class<?> targetClass, Method method) + { + return extractMethod(targetClass, method) != null; + } + + /** + * Extracts a method with same signature as the source method. + * + * @param clazz The target class + * @param sourceMethod The source method. + * @return the extracted method or <code>null</code> + */ + public static Method extractMethod(Class<?> clazz, Method sourceMethod) + { + try + { + String name = sourceMethod.getName(); + return clazz != null ? clazz.getMethod(name, sourceMethod.getParameterTypes()) : null; + } + catch (NoSuchMethodException e) + { + return null; + } + } } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/69475602/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/DelegateQueryBuilder.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/DelegateQueryBuilder.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/DelegateQueryBuilder.java index 1d9ca5d..a3eda41 100644 --- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/DelegateQueryBuilder.java +++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/DelegateQueryBuilder.java @@ -18,9 +18,6 @@ */ package org.apache.deltaspike.data.impl.builder; -import static org.apache.deltaspike.data.impl.util.ClassUtils.contains; -import static org.apache.deltaspike.data.impl.util.ClassUtils.extract; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Set; @@ -33,6 +30,7 @@ import javax.inject.Inject; import javax.persistence.PersistenceException; import org.apache.deltaspike.core.api.provider.BeanProvider; +import org.apache.deltaspike.core.util.ClassUtils; import org.apache.deltaspike.data.api.QueryInvocationException; import org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext; import org.apache.deltaspike.data.impl.meta.MethodType; @@ -74,7 +72,7 @@ public class DelegateQueryBuilder extends QueryBuilder .getBeanDefinitions(DelegateQueryHandler.class, true, true); for (Bean<DelegateQueryHandler> bean : beans) { - if (contains(bean.getBeanClass(), context.getMethod())) + if (ClassUtils.containsMethod(bean.getBeanClass(), context.getMethod())) { if (bean.getScope().equals(Dependent.class)) { @@ -113,7 +111,7 @@ public class DelegateQueryBuilder extends QueryBuilder protected Object invoke(Object target, Method method, Object[] args) throws InvocationTargetException, IllegalAccessException { - Method extract = extract(target.getClass(), method); + Method extract = ClassUtils.extractMethod(target.getClass(), method); return extract.invoke(target, args); } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/69475602/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java index 5b8da3c..2e3eab0 100644 --- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java +++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java @@ -18,13 +18,11 @@ */ package org.apache.deltaspike.data.impl.tx; -import static org.apache.deltaspike.data.impl.util.ClassUtils.contains; -import static org.apache.deltaspike.data.impl.util.ClassUtils.extract; - import java.lang.reflect.Method; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; +import org.apache.deltaspike.core.util.ClassUtils; import org.apache.deltaspike.data.impl.builder.QueryBuilder; import org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext; @@ -85,9 +83,9 @@ public class TransactionalQueryRunner implements QueryRunner { boolean requiresTx = false; Method method = context.getMethod(); - if (contains(EntityRepositoryHandler.class, method)) + if (ClassUtils.containsMethod(EntityRepositoryHandler.class, method)) { - Method executed = extract(EntityRepositoryHandler.class, method); + Method executed = ClassUtils.extractMethod(EntityRepositoryHandler.class, method); requiresTx = executed.isAnnotationPresent(RequiresTransaction.class); } return requiresTx || context.getRepositoryMethod().requiresTransaction(); http://git-wip-us.apache.org/repos/asf/deltaspike/blob/69475602/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/util/ClassUtils.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/util/ClassUtils.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/util/ClassUtils.java deleted file mode 100644 index d1e73ff..0000000 --- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/util/ClassUtils.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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 org.apache.deltaspike.data.impl.util; - -import java.lang.reflect.Method; - -public class ClassUtils -{ - private ClassUtils() - { - } - - public static boolean contains(Class<?> obj, Method method) - { - return extract(obj, method) != null; - } - - public static Method extract(Class<?> clazz, Method method) - { - try - { - String name = method.getName(); - return clazz != null ? clazz.getMethod(name, method.getParameterTypes()) : null; - } - catch (NoSuchMethodException e) - { - return null; - } - } -}
