Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
WebService::GData::NodUserbContributedbPervice::GData::Node::AbstractEntity(3)

NAME
       WebService::GData::Node::AbstractEntity - Abstract proxy	class
       representing several xml	nodes.

SYNOPSIS
	  #your	package	should inherit from AbstractEntity.

	  package WebService::GData::Node::AuthorEntity;
	  use base 'WebService::GData::Node::AbstractEntity';

	  use WebService::GData::Node::Author();
	  use WebService::GData::Node::Uri();
	  use WebService::GData::Node::Name();

	  our $VERSION = 0.01_01;

	  sub __init {
		   my ($this,$params) =	@_;

	       #the entity is the root node used

		   $this->_entity(new WebService::GData::Node::Author());

		   #and	its children:
		   $this->{_name}   = new WebService::GData::Node::Name($params->{name});
		   $this->{_uri}    = new WebService::GData::Node::Uri ($params->{uri});

		   $this->_entity->child($this->{_name})->child($this->{_uri});
	   }

	   1;

	   my $author	= new WebService::GData::Node::AuthorEntity();
	      $author->name('john doe');
	      $author->uri('http://youtube.com/johndoe');

DESCRIPTION
       inherits	from WebService::GData

       This package is an abstract class used as a proxy to represent several
       nodes in	one entity.  A node containing text node and attributes	will
       require to access the data in such a manner:

	  my $name   = new WebService::GData::Node::Name(text=>'john doe');
	     $name->text;

       If it does make sense at	the node level and in an xml context, it does
       sound a bit unnatural when using	nodes with children:

		   my $author =	new WebService::GData::Node::Author();
		   my $name   =	new WebService::GData::Node::Name(text=>'john doe');
		   $author->child($name);

		   $author->name->text;#john doe

       In an xml context, attributes vs	text node do make sense	but less in a
       object oriented context that abstract the underlying xml	structure:

		   my $author =	new WebService::GData::Node::AuthorEntity(name=>'john doe');
		      $author->name;#john doe

       This class serves as a proxy to redispatch the call for name to
       name->text or an	attribute and therefore	limit the xml node/object
       entity mismatch.	 It is obviously a helper factory in combining
       multiple	common nodes together in one entity.  This class should	be
       inherited to offer a concrete entity representation.  The main
       container node should be	store via the _entity method.  All other
       children	should be stored in the	instance by prefixing the tag name
       with an underscore.  All	access to attributes or	text node
       representation will be redispatched via __set and __get methods by
       following the above convention.

       See also	WebService::GData::Node.

   IMPLEMENTED ENTITIY
       Below is	a list of implemented entities.

	   AuthorEntity		       #map author > name,uri
	   PointEntity		       #map georss:where > gml:Point > gml:pos
	   Media::GroupEntity	       #map all	the nodes used in the media:group tag

   CAVEATS
       o   Complex hierarchical	node representation can	be hard	to implement.

       o   Node	using both text	node and attributes can	not be mapped
	   properly.
		   Providing an	alias that makes more sense than "text"	is the
	   only	available solution.

       o   Does	it really solves the/any problem?

BUGS AND LIMITATIONS
       If you do me the	favor to _use_ this module and find a bug, please
       email me	i will try to do my best to fix	it (patches welcome)!

AUTHOR
       shiriru <shirirulestheworld[arobas]gmail.com>

LICENSE	AND COPYRIGHT
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.24.1			  20WebService::GData::Node::AbstractEntity(3)

NAME | SYNOPSIS | DESCRIPTION | BUGS AND LIMITATIONS | AUTHOR | LICENSE AND COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=WebService::GData::Node::AbstractEntity&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help