Apache-DAV

 view release on metacpan or  search on metacpan

xs/Apache/DAV/Resource/Resource.pm  view on Meta::CPAN

# 
# /*
#  * *********** WARNING **************
#  * This file generated by Apache::DAV::WrapXS/0.01
#  * Any changes made here will be lost
#  * ***********************************
#  * 1. /opt/perl5.6.1/lib/site_perl/5.6.1/ExtUtils/XSBuilder/WrapXS.pm:38
#  * 2. /opt/perl5.6.1/lib/site_perl/5.6.1/ExtUtils/XSBuilder/WrapXS.pm:1898
#  * 3. xsbuilder/xs_generate.pl:6
#  */
# 


package Apache::DAV::Resource;
require DynaLoader ;
use strict ;
use vars qw{$VERSION @ISA} ;

push @ISA, 'DynaLoader' ;
$VERSION = '0.01';
bootstrap Apache::DAV::Resource $VERSION ;


use Apache::Array ;
use Apache::DAV;
use Apache::DAV::PropsResult;
use Apache::DAV::XMLDoc;
use Apache::DAV::XMLAttr;
use Apache::DAV::XMLElem;
use Apache::DAV::Text;
use Apache::DAV::TextHeader;
use Apache::DAV::HooksLocks;
use Apache::DAV::LockDB;
use Apache::DAV::Error;

use vars qw{@obj} ;

sub print_tag
    {
    my ($e) = @_ ;

    print '<', $e -> name, '>', "\n" ;
    my $t = $e -> first_cdata ;
    if ($t)
        {
        my $txt = $t -> first ;
        while ($txt)
            { 
            print $txt -> text, "\n" ;
            $txt = $txt -> next ;
            }
        }

    print_tags ($e -> first_child) ;

    print '</', $e -> name, '>', "\n" ;
    }


sub print_tags
    {
    my ($e) = @_ ;

    while ($e)
        {
        print_tag ($e) ;
        $e = $e -> next ;
        }
    }



sub create_xml_prop

    {
    my ($r, $set, $remove) = @_ ;

    my $nsid = 0 ;
    my %namespaces ;
    my @set ;
    my @remove ;
    #my @obj ;
    @obj = () ;
    my $setprop ;
    my $setelem ;
    my $removeprop ;
    my $removeelem ;


    $namespaces{'DAV:'} = $nsid++ ;

    if (keys %$set)
        {
        $setprop = Apache::DAV::XMLElem -> new ({name => 'prop'}) ;
        foreach (keys %$set)
            {
            my ($ns, $name) ;
            ($ns, $name) = ('DAV:', $_) if (!(($ns, $name) = /^(.*):(.*?)$/)) ;
            $ns   = 'DAV:' if ($ns eq 'DAV' || !$ns) ;
            $name = '???' if (!$name) ;
            $namespaces{$ns} = $nsid++ if (!exists $namespaces{$ns}) ;
        
            my $text   = Apache::DAV::Text -> new ({ text => $set -> {$_} });
            my $elem   = Apache::DAV::XMLElem -> new ({name => $name, ns => $namespaces{$ns},}) ; 
            my $header = $elem -> first_cdata;
            $header->first($text);
            $header->last ($text);
            $set[-1] -> next($elem) if (@set) ;
            $elem->parent($setprop);
            push @set, $elem ;
            push @obj, $elem, $text ;
            }            
        $setprop -> first_child($set[0]) ;
        $setprop -> last_child($set[-1]) ;
        $setelem  = Apache::DAV::XMLElem -> new ({name        => 'set', 
                                                      first_child => $setprop,
                                                      last_child  => $setprop,
                                                      });
        $setprop->parent($setelem);
        push @obj, $setprop, $setelem ;
        }
        
            
    if (keys %$remove)
        {
        $removeprop = Apache::DAV::XMLElem -> new ({name => 'prop'}) ;
        foreach (keys %$remove)
            {
            my ($ns, $name) ;
            ($ns, $name) = ('DAV:', $_) if (!(($ns, $name) = /^(.*):(.*?)$/)) ;
            $ns   = 'DAV:' if ($ns eq 'DAV' || !$ns) ;
            $name = '???' if (!$name) ;
            $namespaces{$ns} = $nsid++ if (!exists $namespaces{$ns}) ;
        
            my $elem = Apache::DAV::XMLElem -> new ({name => $name, ns => $namespaces{$ns},}) ; 
            $remove[-1] -> next($elem) if (@remove) ;
            $elem->parent($removeprop);
            push @remove, $elem ;
            push @obj, $elem ;
    
            }            
        $removeprop -> first_child($remove[0]) ;
        $removeprop -> last_child($remove[-1]) ;
        $removeelem  = Apache::DAV::XMLElem -> new ({name        => 'remove', 
                                                      first_child => $removeprop,
                                                      last_child  => $removeprop,
                                                      });
        $removeprop->parent($removeelem);
        push @obj, $removeprop, $removeelem ;
        #print "remove: " ; print_tags ($removeelem) ;
        }
    
    
    my $xml_elem_propertyupdate ;
    if ($setelem || $removeelem)
        {
        $xml_elem_propertyupdate = Apache::DAV::XMLElem -> new ({name => 'propertyupdate',
                                                          first_child => $setelem || $removeelem,
                                                          last_child  => $removeelem || $setelem,
                                                          });

        push @obj, $xml_elem_propertyupdate ;
        $setelem->parent($xml_elem_propertyupdate) if ($setelem) ;
        $removeelem->parent($xml_elem_propertyupdate) if ($removeelem) ;
        $setelem->next($removeelem) if ($removeelem && $setelem) ;



( run in 1.186 second using v1.01-cache-2.11-cpan-39bf76dae61 )