Skip to content

Commit

Permalink
feat: logging via slf4j
Browse files Browse the repository at this point in the history
  • Loading branch information
olenagerasimova committed Dec 13, 2023
1 parent fed7eb4 commit ab908d9
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,16 @@
import org.eclipse.jetty.http3.client.HTTP3Client;
import org.eclipse.jetty.http3.client.transport.HttpClientTransportOverHTTP3;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* A transporter for HTTP/HTTPS.
*/
final class HttpTransporter extends AbstractTransporter {

static final Logger LOGGER = LoggerFactory.getLogger("http3.plugin");

private final static Set<String> CENTRAL = Set.of(
"repo.maven.apache.org",
"oss.sonatype.org",
Expand Down Expand Up @@ -114,7 +118,7 @@ final class HttpTransporter extends AbstractTransporter {
}
this.checksumExtractors = requireNonNull(checksumExtractors, "checksum extractors must not be null");
try {
System.err.println("\tCustom HttpTransporter repo: " + repository.toString());
LOGGER.debug("Custom HttpTransporter repo: {}", repository);
this.baseUri = new URI(repository.getUrl() + "/").normalize().parseServerAuthority();
if (baseUri.isOpaque()) {
throw new URISyntaxException(repository.getUrl(), "URL must not be opaque");
Expand Down Expand Up @@ -293,24 +297,23 @@ private Pair<InputStream, HttpFields> makeRequest(
}).body(bodyContent).send(listener);
final Response response = listener.get(this.connectTimeout, TimeUnit.MILLISECONDS);
if (response.getStatus() >= 300) {
System.err.printf(
"Request over %s error status %s, method=%s, url=%s%n",
LOGGER.error(
"{} request error status {}, method={}, url={}",
version, response.getStatus(), method, url
);
throw new HttpResponseException(Integer.toString(response.getStatus()), response);
}
System.err.printf(
"Request over %s done, method=%s, resp status=%s, url=%s%n",
version, method, response.getStatus(), url
LOGGER.info(
"{} request done, method={}, resp status={}, url={}", version, method, response.getStatus(), url
);
return new ImmutablePair<>(listener.getInputStream(), response.getHeaders());
} catch (Exception ex) {
System.err.printf(
"Request over %s error=%s: %s, method=%s, url=%s%n", version,
LOGGER.error(
"{} request error={}: {}, method={}, url={}", version,
ex.getClass(), ex.getMessage(), method, url
);
if (version == HttpVersion.HTTP_3 && ex instanceof TimeoutException) {
System.err.printf("Repeat request over HTTP/1.1 method=%s, url=%s%n", method, url);
LOGGER.info("Repeat via HTTP/1.1 method={}, url={}", method, url);
return this.makeRequest(method, task, bodyContent, this.initOrGetHttpClient());
}
throw new HttpRequestException(ex.getMessage(), request);
Expand Down Expand Up @@ -354,7 +357,7 @@ private HttpVersion httpVersion(final HttpClient client) {
* @throws IllegalAccessException
*/
private void forceLoadHttp3Support() throws NoSuchFieldException, IllegalAccessException {
System.err.println("Custom HttpTransporter.forceLoadHttp3Support() called!");
LOGGER.debug("Custom HttpTransporter.forceLoadHttp3Support() called!");
// Checking http3 support is available (loaded)
PreEncodedHttpField f = new PreEncodedHttpField("Host", "localhost");
for (final HttpVersion v: HttpVersion.values()) {
Expand All @@ -369,47 +372,20 @@ private void forceLoadHttp3Support() throws NoSuchFieldException, IllegalAccessE

// TODO: Force http3 initialization (HACK!)
final ServiceLoader<HttpFieldPreEncoder> load = ServiceLoader.load(HttpFieldPreEncoder.class,PreEncodedHttpField.class.getClassLoader());
/*ServiceLoader<HttpFieldPreEncoder> load = null;
ClassLoader saveCl = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(PreEncodedHttpField.class.getClassLoader());
load = ServiceLoader.load(HttpFieldPreEncoder.class);
}finally {
Thread.currentThread().setContextClassLoader(saveCl);
}*/

/*System.err.println("\tCustom HttpTransporter ServiceLoader=" + load);
Stream<ServiceLoader.Provider<HttpFieldPreEncoder>> providerStream = TypeUtil.serviceProviderStream(load);
System.err.println("\tCustom HttpTransporter Stream<ServiceLoader.Provider<HttpFieldPreEncoder>> = " + providerStream);
ArrayList<Integer> calls = new ArrayList<>();
providerStream.forEach((provider) -> {
try {
calls.add(calls.size());
HttpFieldPreEncoder encoder = (HttpFieldPreEncoder)provider.get();
HttpVersion v = encoder.getHttpVersion();
System.err.println("\tCustom HttpTransporter HttpFieldPreEncoder: encoder=" + encoder + "; ver=" + v);
} catch (RuntimeException | Error var3) {
System.err.println("\tCustom HttpTransporter Error processing encoder: " + provider.get());
}
});
System.err.println("\tCustom HttpTransporter providerStream calls=" + calls.size());*/

HashMap<HttpVersion, HttpFieldPreEncoder> encoders = new HashMap<>();
for (HttpFieldPreEncoder val: load) {
//System.err.println("\tCustom HttpTransporter HttpFieldPreEncoder val=" + val);
LOGGER.debug("Custom HttpTransporter HttpFieldPreEncoder val={}", val);
encoders.put(val.getHttpVersion(), val);
}

Field ff = PreEncodedHttpField.class.getDeclaredField("__encoders");
ff.setAccessible(true);
String fldDescr = ff.get(null).toString();
//System.err.println("\tCustom HttpTransporter __encoders BEFORE: " + fldDescr + "; this=" + this);
@SuppressWarnings("unchecked") EnumMap<HttpVersion, HttpFieldPreEncoder> obj = (EnumMap<HttpVersion, HttpFieldPreEncoder>)ff.get(null);
if (encoders.containsKey(HttpVersion.HTTP_3) && !obj.containsKey(HttpVersion.HTTP_3)) {
//System.err.println("\tCustom HttpTransporter adding to __encoders: " + obj + "; this=" + this);
LOGGER.debug("Custom HttpTransporter adding to __encoders: {}, this = {}", obj, this);
obj.put(HttpVersion.HTTP_3, encoders.get(HttpVersion.HTTP_3));
}
//System.err.println("\tCustom HttpTransporter __encoders AFTER: " + obj + "; this=" + this);
LOGGER.debug("Custom HttpTransporter __encoders AFTER: {}; this={}", obj, this);

// Rechecking http3 support is available (loaded)
f = new PreEncodedHttpField("Host", "localhost");
Expand All @@ -420,7 +396,7 @@ private void forceLoadHttp3Support() throws NoSuchFieldException, IllegalAccessE
} catch (Exception ex) {
len = -1;
}
//System.err.println("\tCustom HttpTransporter PreEncodedHttpField v=" + v + "; len=" + len);
LOGGER.debug("Custom HttpTransporter PreEncodedHttpField v={}; len={}", v, len);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ public Transporter newInstance(RepositorySystemSession session, RemoteRepository
throws NoTransporterException {
requireNonNull(session, "session cannot be null");
requireNonNull(repository, "repository cannot be null");
System.err.println("Custom HttpTransporterFactory created!!!");
HttpTransporter.LOGGER.debug("Custom HttpTransporterFactory created!!!");
try {
return new HttpTransporter(extractors, repository, session);
} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ log4j.appender.CONSOLE.layout.ConversionPattern=[%p] %c - %m%n

log4j2.formatMsgNoLookups=True

log4j.logger.http3.plugin=DEBUG
log4j.logger.com.artipie=DEBUG
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
*/
public class ArtipieAndLocalPluginHTTP3IT {

private static final Logger LOGGER = LoggerFactory.getLogger(ArtipieAndLocalPluginHTTP3IT.class);
private static final Logger LOGGER = LoggerFactory.getLogger("ArtipieAndLocalPluginHTTP3IT");

private GenericContainer<?> mavenClient;

Expand Down Expand Up @@ -82,9 +82,9 @@ void resolvesDependencies() throws IOException, InterruptedException {
MatcherAssert.assertThat(
res,
Matchers.stringContainsInOrder(
"BUILD SUCCESS",
"Request over HTTP/3.0 done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/args4j/args4j/2.33/args4j-2.33.jar",
"Request over HTTP/3.0 done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/org/springframework/spring-web/6.1.0/spring-web-6.1.0.jar"
"HTTP/3.0 request done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/args4j/args4j/2.33/args4j-2.33.jar",
"HTTP/3.0 request done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/org/springframework/spring-web/6.1.0/spring-web-6.1.0.jar",
"BUILD SUCCESS"
)
);
}
Expand Down

0 comments on commit ab908d9

Please sign in to comment.