1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
//==================================================================
/**
* @file NIA_Handler.cpp
*
* $Id$
*
* @author Emre Turkay <turkaye@dre.vanderbilt.edu>
*/
//=====================================================================
#ifndef NIA_HANDLER_C
#define NIA_HANDLER_C
#include "tao/Exception.h"
#include "ace/Auto_Ptr.h"
#include "ace/Log_Msg.h"
#include "IAD_Handler.h"
#include "NIA_Handler.h"
#include <iostream>
using std::cerr;
using std::endl;
namespace CIAO
{
namespace Config_Handler
{
NIA_Handler::NIA_Handler (DOMDocument* doc, unsigned long filter)
: doc_ (doc),
root_ (doc->getDocumentElement()),
filter_ (filter),
iter_ (doc_->createNodeIterator (this->root_,
this->filter_,
0,
true)),
release_ (true)
{}
NIA_Handler::NIA_Handler (DOMNodeIterator* iter, bool release)
: doc_ (0), root_ (0), filter_ (0), iter_ (iter), release_ (release)
{}
NIA_Handler::~NIA_Handler()
{
if (this->release_)
this->iter_->release();
}
/// handle the package configuration and populate it
void NIA_Handler::process_NamedImplementationArtifact
(::Deployment::NamedImplementationArtifact &nia)
{
// This is bogus and should be replaced later.
ACE_DECLARE_NEW_CORBA_ENV;
for (DOMNode* node = this->iter_->nextNode();
node != 0;
node = this->iter_->nextNode())
{
XStr node_name (node->getNodeName());
if (node_name == XStr (ACE_TEXT ("name")))
{
// Fetch the text node which contains the "label"
node = this->iter_->nextNode();
DOMText* text = ACE_reinterpret_cast (DOMText*, node);
this->process_name (text->getNodeValue(), nia);
}
else if (node_name == XStr (ACE_TEXT ("referencedArtifact")))
{
// fetch the component package reference handler
IAD_Handler iad_handler (iter_, false);
// delegate the populating process
iad_handler.process_ImplementationArtifactDescription (nia.referencedArtifact);
}
else
{
// ??? How did we get here ???
ACE_THROW (CORBA::INTERNAL());
}
}
return;
}
/// handle name attribute
void NIA_Handler::process_name
(const XMLCh* name, ::Deployment::NamedImplementationArtifact &nia)
{
if (name)
{
nia.name = XMLString::transcode (name);
}
}
}
}
#endif /* NIA_HANDLER_C */
|