# CC/PP and Jigsaw

Jigsaw Home / Documentation Overview / Tutorials

This Page
Introduction
Writing an application

Jigsaw Links
Jigsaw Design
configuration tutorial
org.w3c.jigsaw.ccpp

Related Links
CC/PP W3C Note

# Introduction

Jigsaw has an simple implementation of CC/PP, it's mainly a framework for CC/PP developpers. It is assumed that you are familiar with Jigsaw architecture, and that you have understand the configuration tutorial.

Here we describe the CC/PP framework available in Jigsaw, it is based on the "CC/PP exchange protocol based on HTTP Extension Framework" W3C Note.

Jigsaw provide a set of classes that developpers can use to build a CC/PP application:

org.w3c.jigsaw.ccpp.CCPPFrame
  Should take replace the usual HTTPFrame
org.w3c.jigsaw.ccpp.CCPPRequest
  A wrapper for the classic Request class, provide some CC/PP functionalities.
org.w3c.jigsaw.ccpp.CCPPWarning
  the CC/PP Warning
org.w3c.jigsaw.ccpp.ProfileRef
  The CC/PP Profile Reference

# Writing a CC/PP application

If you want to write a CC/PP application you will need to write a new Frame that inherits from CCPPFrame and define the behaviour of the usual HTTP methods (GET, HEAD, PUT, ...).

        public class MyCCPPFrame extends CCPPFrame {

            /**
             * My CC/PP GET method.
             * @param request The request to handle.
             * @exception ProtocolException If processsing the request failed.
             * @exception ResourceException If the resource got a fatal error.
             */

            public Reply get(Request request)
        	    throws ProtocolException, ResourceException
            {
                CCPPRequest ccpprequest = getCCPPRequest(request);

                Reply reply = createDefaultReply(request, HTTP.OK);

                ProfileRef[] refs = ccpprequest.getProfileReferences();

                // ...

                return reply;
            }

        }

When your frame is written, you just have to modify the Jigsaw configuration in order to use your frame instead of the classic HTTPFrame. You should read the documenation about indexers.