1 package OpenSRF::DomainObject;
2 use base 'OpenSRF::DOM::Element::domainObject';
4 use OpenSRF::Utils::Logger qw(:level);
5 use OpenSRF::DomainObject::oilsPrimitive;
6 my $logger = "OpenSRF::Utils::Logger";
14 OpenSRF::DomainObject is an abstract base class. It
15 should not be used directly. See C<OpenSRF::DomainObject::*>
26 return unless (defined $node);
28 if (ref($node) eq 'HASH') {
29 return new OpenSRF::DomainObject::oilsHash (%$node);
30 } elsif (ref($node) eq 'ARRAY') {
31 return new OpenSRF::DomainObject::oilsArray (@$node);
41 return unless (defined $node);
43 if ($node->nodeType == 3) {
44 return $node->nodeValue;
45 } elsif ($node->nodeName =~ /domainObject/o) {
46 return $node->tie_me if ($node->class->can('tie_me'));
53 $class = ref($class) || $class;
55 (my $type = $class) =~ s/^.+://o;
57 $tmp_doc ||= OpenSRF::DOM->createDocument;
58 my $dO = OpenSRF::DOM::Element::domainObject->new( $type, @_ );
60 $tmp_doc->documentElement->appendChild($dO);
69 $logger->debug( "DomainObject:_attr_get_set: ". $self->toString, INTERNAL );
71 my $node = $self->attrNode($part);
73 $logger->debug( "DomainObject:_attr_get_set " . $node->toString(), INTERNAL ) if ($node);
76 if (defined(my $new_value = shift)) {
78 my $old_val = $node->getAttribute( "value" );
79 $node->setAttribute(value => $new_value);
82 $self->addAttr( $part => $new_value );
86 return $node->getAttribute( "value" );