#!/usr/bin/perl -w

# Copyright 2001-2006 The Apache Software Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

sub init {
    my $self = shift;
    
    $self->register_config( XPathScript_Stylesheet 
                            => sub { $self->xpathscript_stylesheet(@_) } );
    $self->register_config( XPathScript_OutputType 
                            => sub { $self->xpathscript_output_style(@_) } );
}

sub xpathscript_output_style {
    my ($self, $conf, $style) = @_;
    
    my $key = $self->plugin_name . '::outputstyle';

    if ( $style ) {
        $conf->notes($key, $style );
    } 
    else {
        $style = $conf->notes( $key );
    }

    $self->log( LOGDEBUG, "output type is $style" );

    return $style;
}

sub xpathscript_stylesheet {
    my ($self, $conf, $stylesheet) = @_;
    
    my $key = $self->plugin_name . '::stylesheet';

    if ( $stylesheet ) {
        $conf->notes($key, $stylesheet);
    } 
    else {
        $stylesheet = $conf->notes( $key );
    }

    $self->log( LOGDEBUG, "stylesheet is $stylesheet" );

    return $stylesheet;
}

sub hook_xmlresponse {
    my ($self, $input) = @_;
    
    $self->log( LOGDEBUG, 'XPathScript Transform' );
    
    my $stylefile = $self->xpathscript_stylesheet($self->config);
    my $output_style = $self->xpathscript_output_style($self->config);

    my $out = $input->transform(XPathScript($stylefile, $output_style));
    
    return OK, $out;
}
