diff -r 000000000000 -r 2e8eeb919028 configurationengine/source/plugins/example/ConeExamplePlugin/examplemlplugin/exampleml_reader.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/source/plugins/example/ConeExamplePlugin/examplemlplugin/exampleml_reader.py Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,49 @@ +# +# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +from cone.public import exceptions, plugin +import exampleml_impl +import exampleml_model + +class ExamplemlReader(plugin.ReaderBase): + NAMESPACE = 'http://www.example.org/xml/exampleml/1' + FILE_EXTENSIONS = ['exampleml'] + + @classmethod + def read_impl(cls, resource_ref, configuration, etree): + reader = ExamplemlReader() + outputs = reader._read_outputs(etree) + return exampleml_impl.ExamplemlImpl(resource_ref, configuration, outputs) + + def _read_outputs(self, elem): + """ + Read output objects from the given XML element. + """ + result = [] + for subelem in elem.findall("{%s}output" % self.NAMESPACE): + result.append(self._read_output_elem(subelem)) + return result + + def _read_output_elem(self, elem): + """ + Read an element into an Output object. + """ + file = elem.get('file') + if file is None: + raise exceptions.ParseError("Element does not have the mandatory 'file' attribute") + return exampleml_model.Output(file = file, + encoding = elem.get('encoding', 'UTF-8'), + text = elem.text or '') \ No newline at end of file