Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ARIES-2161] update destroy method to be compatible with spring 6 #299

Open
wants to merge 2 commits into
base: trunk
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions blueprint/blueprint-spring/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -119,13 +119,13 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.2.RELEASE</version>
<version>6.1.15</version>
Copy link
Contributor

Choose a reason for hiding this comment

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

I checked that spring 6.x does not work with minimal java 8 that we should have in the repo
you can find the errors by running:

mvn -f blueprint/blueprint-spring clean package

or checking your branch with definition of blueprint build from #297

Copy link
Author

Choose a reason for hiding this comment

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

yes, spring 6 is for java 17, so if java 8 support is required, the latest version is 5.3.39.

Copy link

Choose a reason for hiding this comment

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

spring 5 is end of life, it does not really make sense to support spring 5. blueprint-spring should support spring 6 (therefore need to move to jdk17) is there a way to move one project without moving all blueprint projects ?

Copy link
Contributor

Choose a reason for hiding this comment

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

There are a lot of possible users who stay with Java 8 so it's better to keep all the artifacts compatible with Java 8 if possible. Especially that Spring is not often used in OSGi projects.

But personally I see the value in using the newest version of Spring.
Maybe the solution here may be creating the new artifact blueprint-spring6. Existing blueprint-spring could use newest spring 5.x version supporting Java 8. Perfectly the code should be reused between modules so the new module should only override necessary parts (if possible).
WDYT?

Copy link

@amergey amergey Jan 5, 2025

Choose a reason for hiding this comment

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

Yes, but people using spring cannot stay with Java 8, so blueprint-spring itself will not be use in java 8.
Anyway I realized looking at this PR than same code can work for spring 5 and current spring 6 as well with no differences yet, so no need to separate artifacts yet, and blueprint-spring can stay with java 8

<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.2.RELEASE</version>
<version>6.1.15</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -191,6 +191,13 @@

<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<target>1.7</target>
Copy link
Contributor

Choose a reason for hiding this comment

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

java 8 should be minimal supported version

<source>1.7</source>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.aries.versioning</groupId>
<artifactId>org.apache.aries.versioning.plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanNotOfRequiredTypeException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.core.ResolvableType;
Expand Down Expand Up @@ -231,6 +232,16 @@ public <T> T getBean(Class<T> requiredType, Object... args) throws BeansExceptio
throw new UnsupportedOperationException();
}

@Override
public <T> ObjectProvider<T> getBeanProvider(Class<T> requiredType) {
throw new UnsupportedOperationException();
}

@Override
public <T> ObjectProvider<T> getBeanProvider(ResolvableType requiredType) {
throw new UnsupportedOperationException();
}

@Override
public boolean containsBean(String name) {
return container.getComponentIds().contains(name);
Expand Down Expand Up @@ -261,6 +272,11 @@ public Class<?> getType(String name) throws NoSuchBeanDefinitionException {
throw new UnsupportedOperationException();
}

@Override
public Class<?> getType(String name, boolean allowFactoryBeanInit) throws NoSuchBeanDefinitionException {
throw new UnsupportedOperationException();
}

@Override
public String[] getAliases(String name) {
throw new UnsupportedOperationException();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ private org.springframework.beans.factory.xml.ParserContext getOrCreateParserCon
if (applicationContext == null) {
applicationContext = new SpringApplicationContext(container);
registry.registerComponentDefinition(createPassThrough(parserContext,
SPRING_APPLICATION_CONTEXT_ID, applicationContext, "destroy"
SPRING_APPLICATION_CONTEXT_ID, applicationContext, "close"
));
}
// Create registry
Expand Down