Skip to content

Commit

Permalink
fix: use URLClassLoader with ResourceProvider in Maven plugins
Browse files Browse the repository at this point in the history
Fixes vaadin/hilla#2637

ResourceProvider ignored the actual project's resources when using the default ClassLoader. This resulted in loading `vaadin-featureflags.properties` from the vaadin-dev-bundle jar, even though there is a file in the project.
  • Loading branch information
platosha committed Aug 13, 2024
1 parent ed02ec3 commit 9aca87a
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public LookupImpl(ClassFinder classFinder) {
@Override
public <T> T lookup(Class<T> serviceClass) {
if (ResourceProvider.class.isAssignableFrom(serviceClass)) {
return serviceClass.cast(new ResourceProviderImpl());
return serviceClass.cast(new ResourceProviderImpl(classFinder.getClassLoader()));
}
return lookupAll(serviceClass).stream().findFirst().orElse(null);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Collections;
import java.util.List;

Expand All @@ -31,6 +32,16 @@
*/
class ResourceProviderImpl implements ResourceProvider {

private ClassLoader classLoader;

ResourceProviderImpl() {
this(ResourceProviderImpl.class.getClassLoader());
}

ResourceProviderImpl(ClassLoader classLoader) {
this.classLoader = classLoader;
}

@Override
public URL getApplicationResource(String path) {
return ResourceProviderImpl.class.getClassLoader().getResource(path);
Expand Down

0 comments on commit 9aca87a

Please sign in to comment.