Skip to content

Make this project compatible with JDK 17 and Spring 7#19

Open
bigmarvin wants to merge 9 commits intoeclipse-gemini:mainfrom
bigmarvin:main
Open

Make this project compatible with JDK 17 and Spring 7#19
bigmarvin wants to merge 9 commits intoeclipse-gemini:mainfrom
bigmarvin:main

Conversation

@bigmarvin
Copy link
Copy Markdown

Please feel free to review and comment. Claude code helped a lot, so hopefully any issue can be tackled quickly.

Dependencies:
- OSGi Core 5.0.0 -> 8.0.0 (artifact renamed to osgi.core)
- OSGi Compendium 5.0.0 -> 7.0.0 (artifact renamed to osgi.cmpn)
- Equinox 3.9.1 -> 3.18.600 (groupId changed to org.eclipse.platform)
- Felix 4.4.0 -> 7.0.5
- Mockito 1.9.5 (mockito-all) -> 4.11.0 (mockito-core)
- EasyMock 3.2 -> 5.2.0

Maven plugins:
- maven-surefire-plugin 2.19.1 -> 3.2.5
- maven-surefire-report-plugin 2.19.1 -> 3.2.5
- maven-compiler-plugin 3.6.1 -> 3.13.0

Code changes:
- Implement ServiceReference.adapt() and getProperties() added in OSGi R6
  in MockServiceReference, StaticServiceReferenceProxy, SwappingServiceReferenceProxy
- Implement BundleContext.getServiceObjects() and registerService(Class,
  ServiceFactory, Dictionary) added in OSGi R6 in MockBundleContext
- Implement ConfigurationAdmin.getFactoryConfiguration() added in OSGi R7
  in MockConfigurationAdmin
- Add --add-opens java.base/java.lang=ALL-UNNAMED to surefire for CGLIB
- Remove -XX:+UnsyncloadClass from integration test argLine (removed in JDK 15)
- Remove dead Felix 1.x platform code and unused imports from FelixPlatform
- Disable Knopflerfish platform tests (no Java 17+ support)

Test fixes:
- Update Mockito imports (runners -> junit, Matchers -> ArgumentMatchers)
- Use MockitoJUnitRunner.Silent for lenient stubbing
- Fix ClassUtilsTest assertion for additional interfaces in Java 12+
- Fix ScopeTests to use scopedTarget.a for scoped proxy bean destruction

Integration tests have not been run yet.
Knopflerfish 7.1.2 (2018) is the final release and the project is
unmaintained. It does not support Java 17+ due to reliance on removed
internal JDK APIs.

Removed the knopflerfish Maven profile, dependency, repository,
KnopflerfishPlatform class, test, Jenkinsfile stage, and bnd.bnd
import. Updated CLAUDE.md to reflect the change. Runtime detection
code in OsgiPlatformDetector is retained as it is harmless (returns
false when Knopflerfish is absent).
…facts)

Replace all ServiceMix-wrapped Spring dependencies with official Spring 7.0.6
artifacts. This removes the version constraint on Spring packages in OSGi
Import-Package instructions, allowing the bundles to work with any Spring
version at runtime.

Dependencies:
- Spring: 5.0.4.RELEASE_1 (ServiceMix) -> 7.0.6 (official)
- SLF4J: 1.7.5 -> 2.0.16, Logback: 1.0.13 -> 1.5.16
- ASM: 5.2 (asm-all) -> 9.7.1 (asm)
- JUnit: ServiceMix bundle -> official 4.13.2
- Removed jcl-over-slf4j (spring-core 7 includes commons-logging bridge)
- Removed unused javax.inject dependency
- Removed ServiceMix aopalliance (spring-aop 7 includes it)
- Source/target: 1.8 -> 17

Spring 7 API adaptations:
- SecurityContextProvider removed -> deleted usage in context support
- ConfigurableBeanFactory.getAccessControlContext() removed -> fallback
- XmlBeanFactory removed -> DefaultListableBeanFactory + XmlBeanDefinitionReader
- InstantiationAwareBeanPostProcessorAdapter removed -> SmartInstantiationAwareBeanPostProcessor
- postProcessPropertyValues -> postProcessProperties
- Assert single-arg overloads removed -> added message parameters (~70 calls)
- DisposableBean.destroy() no longer inherited -> added explicit overrides
- ApplicationEventMulticaster new methods -> implemented in test dummy
- DictionaryEditorTest ambiguity with systemProperties -> added @qualifier
- yield() restricted keyword -> Thread.yield()
- ASM visitor API: ASM5 -> ASM9

