Hello Jim,
thanks for the sample code, I understand the issue and have entered a new
one in github : https://github.com/restlet/restlet-framework-java/issues/670
.
Best regards,
Thierry Boileau
Thierry -
>
> I very much appreciate your reply, but TestApplication does not take into
> account a custom Representation that may fail. I've changed the
> TestApplication class to TestApplicationJim to better explain what I am
> trying to do. The RepresentationFails class demonstrates that the methods
> in MyStatusService are never invoked.
>
> As succinctly as I can state it: If a write operation in a custom
> representation fails, no method in the customized StatusService is invoked.
>
> FYI - The Restlet code is excellent, and I have improved my coding style
> after learning from yours.
>
> Code is below, and also attached
>
>
> package test;
>
> import java.io.IOException;
> import java.io.InputStream;
> import java.io.OutputStream;
> import java.io.Reader;
> import java.io.Writer;
> import java.nio.channels.ReadableByteChannel;
> import java.nio.channels.WritableByteChannel;
>
> import org.restlet.Application;
> import org.restlet.Component;
> import org.restlet.Request;
> import org.restlet.Response;
> import org.restlet.data.MediaType;
> import org.restlet.data.Protocol;
> import org.restlet.data.Status;
> import org.restlet.representation.OutputRepresentation;
> import org.restlet.representation.Representation;
> import org.restlet.resource.ClientResource;
> import org.restlet.resource.ResourceException;
> import org.restlet.routing.Router;
>
> public class TestApplicationJim extends Application {
>
> /**
> * @param args
> * @throws Exception
> */
> public static void main(String[] args) throws Exception {
> Component c = new Component();
> c.getServers().add(Protocol.HTTP, 8182);
> c.getDefaultHost().attach(new TestApplicationJim());
> c.start();
> System.out.println("TestApplicationJim started");
>
> ClientResource cr = new ClientResource("
> http://localhost:8182/test1";);
> cr.setRetryOnError(false);
> try {
> cr.get();
> } catch (Exception e) {
> cr.getResponseEntity().write(System.out);
> }
>
> cr = new ClientResource("http://localhost:8182/test2";);
> cr.setRetryOnError(false);
> try {
> cr.get();
> } catch (Exception e) {
> cr.getResponseEntity().write(System.out);
> }
> c.stop();
> }
>
> public void handle(Request request, Response response) {
> System.out.println("TestApplicationJim handle");
> class RepresentationFails extends OutputRepresentation {
>
> public RepresentationFails() {
> super(MediaType.APPLICATION_ZIP, -1);
> }
>
> @Override
> public ReadableByteChannel getChannel() throws IOException {
> throw new
> ResourceException(Status.CLIENT_ERROR_NOT_ACCEPTABLE);
> }
>
> @Override
> public Reader getReader() throws IOException {
> throw new
> ResourceException(Status.CLIENT_ERROR_NOT_ACCEPTABLE);
> }
>
> @Override
> public InputStream getStream() throws IOException {
> throw new
> ResourceException(Status.CLIENT_ERROR_NOT_ACCEPTABLE);
> }
>
> @Override
> public void write(Writer writer) throws IOException {
> throw new
> ResourceException(Status.CLIENT_ERROR_NOT_ACCEPTABLE);
> }
>
> @Override
> public void write(WritableByteChannel writableChannel) throws
> IOException {
> throw new
> ResourceException(Status.CLIENT_ERROR_NOT_ACCEPTABLE);
> }
>
> @Override
> public void write(OutputStream outputStream) throws
> IOException {
> throw new
> ResourceException(Status.CLIENT_ERROR_NOT_ACCEPTABLE);
> }
>
> }
> response.setEntity(new RepresentationFails());
> }
>
> public TestApplicationJim() {
> super();
> setStatusService(new MyStatusService());
> }
>
> public org.restlet.Restlet createInboundRoot() {
> Router router = new Router(getContext());
> router.attach("/test1", TestExceptionServerResource.class);
> router.attach("/test2", TestResourceExceptionServerResource.class);
> return router;
> };
>
> }
--
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3011830