| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #include "CNodes.hxx" |
| |
| #include <cppuhelper/implbase3.hxx> |
| #include <com/sun/star/lang/XServiceInfo.hpp> |
| #include <com/sun/star/lang/XInitialization.hpp> |
| #include <com/sun/star/rdf/XURI.hpp> |
| #include <com/sun/star/rdf/URIs.hpp> |
| |
| #include <com/sun/star/lang/IllegalArgumentException.hpp> |
| |
| |
| /// anonymous implementation namespace |
| namespace { |
| |
| namespace css = ::com::sun::star; |
| |
| class CURI: |
| public ::cppu::WeakImplHelper3< |
| css::lang::XServiceInfo, |
| css::lang::XInitialization, |
| css::rdf::XURI> |
| { |
| public: |
| explicit CURI(css::uno::Reference< css::uno::XComponentContext > const & context); |
| virtual ~CURI() {} |
| |
| // ::com::sun::star::lang::XServiceInfo: |
| virtual ::rtl::OUString SAL_CALL getImplementationName() throw (css::uno::RuntimeException); |
| virtual ::sal_Bool SAL_CALL supportsService(const ::rtl::OUString & ServiceName) throw (css::uno::RuntimeException); |
| virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (css::uno::RuntimeException); |
| |
| // ::com::sun::star::lang::XInitialization: |
| virtual void SAL_CALL initialize(const css::uno::Sequence< ::com::sun::star::uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception); |
| |
| // ::com::sun::star::rdf::XNode: |
| virtual ::rtl::OUString SAL_CALL getStringValue() throw (css::uno::RuntimeException); |
| |
| // ::com::sun::star::rdf::XURI: |
| virtual ::rtl::OUString SAL_CALL getLocalName() throw (css::uno::RuntimeException); |
| virtual ::rtl::OUString SAL_CALL getNamespace() throw (css::uno::RuntimeException); |
| |
| private: |
| CURI(const CURI &); // not defined |
| CURI& operator=(const CURI &); // not defined |
| |
| /// handle css.rdf.URIs |
| void SAL_CALL initFromConstant(const sal_Int16 i_Constant); |
| |
| css::uno::Reference< css::uno::XComponentContext > m_xContext; |
| |
| ::rtl::OUString m_Namespace; |
| ::rtl::OUString m_LocalName; |
| }; |
| |
| CURI::CURI(css::uno::Reference< css::uno::XComponentContext > const & context) : |
| m_xContext(context), m_Namespace(), m_LocalName() |
| {} |
| |
| // com.sun.star.uno.XServiceInfo: |
| ::rtl::OUString SAL_CALL CURI::getImplementationName() throw (css::uno::RuntimeException) |
| { |
| return comp_CURI::_getImplementationName(); |
| } |
| |
| ::sal_Bool SAL_CALL CURI::supportsService(::rtl::OUString const & serviceName) throw (css::uno::RuntimeException) |
| { |
| css::uno::Sequence< ::rtl::OUString > serviceNames = comp_CURI::_getSupportedServiceNames(); |
| for (::sal_Int32 i = 0; i < serviceNames.getLength(); ++i) { |
| if (serviceNames[i] == serviceName) |
| return sal_True; |
| } |
| return sal_False; |
| } |
| |
| css::uno::Sequence< ::rtl::OUString > SAL_CALL CURI::getSupportedServiceNames() throw (css::uno::RuntimeException) |
| { |
| return comp_CURI::_getSupportedServiceNames(); |
| } |
| |
| const char s_nsXS [] = "http://www.w3.org/2001/XMLSchema#"; |
| const char s_nsXSD [] = "http://www.w3.org/2001/XMLSchema-datatypes#"; |
| const char s_nsRDF [] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; |
| const char s_nsRDFs [] = "http://www.w3.org/2000/01/rdf-schema#"; |
| const char s_nsOWL [] = "http://www.w3.org/2002/07/owl#"; |
| const char s_nsPkg [] = |
| "http://docs.oasis-open.org/ns/office/1.2/meta/pkg#"; |
| const char s_nsODF [] = |
| "http://docs.oasis-open.org/ns/office/1.2/meta/odf#"; |
| |
| void SAL_CALL CURI::initFromConstant(const sal_Int16 i_Constant) |
| { |
| const char *ns(0); |
| const char *ln(0); |
| switch (i_Constant) |
| { |
| case css::rdf::URIs::XSD_NCNAME: |
| ns = s_nsXSD; |
| ln = "NCName"; |
| break; |
| |
| case css::rdf::URIs::XSD_STRING: |
| ns = s_nsXSD; |
| ln = "string"; |
| break; |
| |
| case css::rdf::URIs::XSD_NORMALIZEDSTRING: |
| ns = s_nsXSD; |
| ln = "normalizedString"; |
| break; |
| |
| case css::rdf::URIs::XSD_BOOLEAN: |
| ns = s_nsXSD; |
| ln = "boolean"; |
| break; |
| |
| case css::rdf::URIs::XSD_DECIMAL: |
| ns = s_nsXSD; |
| ln = "decimal"; |
| break; |
| |
| case css::rdf::URIs::XSD_FLOAT: |
| ns = s_nsXSD; |
| ln = "float"; |
| break; |
| |
| case css::rdf::URIs::XSD_DOUBLE: |
| ns = s_nsXSD; |
| ln = "double"; |
| break; |
| |
| case css::rdf::URIs::XSD_INTEGER: |
| ns = s_nsXSD; |
| ln = "integer"; |
| break; |
| |
| case css::rdf::URIs::XSD_NONNEGATIVEINTEGER: |
| ns = s_nsXSD; |
| ln = "nonNegativeInteger"; |
| break; |
| |
| case css::rdf::URIs::XSD_POSITIVEINTEGER: |
| ns = s_nsXSD; |
| ln = "positiveInteger"; |
| break; |
| |
| case css::rdf::URIs::XSD_NONPOSITIVEINTEGER: |
| ns = s_nsXSD; |
| ln = "nonPositiveInteger"; |
| break; |
| |
| case css::rdf::URIs::XSD_NEGATIVEINTEGER: |
| ns = s_nsXSD; |
| ln = "negativeInteger"; |
| break; |
| |
| case css::rdf::URIs::XSD_LONG: |
| ns = s_nsXSD; |
| ln = "long"; |
| break; |
| |
| case css::rdf::URIs::XSD_INT: |
| ns = s_nsXSD; |
| ln = "int"; |
| break; |
| |
| case css::rdf::URIs::XSD_SHORT: |
| ns = s_nsXSD; |
| ln = "short"; |
| break; |
| |
| case css::rdf::URIs::XSD_BYTE: |
| ns = s_nsXSD; |
| ln = "byte"; |
| break; |
| |
| case css::rdf::URIs::XSD_UNSIGNEDLONG: |
| ns = s_nsXSD; |
| ln = "unsignedLong"; |
| break; |
| |
| case css::rdf::URIs::XSD_UNSIGNEDINT: |
| ns = s_nsXSD; |
| ln = "unsignedInt"; |
| break; |
| |
| case css::rdf::URIs::XSD_UNSIGNEDSHORT: |
| ns = s_nsXSD; |
| ln = "unsignedShort"; |
| break; |
| |
| case css::rdf::URIs::XSD_UNSIGNEDBYTE: |
| ns = s_nsXSD; |
| ln = "unsignedByte"; |
| break; |
| |
| case css::rdf::URIs::XSD_HEXBINARY: |
| ns = s_nsXSD; |
| ln = "hexBinary"; |
| break; |
| |
| case css::rdf::URIs::XSD_BASE64BINARY: |
| ns = s_nsXSD; |
| ln = "base64Binary"; |
| break; |
| |
| case css::rdf::URIs::XSD_DATETIME: |
| ns = s_nsXSD; |
| ln = "dateTime"; |
| break; |
| |
| case css::rdf::URIs::XSD_TIME: |
| ns = s_nsXSD; |
| ln = "time"; |
| break; |
| |
| case css::rdf::URIs::XSD_DATE: |
| ns = s_nsXSD; |
| ln = "date"; |
| break; |
| |
| case css::rdf::URIs::XSD_GYEARMONTH: |
| ns = s_nsXSD; |
| ln = "gYearMonth"; |
| break; |
| |
| case css::rdf::URIs::XSD_GYEAR: |
| ns = s_nsXSD; |
| ln = "gYear"; |
| break; |
| |
| case css::rdf::URIs::XSD_GMONTHDAY: |
| ns = s_nsXSD; |
| ln = "gMonthDay"; |
| break; |
| |
| case css::rdf::URIs::XSD_GDAY: |
| ns = s_nsXSD; |
| ln = "gDay"; |
| break; |
| |
| case css::rdf::URIs::XSD_GMONTH: |
| ns = s_nsXSD; |
| ln = "gMonth"; |
| break; |
| |
| case css::rdf::URIs::XSD_ANYURI: |
| ns = s_nsXSD; |
| ln = "anyURI"; |
| break; |
| |
| case css::rdf::URIs::XSD_TOKEN: |
| ns = s_nsXSD; |
| ln = "token"; |
| break; |
| |
| case css::rdf::URIs::XSD_LANGUAGE: |
| ns = s_nsXSD; |
| ln = "language"; |
| break; |
| |
| case css::rdf::URIs::XSD_NMTOKEN: |
| ns = s_nsXSD; |
| ln = "NMTOKEN"; |
| break; |
| |
| case css::rdf::URIs::XSD_NAME: |
| ns = s_nsXSD; |
| ln = "Name"; |
| break; |
| |
| case css::rdf::URIs::XSD_DURATION: |
| ns = s_nsXSD; |
| ln = "duration"; |
| break; |
| |
| case css::rdf::URIs::XSD_QNAME: |
| ns = s_nsXSD; |
| ln = "QName"; |
| break; |
| |
| case css::rdf::URIs::XSD_NOTATION: |
| ns = s_nsXSD; |
| ln = "NOTATION"; |
| break; |
| |
| case css::rdf::URIs::XSD_NMTOKENS: |
| ns = s_nsXSD; |
| ln = "NMTOKENS"; |
| break; |
| |
| case css::rdf::URIs::XSD_ID: |
| ns = s_nsXSD; |
| ln = "ID"; |
| break; |
| |
| case css::rdf::URIs::XSD_IDREF: |
| ns = s_nsXSD; |
| ln = "IDREF"; |
| break; |
| |
| case css::rdf::URIs::XSD_IDREFS: |
| ns = s_nsXSD; |
| ln = "IDREFS"; |
| break; |
| |
| case css::rdf::URIs::XSD_ENTITY: |
| ns = s_nsXSD; |
| ln = "ENTITY"; |
| break; |
| |
| case css::rdf::URIs::XSD_ENTITIES: |
| ns = s_nsXSD; |
| ln = "ENTITIES"; |
| break; |
| |
| case css::rdf::URIs::RDF_TYPE: |
| ns = s_nsRDF; |
| ln = "type"; |
| break; |
| |
| case css::rdf::URIs::RDF_SUBJECT: |
| ns = s_nsRDF; |
| ln = "subject"; |
| break; |
| |
| case css::rdf::URIs::RDF_PREDICATE: |
| ns = s_nsRDF; |
| ln = "predicate"; |
| break; |
| |
| case css::rdf::URIs::RDF_OBJECT: |
| ns = s_nsRDF; |
| ln = "object"; |
| break; |
| |
| case css::rdf::URIs::RDF_PROPERTY: |
| ns = s_nsRDF; |
| ln = "Property"; |
| break; |
| |
| case css::rdf::URIs::RDF_STATEMENT: |
| ns = s_nsRDF; |
| ln = "Statement"; |
| break; |
| |
| case css::rdf::URIs::RDF_VALUE: |
| ns = s_nsRDF; |
| ln = "value"; |
| break; |
| |
| case css::rdf::URIs::RDF_FIRST: |
| ns = s_nsRDF; |
| ln = "first"; |
| break; |
| |
| case css::rdf::URIs::RDF_REST: |
| ns = s_nsRDF; |
| ln = "rest"; |
| break; |
| |
| case css::rdf::URIs::RDF_NIL: |
| ns = s_nsRDF; |
| ln = "nil"; |
| break; |
| |
| case css::rdf::URIs::RDF_XMLLITERAL: |
| ns = s_nsRDF; |
| ln = "XMLLiteral"; |
| break; |
| |
| case css::rdf::URIs::RDF_ALT: |
| ns = s_nsRDF; |
| ln = "Alt"; |
| break; |
| |
| case css::rdf::URIs::RDF_BAG: |
| ns = s_nsRDF; |
| ln = "Bag"; |
| break; |
| |
| case css::rdf::URIs::RDF_LIST: |
| ns = s_nsRDF; |
| ln = "List"; |
| break; |
| |
| case css::rdf::URIs::RDF_SEQ: |
| ns = s_nsRDF; |
| ln = "Seq"; |
| break; |
| |
| case css::rdf::URIs::RDF_1: |
| ns = s_nsRDF; |
| ln = "_1"; |
| break; |
| |
| case css::rdf::URIs::RDFS_COMMENT: |
| ns = s_nsRDFs; |
| ln = "comment"; |
| break; |
| |
| case css::rdf::URIs::RDFS_LABEL: |
| ns = s_nsRDFs; |
| ln = "label"; |
| break; |
| |
| case css::rdf::URIs::RDFS_DOMAIN: |
| ns = s_nsRDFs; |
| ln = "domain"; |
| break; |
| |
| case css::rdf::URIs::RDFS_RANGE: |
| ns = s_nsRDFs; |
| ln = "range"; |
| break; |
| |
| case css::rdf::URIs::RDFS_SUBCLASSOF: |
| ns = s_nsRDFs; |
| ln = "subClassOf"; |
| break; |
| |
| case css::rdf::URIs::RDFS_LITERAL: |
| ns = s_nsRDFs; |
| ln = "Literal"; |
| break; |
| |
| case css::rdf::URIs::OWL_CLASS: |
| ns = s_nsOWL; |
| ln = "Class"; |
| break; |
| |
| case css::rdf::URIs::OWL_OBJECTPROPERTY: |
| ns = s_nsOWL; |
| ln = "ObjectProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_DATATYPEPROPERTY: |
| ns = s_nsOWL; |
| ln = "DatatypeProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_FUNCTIONALPROPERTY: |
| ns = s_nsOWL; |
| ln = "FunctionalProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_THING: |
| ns = s_nsOWL; |
| ln = "Thing"; |
| break; |
| |
| case css::rdf::URIs::OWL_NOTHING: |
| ns = s_nsOWL; |
| ln = "Nothing"; |
| break; |
| |
| case css::rdf::URIs::OWL_INDIVIDUAL: |
| ns = s_nsOWL; |
| ln = "Individual"; |
| break; |
| |
| case css::rdf::URIs::OWL_EQUIVALENTCLASS: |
| ns = s_nsOWL; |
| ln = "equivalentClass"; |
| break; |
| |
| case css::rdf::URIs::OWL_EQUIVALENTPROPERTY: |
| ns = s_nsOWL; |
| ln = "equivalentProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_SAMEAS: |
| ns = s_nsOWL; |
| ln = "sameAs"; |
| break; |
| |
| case css::rdf::URIs::OWL_DIFFERENTFROM: |
| ns = s_nsOWL; |
| ln = "differentFrom"; |
| break; |
| |
| case css::rdf::URIs::OWL_ALLDIFFERENT: |
| ns = s_nsOWL; |
| ln = "AllDifferent"; |
| break; |
| |
| case css::rdf::URIs::OWL_DISTINCTMEMBERS: |
| ns = s_nsOWL; |
| ln = "distinctMembers"; |
| break; |
| |
| case css::rdf::URIs::OWL_INVERSEOF: |
| ns = s_nsOWL; |
| ln = "inverseOf"; |
| break; |
| |
| case css::rdf::URIs::OWL_TRANSITIVEPROPERTY: |
| ns = s_nsOWL; |
| ln = "TransitiveProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_SYMMETRICPROPERTY: |
| ns = s_nsOWL; |
| ln = "SymmetricProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_INVERSEFUNCTIONALPROPERTY: |
| ns = s_nsOWL; |
| ln = "InverseFunctionalProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_RESTRICTION: |
| ns = s_nsOWL; |
| ln = "Restriction"; |
| break; |
| |
| case css::rdf::URIs::OWL_ONPROPERTY: |
| ns = s_nsOWL; |
| ln = "onProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_ALLVALUESFROM: |
| ns = s_nsOWL; |
| ln = "allValuesFrom"; |
| break; |
| |
| case css::rdf::URIs::OWL_SOMEVALUESFROM: |
| ns = s_nsOWL; |
| ln = "someValuesFrom"; |
| break; |
| |
| case css::rdf::URIs::OWL_MINCARDINALITY: |
| ns = s_nsOWL; |
| ln = "minCardinality"; |
| break; |
| |
| case css::rdf::URIs::OWL_MAXCARDINALITY: |
| ns = s_nsOWL; |
| ln = "maxCardinality"; |
| break; |
| |
| case css::rdf::URIs::OWL_CARDINALITY: |
| ns = s_nsOWL; |
| ln = "cardinality"; |
| break; |
| |
| case css::rdf::URIs::OWL_ONTOLOGY: |
| ns = s_nsOWL; |
| ln = "Ontology"; |
| break; |
| |
| case css::rdf::URIs::OWL_IMPORTS: |
| ns = s_nsOWL; |
| ln = "imports"; |
| break; |
| |
| case css::rdf::URIs::OWL_VERSIONINFO: |
| ns = s_nsOWL; |
| ln = "versionInfo"; |
| break; |
| |
| case css::rdf::URIs::OWL_PRIORVERSION: |
| ns = s_nsOWL; |
| ln = "priorVersion"; |
| break; |
| |
| case css::rdf::URIs::OWL_BACKWARDCOMPATIBLEWITH: |
| ns = s_nsOWL; |
| ln = "backwardCompatibleWith"; |
| break; |
| |
| case css::rdf::URIs::OWL_INCOMPATIBLEWITH: |
| ns = s_nsOWL; |
| ln = "incompatibleWith"; |
| break; |
| |
| case css::rdf::URIs::OWL_DEPRECATEDCLASS: |
| ns = s_nsOWL; |
| ln = "DeprecatedClass"; |
| break; |
| |
| case css::rdf::URIs::OWL_DEPRECATEDPROPERTY: |
| ns = s_nsOWL; |
| ln = "DeprecatedProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_ANNOTATIONPROPERTY: |
| ns = s_nsOWL; |
| ln = "AnnotationProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_ONTOLOGYPROPERTY: |
| ns = s_nsOWL; |
| ln = "OntologyProperty"; |
| break; |
| |
| case css::rdf::URIs::OWL_ONEOF: |
| ns = s_nsOWL; |
| ln = "oneOf"; |
| break; |
| |
| case css::rdf::URIs::OWL_DATARANGE: |
| ns = s_nsOWL; |
| ln = "dataRange"; |
| break; |
| |
| case css::rdf::URIs::OWL_DISJOINTWITH: |
| ns = s_nsOWL; |
| ln = "disjointWith"; |
| break; |
| |
| case css::rdf::URIs::OWL_UNIONOF: |
| ns = s_nsOWL; |
| ln = "unionOf"; |
| break; |
| |
| case css::rdf::URIs::OWL_COMPLEMENTOF: |
| ns = s_nsOWL; |
| ln = "complementOf"; |
| break; |
| |
| case css::rdf::URIs::OWL_INTERSECTIONOF: |
| ns = s_nsOWL; |
| ln = "intersectionOf"; |
| break; |
| |
| case css::rdf::URIs::OWL_HASVALUE: |
| ns = s_nsOWL; |
| ln = "hasValue"; |
| break; |
| |
| |
| case css::rdf::URIs::PKG_HASPART: |
| ns = s_nsPkg; |
| ln = "hasPart"; |
| break; |
| |
| /* REMOVED |
| case css::rdf::URIs::PKG_IDREF: |
| ns = s_nsPkg; |
| ln = "idref"; |
| break; |
| |
| case css::rdf::URIs::PKG_PATH: |
| ns = s_nsPkg; |
| ln = "path"; |
| break; |
| */ |
| |
| case css::rdf::URIs::PKG_MIMETYPE: |
| ns = s_nsPkg; |
| ln = "mimeType"; |
| break; |
| |
| case css::rdf::URIs::PKG_PACKAGE: |
| ns = s_nsPkg; |
| ln = "Package"; |
| break; |
| |
| case css::rdf::URIs::PKG_ELEMENT: |
| ns = s_nsPkg; |
| ln = "Element"; |
| break; |
| |
| case css::rdf::URIs::PKG_FILE: |
| ns = s_nsPkg; |
| ln = "File"; |
| break; |
| |
| case css::rdf::URIs::PKG_METADATAFILE: |
| ns = s_nsPkg; |
| ln = "MetadataFile"; |
| break; |
| |
| case css::rdf::URIs::PKG_DOCUMENT: |
| ns = s_nsPkg; |
| ln = "Document"; |
| break; |
| |
| case css::rdf::URIs::ODF_PREFIX: |
| ns = s_nsODF; |
| ln = "prefix"; |
| break; |
| |
| case css::rdf::URIs::ODF_SUFFIX: |
| ns = s_nsODF; |
| ln = "suffix"; |
| break; |
| |
| case css::rdf::URIs::ODF_ELEMENT: |
| ns = s_nsODF; |
| ln = "Element"; |
| break; |
| |
| case css::rdf::URIs::ODF_CONTENTFILE: |
| ns = s_nsODF; |
| ln = "ContentFile"; |
| break; |
| |
| case css::rdf::URIs::ODF_STYLESFILE: |
| ns = s_nsODF; |
| ln = "StylesFile"; |
| break; |
| |
| /* REMOVED |
| case css::rdf::URIs::ODF_METADATAFILE: |
| ns = s_nsODF; |
| ln = "MetadataFile"; |
| break; |
| */ |
| |
| default: |
| throw css::lang::IllegalArgumentException( |
| ::rtl::OUString::createFromAscii("CURI::initialize: " |
| "invalid URIs constant argument"), *this, 0); |
| } |
| m_Namespace = ::rtl::OUString::createFromAscii(ns).intern(); |
| m_LocalName = ::rtl::OUString::createFromAscii(ln).intern(); |
| return; |
| } |
| |
| // ::com::sun::star::lang::XInitialization: |
| void SAL_CALL CURI::initialize(const css::uno::Sequence< ::com::sun::star::uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception) |
| { |
| sal_Int32 len = aArguments.getLength(); |
| if ((len < 1) || (len > 2)) { |
| throw css::lang::IllegalArgumentException( |
| ::rtl::OUString::createFromAscii("CURI::initialize: " |
| "must give 1 or 2 argument(s)"), *this, 2); |
| } |
| |
| sal_Int16 arg(0); |
| ::rtl::OUString arg0; |
| ::rtl::OUString arg1; |
| if ((aArguments[0] >>= arg)) { |
| // integer argument: constant from rdf::URIs |
| if (len != 1) { |
| throw css::lang::IllegalArgumentException( |
| ::rtl::OUString::createFromAscii("CURI::initialize: " |
| "must give 1 int argument"), *this, 1); |
| } |
| initFromConstant(arg); |
| return; |
| } |
| if (!(aArguments[0] >>= arg0)) { |
| throw css::lang::IllegalArgumentException( |
| ::rtl::OUString::createFromAscii("CURI::initialize: " |
| "argument must be string or short"), *this, 0); |
| } |
| if (len > 1) { |
| if (!(aArguments[1] >>= arg1)) { |
| throw css::lang::IllegalArgumentException( |
| ::rtl::OUString::createFromAscii("CURI::initialize: " |
| "argument must be string"), *this, 1); |
| } |
| // just append the parameters and then split them again; seems simplest |
| arg0 = arg0 + arg1; |
| arg1 = ::rtl::OUString(); |
| } |
| |
| // split parameter |
| sal_Int32 idx; |
| if ( ((idx = arg0.indexOf ('#')) >= 0) |
| || ((idx = arg0.lastIndexOf('/')) >= 0) |
| || ((idx = arg0.lastIndexOf(':')) >= 0)) |
| { |
| |
| if (idx < arg0.getLength() - 1) { |
| arg1 = arg0.copy(idx+1); |
| arg0 = arg0.copy(0, idx+1); |
| } |
| } else { |
| throw css::lang::IllegalArgumentException( |
| ::rtl::OUString::createFromAscii("CURI::initialize: " |
| "argument not splittable: no separator [#/:]"), *this, 0); |
| } |
| |
| //FIXME: what is legal? |
| if (arg0.getLength() > 0) { |
| m_Namespace = arg0; |
| } else { |
| throw css::lang::IllegalArgumentException( |
| ::rtl::OUString::createFromAscii("CURI::initialize: " |
| "argument is not valid namespace"), *this, 0); |
| } |
| //FIXME: what is legal? |
| if (true) { |
| m_LocalName = arg1; |
| } else { |
| throw css::lang::IllegalArgumentException( |
| ::rtl::OUString::createFromAscii("CURI::initialize: " |
| "argument is not valid local name"), *this, 1); |
| } |
| } |
| |
| // ::com::sun::star::rdf::XNode: |
| ::rtl::OUString SAL_CALL CURI::getStringValue() throw (css::uno::RuntimeException) |
| { |
| return m_Namespace + m_LocalName; |
| } |
| |
| // ::com::sun::star::rdf::XURI: |
| ::rtl::OUString SAL_CALL CURI::getNamespace() throw (css::uno::RuntimeException) |
| { |
| return m_Namespace; |
| } |
| |
| ::rtl::OUString SAL_CALL CURI::getLocalName() throw (css::uno::RuntimeException) |
| { |
| return m_LocalName; |
| } |
| |
| } // closing anonymous implementation namespace |
| |
| |
| |
| // component helper namespace |
| namespace comp_CURI { |
| |
| ::rtl::OUString SAL_CALL _getImplementationName() { |
| return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( |
| "CURI")); |
| } |
| |
| css::uno::Sequence< ::rtl::OUString > SAL_CALL _getSupportedServiceNames() |
| { |
| css::uno::Sequence< ::rtl::OUString > s(1); |
| s[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( |
| "com.sun.star.rdf.URI")); |
| return s; |
| } |
| |
| css::uno::Reference< css::uno::XInterface > SAL_CALL _create( |
| const css::uno::Reference< css::uno::XComponentContext > & context) |
| SAL_THROW((css::uno::Exception)) |
| { |
| return static_cast< ::cppu::OWeakObject * >(new CURI(context)); |
| } |
| |
| } // closing component helper namespace |
| |