cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Beryozkin <sberyoz...@gmail.com>
Subject Re: cxf git commit: [CXF-6131]extract spring-osgi related stuff into an seperate class to avoid possible JVMs failing with some eager resolution class loading exceptions in non-OSGI
Date Thu, 04 Dec 2014 11:30:12 GMT
Have a look please at the latest commit - that should work...

Cheers, Sergey
On 04/12/14 10:08, Sergey Beryozkin wrote:
> Hi Freeman
>
> Thanks, after looking at this code I've realized we can revert the
> changes to CXFActivator too - those classes Spring Osgi deals with are
> only making sense in OSGi so we can further polish the code - I'll play
> a bit later on and let you know about the changes...
>
> Cheers, Sergey
> On 04/12/14 08:27, ffang@apache.org wrote:
>> Repository: cxf
>> Updated Branches:
>>    refs/heads/master 2b2f97fe1 -> d50ffd09c
>>
>>
>> [CXF-6131]extract spring-osgi related stuff into an seperate class to
>> avoid possible JVMs failing with some eager resolution class loading
>> exceptions in non-OSGI
>>
>>
>> Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/d50ffd09
>> Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/d50ffd09
>> Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/d50ffd09
>>
>> Branch: refs/heads/master
>> Commit: d50ffd09c30e606524fb6ed92119d85ccfa13491
>> Parents: 2b2f97f
>> Author: Freeman Fang <freeman.fang@gmail.com>
>> Authored: Thu Dec 4 16:27:32 2014 +0800
>> Committer: Freeman Fang <freeman.fang@gmail.com>
>> Committed: Thu Dec 4 16:27:32 2014 +0800
>>
>> ----------------------------------------------------------------------
>>   .../cxf/common/util/SpringClasspathScanner.java | 33 ++++++--------
>>   .../apache/cxf/common/util/SpringOsgiUtil.java  | 48
>> ++++++++++++++++++++
>>   2 files changed, 63 insertions(+), 18 deletions(-)
>> ----------------------------------------------------------------------
>>
>>
>> http://git-wip-us.apache.org/repos/asf/cxf/blob/d50ffd09/core/src/main/java/org/apache/cxf/common/util/SpringClasspathScanner.java
>>
>> ----------------------------------------------------------------------
>> diff --git
>> a/core/src/main/java/org/apache/cxf/common/util/SpringClasspathScanner.java
>> b/core/src/main/java/org/apache/cxf/common/util/SpringClasspathScanner.java
>>
>> index de9369e..f36a645 100644
>> ---
>> a/core/src/main/java/org/apache/cxf/common/util/SpringClasspathScanner.java
>>
>> +++
>> b/core/src/main/java/org/apache/cxf/common/util/SpringClasspathScanner.java
>>
>> @@ -30,8 +30,6 @@ import java.util.Map;
>>
>>   import org.apache.cxf.bus.osgi.CXFActivator;
>>   import org.apache.cxf.common.classloader.ClassLoaderUtils;
>> -import org.osgi.framework.Bundle;
>> -import org.osgi.framework.FrameworkUtil;
>>   import org.springframework.core.io.Resource;
>>   import
>> org.springframework.core.io.support.PathMatchingResourcePatternResolver;
>>   import org.springframework.core.io.support.ResourcePatternResolver;
>> @@ -39,17 +37,27 @@ import
>> org.springframework.core.type.AnnotationMetadata;
>>   import
>> org.springframework.core.type.classreading.CachingMetadataReaderFactory;
>>   import org.springframework.core.type.classreading.MetadataReader;
>>   import
>> org.springframework.core.type.classreading.MetadataReaderFactory;
>> -import org.springframework.osgi.io.OsgiBundleResourcePatternResolver;
>> -import org.springframework.osgi.util.BundleDelegatingClassLoader;
>>   import org.springframework.util.ClassUtils;
>>
>>   class SpringClasspathScanner extends ClasspathScanner {
>> +
>> +    static final SpringOsgiUtil SPRING_OSGI_UTIL;
>> +
>> +    static {
>> +        SpringOsgiUtil springOsgiUtil = null;
>> +        try {
>> +            springOsgiUtil = new SpringOsgiUtil();
>> +        } catch (Throwable ex) {
>> +            springOsgiUtil = null;
>> +        }
>> +        SPRING_OSGI_UTIL = springOsgiUtil;
>> +    }
>> +
>>       SpringClasspathScanner() throws Exception {
>>
>> Class.forName("org.springframework.core.io.support.PathMatchingResourcePatternResolver");
>>
>>
>> Class.forName("org.springframework.core.type.classreading.CachingMetadataReaderFactory");
>>
>>       }
>>
>> -
>>       protected Map< Class< ? extends Annotation >, Collection< Class<
>> ? > > > findClassesInternal(
>>           Collection< String > basePackages,
>>           List<Class< ? extends Annotation > > annotations,
>> @@ -161,19 +169,8 @@ class SpringClasspathScanner extends
>> ClasspathScanner {
>>       }
>>
>>       private ResourcePatternResolver getResolver(ClassLoader loader) {
>> -        if (CXFActivator.isInOSGi()) {
>> -            //in OSGi should use spring-dm
>> OsgiBundleResourcePatternResolver
>> -            // which can handle bundle url
>> -            Bundle bundle = null;
>> -            if (loader == null) {
>> -                loader = Thread.currentThread().getContextClassLoader();
>> -            }
>> -            if (loader instanceof BundleDelegatingClassLoader) {
>> -                bundle =
>> ((BundleDelegatingClassLoader)loader).getBundle();
>> -            } else {
>> -                bundle =
>> FrameworkUtil.getBundle(SpringClasspathScanner.class);
>> -            }
>> -            return new OsgiBundleResourcePatternResolver(bundle);
>> +        if (CXFActivator.isInOSGi() && SPRING_OSGI_UTIL != null) {
>> +            return SPRING_OSGI_UTIL.getResolver(loader);
>>           } else {
>>               return loader != null
>>                   ? new PathMatchingResourcePatternResolver(loader) :
>> new PathMatchingResourcePatternResolver();
>>
>> http://git-wip-us.apache.org/repos/asf/cxf/blob/d50ffd09/core/src/main/java/org/apache/cxf/common/util/SpringOsgiUtil.java
>>
>> ----------------------------------------------------------------------
>> diff --git
>> a/core/src/main/java/org/apache/cxf/common/util/SpringOsgiUtil.java
>> b/core/src/main/java/org/apache/cxf/common/util/SpringOsgiUtil.java
>> new file mode 100644
>> index 0000000..f7b6381
>> --- /dev/null
>> +++ b/core/src/main/java/org/apache/cxf/common/util/SpringOsgiUtil.java
>> @@ -0,0 +1,48 @@
>> +/**
>> + * 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.cxf.common.util;
>> +
>> +import org.osgi.framework.Bundle;
>> +import org.osgi.framework.FrameworkUtil;
>> +import org.springframework.core.io.support.ResourcePatternResolver;
>> +import org.springframework.osgi.io.OsgiBundleResourcePatternResolver;
>> +import org.springframework.osgi.util.BundleDelegatingClassLoader;
>> +
>> +public class SpringOsgiUtil {
>> +
>> +    SpringOsgiUtil() throws Exception {
>> +
>> Class.forName("org.springframework.osgi.io.OsgiBundleResourcePatternResolver");
>>
>> +
>> Class.forName("org.springframework.osgi.util.BundleDelegatingClassLoader");
>>
>> +    }
>> +
>> +    public ResourcePatternResolver getResolver(ClassLoader loader) {
>> +        //in OSGi should use spring-dm OsgiBundleResourcePatternResolver
>> +        // which can handle bundle url
>> +        Bundle bundle = null;
>> +        if (loader == null) {
>> +            loader = Thread.currentThread().getContextClassLoader();
>> +        }
>> +        if (loader instanceof BundleDelegatingClassLoader) {
>> +            bundle = ((BundleDelegatingClassLoader)loader).getBundle();
>> +        } else {
>> +            bundle =
>> FrameworkUtil.getBundle(SpringClasspathScanner.class);
>> +        }
>> +        return new OsgiBundleResourcePatternResolver(bundle);
>> +    }
>> +}
>>
>


Mime
View raw message