Изменения API Jetty 12: как заменить HttpInput.Interceptor и HttpOutput.InterceptorJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Изменения API Jetty 12: как заменить HttpInput.Interceptor и HttpOutput.Interceptor

Сообщение Anonymous »

Я использовал собственные реализации HttpInput.Interceptor и HttpOutput.Interceptor в Jetty 11 и более ранних версиях, переопределяя методы readFrom и write для добавления своей собственной логики.
Сейчас я перехожу на Jetty 12, где эти API больше недоступны. Есть ли альтернативный подход или рекомендуемая замена в Jetty 12 для достижения того же поведения? Как это должно быть реализовано в новой версии?
Ниже приведен пример кода, который я делаю в Jetty 9, 10, 11.
import org.eclipse.jetty.server.HttpInput;
import org.eclipse.jetty.server.Request;

import java.io.IOException;
import java.nio.ByteBuffer;

public class JettyInputInterceptor implements HttpInput.Interceptor {

private final Request baseRequest;
private final Reporting rhandler;

JettyInputInterceptor(Reporting rhandler, Request baseRequest ) {
this.rhandler = rhandler;
this.baseRequest = baseRequest;
}

@Override
public HttpInput.Content readFrom( HttpInput.Content content ) {
long handle = rhandler.getRequestHandle();
if( content.hasContent() && handle != 0L ) {
int size = content.remaining();
byte[] body = new byte[size];
content.get( body, 0, size );
ReturnValue rv = Native.filterBody( handle, body );
if( rv.getAction() == NativeThing.ACTIONI ) {
ByteBuffer buf = ByteBuffer.wrap( rv.getValue() );

return new HttpInput.Content( buf );
} else if( rv.getAction() == NativeThing.ACTIONII ) {
try {
baseRequest.getResponse().setStatus( SC_BAD_REQUEST );
baseRequest.getResponse().closeOutput();
} catch( IOException e ) {
e.printStackTrace();
}
}
return new HttpInput.Content( ByteBuffer.wrap( body ) );
}
return content;
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... put-interc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»