xref: /trunk/main/unoxml/source/rdf/CBlankNode.cxx (revision e9cbe144)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #include "CNodes.hxx"
25 
26 #include <cppuhelper/implbase3.hxx>
27 #include <com/sun/star/lang/XServiceInfo.hpp>
28 #include <com/sun/star/lang/XInitialization.hpp>
29 #include <com/sun/star/rdf/XBlankNode.hpp>
30 
31 #include <com/sun/star/lang/IllegalArgumentException.hpp>
32 
33 
34 /// anonymous implementation namespace
35 namespace {
36 
37 namespace css = ::com::sun::star;
38 
39 class CBlankNode:
40     public ::cppu::WeakImplHelper3<
41         css::lang::XServiceInfo,
42         css::lang::XInitialization,
43         css::rdf::XBlankNode>
44 {
45 public:
46     explicit CBlankNode(css::uno::Reference< css::uno::XComponentContext > const & context);
~CBlankNode()47     virtual ~CBlankNode() {}
48 
49     // ::com::sun::star::lang::XServiceInfo:
50     virtual ::rtl::OUString SAL_CALL getImplementationName() throw (css::uno::RuntimeException);
51     virtual ::sal_Bool SAL_CALL supportsService(const ::rtl::OUString & ServiceName) throw (css::uno::RuntimeException);
52     virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (css::uno::RuntimeException);
53 
54     // ::com::sun::star::lang::XInitialization:
55     virtual void SAL_CALL initialize(const css::uno::Sequence< ::com::sun::star::uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception);
56 
57     // ::com::sun::star::rdf::XNode:
58     virtual ::rtl::OUString SAL_CALL getStringValue() throw (css::uno::RuntimeException);
59 
60 private:
61     CBlankNode(const CBlankNode &); // not defined
62     CBlankNode& operator=(const CBlankNode &); // not defined
63 
64     css::uno::Reference< css::uno::XComponentContext > m_xContext;
65 
66     ::rtl::OUString m_NodeID;
67 };
68 
CBlankNode(css::uno::Reference<css::uno::XComponentContext> const & context)69 CBlankNode::CBlankNode(css::uno::Reference< css::uno::XComponentContext > const & context) :
70     m_xContext(context), m_NodeID()
71 {}
72 
73 // com.sun.star.uno.XServiceInfo:
getImplementationName()74 ::rtl::OUString SAL_CALL CBlankNode::getImplementationName() throw (css::uno::RuntimeException)
75 {
76     return comp_CBlankNode::_getImplementationName();
77 }
78 
supportsService(::rtl::OUString const & serviceName)79 ::sal_Bool SAL_CALL CBlankNode::supportsService(::rtl::OUString const & serviceName) throw (css::uno::RuntimeException)
80 {
81     css::uno::Sequence< ::rtl::OUString > serviceNames = comp_CBlankNode::_getSupportedServiceNames();
82     for (::sal_Int32 i = 0; i < serviceNames.getLength(); ++i) {
83         if (serviceNames[i] == serviceName)
84             return sal_True;
85     }
86     return sal_False;
87 }
88 
getSupportedServiceNames()89 css::uno::Sequence< ::rtl::OUString > SAL_CALL CBlankNode::getSupportedServiceNames() throw (css::uno::RuntimeException)
90 {
91     return comp_CBlankNode::_getSupportedServiceNames();
92 }
93 
94 // ::com::sun::star::lang::XInitialization:
initialize(const css::uno::Sequence<::com::sun::star::uno::Any> & aArguments)95 void SAL_CALL CBlankNode::initialize(const css::uno::Sequence< ::com::sun::star::uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception)
96 {
97     if (aArguments.getLength() != 1) {
98         throw css::lang::IllegalArgumentException(
99             ::rtl::OUString::createFromAscii("CBlankNode::initialize: "
100                 "must give exactly 1 argument"), *this, 1);
101     }
102 
103     ::rtl::OUString arg;
104     if (!(aArguments[0] >>= arg)) {
105         throw css::lang::IllegalArgumentException(
106             ::rtl::OUString::createFromAscii("CBlankNode::initialize: "
107                 "argument must be string"), *this, 0);
108     }
109 
110     //FIXME: what is legal?
111     if (arg.getLength() > 0) {
112         m_NodeID = arg;
113     } else {
114         throw css::lang::IllegalArgumentException(
115             ::rtl::OUString::createFromAscii("CBlankNode::initialize: "
116                 "argument is not valid blank node ID"), *this, 0);
117     }
118 }
119 
120 // ::com::sun::star::rdf::XNode:
getStringValue()121 ::rtl::OUString SAL_CALL CBlankNode::getStringValue() throw (css::uno::RuntimeException)
122 {
123     return m_NodeID;
124 }
125 
126 } // closing anonymous implementation namespace
127 
128 
129 
130 // component helper namespace
131 namespace comp_CBlankNode {
132 
_getImplementationName()133 ::rtl::OUString SAL_CALL _getImplementationName() {
134     return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
135         "CBlankNode"));
136 }
137 
_getSupportedServiceNames()138 css::uno::Sequence< ::rtl::OUString > SAL_CALL _getSupportedServiceNames()
139 {
140     css::uno::Sequence< ::rtl::OUString > s(1);
141     s[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
142         "com.sun.star.rdf.BlankNode"));
143     return s;
144 }
145 
_create(const css::uno::Reference<css::uno::XComponentContext> & context)146 css::uno::Reference< css::uno::XInterface > SAL_CALL _create(
147     const css::uno::Reference< css::uno::XComponentContext > & context)
148         SAL_THROW((css::uno::Exception))
149 {
150     return static_cast< ::cppu::OWeakObject * >(new CBlankNode(context));
151 }
152 
153 } // closing component helper namespace
154 
155