diff --git a/.xbean.metadata b/.xbean.metadata new file mode 100644 index 0000000..c84db12 --- /dev/null +++ b/.xbean.metadata @@ -0,0 +1 @@ +d1864c53644f1e850d0969528e987c608516e2ac SOURCES/xbean-3.13-source-release.zip diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/xbean-XBEAN-255.patch b/SOURCES/xbean-XBEAN-255.patch new file mode 100644 index 0000000..fb336cd --- /dev/null +++ b/SOURCES/xbean-XBEAN-255.patch @@ -0,0 +1,381 @@ +Index: xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java +=================================================================== +--- xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java (revision 1538849) ++++ xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java (revision 1538850) +@@ -25,8 +25,6 @@ + import java.lang.reflect.Method; + import java.lang.reflect.Modifier; + import java.lang.reflect.Type; +-import java.security.AccessController; +-import java.security.PrivilegedAction; + import java.util.ArrayList; + import java.util.Arrays; + import java.util.Collections; +@@ -1011,12 +1009,7 @@ + } + + private static void setAccessible(final AccessibleObject accessibleObject) { +- AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- accessibleObject.setAccessible(true); +- return null; +- } +- }); ++ accessibleObject.setAccessible(true); + } + + private static String toParameterList(Class[] parameterTypes) { +Index: xbean-classpath/src/main/java/org/apache/xbean/classpath/SunURLClassPath.java +=================================================================== +--- xbean-classpath/src/main/java/org/apache/xbean/classpath/SunURLClassPath.java (revision 1538849) ++++ xbean-classpath/src/main/java/org/apache/xbean/classpath/SunURLClassPath.java (revision 1538850) +@@ -24,11 +24,7 @@ + + public abstract class SunURLClassPath implements ClassPath { + public static ClassLoader getContextClassLoader() { +- return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- return Thread.currentThread().getContextClassLoader(); +- } +- }); ++ return Thread.currentThread().getContextClassLoader(); + } + + private java.lang.reflect.Field ucpField; +Index: xbean-classloader/src/main/java/org/apache/xbean/classloader/JarFileClassLoader.java +=================================================================== +--- xbean-classloader/src/main/java/org/apache/xbean/classloader/JarFileClassLoader.java (revision 1539052) ++++ xbean-classloader/src/main/java/org/apache/xbean/classloader/JarFileClassLoader.java (revision 1539053) +@@ -20,12 +20,7 @@ + import java.io.File; + import java.net.URL; + import java.net.URI; +-import java.security.AccessControlContext; +-import java.security.AccessController; + import java.security.CodeSource; +-import java.security.PrivilegedAction; +-import java.security.PrivilegedExceptionAction; +-import java.security.PrivilegedActionException; + import java.security.cert.Certificate; + import java.util.Collection; + import java.util.Enumeration; +@@ -49,7 +44,6 @@ + private static final URL[] EMPTY_URLS = new URL[0]; + + private final UrlResourceFinder resourceFinder = new UrlResourceFinder(); +- private final AccessControlContext acc; + + /** + * Creates a JarFileClassLoader that is a child of the system class loader. +@@ -58,7 +52,6 @@ + */ + public JarFileClassLoader(String name, URL[] urls) { + super(name, EMPTY_URLS); +- this.acc = AccessController.getContext(); + addURLs(urls); + } + +@@ -70,13 +63,11 @@ + */ + public JarFileClassLoader(String name, URL[] urls, ClassLoader parent) { + super(name, EMPTY_URLS, parent); +- this.acc = AccessController.getContext(); + addURLs(urls); + } + + public JarFileClassLoader(String name, URL[] urls, ClassLoader parent, boolean inverseClassLoading, String[] hiddenClasses, String[] nonOverridableClasses) { + super(name, EMPTY_URLS, parent, inverseClassLoading, hiddenClasses, nonOverridableClasses); +- this.acc = AccessController.getContext(); + addURLs(urls); + } + +@@ -88,19 +79,16 @@ + */ + public JarFileClassLoader(String name, URL[] urls, ClassLoader[] parents) { + super(name, EMPTY_URLS, parents); +- this.acc = AccessController.getContext(); + addURLs(urls); + } + + public JarFileClassLoader(String name, URL[] urls, ClassLoader[] parents, boolean inverseClassLoading, Collection hiddenClasses, Collection nonOverridableClasses) { + super(name, EMPTY_URLS, parents, inverseClassLoading, hiddenClasses, nonOverridableClasses); +- this.acc = AccessController.getContext(); + addURLs(urls); + } + + public JarFileClassLoader(String name, URL[] urls, ClassLoader[] parents, boolean inverseClassLoading, String[] hiddenClasses, String[] nonOverridableClasses) { + super(name, EMPTY_URLS, parents, inverseClassLoading, hiddenClasses, nonOverridableClasses); +- this.acc = AccessController.getContext(); + addURLs(urls); + } + +@@ -115,12 +103,7 @@ + * {@inheritDoc} + */ + public void addURL(final URL url) { +- AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- resourceFinder.addUrl(url); +- return null; +- } +- }, acc); ++ resourceFinder.addUrl(url); + } + + /** +@@ -128,12 +111,7 @@ + * @param urls the URLs to add + */ + protected void addURLs(final URL[] urls) { +- AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- resourceFinder.addUrls(urls); +- return null; +- } +- }, acc); ++ resourceFinder.addUrls(urls); + } + + /** +@@ -148,11 +126,7 @@ + * {@inheritDoc} + */ + public URL findResource(final String resourceName) { +- return (URL) AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- return resourceFinder.findResource(resourceName); +- } +- }, acc); ++ return resourceFinder.findResource(resourceName); + } + + /** +@@ -164,11 +138,7 @@ + Enumeration parentResources = super.findResources(resourceName); + + // get the classes from my urls +- Enumeration myResources = (Enumeration) AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- return resourceFinder.findResources(resourceName); +- } +- }, acc); ++ Enumeration myResources = resourceFinder.findResources(resourceName); + + // join the two together + Enumeration resources = new UnionEnumeration(parentResources, myResources); +@@ -196,11 +166,7 @@ + } + + // get a resource handle to the library +- ResourceHandle resourceHandle = (ResourceHandle) AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- return resourceFinder.getResource(resourceName); +- } +- }, acc); ++ ResourceHandle resourceHandle = resourceFinder.getResource(resourceName); + + if (resourceHandle == null) { + return null; +@@ -220,62 +186,53 @@ + * {@inheritDoc} + */ + protected Class findClass(final String className) throws ClassNotFoundException { +- try { +- return (Class) AccessController.doPrivileged(new PrivilegedExceptionAction() { +- public Object run() throws ClassNotFoundException { +- // first think check if we are allowed to define the package +- SecurityManager securityManager = System.getSecurityManager(); +- if (securityManager != null) { +- String packageName; +- int packageEnd = className.lastIndexOf('.'); +- if (packageEnd >= 0) { +- packageName = className.substring(0, packageEnd); +- securityManager.checkPackageDefinition(packageName); +- } +- } ++ // first think check if we are allowed to define the package ++ SecurityManager securityManager = System.getSecurityManager(); ++ if (securityManager != null) { ++ String packageName; ++ int packageEnd = className.lastIndexOf('.'); ++ if (packageEnd >= 0) { ++ packageName = className.substring(0, packageEnd); ++ securityManager.checkPackageDefinition(packageName); ++ } ++ } + ++ // convert the class name to a file name ++ String resourceName = className.replace('.', '/') + ".class"; + +- // convert the class name to a file name +- String resourceName = className.replace('.', '/') + ".class"; ++ // find the class file resource ++ ResourceHandle resourceHandle = resourceFinder.getResource(resourceName); ++ if (resourceHandle == null) { ++ throw new ClassNotFoundException(className); ++ } + +- // find the class file resource +- ResourceHandle resourceHandle = resourceFinder.getResource(resourceName); +- if (resourceHandle == null) { +- throw new ClassNotFoundException(className); +- } ++ byte[] bytes; ++ Manifest manifest; ++ try { ++ // get the bytes from the class file ++ bytes = resourceHandle.getBytes(); ++ ++ // get the manifest for defining the packages ++ manifest = resourceHandle.getManifest(); ++ } catch (IOException e) { ++ throw new ClassNotFoundException(className, e); ++ } + +- byte[] bytes; +- Manifest manifest; +- try { +- // get the bytes from the class file +- bytes = resourceHandle.getBytes(); ++ // get the certificates for the code source ++ Certificate[] certificates = resourceHandle.getCertificates(); ++ ++ // the code source url is used to define the package and as the security context for the class ++ URL codeSourceUrl = resourceHandle.getCodeSourceUrl(); + +- // get the manifest for defining the packages +- manifest = resourceHandle.getManifest(); +- } catch (IOException e) { +- throw new ClassNotFoundException(className, e); +- } ++ // define the package (required for security) ++ definePackage(className, codeSourceUrl, manifest); + +- // get the certificates for the code source +- Certificate[] certificates = resourceHandle.getCertificates(); +- +- // the code source url is used to define the package and as the security context for the class +- URL codeSourceUrl = resourceHandle.getCodeSourceUrl(); +- +- // define the package (required for security) +- definePackage(className, codeSourceUrl, manifest); +- +- // this is the security context of the class +- CodeSource codeSource = new CodeSource(codeSourceUrl, certificates); +- +- // load the class into the vm +- Class clazz = defineClass(className, bytes, 0, bytes.length, codeSource); +- return clazz; +- } +- }, acc); +- } catch (PrivilegedActionException e) { +- throw (ClassNotFoundException) e.getException(); +- } ++ // this is the security context of the class ++ CodeSource codeSource = new CodeSource(codeSourceUrl, certificates); ++ ++ // load the class into the vm ++ Class clazz = defineClass(className, bytes, 0, bytes.length, codeSource); ++ return clazz; + } + + private void definePackage(String className, URL jarUrl, Manifest manifest) { +Index: xbean-classpath/src/main/java/org/apache/xbean/classpath/TomcatClassPath.java +=================================================================== +--- xbean-classpath/src/main/java/org/apache/xbean/classpath/TomcatClassPath.java (revision 1539055) ++++ xbean-classpath/src/main/java/org/apache/xbean/classpath/TomcatClassPath.java (revision 1539056) +@@ -20,8 +20,6 @@ + import java.lang.reflect.Method; + import java.net.URL; + import java.net.URLClassLoader; +-import java.security.AccessController; +-import java.security.PrivilegedAction; + + public class TomcatClassPath extends SunURLClassPath { + +@@ -140,36 +138,19 @@ + * @return URLClassLoader.addURL method instance + */ + private Method getAddURLMethod() throws Exception { +- return (Method) AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- Method method = null; +- try { +- Class clazz = URLClassLoader.class; +- method = clazz.getDeclaredMethod("addURL", new Class[]{URL.class}); +- method.setAccessible(true); +- return method; +- } catch (Exception e2) { +- e2.printStackTrace(); +- } +- return method; +- } +- }); ++ Method method = null; ++ Class clazz = URLClassLoader.class; ++ method = clazz.getDeclaredMethod("addURL", new Class[]{URL.class}); ++ method.setAccessible(true); ++ return method; + } + + private Method getAddRepositoryMethod() throws Exception { +- return (Method) AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- Method method = null; +- try { +- Class clazz = getClassLoader().getClass(); +- method = clazz.getDeclaredMethod("addRepository", new Class[]{String.class}); +- method.setAccessible(true); +- return method; +- } catch (Exception e2) { +- throw (IllegalStateException) new IllegalStateException("Unable to find or access the addRepository method in StandardClassLoader").initCause(e2); +- } +- } +- }); ++ Method method = null; ++ Class clazz = getClassLoader().getClass(); ++ method = clazz.getDeclaredMethod("addRepository", new Class[]{String.class}); ++ method.setAccessible(true); ++ return method; + } + + } +Index: xbean-classpath/src/main/java/org/apache/xbean/classpath/SunURLClassPath.java +=================================================================== +--- xbean-classpath/src/main/java/org/apache/xbean/classpath/SunURLClassPath.java (revision 1539055) ++++ xbean-classpath/src/main/java/org/apache/xbean/classpath/SunURLClassPath.java (revision 1539056) +@@ -19,10 +19,9 @@ + import java.io.File; + import java.net.URL; + import java.net.URLClassLoader; +-import java.security.AccessController; +-import java.security.PrivilegedAction; + + public abstract class SunURLClassPath implements ClassPath { ++ + public static ClassLoader getContextClassLoader() { + return Thread.currentThread().getContextClassLoader(); + } +@@ -64,20 +63,9 @@ + private java.lang.reflect.Field getUcpField() throws Exception { + if (ucpField == null) { + // Add them to the URLClassLoader's classpath +- ucpField = (java.lang.reflect.Field) AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- java.lang.reflect.Field ucp = null; +- try { +- ucp = URLClassLoader.class.getDeclaredField("ucp"); +- ucp.setAccessible(true); +- } catch (Exception e2) { +- e2.printStackTrace(); +- } +- return ucp; +- } +- }); ++ ucpField = URLClassLoader.class.getDeclaredField("ucp"); ++ ucpField.setAccessible(true); + } +- + return ucpField; + } + diff --git a/SPECS/xbean.spec b/SPECS/xbean.spec new file mode 100644 index 0000000..8579966 --- /dev/null +++ b/SPECS/xbean.spec @@ -0,0 +1,200 @@ +Name: xbean +Version: 3.13 +Release: 5%{?dist} +Summary: Java plugin based web server +License: ASL 2.0 +URL: http://geronimo.apache.org/xbean/ +Source0: http://repo2.maven.org/maven2/org/apache/%{name}/%{name}/%{version}/%{name}-%{version}-source-release.zip +BuildArch: noarch + +# Patch for XBEAN-255 from upstream revisions 1538850, 1539053 and +# 1539056. Removes unnecessary doPrivleged() calls which can cause +# problems. +Patch0: %{name}-XBEAN-255.patch + +BuildRequires: maven-local +BuildRequires: mvn(asm:asm) +BuildRequires: mvn(asm:asm-commons) +BuildRequires: mvn(commons-logging:commons-logging-api) +BuildRequires: mvn(junit:junit) +BuildRequires: mvn(log4j:log4j) +BuildRequires: mvn(org.apache.felix:felix-parent) +BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) +BuildRequires: mvn(org.apache.felix:org.apache.felix.framework) +BuildRequires: mvn(org.apache.maven.plugins:maven-source-plugin) +BuildRequires: mvn(org.osgi:org.osgi.core) +BuildRequires: mvn(org.slf4j:slf4j-api) + +%description +The goal of XBean project is to create a plugin based server +analogous to Eclipse being a plugin based IDE. XBean will be able to +discover, download and install server plugins from an Internet based +repository. In addition, we include support for multiple IoC systems, +support for running with no IoC system, JMX without JMX code, +lifecycle and class loader management, and a rock solid Spring +integration. + +%package javadoc +Summary: API documentation for %{name} + +%description javadoc +This package provides %{summary}. + +%prep +%setup -q +%patch0 + +# build failing on this due to doxia-sitetools problems +rm src/site/site.xml + +%pom_remove_parent +%pom_remove_dep mx4j:mx4j +%pom_remove_dep :xbean-asm-shaded xbean-reflect + +# These aren't needed for now +%pom_disable_module xbean-asm-shaded +%pom_disable_module xbean-finder-shaded +%pom_disable_module xbean-telnet + +# Prevent modules depending on springframework from building. +%pom_remove_dep org.springframework: +%pom_disable_module xbean-blueprint +%pom_disable_module xbean-classloader +%pom_disable_module xbean-spring +%pom_disable_module maven-xbean-plugin + +# Replace generic OSGi dependencies with Apache Felix +%pom_remove_dep :org.osgi.core xbean-bundleutils +%pom_remove_dep org.eclipse:osgi xbean-bundleutils +%pom_add_dep org.apache.felix:org.apache.felix.framework xbean-bundleutils +rm -rf xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/equinox/ + +# Fix dependency on xbean-asm-shaded to original objectweb-asm +sed -i 's/org.apache.xbean.asm/org.objectweb.asm/' \ + xbean-reflect/src/main/java/org/apache/xbean/recipe/XbeanAsmParameterNameLoader.java + +# Fix ant groupId +find -name pom.xml -exec sed -i "s|ant|org.apache.ant|" {} \; +# Fix cglib artifactId +find -name pom.xml -exec sed -i "s|cglib-nodep|cglib|" {} \; + +%build +%mvn_build -f + +%install +%mvn_install + +%files -f .mfiles +%doc LICENSE NOTICE +%dir %{_javadir}/%{name} + +%files javadoc -f .mfiles-javadoc +%doc LICENSE NOTICE + +%changelog +* Thu Nov 7 2013 Mikolaj Izdebski - 3.13-5 +- Add patch for XBEAN-255 + +* Tue Aug 27 2013 Mikolaj Izdebski - 3.13-4 +- Expand conditionals +- Migrate away from mvn-rpmbuild + +* Fri Jun 28 2013 Mikolaj Izdebski - 3.13-3 +- Rebuild to regenerate API documentation +- Resolves: CVE-2013-1571 + +* Mon Apr 29 2013 Mikolaj Izdebski - 3.13-2 +- Remove unneeded BR: maven-idea-plugin + +* Fri Mar 15 2013 Michal Srb - 3.13-1 +- Update to upstream version 3.13 + +* Fri Feb 15 2013 Fedora Release Engineering - 3.12-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Feb 06 2013 Java SIG - 3.12-5 +- Update for https://fedoraproject.org/wiki/Fedora_19_Maven_Rebuild +- Replace maven BuildRequires with maven-local + +* Mon Dec 17 2012 Mikolaj Izdebski - 3.12-4 +- Enable xbean-spring, resolves rhbz#887496 +- Disable xbean-blueprint due to FTBFS + +* Mon Oct 22 2012 Mikolaj Izdebski - 3.12-3 +- Replace eclipse-rcp requires with eclipse-equinox-osgi +- Reenable Equinox + +* Tue Oct 16 2012 gil cattaneo - 3.12-2 +- Enable xbean-blueprint and xbean-classloader modules + +* Wed Oct 10 2012 Mikolaj Izdebski - 3.12-1 +- Update to upstream version 3.12 + +* Wed Oct 10 2012 Krzysztof Daniel 3.11.1-8 +- Revert previous changes. + +* Wed Oct 10 2012 Krzysztof Daniel 3.11.1-7 +- Disable parts dependent on Eclipse (for bootstraping purpose). + +* Wed Oct 10 2012 Mikolaj Izdebski - 3.11.1-6 +- Implement equinox and spring conditionals + +* Mon Sep 3 2012 Mikolaj Izdebski - 3.11.1-5 +- Fix eclipse requires + +* Mon Aug 27 2012 Mikolaj Izdebski - 3.11.1-4 +- Fix felix-framework enabling patch + +* Mon Aug 6 2012 Mikolaj Izdebski - 3.11.1-3 +- Enable xbean-spring +- Enable maven-xbean-plugin +- Remove RPM bug workaround + +* Sun Jul 22 2012 Fedora Release Engineering - 3.11.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jul 13 2012 Mikolaj Izdebski - 3.11.1-1 +- Update to the upstream version 3.11.1 +- Force use of Equinox instead of Felix +- Convert patch to POM macros + +* Thu May 3 2012 Stanislav Ochotnicky - 3.8-5 +- Remove mx4j from deps (javax.management provided by JDK 1.5+) + +* Tue Apr 24 2012 Alexander Kurtakov 3.8-4 +- BR felix-framework instead of felix-osgi-core. + +* Tue Apr 24 2012 Alexander Kurtakov 3.8-3 +- Do not build equinox specific parts for RHEL. + +* Sat Jan 14 2012 Fedora Release Engineering - 3.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Dec 6 2011 Stanislav Ochotnicky - 3.8-1 +- Update to latest upstream version +- Build with maven 3 +- Packaging & guidelines fixes + +* Sat May 28 2011 Marek Goldmann - 3.7-7 +- Added xbean-finder and xbean-bundleutils submodules + +* Fri Mar 4 2011 Stanislav Ochotnicky - 3.7-6 +- Add comment for removing javadoc +- Fix maven 3 build + +* Mon Feb 07 2011 Fedora Release Engineering - 3.7-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Dec 6 2010 Stanislav Ochotnicky - 3.7-4 +- Fix pom filename (Resolves rhbz#655827) +- Add depmap for main pom file +- Fixes according to new guidelines (versionless jars, javadocs) + +* Fri Jul 30 2010 Stanislav Ochotnicky - 3.7-3 +- Use javadoc:aggregate to generate javadocs + +* Fri Jul 9 2010 Stanislav Ochotnicky - 3.7-2 +- Add license to javadoc subpackage + +* Mon Jun 21 2010 Stanislav Ochotnicky - 3.7-1 +- First release