org.apache.tuscany.samples.sdo.specExampleSection
Class AccessingDataObjectsViaPropertyIndex
java.lang.Object
org.apache.tuscany.samples.sdo.specExampleSection.AccessingDataObjectsViaPropertyIndex
public class AccessingDataObjectsViaPropertyIndex
- extends java.lang.Object
Demonstrates accessing the properties of a DataObject using property indices.
The following sample is from the Apache Tuscany project. It was written to help users
understand and experiment with SDO. It is based upon example code contained
within, and is meant for use with, and reference to the SDO Specification. In general this sample attempts to use the
code and comments contained within the specification, exceptions to this are noted
in comments.
The following sample is based upon the 'Accessing DataObjects via Property Index'
example from the Examples section of the SDO specification. It shows the use of
DataObjects and the XMLHelper amd demonstrates accessing the properties of a
DataObject using property indices.
The following example has the same effect as
AccessDataObjectsUsingXPath
.
The indexes for the properties are defined as constants in this class.
This sample reads an xml file representing a DataObject of a company. In order to
create a DataObject or DataGraph this sample relies upon XMLHelper class which is
essentially example of a XML DAS implementation. The code shown here would work
just as well against an equivalent DataObject that was provided by any DAS.
To define the correct Types for each DataObject ( CompanyType, DepartmentType etc )
this sample relies upon
SdoSampleConstants.COMPANY_XSD
which is
provided in the resources directory of these samples
The xml file
SdoSampleConstants.COMPANY_DATAOBJECT_XML
used to load the DataObject is also located in this resources directory. To help
ensure consistancy with the xsd the xml was generated by
CreateCompany
which is a good
resource for populating DataObjects, or creating DataGraphs dynamically.
Usage:
This sample can easily be run from within Eclipse as a Java Application if tuscany or
the sample-sdo project is imported into Eclipse as an existing project.
If executing as a standalone application please do the following:
- Include the following jar files on your classpath :
- SDO API and Tuscany Implementation
- sdo-api-{version}.jar - SDO API
- tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
- EMF dependencies.
- emf-common-{version}.jar - some common framework utility and base classes
- emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
- emf-ecore-change-{version}.jar - the EMF change recorder and framework
- emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
- xsd-{version}.jar - the XML Schema model
These jar files can be obtained by downloading and unpacking a Tuscany binary distribution
- Execute:
java org.apache.tuscany.samples.sdo.specExampleSection.AccessingDataObjectsViaPropertyIndex
Note: when reading this source code in conjunction with the specification there is scope for confusion
over what the values of the numeric indices ought to be, depending on your understanding of the
word "lexical" in the context of sequencing. So the SDO specification at the 2.0.1 level (and before) says
The order of Properties in Type.getDeclaredProperties() is the lexical order of declarations in the
XML Schema ComplexType.. So if your background is in computing and in particular in lexical parsing
then you would understand this to mean "the sequence of tokens produced by the lexical analyis (first) phase of a compiler"
and if you ran a lexical parser against the complex type then you would see the elements emerege in the order they were
written down. If however you think more in terms of lexical in the context of lexicons or dictionaries, you may
expect the indices to correspond to the lexically sorted (essentially alphabetically sorted) list of element names.
After some investigation it is understood that the intention of the spec is to convey the first of these meanings.
A clarification in the SDO 2.1 spec is being sought, but may not make it into that document in time.
- Author:
- Robbie Minshall
Method Summary |
static void |
main(java.lang.String[] args)
Execute this method in order to run the sample. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
AccessingDataObjectsViaPropertyIndex
public AccessingDataObjectsViaPropertyIndex()
main
public static void main(java.lang.String[] args)
- Execute this method in order to run the sample.
- Parameters:
args
-
Copyright © 2007 Apache Software Foundation. All Rights Reserved.