# Copyright (c) 2000-2009, JPackage Project # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the # distribution. # 3. Neither the name of the JPackage Project nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Summary: A library for instantiating Java objects Name: objenesis Version: 1.2 Release: 1%{dist} Group: Development/Libraries License: MIT URL: http://objenesis.googlecode.com/svn/docs/index.html # svn export http://objenesis.googlecode.com/svn/tags/1_2/ objenesis-1.2 # tar cfJ objenesis-1.2.tar.xz objenesis-1.2 Source0: %{name}-%{version}.tar.xz # Additional JPP depmap Source1: %{name}-jpp-depmap.xml # Repo settings Source2: %{name}-settings.xml # Skipping website (requires xsite), this patch is unused atm #Patch0: objenesis-website-pom.patch # Remove deps for test scope (unavailable); remove maven-shade-plugin in tck # (need bugfix); fix maven-license-plugin groupID to latest version available. Patch1: 001-objenesis-fix-build.patch BuildRequires: jpackage-utils BuildRequires: java-devel BuildRequires: junit BuildRequires: maven2 >= 2.0.7 BuildRequires: maven2-plugin-antrun BuildRequires: maven2-plugin-assembly BuildRequires: maven2-plugin-compiler BuildRequires: maven2-plugin-eclipse BuildRequires: maven2-plugin-install BuildRequires: maven2-plugin-jar BuildRequires: maven2-plugin-javadoc BuildRequires: maven2-plugin-resources BuildRequires: maven2-plugin-site BuildRequires: maven2-plugin-source BuildRequires: maven2-plugin-surefire BuildRequires: maven-plugin-bundle BuildRequires: xpp3-minimal BuildRequires: asm2 Requires: java BuildRequires: jpackage-utils Requires(post): jpackage-utils Requires(postun): jpackage-utils BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %description Java supports dynamic instantiation of classes using Class.newInstance(). However, this only works if the class has an appropriate constructor. There are many times when a class cannot be instantiated this way, such as when the class contains: * Constructors that require arguments. * Constructors that have side effects. * Constructors that throw exceptions. As a result, it is common to see restrictions in libraries stating that classes must require a default constructor. Objenesis aims to overcome these restrictions by bypassing the constructor on object instantiation. Needing to instantiate an object without calling the constructor is a fairly specialized task, however there are certain cases when this is useful: * Serialization, Remoting and Persistence - Objects need to be instantiated and restored to a specific state, without invoking code. * Proxies, AOP Libraries and Mock Objects - Classes can be subclassed without needing to worry about the super() constructor. * Container Frameworks - Objects can be dynamically instantiated in non-standard ways. %package javadoc Group: Documentation Summary: Javadoc for %{name} Requires: %{name} = %{version}-%{release} Requires: jpackage-utils BuildArch: noarch %description javadoc This package contains the API documentation for %{name}. # Skipped till xsite avilable in fedora #%%package manual #Group: Documentation #Summary: Documents for %%{name} # #%%description manual #This package contains the %%{name} manual. %prep %setup -q #%%patch0 -b .sav0 %patch1 -p1 %build cp %{SOURCE2} maven2-settings.xml sed -i -e "s|__JPP_URL_PLACEHOLDER__|file://`pwd`/.m2/repository|g" maven2-settings.xml sed -i -e "s|__JAVADIR_PLACEHOLDER__|file://`pwd`/external_repo|g" maven2-settings.xml sed -i -e "s|__MAVENREPO_DIR_PLACEHOLDER__|file://`pwd`/.m2/repository|g" maven2-settings.xml sed -i -e "s|__MAVENDIR_PLUGIN_PLACEHOLDER__|file:///usr/share/maven2/plugins|g" maven2-settings.xml export M2SETTINGS=$(pwd)/maven2-settings.xml export MAVEN_REPO_LOCAL=$(pwd)/.m2/repository export MAVEN_REPO_EXT=$(pwd)/external_repo mkdir -p $MAVEN_REPO_LOCAL mkdir -p $MAVEN_REPO_EXT ln -s %{_javadir} $MAVEN_REPO_EXT/JPP mvn-jpp -e \ -s ${M2SETTINGS} \ -Dmaven.repo.local=$MAVEN_REPO_LOCAL \ -Dmaven2.jpp.default.repo=$MAVEN_REPO_EXT \ -Dmaven2.jpp.depmap.file=%{SOURCE1} \ -Dyear=2009 \ -Dmaven.test.skip=true \ install javadoc:javadoc # Below is for manual (requires xsite), skipped #pushd website #mvn-jpp -e \ # -s ${M2SETTINGS} \ # -Dmaven.repo.local=$MAVEN_REPO_LOCAL \ # -Dmaven2.jpp.depmap.file=%%{SOURCE1} \ # antrun:run #popd %install rm -rf $RPM_BUILD_ROOT # jars install -d -m 0755 $RPM_BUILD_ROOT%{_javadir}/%{name} install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/maven2/poms install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP-%{name}-parent.pom %add_to_maven_depmap org.objenesis objenesis-parent %{version} JPP %{name}-parent install -m 644 main/target/%{name}-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}-%{version}.jar install -m 644 main/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP-%{name}.pom %add_to_maven_depmap org.objenesis objenesis %{version} JPP %{name} install -m 644 tck/target/%{name}-tck-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}-tck-%{version}.jar install -m 644 tck/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP-%{name}-tck.pom %add_to_maven_depmap org.objenesis objenesis-tck %{version} JPP %{name}-tck (cd $RPM_BUILD_ROOT%{_javadir} && for jar in *-%{version}*; do ln -sf ${jar} `echo $jar| sed "s|-%{version}||g"`; done) # javadoc install -d -m 0755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/main cp -pr main/target/site/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/main install -d -m 0755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/tck cp -pr tck/target/site/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/tck ln -s %{name}-%{version} $RPM_BUILD_ROOT%{_javadocdir}/%{name} # manual (skipped) #install -d -m 0755 $RPM_BUILD_ROOT%%{_docdir}/%%{name}-%%{version} #cp -pr website/target/xsite/* $RPM_BUILD_ROOT%%{_docdir}/%%{name}-%%{version}/ #cp -p LICENSE.txt $RPM_BUILD_ROOT%%{_docdir}/%%{name}-%%{version}/ %clean rm -rf $RPM_BUILD_ROOT %post %update_maven_depmap %postun %update_maven_depmap %files %defattr(-,root,root,-) %doc LICENSE.txt %dir %{_javadir}/%{name} %{_javadir}/*.jar %{_mavenpomdir}/* %{_mavendepmapfragdir}/* %files javadoc %defattr(-,root,root,-) %{_javadocdir}/%{name}-%{version} %{_javadocdir}/%{name} #%%files manual #%%defattr(-,root,root,-) #%%{_docdir}/%%{name}-%%{version} %changelog * Mon May 10 2010 Guido Grazioli 1.2-1 - Update to 1.2 * Thu May 06 2010 Guido Grazioli 1.0-1 - Import from JPackage * Fri Feb 27 2009 Ralph Apel 0:1.0-2.jpp5 - BR xpp3-minimal and fix depmap accordingly - Disown poms and fragments dirs * Wed Jun 18 2008 Ralph Apel 0:1.0-1.jpp5 - First release