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

Reply via email to