All 6 modules (mock, io, core, extender, extensions, test-support) compile
and pass unit tests. Integration tests have NOT been run yet — the official
Spring 7 JARs lack OSGi bundle metadata, so the boot-bundles.properties has
been updated but the JARs will not install as proper OSGi bundles without
wrapping. This needs to be addressed separately.
Spring 7 removed OSGi metadata from its JARs, breaking integration
tests that installed Spring as OSGi bundles. This commit wraps Spring,
commons-logging, JUnit, and Hamcrest as proper OSGi bundles using
maven-bundle-plugin. SLF4J and Logback (which have OSGi metadata but
require ServiceLoader mediation) are installed directly with Apache
Aries SPI Fly providing the osgi.serviceloader.processor capability.

Key changes:
- Add integration-tests/wrapped-jars module (9 wrapper sub-modules)
- Add SPI Fly dynamic bundle + ASM bundles to boot-bundles.properties
- Use AllServiceListener to fix Felix service visibility (class
  assignability checks on system bundle context)
- Add BundleContext lookup fallback by symbolic name in AbstractOsgiTests
- Auto-add org.springframework.stereotype import for component scanning
- Upgrade bnd-maven-plugin to 7.0.0 for Java 21 class file support
- Update test assertions for Spring 7 resource/interface differences

260/260 integration tests pass on both Equinox and Felix.
All 260 integration tests pass. Removed stale "repackaged in
lib/equinox" comment as that directory no longer exists.
Bump project version from 3.0.1.BUILD-SNAPSHOT to 4.0.0.BUILD-SNAPSHOT
across all modules to reflect the Spring 7 major upgrade.

Update readme.txt to reflect current requirements: Spring Framework 7.0,
OSGi R8, Java 17+, Maven wrapper. Remove stale Knopflerfish reference.
Copilot AI review requested due to automatic review settings March 23, 2026 10:44
@bigmarvin
Copy link
Copy Markdown
Author

How should I get the legal agreements signed? I'm not really familiar with this ECA process.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Gemini Blueprint’s build/test infrastructure and OSGi test runtime to target Java 17 and Spring Framework 7, including adjustments needed for newer OSGi APIs and Spring/OSGi metadata changes.

Changes:

  • Bump baseline/tooling: Java 17 compiler level, newer Surefire/Bnd/ASM/Mockito/EasyMock, and add Maven Wrapper.
  • Update OSGi integration-test runtime bundles (SPI Fly + ASM, wrapped Spring/JUnit/Hamcrest bundles) and remove Knopflerfish support.
  • Modernize/patch code for newer Spring/OSGi APIs (listener behavior, ServiceReference APIs, bean post-processing, SecurityManager deprecation paths).

Reviewed changes

