22#include <com/sun/star/lang/XServiceInfo.hpp>
23#include <com/sun/star/lang/XInitialization.hpp>
24#include <com/sun/star/rdf/XLiteral.hpp>
25#include <com/sun/star/uno/XComponentContext.hpp>
27#include <com/sun/star/lang/IllegalArgumentException.hpp>
34 public ::cppu::WeakImplHelper<
35 css::lang::XServiceInfo,
36 css::lang::XInitialization,
48 virtual void SAL_CALL initialize(
const css::uno::Sequence< css::uno::Any > & aArguments)
override;
51 virtual OUString SAL_CALL getStringValue()
override;
54 virtual OUString SAL_CALL
getValue()
override;
55 virtual OUString SAL_CALL getLanguage()
override;
56 virtual css::uno::Reference< css::rdf::XURI > SAL_CALL getDatatype()
override;
59 CLiteral(CLiteral
const&) =
delete;
60 CLiteral& operator=(CLiteral
const&) =
delete;
64 css::uno::Reference< css::rdf::XURI > m_xDatatype;
71OUString SAL_CALL CLiteral::getImplementationName()
76sal_Bool SAL_CALL CLiteral::supportsService(OUString
const & serviceName)
81css::uno::Sequence< OUString > SAL_CALL CLiteral::getSupportedServiceNames()
83 return {
"com.sun.star.rdf.Literal" };
87void SAL_CALL CLiteral::initialize(
const css::uno::Sequence< css::uno::Any > & aArguments)
90 if (len < 1 || len > 2) {
91 throw css::lang::IllegalArgumentException(
92 "CLiteral::initialize: must give 1 or 2 argument(s)", *
this, 2);
96 if (!(aArguments[0] >>= arg0)) {
97 throw css::lang::IllegalArgumentException(
98 "CLiteral::initialize: argument must be string", *
this, 0);
102 throw css::lang::IllegalArgumentException(
103 "CLiteral::initialize: argument is not valid literal value", *
this, 0);
111 css::uno::Reference< css::rdf::XURI > xURI;
112 if (aArguments[1] >>= arg1) {
113 if (arg1.isEmpty()) {
114 throw css::lang::IllegalArgumentException(
115 "CLiteral::initialize: argument is not valid language", *
this, 1);
118 }
else if (aArguments[1] >>= xURI) {
120 throw css::lang::IllegalArgumentException(
121 "CLiteral::initialize: argument is null", *
this, 1);
125 throw css::lang::IllegalArgumentException(
126 "CLiteral::initialize: argument must be string or URI", *
this, 1);
131OUString SAL_CALL CLiteral::getStringValue()
133 if (!m_Language.isEmpty()) {
134 return m_Value +
"@" + m_Language;
135 }
else if (m_xDatatype.is()) {
136 return m_Value +
"^^" + m_xDatatype->getStringValue();
143OUString SAL_CALL CLiteral::getValue()
148OUString SAL_CALL CLiteral::getLanguage()
153css::uno::Reference< css::rdf::XURI > SAL_CALL CLiteral::getDatatype()
160extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
162 css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any>
const&)
164 return cppu::acquire(
new CLiteral());
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * unoxml_CLiteral_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
Sequence< PropertyValue > aArguments
css::uno::Sequence< OUString > getSupportedServiceNames()
OUString getImplementationName()
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
css::beans::Optional< css::uno::Any > getValue(std::u16string_view id)