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

Issue #11873 - Server resources are not found if the server is subclassed in a different package #11874

Merged
merged 1 commit into from
Jun 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -793,7 +793,7 @@ public Server getServer()
*/
public Resource getDefaultStyleSheet()
{
return newResource("jetty-dir.css");
return newResource("/org/eclipse/jetty/server/jetty-dir.css");
}

/**
Expand All @@ -803,7 +803,7 @@ public Resource getDefaultStyleSheet()
*/
public Resource getDefaultFavicon()
{
return newResource("favicon.ico");
return newResource("/org/eclipse/jetty/server/favicon.ico");
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
//
// ========================================================================
// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others.
//
// This program and the accompanying materials are made available under the
// terms of the Eclipse Public License v. 2.0 which is available at
// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
// which is available at https://www.apache.org/licenses/LICENSE-2.0.
//
// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
// ========================================================================
//

package org.eclipse.jetty.server.subpackage;

import java.util.stream.Stream;

import org.eclipse.jetty.server.Server;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

import static org.junit.jupiter.api.Assertions.assertNotNull;

public class ServerDefaultResourcesTest
{
public static Stream<Arguments> arguments()
{
return Stream.of(
new Server(),
new Server(){}
).map(Arguments::of);
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think this tests what you think it tests.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@joakime this test fails before fix and now passes.

The idea is that it is trying to load jetty-dir.css, and it does getClass().getResource(name), internally this appends the package name as the resource does not start with /, and because the server is subclassed with the {} it is looking for /org/eclipse/jetty/server/subpackage/jetty-dir.css which does not exist.

Copy link
Contributor

Choose a reason for hiding this comment

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

So the second argument is an anonymous subclass. got it.

}

@ParameterizedTest
@MethodSource("arguments")
public void testDefaultStyleSheet(Server server) throws Exception
{
try
{
server.start();
assertNotNull(server.getDefaultStyleSheet());
}
finally
{
server.stop();
}
}

@ParameterizedTest
@MethodSource("arguments")
public void testDefaultFavicon(Server server) throws Exception
{
try
{
server.start();
assertNotNull(server.getDefaultFavicon());
}
finally
{
server.stop();
}
}
}
Loading