From f454a1f3d6b22dd7f4008d7fdd1011122b3cf2d4 Mon Sep 17 00:00:00 2001 From: Rafael Benevides Date: Tue, 2 Jun 2015 15:15:06 -0400 Subject: [PATCH] DELTASPIKE-905 - move the code from ProxyClassGeneratorLookup to DeltaSpikeProxyFactory (1:1) --- .../proxy/api/DeltaSpikeProxyFactory.java | 41 ++++++++++- .../proxy/api/ProxyClassGeneratorLookup.java | 68 ------------------- .../OSGI-INF/ProxyClassGeneratorLookup.xml | 8 +-- 3 files changed, 44 insertions(+), 73 deletions(-) delete mode 100644 deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/ProxyClassGeneratorLookup.java diff --git a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyFactory.java b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyFactory.java index 6232d9bb0..d66947e0d 100644 --- a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyFactory.java +++ b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyFactory.java @@ -26,14 +26,53 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; + import javax.interceptor.InterceptorBinding; + import org.apache.deltaspike.core.util.ClassUtils; +import org.apache.deltaspike.core.util.ServiceUtils; import org.apache.deltaspike.proxy.spi.ProxyClassGenerator; public abstract class DeltaSpikeProxyFactory { private static final String SUPER_ACCESSOR_METHOD_SUFFIX = "$super"; + private static ProxyClassGenerator generator; + + /** + * Looks up a unique service implementation. + * + * @return ProxyClassGenerator service + */ + private static ProxyClassGenerator lookupService() + { + if (generator == null) + { + List proxyClassGeneratorList = ServiceUtils + .loadServiceImplementations(ProxyClassGenerator.class); + + if (proxyClassGeneratorList.size() != 1) + { + throw new IllegalStateException(proxyClassGeneratorList.size() + + " implementations of " + ProxyClassGenerator.class.getName() + + " found. Expected exactly one implementation."); + } + generator = proxyClassGeneratorList.get(0); + } + return generator; + } + + /** + * Setter invoked by OSGi Service Component Runtime + * + * @param generator + * generator service + */ + public void setGenerator(ProxyClassGenerator generator) + { + DeltaSpikeProxyFactory.generator = generator; + } + public Class getProxyClass(Class targetClass, Class delegateInvocationHandlerClass) { @@ -75,7 +114,7 @@ private synchronized Class createProxyClass(ClassLoader classLoader, Clas } } - ProxyClassGenerator proxyClassGenerator = ProxyClassGeneratorLookup.lookupService(); + ProxyClassGenerator proxyClassGenerator = lookupService(); proxyClass = proxyClassGenerator.generateProxyClass(classLoader, targetClass, diff --git a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/ProxyClassGeneratorLookup.java b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/ProxyClassGeneratorLookup.java deleted file mode 100644 index 38d44de09..000000000 --- a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/ProxyClassGeneratorLookup.java +++ /dev/null @@ -1,68 +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.proxy.api; - -import java.util.List; - -import org.apache.deltaspike.core.util.ServiceUtils; -import org.apache.deltaspike.proxy.spi.ProxyClassGenerator; - -/** - * Looks up a {@link ProxyClassGenerator} via Java SE ServiceLoader or via Declarative Services - * injection when running under OSGi. - */ -public class ProxyClassGeneratorLookup -{ - - private static ProxyClassGenerator generator; - - /** - * Looks up a unique service implementation. - * - * @return ProxyClassGenerator service - */ - public static ProxyClassGenerator lookupService() - { - if (generator == null) - { - List proxyClassGeneratorList = ServiceUtils - .loadServiceImplementations(ProxyClassGenerator.class); - - if (proxyClassGeneratorList.size() != 1) - { - throw new IllegalStateException(proxyClassGeneratorList.size() - + " implementations of " + ProxyClassGenerator.class.getName() - + " found. Expected exactly one implementation."); - } - generator = proxyClassGeneratorList.get(0); - } - return generator; - } - - /** - * Setter invoked by OSGi Service Component Runtime - * - * @param generator - * generator service - */ - public void setGenerator(ProxyClassGenerator generator) - { - ProxyClassGeneratorLookup.generator = generator; - } -} diff --git a/deltaspike/modules/proxy/api/src/main/resources/OSGI-INF/ProxyClassGeneratorLookup.xml b/deltaspike/modules/proxy/api/src/main/resources/OSGI-INF/ProxyClassGeneratorLookup.xml index 843788267..ff1e6fec0 100644 --- a/deltaspike/modules/proxy/api/src/main/resources/OSGI-INF/ProxyClassGeneratorLookup.xml +++ b/deltaspike/modules/proxy/api/src/main/resources/OSGI-INF/ProxyClassGeneratorLookup.xml @@ -17,8 +17,8 @@ specific language governing permissions and limitations under the License. --> - - - + + +