Copilot reviewed 159 out of 160 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
test-support/src/test/java/org/eclipse/gemini/blueprint/test/platform/KnopflerfishPlatformTest.java Remove Knopflerfish platform test.
test-support/src/main/resources/org/eclipse/gemini/blueprint/test/internal/boot-bundles.properties Update boot bundles to SPI Fly + ASM and use wrapped Spring/JUnit artifacts.
test-support/src/main/java/org/eclipse/gemini/blueprint/test/platform/Platforms.java Remove Knopflerfish constant.
test-support/src/main/java/org/eclipse/gemini/blueprint/test/platform/KnopflerfishPlatform.java Remove Knopflerfish platform implementation.
test-support/src/main/java/org/eclipse/gemini/blueprint/test/platform/FelixPlatform.java Drop legacy Felix 1.x support code paths.
test-support/src/main/java/org/eclipse/gemini/blueprint/test/internal/util/PropertiesUtil.java Add Assert messages for Spring 7+ signatures.
test-support/src/main/java/org/eclipse/gemini/blueprint/test/internal/util/DependencyVisitor.java Update ASM API level usage (ASM9).
test-support/src/main/java/org/eclipse/gemini/blueprint/test/internal/holder/ReflectionOsgiHolder.java Add Assert message for null checks.
test-support/src/main/java/org/eclipse/gemini/blueprint/test/AbstractSynchronizedOsgiTests.java Use AllServiceListener to bypass assignability filtering.
test-support/src/main/java/org/eclipse/gemini/blueprint/test/AbstractOsgiTests.java Add fallback bundle-context lookup by symbolic name.
test-support/src/main/java/org/eclipse/gemini/blueprint/test/AbstractOptionalDependencyInjectionTests.java Ensure destroy() delegates to close() for Spring lifecycle.
test-support/src/main/java/org/eclipse/gemini/blueprint/test/AbstractOnTheFlyBundleCreatorTests.java Add Spring stereotype import for component scanning under Spring 7.
test-support/pom.xml Update deps (JUnit/Spring/ASM), drop Knopflerfish dependency, bump parent version.
test-support/bnd.bnd Remove Spring version range constraints; drop Knopflerfish imports.
readme.txt Update stated baseline to OSGi R8 / Spring 7 / JDK 17 and build guidance.
pom.xml Root version bump; update Spring/OSGi/tooling versions; remove Knopflerfish profile/repo; Java 17 compiler + Surefire updates.
mvnw.cmd Add Maven Wrapper (Windows).
mvnw Add Maven Wrapper (Unix).
.mvn/wrapper/maven-wrapper.properties Add Maven Wrapper configuration.
mock/src/main/java/org/eclipse/gemini/blueprint/mock/MockServiceReference.java Implement new ServiceReference methods (adapt/getProperties).
mock/src/main/java/org/eclipse/gemini/blueprint/mock/MockBundleContext.java Add newer BundleContext methods (generic registerService, getServiceObjects).
mock/pom.xml Switch to osgi.core artifactId; bump parent version.
io/src/main/java/org/eclipse/gemini/blueprint/io/internal/resolver/PackageAdminResolver.java Add Assert message for null checks.
io/src/main/java/org/eclipse/gemini/blueprint/io/internal/OsgiResourceUtils.java Add Assert message for null checks.
io/src/main/java/org/eclipse/gemini/blueprint/io/OsgiBundleResource.java Add Assert message for null checks.
io/pom.xml Update Spring/OSGi coordinates; bump parent version.
io/bnd.bnd Remove Spring version range constraints.
integration-tests/pom.xml Add wrapped-jars module; bump parent version.
integration-tests/tests/pom.xml Add runtime deps for SPI Fly + ASM; simplify argLine.
integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/jdk5/io/ComponentScanTest.java Normalize formatting (no functional change).
integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/io/OSGI799Test.java Adjust expected resource counts for new runtime behavior.
integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/context/PublishedInterfacesTest.java Loosen interface-count assertion for Spring 7 variability.
integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/configopt/BehaviorBaseTest.java Add Assert message for null checks.
integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/compliance/io/CallingResourceOnDifferentBundlesTest.java Update lookup to wrapped Spring bundle symbolic name.
integration-tests/wrapped-jars/pom.xml Add parent reactor for wrapped third-party bundles.
integration-tests/wrapped-jars/commons-logging/pom.xml Wrap commons-logging into an OSGi bundle.
integration-tests/wrapped-jars/spring-core/pom.xml Wrap spring-core into an OSGi bundle.
integration-tests/wrapped-jars/spring-beans/pom.xml Wrap spring-beans into an OSGi bundle.
integration-tests/wrapped-jars/spring-aop/pom.xml Wrap spring-aop into an OSGi bundle.
integration-tests/wrapped-jars/spring-expression/pom.xml Wrap spring-expression into an OSGi bundle.
integration-tests/wrapped-jars/spring-context/pom.xml Wrap spring-context into an OSGi bundle.
integration-tests/wrapped-jars/spring-test/pom.xml Wrap spring-test into an OSGi bundle.
integration-tests/wrapped-jars/junit/pom.xml Wrap JUnit into an OSGi bundle.
integration-tests/wrapped-jars/hamcrest-core/pom.xml Wrap Hamcrest into an OSGi bundle.
integration-tests/bundles/pom.xml Update parent version and OSGi coordinates.
integration-tests/bundles/trivial.bundle/pom.xml Bump parent version.
integration-tests/bundles/trivial.test.bundle/pom.xml Switch to junit:junit and bump parent version.
integration-tests/bundles/tccl.bundle/pom.xml Bump parent version.
integration-tests/bundles/tccl.intf.bundle/pom.xml Bump parent version.
integration-tests/bundles/simple.service.bundle/pom.xml Bump parent version.
integration-tests/bundles/simple.service.bundle.identical/pom.xml Bump parent version.
integration-tests/bundles/simple.service.bundle.2.identical/pom.xml Bump parent version.
integration-tests/bundles/simple.service.2.bundle/pom.xml Bump parent version.
integration-tests/bundles/simple.service.3.bundle/pom.xml Bump parent version.
integration-tests/bundles/service.listener.bundle/pom.xml Bump parent version.
integration-tests/bundles/scoped.common.bundle/pom.xml Bump parent version.
integration-tests/bundles/scoped.a.bundle/pom.xml Bump parent version.
integration-tests/bundles/scoped.b.bundle/pom.xml Bump parent version.
integration-tests/bundles/reference.test.bundle/pom.xml Bump parent version.
integration-tests/bundles/recursive.type.bundle/pom.xml Bump parent version.
integration-tests/bundles/proxy.listener/pom.xml Bump parent version.
integration-tests/bundles/proxy.creator.bundle/pom.xml Bump parent version.
integration-tests/bundles/proxy.destruction.test.bundle/pom.xml Bump parent version.
integration-tests/bundles/namespace.own.consumer.bundle/pom.xml Bump parent version.
integration-tests/bundles/lifecycle.test.bundle/pom.xml Bump parent version.
integration-tests/bundles/jdk5/pom.xml Bump parent version.
integration-tests/bundles/jdk5/component.scan.bundle/pom.xml Bump parent version.
integration-tests/bundles/jdk.proxy.bundle/pom.xml Bump parent version.
integration-tests/bundles/io.fragment.1.bundle/pom.xml Bump parent version.
integration-tests/bundles/io.fragment.2.bundle/pom.xml Bump parent version.
integration-tests/bundles/extender.version.bundle/pom.xml Bump parent version.
integration-tests/bundles/extender.listener.bundle/pom.xml Bump parent version.
integration-tests/bundles/extender.fragment.bundle/pom.xml Bump parent version.
integration-tests/bundles/export.import.dependency.bundle/pom.xml Bump parent version.
integration-tests/bundles/error.bundle/pom.xml Bump parent version.
integration-tests/bundles/dependency.factory.bundle/pom.xml Bump parent version.
integration-tests/bundles/dependency.test.bundle/pom.xml Bump parent version.
integration-tests/bundles/deadlock.bundle/pom.xml Bump parent version.
integration-tests/bundles/configuration.test.bundle/pom.xml Bump parent version.
integration-tests/bundles/config.file.with.dots.bundle/pom.xml Bump parent version.
integration-tests/bundles/config.bundle/pom.xml Bump parent version.
integration-tests/bundles/config.bundle/async.nowait.bundle/pom.xml Bump parent version.
integration-tests/bundles/config.bundle/async.wait.bundle/pom.xml Bump parent version.
integration-tests/bundles/config.bundle/no.publish.bundle/pom.xml Bump parent version.
integration-tests/bundles/config.bundle/sync.nowait.bundle/pom.xml Bump parent version.
integration-tests/bundles/config.bundle/sync.tail.bundle/pom.xml Bump parent version.
integration-tests/bundles/config.bundle/sync.wait.bundle/pom.xml Bump parent version.
integration-tests/bundles/cardinality.0to1.bundle/pom.xml Bump parent version.
integration-tests/bundles/blueprint/pom.xml Bump parent version.
integration-tests/bundles/blueprint/simple.bundle/pom.xml Bump parent version.
integration-tests/bundles/blueprint/waiting.bundle/pom.xml Bump parent version.
integration-tests/bundles/blueprint/error.bundle/pom.xml Bump parent version.
integration-tests/bundles/blueprint/config.bundle/pom.xml Bump parent version.
extensions/src/test/java/org/eclipse/gemini/blueprint/extensions/annotation/OsgiServiceAnnotationTest.java Update test to call postProcessProperties API.
extensions/src/main/java/org/eclipse/gemini/blueprint/extensions/annotation/ServiceReferenceInjectionBeanPostProcessor.java Migrate from deprecated adapter to SmartInstantiationAwareBeanPostProcessor + property introspection.
extensions/pom.xml Update Spring/OSGi coordinates; bump parent version.
extender/src/test/java/org/eclipse/gemini/blueprint/extender/internal/support/DummyApplicationEventMulticaster.java Adjust generics + implement new multicaster removal methods.
extender/src/test/java/org/eclipse/gemini/blueprint/extender/internal/activator/LifecycleManagerTest.java Update Mockito runner/matchers for newer Mockito.
extender/src/main/java/org/eclipse/gemini/blueprint/extender/support/internal/ConfigUtils.java Add Assert message for null checks.
extender/src/main/java/org/eclipse/gemini/blueprint/extender/support/DefaultOsgiApplicationContextCreator.java Add Assert message for null checks.
extender/src/main/java/org/eclipse/gemini/blueprint/extender/support/ApplicationContextConfiguration.java Add Assert messages for null checks.
extender/src/main/java/org/eclipse/gemini/blueprint/extender/internal/util/concurrent/RunnableTimedExecution.java Add Assert message for null checks.
extender/src/main/java/org/eclipse/gemini/blueprint/extender/internal/support/NamespaceManager.java Add Assert message for null checks.
extender/src/main/java/org/eclipse/gemini/blueprint/extender/internal/dependencies/startup/DependencyServiceManager.java Normalize formatting; update AccessControlContext sourcing for Java 17/Spring 6+ changes.
extender/src/main/java/org/eclipse/gemini/blueprint/extender/internal/activator/LifecycleManager.java Rename ignored exception var for Java 9+ compatibility.
extender/src/main/java/org/eclipse/gemini/blueprint/extender/event/BootstrappingDependencyEvent.java Add Assert message for null checks.
extender/src/main/java/org/eclipse/gemini/blueprint/extender/event/BootstrappingDependenciesEvent.java Add Assert message for null checks.
extender/pom.xml Update Spring/OSGi coordinates; bump parent version; remove aopalliance test dep.
extender/bnd.bnd Remove Spring version range constraints.
core/src/test/java/org/eclipse/gemini/blueprint/util/SimpleLoggerTest.java Update Mockito runner/matchers for newer Mockito.
core/src/test/java/org/eclipse/gemini/blueprint/util/ClassUtilsTest.java Relax assertion to accommodate interface set changes.
core/src/test/java/org/eclipse/gemini/blueprint/context/support/internal/ScopeTests.java Replace removed XmlBeanFactory; adjust scoped-bean destruction name for proxies.
core/src/test/java/org/eclipse/gemini/blueprint/compendium/config/MockConfigurationAdmin.java Add newer ConfigurationAdmin methods.
core/src/test/java/org/eclipse/gemini/blueprint/DictionaryEditorTest.java Disambiguate injection with @qualifier.
core/src/main/java/org/eclipse/gemini/blueprint/util/internal/ServiceReferenceBasedMap.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/util/internal/MapBasedDictionary.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/util/internal/ClassUtils.java Add Assert messages; update hasText assertions.
core/src/main/java/org/eclipse/gemini/blueprint/util/internal/BeanFactoryUtils.java Add Assert messages for null/empty checks.
core/src/main/java/org/eclipse/gemini/blueprint/util/OsgiServiceReferenceUtils.java Add Assert messages for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/util/OsgiPlatformDetector.java Add Assert messages for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/util/OsgiListenerUtils.java Align synthetic event dispatch with AllServiceListener semantics.
core/src/main/java/org/eclipse/gemini/blueprint/util/OsgiBundleUtils.java Add Assert messages for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/internal/controller/ImporterController.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/internal/collection/OsgiServiceCollection.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/internal/collection/DynamicSortedSet.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/internal/collection/DynamicSortedList.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/internal/aop/SwappingServiceReferenceProxy.java Implement ServiceReference.adapt/getProperties delegation.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/internal/aop/StaticServiceReferenceProxy.java Implement ServiceReference.adapt/getProperties delegation.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/internal/aop/ServiceStaticInterceptor.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/internal/aop/ServiceDynamicInterceptor.java Add Assert messages in afterPropertiesSet.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/internal/aop/InfrastructureOsgiProxyAdvice.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/internal/aop/ImportedOsgiServiceProxyAdvice.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/OsgiServiceCollectionProxyFactoryBean.java Add Assert messages for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/AbstractServiceProxyCreator.java Add Assert messages for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/support/AbstractOsgiServiceImportFactoryBean.java Add Assert messages for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/importer/event/OsgiServiceDependencyEvent.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/exporter/support/internal/support/ServiceRegistrationDecorator.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/exporter/support/internal/controller/ExporterController.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/exporter/support/OsgiServiceFactoryBean.java Add Assert messages for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/service/dependency/internal/DefaultMandatoryDependencyManager.java Add Assert message for hasText.
core/src/main/java/org/eclipse/gemini/blueprint/context/support/internal/security/SecurityUtils.java Use AccessController.getContext fallback for Java 17/Spring 6+ API removals.
core/src/main/java/org/eclipse/gemini/blueprint/context/support/internal/scope/OsgiBundleScope.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/context/support/internal/classloader/ClassLoaderFactory.java Add Assert messages for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/context/support/internal/classloader/ChainedClassLoader.java Add Assert message for notEmpty.
core/src/main/java/org/eclipse/gemini/blueprint/context/support/OsgiBundleXmlApplicationContext.java Add destroy() delegating to close().
core/src/main/java/org/eclipse/gemini/blueprint/context/support/DelegatedNamespaceHandlerResolver.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/context/support/ChainedEntityResolver.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/context/support/AbstractOsgiBundleApplicationContext.java Remove obsolete SecurityContextProvider usage.
core/src/main/java/org/eclipse/gemini/blueprint/context/event/OsgiBundleApplicationContextEventMulticasterAdapter.java Add Assert messages (but introduces a regression—see PR comment).
core/src/main/java/org/eclipse/gemini/blueprint/context/event/OsgiBundleApplicationContextEvent.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/config/internal/adapter/OsgiServiceRegistrationListenerAdapter.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/config/internal/adapter/OsgiServiceLifecycleListenerAdapter.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/config/internal/adapter/CustomListenerAdapterUtils.java Add Assert message for notEmpty.
core/src/main/java/org/eclipse/gemini/blueprint/config/internal/OsgiDefaultsDefinition.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/config/internal/AbstractReferenceDefinitionParser.java Add Assert message for null checks.
core/src/main/java/org/eclipse/gemini/blueprint/compendium/internal/cm/UpdateMethodAdapter.java Add Assert messages for null checks.
core/pom.xml Update Spring/OSGi coordinates; remove aopalliance dep; bump parent version.
core/bnd.bnd Remove Spring version range constraints and adjust imports.
Jenkinsfile Remove Knopflerfish CI stage.
CLAUDE.md Document new baseline and build/test commands for Java 17 + Spring 7.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

