tree d9c92c80e472e89741496fc511ffad5cbfe48692
parent 0ea40a99c2c60dd35d7b51f6a12cc32afcea48a2
author Aaron Whiteside <aaronjwhiteside@gmail.com> 1333593688 -0400
committer Glyn Normington <gnormington@vmware.com> 1337606034 +0100

- Fixed up cglib typo in testing docbook, should be 2.2.0 instead of 2.1.3.
- Added relativePath to extender/pom.xml and used correct compendium groupId, artifactId and version in extender/pom.xml
- Added relativePath to integration-test/bundles/blueprint/config.bundles/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/blueprint/error.bundles/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/blueprint/simple.bundles/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/blueprint/waiting.bundles/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/blueprint/pom.xml, removed unnecessary <properties/>, <dependencies/> and <plugins/> as they are declared in the parent.
- Added relativePath to integration-test/bundles/cardinality.0to1.bundle/pom.xml, removed unnecessary groupId definition and replaced deprecated maven property ${project.parent.version} with ${project.version}.
- Added relativePath to integration-test/bundles/config.bundle/async.nowait.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/config.bundle/async.wait.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/config.bundle/no.publish.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/config.bundle/sync.nowait.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/config.bundle/sync.tail.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/config.bundle/sync.wait.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/config.bundle/config.bundle/pom.xml, removed unnecessary groupId definition, removed unnecessary <properties/>, <dependencies/> and <plugins/> as they are declared in the parent.
- Added relativePath to integration-test/bundles/config.file.with.dots.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/configuration.test.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/deadlock.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/dependency.factory.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/dependency.test.bundle/pom.xml, removed unnecessary groupId definition and replaced deprecated maven property ${project.parent.version} with ${project.version}.
- Added relativePath to integration-test/bundles/embedded.ns.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/error.bundle/pom.xml, removed unnecessary groupId definition and replaced deprecated maven property ${project.parent.version} with ${project.version}.
- Added relativePath to integration-test/bundles/export.import.dependency.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/extender.fragment.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/extender.listener.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/extender.version.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/io.fragment.1.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/io.fragment.2.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/jdk.proxy.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/jdk5/component.scan.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/jdk5/pom.xml, removed unnecessary groupId definition, fixed up parent groupId, removed unnecessary <properties/>, <dependencies/> and <plugins/> as they are declared in the parent.
- Added relativePath to integration-test/bundles/lifecycle.test.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/namespace.own.consumer.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/proxy.creator.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/proxy.destruction.test.bundle/pom.xml, removed unnecessary groupId definition and replaced deprecated maven property ${project.parent.version} with ${project.version}.
- Added relativePath to integration-test/bundles/proxy.listener/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/reference.test.bundle/pom.xml, removed unnecessary groupId definition and replaced deprecated maven property ${project.parent.version} with ${project.version}.
- Added relativePath to integration-test/bundles/scoped.a.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/scoped.b.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/scoped.common.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/service.listener.bundle/pom.xml, removed unnecessary groupId definition and replaced deprecated maven property ${project.parent.version} with ${project.version}.
- Added relativePath to integration-test/bundles/simple.service.2.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/simple.service.3.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/simple.service.bundle.2.identical/pom.xml, removed unnecessary groupId definition and replaced deprecated maven property ${project.parent.version} with ${project.version}.
- Added relativePath to integration-test/bundles/simple.service.bundle.identical/pom.xml, removed unnecessary groupId definition and replaced deprecated maven property ${project.parent.version} with ${project.version}.
- Added relativePath to integration-test/bundles/simple.service.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/tccl.bundle/pom.xml, removed unnecessary groupId definition and replaced deprecated maven property ${project.parent.version} with ${project.version}.
- Added relativePath to integration-test/bundles/tccl.intf.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/trivial.bundle/pom.xml and removed unnecessary groupId definition.
- Added relativePath to integration-test/bundles/trivial.test.bundle/pom.xml, removed unnecessary groupId definition and replaced deprecated maven property ${project.parent.version} with ${project.version}.
- Added relativePath to integration-test/bundles/pom.xml, removed unnecessary groupId definition, removed commented out and no longer existing modules, removed the declaration of the maven-deploy-plugin (not needed since the packaging type is pom), moved the declaration of the maven-jar-plugin to the pluginManagement section and replaced the deprecated maven property ${pom.artifactId} with ${project.artifactId}.
- Updated the constant in CallingResourceOnDifferentBundlesTest that referrers to the spring-core artifact name as we are now using the official spring dependency.
- Added support for NonOSGiLoaderProxyTest to compile using java 7, missing method in javax.sql.DataSource.
- Fixed type in integration-tests/tests/src/test/resources/log4j.properties, looked like a copy and paste mistake.
- Added relativePath to integration-test/tests/pom.xml, removed unnecessary groupId definition, removed <properties/> (already present in the parent), corrected the artifactId for the osgi compendium dependency, removed all the no longer needed web dependencies, removed maven-deploy-plugin definition (already declared in the parent) and updated the test framework system property from spring to blueprint.
- Added relativePath to integration-test/pom.xml, removed unnecessary groupId definition, moved the maven-deploy-plugin declaration to the pluginManagement section and renamed the groupId from *module to *parent.
- Added relativePath to io/pom.xml, removed unnecessary groupId definition, update spring dependency to the official artifactId.
- Updated lib/readme.txt with the correct version of dependencies currently in use in the project, removed no longer used dependencies.
- Added relativePath to mock/pom.xml and removed unnecessary groupId definition.
- Updated EquinoxPlatform to put all temporary files under the test-support modules target directory (as is standard maven practice).
- Updated AbstractConfigurableOsgiTests to remove the spring specific deprecated osgi framework selector system property, now only uses the blueprint specific property.
- Fixed spelling typo in AbstractOnTheFlyBundleCreatorTests.
- Updated boot-bundles.properties with newer dependency versions, updated some dependencies to the official artifactId's (spring and slf4j) and replaced commons-logging with jcl-over-slf4j.
- Added relativePath to test-support/pom.xml, removed unnecessary groupId definition, fixed typo in jarjar.dep property, updated junit dependency version, updated spring dependencies to the official artifactIds, updated knopflerfish dependency to the official groupId, moved the maven-surefire-plugin to the pluginManagement section.
- Updated /pom.xml
  - Made maven 3.0.3 a prerequisite for running the build.
  - Added missing source encoding property.
  - Added missing env.* property's, without which the build won't run.
  - Use the official knopflerfish version (don't worry - the same exact binary as before)
  - The gemini.blueprint.version.range.nq property now uses the maven property ${project.version} instead of a custom one with exactly the same value.
  - Removed a bunch of commented out modules, that don't exist anyway.
  - Removed some no longer existent dependencies (gemini-blueprint-web, gemini-blueprint-annotation, spring-osgi-web-extender) which were causing the build the fail.
  - Replaced all spring dependency artifactId's with the official ones, as the official spring dependencies have long contained the correct osgi metadata.
  - Excluded all references to commons-logging, replaced by jcl-over-slf4j.
  - Removed a bunch of spring web dependencies, that are no longer used.
  - Updated the dependency on osgi compendium to the official artifactId and version.
  - Added the org.osgi.core dependency, so that unit tests (not including integration tests) will compile, run and pass. You no longer need to specify a osgi implementation profile. The API is standard and exists separate from the containers we test with, so why not use it.
  - Updated junit to version 4.9.0.
  - Updated log4j to the latest version and now uses the official groupId and artifactId, as the official binaries contain the correct osgi metadata.
  - Added missing version info for the maven-compiler-plugin.
  - Updated jarjar dependency to the official groupId, artifactId and version.
  - Cleaned up usages of maven property's in the bundlor plugin.
  - Tried to update to the latest version of the bundlor plugin - fixed up the config, and I can see it is producing the "correct" osgi metadata (the current plugin isn't) but it does not run, so left it commented out to come back to later. Not even sure how the current version of the plugin works as the metadata is products is incorrect (or so I think..)
  - Removed no longer existent samples profile/module.
  - Specify versions for the reporting plugins.
  - Added knopflerfish maven repo to the list of repositories, needed to use the official dependency.