*/
public void removeApplicationListener(OsgiBundleApplicationContextListener osgiListener) {
Assert.notNull(null);
Assert.notNull(null, "argument must not be null");
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removeApplicationListener currently calls Assert.notNull(null, ...), which will always throw and makes it impossible to remove listeners. This should validate osgiListener (or simply delegate without asserting) instead of asserting on null.

Suggested change
Assert.notNull(null, "argument must not be null");
Assert.notNull(osgiListener, "argument must not be null");

Copilot uses AI. Check for mistakes.
Comment on lines +19 to +28
ignore.junit.version=4.13.2
ignore.logback.version=1.5.16

ignore.spring.version=5.0.4.RELEASE_1
ignore.spring.version=${spring.maven.artifact.version}
ignore.gemini.blueprint.version=${project.version}
ignore.slf4j.version=1.7.5
ignore.slf4j.version=2.0.16
ignore.assertj.version=3.6.2

# groupIds
ignore.servicemix.bundles.groupId=org.apache.servicemix.bundles
ignore.spring.groupId=org.springframework
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ignore.junit.version and ignore.spring.groupId are defined but not referenced anywhere in this properties file after switching to wrapped bundles, which adds noise and can confuse future updates. Consider removing unused ignore.* entries (or add a comment explaining why they’re kept).

Copilot uses AI. Check for mistakes.
Assert.notNull in removeApplicationListener was always called with null,
making listener removal impossible. Now validates the actual parameter.

Also remove ignore.junit.version and ignore.spring.groupId from
boot-bundles.properties — both became unreferenced after the switch to
wrapped bundles.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants